您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 心得体会 > fpga设计心得体会
fpga设计心得体会篇一:fpga设计的几个实例VerilogHDL设计练习一.简单的组合逻辑设计练习一.简单的组合逻辑设计目的:掌握基本组合逻辑电路的实现方法。这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在VerilogHDL中,描述组合逻辑时常使用assign结构。注意equal=?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。模块源代码://--------------------------------modulexxpare;inputa,b;outputequal;assignequal=?1:0;//a等于b时,equal输出为1;a不等于b时,//equal输出为0。endmodule测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。测试模块源代码:`timescale1ns/1ns//定义时间单位。`include.///包含模块文件。在有的仿真调试环境中并不需要此语句。//而需要从调试环境的菜单中键入有关模块文件的路径和名称modulexxparetest;rega,b;//在测试文件中需要进行赋值的变量要定义成ren型,一般为inputwireequal;//在测试文件中只要进行连接定义成wire型,一般为outputinitial//initial常用于仿真时信号的给出。begin//initial语句就是给出在什么时间给定什么样的值a=0;b=0;#100a=0;b=1;#100a=1;b=1;#100a=1;b=0;#100$stop;//系统任务,暂停仿真以便观察仿真波形。endxxpare//模块名//xxpare1,.a,.b);//调用模块。//括号内的为测试文件的信号,而.a等为模块要连接的信号endmodule仿真波形(部分):练习:设计一个字节(8位)比较器。要求:比较两个字节的大小,如a[7:0]大于b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试。练习二.简单时序逻辑电路的设计目的:掌握基本时序逻辑电路的实现。在VerilogHDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的VerilogHDL模型,我们通常使用always块和@或@的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。//half_:modulehalf_clk;inputclk_in,reset;outputclk_out;regclk_out;always@beginifclk_out=0;elseclk_out=~clk_out;endendmodule在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态。为了能正确地观察到仿真结果,在可综合风格的模块中我们通常定义一个复位信号reset,当reset为低电平时,对电路中的寄存器进行复位。测试模块的源代码://-------------------clk_-----------------------------`timescale1ns/100ps`defineclk_cycle50moduleclk_regclk,reset;wireclk_out;always#`clk_cycleclk=~clk;initialbeginclk=0;reset=1;#100reset=0;#100reset=1;#10000$stop;endhalf_clkhalf_clk,.clk_in,.clk_out);endmodule仿真波形:练习:依然作clk_in的二分频clk_out,要求输出与上例的输出正好反相。编写测试模块,给出仿真波形篇二:fpga设计流程1.FPGA开发流程:电路设计与设计输入仿真验证:利用Xilinx集成的仿真工具足矣逻辑综合:利用XST工具布局布线:利用Xilinx的ImplementationTool工具FPGA配置下载:利用iMPACT工具2.时序标注文件是指SDF(StandardDelayFormatTimingAnnotation)文件,在Xilinx公司的FPGA/CPLD设计中使用“.sdf”作为时序标注文件的扩展名,而在Altera公司的FPGA设计中使用“.sdo”作为时序标注文件的扩展名。它在仿真过程的主要作用就是在SDF标注文件中对每一个底层逻辑门提供了3种不同的延时值,分别是典型延时值、最小延时值和最大延时值,用于进行静态时序分析(STA)仿真验证。3.综合在FPGA/CPLD设计中的作用是是将寄存器传输层的的结构描述转化为逻辑层的结构描述,以及将逻辑层的结构描述转化为电路的结构描述。综合步骤的输入是HDL源代码,输出是逻辑网表。4.ModelSim仿真器是基于事件驱动的,它可以用来仿真Verilog语言,也可以用来仿真VHDL语言,同时也支持两种语言的混合仿真。5.根据设计阶段不同,仿真可以分为RTL行为级仿真、综合后门级功能仿真和时序仿真等三大类型。6.ModelSim提供的调试手段与工具有以下几种:在源文件窗口中设置断点或者单步执行。观察波形测量时间。在数据流窗口中浏览设计的物理连接。查看或者初始化存储器。分析仿真效率。测试代码覆盖率。波形比较。7.HDLBencher的Xilinx版本可以支持VHDL语言输入、VerilogHDL语言输入和Xilinx原理图输入等3种输入方法。8.实现是将设计的逻辑网表信息转换成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。9.实现主要分为3个步骤:转换逻辑网表:将多个设计文件合并为一个网表映射到器件单元:将网表中的逻辑符号(门)组装到物理元件(CLB和IOB)中布局布线:将元件放置到器件中,并将其连接起来,同时提取出时序数据,并生成各种报告10.实现前应该设计实现约束条件:约束条件一般包括管脚锁定、时钟约束、全局时钟、第二全局时钟、分组约束和物理特性约束等信息。ISE中可以使用约束xx器生成约束文件。11.FPGA的设计指导原则:面积和速度的平衡与互换原则、硬件原则、系统原则、同步设计原则12.ISE中的HDLEditor工具包括的Verilog和VHDL三大语言模板大致可以分为下列4个项目:器件实例化、语法模板、综合模板、用户自定模板13.XST(XilinxSynthesisTechnology)是XilinxISE内嵌的综合工具。XST的输入文件一般是HDL源文件,并且XST已经支持Verilog和VHDL混合语言源代码输入;XST的输出文件是NGC网表,XST的报告文件是Log文件。14.XST的综合约束文件是XCF(XSTConstraintFile),而布局布线阶段最重要约束文件是用户约束文件UCF(UserConstraintFile)。15.XST综合主要分为以下3个步骤:HDL源代码分析、HDL代码综合、底层优化16.Xilinx全局时钟资源必须满足的重要原则是:“使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入”。即,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。17.BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。18.全局时钟资源的例化方法大概可分为两种:在程序中直接例化全局时钟资源、通过综合阶段约束或者实现阶段约束完成对全局时钟资源的使用19.简述全局时钟资源与第二全局时钟资源的概念与基本使用方法。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时、抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA/CPLD设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。第二全局时钟资源,也叫长线资源。它是分布在芯片的行、列的栅栏(Bank)上,一般采用铜、铝工艺,其长度和驱动能力仅次于全局时钟资源。与全局时钟相似,第二全局时钟资源直接同IOB、CLB、BlockSelectRAM等逻辑单元连接,第二全局时钟信号的驱动能力和时钟抖动延迟等指标仅次于全局时钟信号。Xilinx全局时钟资源的使用方法有以下5种:IBUFG+BUFG的使用方法、IBUFGDS+BUFG的使用方法、.BUFG+DCM+BUFG的使用方法、Logic+BUFG的使用方法、Logic+DCM+BUFG的使用方法第二全局时钟资源的使用方法一般是在Xilinx的约束xx器(ConstraintsEditor)的专用约束(Misc)选项卡中指定所选信号使用低抖动延迟资源“LowSkew”。也可以直接在指导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只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号,因此设计信号发生器时,需将FPGA输出的信号通过D/A转换电路将数字信号转换成模拟信号。多功能信号发生器可由信号产生电路、波形选择电路和D/A转换电路构成。如下图所示:波形输出4.数字跑表的设计设计要求:设计一个数字跑表,该跑表具有复位、暂停、秒表计时等功能。该跑表有三个输入端,分别为时钟输入(CLK)、复位(CLR)和启动/暂停(PAUSE)复位信号高电平有效,可对整个系统异步清0,当启动/暂停(PAUSE)键为低电平时跑表开始计时,为高电平时暂停,变低后在原来的基础上再计数。为了便于显示,可分秒、秒和分钟信号皆采用BCD码计数方式,并直接输出到6个数码管显示。5.8位数字频率计的设计设计一个8位频率计,可以测量从1Hz到99999999Hz的信号频率,并将被测信号的频率在8个数码管上显示出来。采用一个标准的基准时钟,在单位时间(如1s)里对被测信号的脉冲数进行计数,即为信号的频率。整个系统分为三个模块:控制模块,计数测量模块和锁存器模块。6.基于FPGA的简单运算器的设计①设计要求:该运算器能完成-7到+7的简单的加、减、与、异或四种运算功能,并且可以对溢出的结果进行修正。硬件实验板由一个
本文标题:fpga设计心得体会
链接地址:https://www.777doc.com/doc-6423249 .html