1、fpga设计心得体会篇一:fpga设计的几个实例Verilog HDL设计 练习一简单的组合逻辑设计练习一简单的组合逻辑设计目的: 掌握基本组合逻辑电路的实现方法。这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码:/- -module xxpare;input a,b;output equal;assign equal=?1:0; /a等于b时,equal输出为1;a不等于b时, /equal输出为0。endmodule测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。测试模块源代码:timescale 1ns/1ns/定义时间单位。include ./ /包含模块文件。在有的仿真调试环境中并不需要此语句。 /而需要从调试环境的菜单中键入有关模块文件的路径和名称 module xx
2、paretest;reg a,b;/在测试文件中需要进行赋值的变量要定义成ren型,一般为inputwire equal;/在测试文件中只要进行连接定义成wire型,一般为outputinitial /initial常用于仿真时信号的给出。begin /initial语句就是给出在什么时间给定什么样的值a=0;b=0;#100 a=0; b=1;#100 a=1; b=1;#100 a=1; b=0;#100 $stop;/系统任务,暂停仿真以便观察仿真波形。endxxpare/模块名/ xxpare1,.a,.b); /调用模块。 /括号内的为测试文件的信号,而.a等为模块要连接的信号endmodule仿真波形(部分):练习:设计一个字节(8位)比较器。要求:比较两个字节的大小,如a7:0大于 b7:0输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试。练习二. 简单时序逻辑电路的设计目的:掌握基本时序逻辑电路的实现。在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL模型,我们通常使用always块和 或
3、的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。/ half_:module half_clk;input clk_in,reset;output clk_out;reg clk_out;always beginif clk_out=0;elseclk_out=clk_out;endendmodule在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态。为了能正确地观察到仿真结果,在可综合风格的模块中我们通常定义一个复位信号reset,当reset为低电平时,对电路中的寄存器进行复位。测试模块的源代码:/- clk_ -timescale 1ns/100psdefine clk_cycle 50module clk_reg clk,reset;wire clk_out;always #clk_cycle clk = clk;initialbeginclk = 0;reset = 1;#100 reset = 0;#100 reset = 1;#10000 $stop;endhal
4、f_clk half_clk,.clk_in,.clk_out);endmodule仿真波形:练习:依然作clk_in的二分频clk_out,要求输出与上例的输出正好反相。编写测试模块,给出仿真波形篇二:fpga设计流程1. FPGA开发流程:电路设计与设计输入仿真验证:利用Xilinx集成的仿真工具足矣逻辑综合:利用XST工具布局布线:利用Xilinx的Implementation Tool工具 FPGA配置下载:利用iMPACT工具2. 时序标注文件是指SDF(Standard Delay Format Timing Annotation)文件,在Xilinx公司的FPGA/CPLD设计中使用“.sdf”作为时序标注文件的扩展名,而在 Altera 公司的FPGA设计中使用“.sdo”作为时序标注文件的扩展名。它在仿真过程的主要作用就是在SDF标注文件中对每一个底层逻辑门提供了 3 种不同的延时值,分别是典型延时值、最小延时值和最大延时值,用于进行静态时序分析(STA)仿真验证。3. 综合在FPGA/CPLD设计中的作用是是将寄存器传输层的的结构描述转化为逻辑层的结构描述,以及将逻
5、辑层的结构描述转化为电路的结构描述。综合步骤的输入是HDL源代码,输出是逻辑网表。4. ModelSim仿真器是基于事件驱动的,它可以用来仿真Verilog语言,也可以用来仿真 VHDL语言,同时也支持两种语言的混合仿真。5. 根据设计阶段不同,仿真可以分为RTL行为级仿真、综合后门级功能仿真和时序仿真等三大类型。6. ModelSim提供的调试手段与工具有以下几种:在源文件窗口中设置断点或者单步执行。观察波形测量时间。在数据流窗口中浏览设计的物理连接。查看或者初始化存储器。分析仿真效率。测试代码覆盖率。波形比较。7. HDL Bencher的Xilinx版本可以支持VHDL语言输入、Verilog HDL语言输入和Xilinx 原理图输入等3种输入方法。8. 实现是将设计的逻辑网表信息转换成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。9. 实现主要分为3个步骤:转换逻辑网表:将多个设计文件合并为一个网表映射到器件单元:将网表中的逻辑符号(门)组装到物理元件(CLB和IOB)中布局布线:将元件放置到器件中,并将其连接起来,同时提取
6、出时序数据,并生成各种报告10. 实现前应该设计实现约束条件: 约束条件一般包括管脚锁定、时钟约束、全局时钟、第二全局时钟、分组约束和物理特性约束等信息。ISE中可以使用约束xx器生成约束文件。11. FPGA的设计指导原则:面积和速度的平衡与互换原则、硬件原则、系统原则、同步设计原则12. ISE中的HDL Editor工具包括的Verilog和 VHDL 三大语言模板大致可以分为下列 4 个项目:器件实例化、语法模板、综合模板、用户自定模板13. XST(Xilinx Synthesis Technology)是Xilinx ISE内嵌的综合工具。XST的输入文件一般是HDL源文件,并且XST已经支持Verilog和VHDL混合语言源代码输入;XST的输出文件是NGC网表,XST的报告文件是Log文件。14. XST的综合约束文件是XCF(XST Constraint File),而布局布线阶段最重要约束文件是用户约束文件UCF(User Constraint File)。15. XST综合主要分为以下3个步骤: HDL源代码分析、HDL代码综合、底层优化16. Xilinx全局时
7、钟资源必须满足的重要原则是:“使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入”。即,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。17. BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。18. 全局时钟资源的例化方法大概可分为两种:在程序中直接例化全局时钟资源、通过综合阶段约束或者实现阶段约束完成对全局时钟资源的使用19. 简述全局时钟资源与第二全局时钟资源的概念与基本使用方法。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时、抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA/CPLD设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。第二全局时钟资源,也叫长线资源。它是分布在芯片的行、列的栅栏(Bank)上,一般采用铜、铝工艺,其长度和驱动能力仅次于全局时钟资源。与全局时钟相似,第二全局时钟资源直接同IOB、CLB、Block Select R
8、AM等逻辑单元连接,第二全局时钟信号的驱动能力和时钟抖动延迟等指标仅次于全局时钟信号。 Xilinx全局时钟资源的使用方法有以下5种:IBUFG + BUFG的使用方法、 IBUFGDS + BUFG的使用方法、.BUFG + DCM+BUFG的使用方法、Logic+BUFG的使用方法、Logic + DCM+BUFG的使用方法第二全局时钟资源的使用方法一般是在Xilinx的约束xx器(Constraints Editor)的专用约束(Misc)选项卡中指定所选信号使用低抖动延迟资源“Low Skew”。也可以直接在指导Xilinx实现步骤的用户约束文件(UCF)中添加“USELOWSKEWLINES”约束命令。篇三:基于FPGA的设计题目1. 花样彩灯控制器的设计设计要求:假设输入脉冲为3MHz,控制16只LED发光二极管每隔1s或2s显示一种花样。要求显示的花样如下:闪烁2次从LED(0)移位点亮到LED(15)一次全部点亮一次从LED(15)开始逐个熄灭至LED(0)1次闪烁2次。如果按下清零键时,16只LED均熄灭一次,然后再重新按规律显示。如果没有按下快/慢选择控制键时,16只LED发光二极管是以每隔1s进行花样显示,否则按下快/慢键选择控制键时,16只LED发光二极管是以每隔2s进行花样显示。2. 利用FPGA实现一个简单的DDS正弦波发生器(DDS:数字显示示波器)可分解为三个部分来设计:时钟产生模块;地址产生模块;ROM查找表模块。 实现思路: 首先,由外部晶振引入40MHz的时钟到FPGA内部,进入时钟产生模块,对时钟进行处理并3倍频程后,得到一个稳定精确的120MHz的系统时钟; 然后,地址产生模块在系统时钟的激励下,将频率控制字与累加寄存器输出的数据进行累加,然后把累加的结果作为地址输出给ROM查找表地址; 最后,ROM查找表模块在每个系统时钟的上升沿,按照地址来读取ROM查找表中的相应的波形采样点数据并输出,该数就是最终的DDS信号。3. 多功能信号发生器的设计设计要求:设计一个多功能信号发生器,能够以稳定的频率产生锯齿波、增减锯齿波、三角波、阶梯波、正弦波和方波等六种信号。系统有3个波形选择开关和一个复位开关,通过波形选择开关可以选择以上各种不同种类的输出波
《fpga设计心得体会.doc》由会员F****n分享,可在线阅读,更多相关《fpga设计心得体会.doc》请在金锄头文库上搜索。