第六讲 定制指令和外设.ppt_第1页
第六讲 定制指令和外设.ppt_第2页
第六讲 定制指令和外设.ppt_第3页
第六讲 定制指令和外设.ppt_第4页
第六讲 定制指令和外设.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,第五章、Nios II嵌入式软核处理器设计,5.5 用户自定义指令和自定义外设,用户自定义硬件浮点乘法指令 用户自定义PWM外设 用户自定义LCD控制器外设,一、用户自定义指令 用户自定义指令使用户可以利用FPGA的逻辑资源,对于数字信号处理,数据块处理,计算密集型软件计算进行优化,完成Nios II处理的硬件加速。,5.5 用户自定义指令和自定义外设,用户自定义指令,用户自定义指令分为两部分: 用户自定义逻辑:是完成用户操作的硬件部分,NiosII支持最多256条自定义指令。编写HDL完成,利用SOPC Builder 向导集成到系统。 软件宏:提供软件接口是为用户能够访问用户自定义逻辑,

2、NiosII ALU,Custom Logic,移位,进位,加法,dataA,dataB,Out,To FIFO, Memory, or Other Logic,浮点乘法指令逻辑接口信号表,逻辑设计原理图,当工程文件编译后,可以在system.h中生成浮点乘法指令的宏定义,在系统中,系统定义的单精度浮点乘法指令的操作码为:ALT_CI_FP_MULT_CI(A,B),在软件设计中,可以直接调用这个操作码来进行浮点数A和B的硬件浮点乘法运算。,二、用户自定义外设 使用用户自定义外设的目的: 用户希望将厂商没有提供的控制模块集成到Nios II 用户希望提高系统性能,5.5 用户自定义指令和自定义

3、外设,用户自定义外设,使用用户自定义外设分为三部分: 1. Avalon总线传输配置 2. 外设控制逻辑,编写HDL完成, 利用SOPC Builder 向导集成到系 统中。 3. 软件驱动程序,用户自定义外设,6. 信号和管脚设定; 7. 添加到系统,命名为my_pwm; 8. 勾去Simulation选项,点击Gernerate; 9. 返回QuartusII,更新原理图,并编译; 10. 将.sof文件下载到Stratix板; 11. 打开NiosII IDE,创建一个niosII_pwm_project, 选定NiosII.ptf并选择Blank_Project作为模板,将pwm.c和

4、altera_avalon_pwm.h拖入niosII_pwm_project; 12. 编译、链接程序; 13. 运行程序,观察Stratix板。,自定义Avalon总线接口IP PWM控制器设计,PWM控制器结构图,Avalon总线,寄存器 Period Duty,PWM 功能 模块,Avalon Slave 接口,clk,Wr_n,Wr_data,address,PWM_out,PWM控制器端口定义,entity Avalon_PWM is port( clk: in std_logic; -时钟信号 reset_n: in std_logic; -复位信号 wr_n: in std_l

5、ogic; -写信号 addr: in std_logic_vector(1 downto 0); -地址信号 WrData: in std_logic_vector(31 downto 0); -写数据信号 PwmOut:out std_logic); -输出信号 end Avalon_PWM;,process(clk) begin if(reset_n=0)then period 0); duty 0); else if rising_edge(clk) then if (wr_n=0) then case addr is when 00 = period period null; end

6、 case; else period=period; duty=duty; end if; end if; end if; end process;,PWM控制器读写寄存器,process(clk) begin if(reset_n=0)then counter 0); else if rising_edge(clk) then if counter=0 then counterduty then PwmOut=0; else PwmOut=1; end if; end if; end if; end process;,PWM功能模块,定制PWM控制器-添加HDL文件,定制PWM控制器-定义接

7、口,定制PWM控制器-定义信号,定制PWM控制器-生成组件,编写PWM控制器寄存器头文件,#ifndef AVALON_PWM_REGS_H_ #define AVALON_PWM_REGS_H_ #include #define IOWR_AVALON_PWM_PERIOD_DATA(data) IOWR(PWM_BASE, 0, data) #define IOWR_AVALON_PWM_DUTY_DATA(data) IOWR(PWM_BASE, 1, data) #endif,#include #include #include #include system.h #include a

8、valon_PWM_regs.h int main() unsigned long int rx_char,duty; char line100; IOWR_AVALON_PWM_PERIOD_DATA(0 xfffff); while (1) printf(Please enter an LED intensity between 1 to 65536 (0 to demo)n); fgets(line, sizeof(line),stdin); sscanf(line,%d,编写PWM控制器应用程序,自定义Avalon总线接口IP LCD控制器设计,Avalon总线,寄存器 从端口,DMA 主端口,FIFO,LCD时序 发生器,定义寄存器组,CPU通过读写寄存器,实现对各个模块的控制,实现图像从存储器到FIFO的直接传输,缓存数据,实现传输速度匹配,产生LCD扫描时序,LCD控制器结构图,硬件加速新工具C2H技术介绍,从C语言源代码直接自动转换成硬件描述语言(VHDL),是当今EDA设计环境的最新发展。如 Altera 公司的 Q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论