fpga开发重点与难点分析(丁维浩)

fpga开发重点与难点分析(丁维浩)

ID:5541807

大小:43.00 KB

页数:4页

时间:2017-12-17

fpga开发重点与难点分析(丁维浩)_第1页
fpga开发重点与难点分析(丁维浩)_第2页
fpga开发重点与难点分析(丁维浩)_第3页
fpga开发重点与难点分析(丁维浩)_第4页
资源描述:

《fpga开发重点与难点分析(丁维浩)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、FPGA开发重点与难点分析丁维浩一、简介二、Verilog的重点三、自下而上的设计思路四、IP核五、DesignSummary与芯片类型六、前仿真与后仿真的区别七、硬件调试的方法八、实例:Turbodecoder一、简介1.1FPGA的特点:(FieldProgrammableGateArray)(集成上百万门阵列)1.2两大公司:Altera(Quartus)与Xilinx(ISE)睿思下载13.113.214.1…含破解License1.3综合工具(Synplify/SynplifyPro/XST)XST是ISE自带的,对ISE的库元件支持的最好;其它两项为第三方

2、开发,但综合性能最好。1.4仿真工具(ModelSim/ISim)ModelSim是专业的第三方波形仿真软件;ISim是ISE内嵌的波形仿真工具。1.5开发语言:Verilog与VHDLVerilog:语言灵活,与C语言非常接近,不严谨;VHDL:严谨,保证综合的效果,但不灵活,语法比Verilog稍复杂。1.6开发流程:①写matlab程序并进行多次仿真通过;②在ISE中建立工程,将matlabcode转化为Verilogcode;③对顶层文件进行综合,使用综合工具Synthesize-XST,综合的作用有二:检查语法错误,相当于C语言的编译;将verilogcod

3、e映射为ISE元件库支持的门器件(加法器、乘法器、寄存器、RAM、ROM……)后,进而转化为底层支持的网表文件;④进行波形仿真,写测试激励文件(testbench),然后进行功能仿真(前仿真),通过后进行时序仿真(后仿真)⑤进行翻译(Translate)、映射(Map)、布局布线(Place&Route),需要写约束文件(.ucf)对管教进行分配并对时序进行约束;⑥产生可编程文件(.bit或.mcs);⑦连接电路板,下载程序;⑧使用逻辑分析仪观看波形或者使用xilinx自带的在线逻辑分析仪(chipscope)进行在线回读,在PC上观看波形。重点是前四步一、Veril

4、og的重点2.1一个文件就是一个模块(module)//后缀名为.v对应.mvhdl的后缀名为.vhdmodule模块名(端口名1,……,端口名N);//模块名需要与.v文件名相同input[N-1:0]输入端口名1;//定义inputoutput属性的同时还需定义位宽input[1:0]输入端口名2;……output[N-1:0]输出端口名1;output输出端口名2;……按照需要,把一些中间变量和输出变量声明寄存器(reg型)变量,因为默认为wire型。写always块进行程序的逻辑运算always@(posedgeclk)//fpga中必须使用时钟触发信号,可以

5、边沿触发,也可以begin//电平触发,一般都使用边沿触发(posedge或negedge)……//按照需要,一个.v文件中可以写多个always块(因为并行处理),但需要注……//意的是同一信号不能在两个以上的always块中进行赋值,会造成无法综合endendmodule重点是必须在英文状态下输入,像上面的()以及,和;等等,有些版本的ISE在中文状态下输入会造成ISE软件崩溃!!2.2阻塞赋值和非阻塞赋值阻塞赋值:b=a;//c=b必须等到b=a执行完成后再执行!c=b;//第一句阻塞第二句的赋值,非阻塞赋值:b<=a;//b<=a在执行的同时可同时执行c<=b

6、,两者并行执行,c<=b;//第一句不阻塞第二句的赋值,主要用于信号的延时.注:如果一个时钟内需要使用多个赋值语句,且各赋值语句的信号不相关,建议使用非阻塞赋值,这样可减少毛刺;如果用于信号延时,必须使用非阻塞赋值;如果各赋值语句的信号相关,一般使用阻塞赋值,这样不会造成逻辑错误。2.3reg型变量和wire型变量reg型:寄存器变量,可在always块中多次被赋值,也可在initial块中进行初始化,但不可在assign语句中被持续性赋值,而且会占用片子的寄存器资源;wire型:线型变量,不可在always块中被赋值,更不可在initial块中进行初始化,但可以在a

7、lways块中赋值给其它reg型变量,也可在assign语句中被持续性赋值,不占用片子的资源。注:程序中的输出变量默认状态下都被定义为wire型变量,因为这样不会占资源,如果需要把输出变量定义为reg型变量,需要写语句声明;在写testbench测试文件时输入激励信号必须定义为reg型变量,而输出激励信号必须定义为wire型变量;一个模块如果作为底层文件被其它顶层文件调用,在顶层文件中必须把所调用的底层文件的输出信号定义为wire型变量。2.4例化一个.v文件如果作为底层文件被其它顶层文件调用,在顶层文件中需要对所调用的底层文件进行例化。格式:底层文

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。