网站大量收购独家精品文档,联系QQ:2885784924

FPGA开发重点与难点分析(丁维浩).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA开发重点与难点分析(丁维浩)

FPGA开发重点与难点分析 丁维浩 一、简介 二、Verilog的重点 三、自下而上的设计思路 四、IP核 五、Design Summary与芯片类型 六、前仿真与后仿真的区别 七、硬件调试的方法 八、实例:Turbo decoder 简介 1.1 FPGA的特点:(Field Programmable Gate Array)(集成上百万门阵列) 1.2 两大公司:Altera(Quartus)与Xilinx(ISE) 睿思下载 13.1 13.2 14.1…含破解License 1.3 综合工具(Synplify/ Synplify Pro/XST) XST是ISE自带的,对ISE的库元件支持的最好; 其它两项为第三方开发,但综合性能最好。 1.4 仿真工具(ModelSim/ISim) ModelSim是专业的第三方波形仿真软件;ISim是ISE内嵌的波形仿真工具。 1.5 开发语言:Verilog与VHDL Verilog:语言灵活,与C语言非常接近,不严谨; VHDL:严谨,保证综合的效果,但不灵活,语法比Verilog稍复杂。 1.6 开发流程: ①写matlab程序并进行多次仿真通过;②在ISE中建立工程,将matlab code转化为Verilog code;③对顶层文件进行综合,使用综合工具Synthesize-XST,综合的作用有二:检查语法错误,相当于C语言的编译;将verilog code映射为ISE元件库支持的门器件(加法器、乘法器、寄存器、RAM、ROM……)后,进而转化为底层支持的网表文件;④进行波形仿真,写测试激励文件(testbench),然后进行功能仿真(前仿真),通过后进行时序仿真(后仿真)⑤进行翻译(Translate)、映射(Map)、布局布线(PlaceRoute),需要写约束文件(.ucf)对管教进行分配并对时序进行约束;⑥产生可编程文件(.bit或.mcs);⑦连接电路板,下载程序;⑧使用逻辑分析仪观看波形或者使用xilinx自带的在线逻辑分析仪(chipscope)进行在线回读,在PC上观看波形。 重点是前四步 Verilog的重点 2.1 一个文件就是一个模块(module)//后缀名为.v对应.m vhdl的后缀名为.vhd module 模块名(端口名1,…… ,端口名N);//模块名需要与.v文件名相同 input [N-1:0] 输入端口名1;//定义input output属性的同时还需定义位宽 input [1:0] 输入端口名2; …… output [N-1:0] 输出端口名1; output 输出端口名2; …… 按照需要,把一些中间变量和输出变量声明寄存器(reg型)变量, 因为默认为wire型。 写always块进行程序的逻辑运算 always@(posedge clk) //fpga中必须使用时钟触发信号,可以边沿触发,也可以 begin //电平触发,一般都使用边沿触发(posedge或negedge) …… //按照需要,一个.v文件中可以写多个always块(因为并行处理),但需要注 …… //意的是同一信号不能在两个以上的always块中进行赋值,会造成无法综合 end endmodule 重点是必须在英文状态下输入,像上面的()以及,和;等等,有些版本的ISE在中文状态下输入会造成ISE软件崩溃!! 2.2 阻塞赋值和非阻塞赋值 阻塞赋值: b=a; // c=b必须等到b=a执行完成后再执行! c=b; //第一句阻塞第二句的赋值, 非阻塞赋值: b=a; // b=a在执行的同时可同时执行c=b,两者并行执行, c=b;//第一句不阻塞第二句的赋值,主要用于信号的延时. 注:如果一个时钟内需要使用多个赋值语句,且各赋值语句的信号不相关,建议使用非阻塞赋值,这样可减少毛刺;如果用于信号延时,必须使用非阻塞赋值;如果各赋值语句的信号相关,一般使用阻塞赋值,这样不会造成逻辑错误。 2.3 reg型变量和wire型变量 reg型:寄存器变量,可在always块中多次被赋值,也可在initial块中进行初始化,但不可在assign语句中被持续性赋值,而且会占用片子的寄存器资源; wire型:线型变量,不可在always块中被赋值,更不可在initial块中进行初始化,但可以在always块中赋值给其它reg型变量,也可在assign语句中被持续性赋值,不占用片子的资源。 注:程序中的输出变量默认状态下都被定义为wire型变量,因为这样不会占资源,如果需要把输出变量定义为reg型变量,需要写语句声明;在写te

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档