FPGA基本设计流程.docx
《FPGA基本设计流程.docx》由会员分享,可在线阅读,更多相关《FPGA基本设计流程.docx(26页珍藏版)》请在冰点文库上搜索。
FPGA基本设计流程
FPGA基本设计流程
首先建立工作库目录,以便设计工程项目的存储。
注意不要将文件夹
1建立工作库文件夹和编辑设计文件
1.1新建一个文件夹(注意文件夹不能用中文,也不要用数字)
任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。
此文件夹将被EDA软件默认为工作库(WorkLibrary)。
一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。
在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘,这里新建文件夹在E盘中,取名为jsq,则其路径是e:
\jsq。
步骤如下:
1.2源程序输入
打开计算机桌面上
图表,选择菜单File→New,出现如图1所示见面,在New窗口DeviceDesignFiles中选择编译文件的语言类型,这里选择VHDLFile,选好后用鼠标左键点击OK,出现源程序输入窗口如图2所示(以十进制为例)。
图1选择编译文件的语言类型
图2源程序输入窗口
源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREbehavOFCNT10IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRST='1'THENCQI:
=(OTHERS=>'0');--计数器异步复位
ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿
IFEN='1'THEN--检测是否允许计数(同步使能)
IFCQI<9THENCQI:
=CQI+1;--允许计数,检测是否小于9
ELSECQI:
=(OTHERS=>'0');--大于9,计数值清零
ENDIF;
ENDIF;
ENDIF;
IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号
ELSECOUT<='0';
ENDIF;
CQ<=CQI;--将计数值向端口输出
ENDPROCESS;
ENDbehav;
1.3文件存盘
选择File→SaveAs命令,找到已建立的文件夹e:
\jsq,存盘文件名应与实体的名字一致,即CNT10,其见面窗口如图3所示
图3文件存盘
单击“否”按钮,则按以下方法进入创建工程流程。
2.创建工程
2.1打开建立新工程管理窗
选择File→NewPrejectWizard工具选项创建设计工程命令,即弹出“工程设置”对话框如图4所示,单击对话框最上一栏有侧的“…”按钮,找到文件夹e:
\jsq,选种已存盘的文件CNT10,再单击打开按钮,既出现如图4所示的设置情况。
对话框中第一行表示工程所在的工作库文件夹,第二行表示此项工程的工程名,第三行表示顶层文件的实体名。
图4NewPrejectWizard创建工程CNT10
2.2将设计文件加入工程中
单击图4中下方的Next按钮,出现如图5所示的对话框,在弹出的对话框中单击Filename栏的按钮,将与工程相关的所有VHDL文件加入此工程,加入完成后点击Next按钮。
图5将所有的工程VHDL文件加入此工程图
2.3选择仿真器、综合器和目标器件的类型
点击图5中Next按钮,即弹出如图6所示的仿真器和综合器及目标器件对话框。
其仿真器和综合器及目标器件设置如图6所示。
设计完成后点单击Finish按钮。
在有效器件列表中选择专用期间
目标器件
器件系列
在有效器件列表
中选择专用器件
目标器件
族、系列
图6仿真器和综合器类型设置图
3.编译前设置
选择FPGA目标芯片。
目标芯片的选择也可以这样来实现:
选择Assignmemts菜单中的settings项,也可以弹出图6对话框。
选择配置器件的工作方式。
单击图6中的Device&PinOptions按钮,进入选择窗,这将弹出Device&PinOptions窗口,其对话框如图7所示。
在Configuration选项页,选择配置器件为EPCS4,其配置模式可选择ActiveSerial。
这种方式只对专用的Flash技术的配置器件(专用于Cyclone系列FPGA的EPCS4和EPCS1等)进行编程。
注意,PC机对FPGA的直接配置方式都是JTAG方式,而对于FPGA进行所谓“掉电保护式”编程通常有两种:
主动串行模式(ASMode)和被动串行模式(PSMode)。
对EPCS1/EPCS4的编程必须用ASMode。
图7选择配置器件工作方式图
4全程编译
QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错,逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。
在这一过程中,将设计项目适配到FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序信息文件、器件编程的目标文件等。
编译器首先检查出工程设计文件中可能错误信息,供设计者排除。
然后产生一个结构化的以网表文件表达的电路原理图文件。
编译前首先选择Processing菜单的StartCompilation项,启动全程编译。
这里所谓的全程编译(Compilation)包括以上提到的QuartusII对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。
编译过程中要注意工程管理窗下方的“Processing”栏中的编译信息。
如果工程中的文件有错误,启动编译后在下方的Processing处理栏中会显示出来,如图8所示。
对于Processing栏显示出的语句格式错误,可双击错误信息此条文,即弹出对应的vhdl文件,在深色标记条处即为文件中的错误,再次进行编译直至排除所有错误。
图8全程编译后信息图
5时序仿真
对工程编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。
以VWF文件方式的仿真流程的详细步骤如下:
(1)打开波形编辑器。
选择菜单File中的New项,在New窗口中选择OtherFiles中的VectorWavefor
如图9所示,单击OK按钮,即出现空白的波形编辑器如图10所示,注意将窗口扩大,以利观察。
图9选择编辑矢量波形文件
图10波形编辑器
(4)将工程cnt10的端口信号节点选入波形编辑器中。
方法是首先选择View菜单中的UtilityWindows项的NodeFinder选项。
弹出的对话框如图13所示,在Filter框中选Pins:
all(通常已默认选此项),然后单击List按钮,于是在下方的NodesFound窗口中出现设计中的cnt10工程的所有端口引脚名。
如果希望NodeFinder窗是浮动的,可以用右键点击此窗边框,在弹出的小窗(图13)上消去“EnableDocking”选项。
图13向波形编辑器拖入信号节点
注意如果此对话框中的“List”不显示cnt10工程的端口引脚名,需要重新编译一次,即选择Processing→StartCompilation,然后再重复以上操作过程。
最后,用鼠标将重要的端口节点CLK、EN、RST、COUT和输出总线信号CQ分别拖到波形编辑窗,结束后关闭NodesFound窗口。
单击波形窗左侧的“全屏显示”按钮,使全屏显示,并单击“放大缩小”按钮后(注意:
左键放大,右键缩小),再用鼠标在波形编辑区域右键单击,使仿真坐标处于适当位置,如图14所示,这时仿真时间横坐标设定在数十微秒数量级。
(2)设置仿真时间区域。
对于时序仿真来说,将仿真时间轴设置在一个合理的时间区域上十分重要。
通常设置的时间范围在数十微秒间:
在Edit菜单中选择EndTime项,其见面如图11所示,在弹出的窗口中的Time栏处输入50,单位选“μs”,整个仿真域的时间即设定为50μs,单击OK按钮,结束设置。
图11设置仿真时间长度
(3)波形文件存盘。
选择File中的Saveas,将以默认名为singt.vwf的波形文件存入文件夹E:
\jsq中(图2-13)。
图12vwf激励波形文件存盘
图14向波形编辑器拖入信号节点
(5)编辑输入波形(输入激励信号)。
单击图14所示窗口的时钟信号名CLK,使之变成蓝色条,再单击左列的时钟设置键
,在Clock窗中设置CLK的时钟周期为2μs;Clock窗口中的Dutycycle是占空比,默认为50,即50%占空比(图15)。
然后再分别设置EN和RST的电平。
最后设置好的激励信号波形图如图16所示。
图16设置好的激励波形图
(6)总线数据格式设置。
单击如图14所示的输出信号“CQ”左旁的“+”,则能展开此总线中的所有信号;如果双击此“+”号左旁的信号标记,将弹出对该信号数据格式设置的对话框(图2-16)。
在该对话框的Radix栏有4种选择,这里可选择无符号十进制整数UnsignedDecimal表达方式。
最后对波形文件再次存盘。
(7)启动仿真器。
现在所有设置进行完毕,在菜单Processing项下选择StartSimulation,
(8)观察仿真结果。
仿真波形文件“SimulationReport”通常会自动弹出如图17所示仿真结果。
同时在图17窗口中用鼠标右键点击选择Zoom→Fitinwindow(即选择全时域显示)。
图17仿真波形输出结果
(9)应用RTL电路图观察器
选择方法是Tools→NetlistViewers→RTLViewer,选好后将自动弹出如图18所示RTL电路。
图18RTL电路
6.引脚设置和下载
为了能对此计数器进行硬件测试,应将其输入输出信号锁定在芯片确定的引脚上,编译后下载。
(1)在菜单栏中选择Assignments→AssignmentEditor编辑器窗。
即弹出如图19所示窗口,在Category栏中选择Pin,或直接单击右上侧的Pin按钮。
图19AssignmentEditor编辑器
(2)双击“TO”栏的《new》,在出现的如图19所示的下拉栏中分别选择本工程要锁定的端口信号名;然后双击对应的Location栏的《new》,在出现的下拉栏中选择对应端口信号名的器件引脚号,如对应CQ[3],选择16脚。
在此选择GW48-EDA系统的电路模式No.5,各引脚的锁定参考图20。
通过查阅附录有关”芯片引脚对照表”,GW48板确定引脚分别为:
主频时钟CLK接Clock0(第28脚,可接在4Hz上);计数使能EN可接电路模式No.5的键2(PIO0对应第234脚);复位RST则接电路模式No.5的键1(PIO1对应第233脚,注意键序与引脚号码并无对应关系);溢出COUT接发光管D8(PIO15对应第12脚);4位输出数据总线CQ[3..0]可由数码1来显示,通过分别接PIO19、PIO18、PIO17、PIO16(它们对应的引脚编号分别为13、14、15、16)。
图20是已设定成功的引脚。
图20设定成功的引脚图
(3)最后存储这些引脚锁定的信息后,必须再编译(启动StartCompilation)一次,才能将引脚锁定信息编译进编程下载文件中。
7配置文件下载
将编译产生的SOF格式配置文件配置进FPGA中,进行硬件测试的步骤如下:
(1)打开编程窗和配置文件。
首先将实验系统和并口通信线连接好,打开电源。
在菜单Tool中选择Programmer,于是弹出如图21所示的编程窗。
在Mode栏中有4种编程模式可以选择:
JTAG、PassiveSerial、ActiveSerial和In-Socket。
为了直接对FPGA进行配置,在编程窗的编程模式Mode中选JTAG(默认),并选中打勾下载文件右侧的第一小方框。
注意要仔细核对下载文件路径与文件名。
如果此文件没有出现或有错,单击左侧“AddFile”按钮,手动选择配置文件cnt10.sof。
图21选择编程下载文件
(2)设置编程器。
若是初次安装的QuartusII,在编程前必须进行编程器选择操作。
单击HardwareSetup按钮可设置下载接口方式(图2-25),在弹出的HardwareSetup对话框如图22所示,选择Hardwaresettings页,再双击此页中的选项USB-Blaster之后,即选择USB-Blaster[USB.0]。
单击Close按钮,关闭对话框即可。
这时应该在编程窗右上显示出编程方式USB-Blaster[USB.0]如图23所示。
如果打开图2-26所示的窗口内“Currentlyselected”右侧显示NoHardware,则必须加入下载方式。
即点击AddHardware钮,在弹出的窗中点击OK,再在图22所示的窗口双击USB-Blaster,使“Currentlyselected”右侧显示USB-Blaster[USB.0]。
图22设置编程器
(3)选择编程器。
究竟显示哪一种编程方式(USB-Blaster或ByteBlasterII)取决于Quartus对实验系统上的编程口的测试。
最后单击下载标符Start按钮,即进入对目标器件FPGA的配置下载操作。
当Progress显示出100%,,表示编程成功。
8.嵌如入式逻辑分析仪设置与应用(使用方法)
在菜单栏中点击File→New弹出New窗口如图23所示,选择OtherFiles→SignaiTap‖File→ok,即弹出如图24所示窗口。
在左上边窗口给逻辑分析仪取一个名字(cnt),在左下框的空白处双击即出现NoteFinder窗口,在Filter处选择SignaiTap‖pre-sythesis,然后点击List,观察进位信号、输出信号、及中间一些信号窗口如图25所示。
用同样的方法设定clock(采样时钟)。
注意在如入输出信号时一定要将CQ放进去,否则信号CQ0、CQ1、CQ2、CQ3加入不到图24中左下框中。
图23逻辑分析仪建立选项
图24
图25逻辑分析仪观察接点图
采样深度的选择:
还是在图24中,点击Sampledepth(采样深度)按钮,选择2k(就是我们所观察的9个点,没采一次样需要2k。
在Bufferacquisitionnode(缓冲区触发位置选择),选择
(比较靠前的触发位置),
触发输入方式选择(Triggerin)在该处打√,然后点击右边的按钮即又弹出如图25窗口,通过列表选择EN作触发信号(注意双击EN),然后点击OK。
在Triggerin→Pattem→1High选择高电平触发,到此整个逻辑分析仪的参数设置就完成了,这时就可以存盘了。
注意这时就能在窗口中看见以cnt命名后缀为stp的工程,在存盘时会出现y、N。
对当前工程来说就是问要不要使能,如果选y也就是把当前逻辑分析仪生成一个文件,这个文件即包含计数器也包含逻辑分析仪。
设计好后进行全程编译。
编译完成若没有错误就可以进行下载了。
下载方法Toole→Progranmer弹出图26所示窗口,点击HardwareSetup,查看USB接口是否连上,如过连接好了在图27中显示
,然后双击把他加入进去。
如果在该窗口中找不到
那么就要把USB借口拔掉重新插,直到找到为止。
图26
图27加入
图
把刚才在图26窗口中的文件删掉,然后点击AddFile→CNT10.sof,并且把后面的第一个
框打勾,实验箱上的时钟还是用Clko频率用65536HZ。
用右点击
打开逻辑分析仪Tools→SignaTapⅡLogicAnalyzer→Stetup将USB接口加入,如果在Device处出现了
,说明扫描已扫到。
下面开始启动,先选中左上框中的文件,然后点击
连续采样标志,这时就会出现
提示(等待出发)。
现在找到实验版上的出发信号,设置为高电平触发即可。
当波形不稳定按一下停止键。
用右键点击窗口左边的
→BusDisplayFrmat图,可选择总线波形显示模式。
逻辑分析仪最后的测试结果如图28所示
图28逻辑分析仪的测试结果
9.原理图的生成(以计数器为例)
(1)首先要建立一个计数器的工程,与前面建计数器工程的方法一样。
(2)New→DeviceDisingFiles→
→ok在生成的原理图上双击弹出如图29所示窗口,在图Name处输入input,马上在窗口中出现了输入引脚
,然后电击OK。
接下来就可以存盘了,取名为dec,后缀自动形成为bdf,存盘后就会问要不要建立工程,点击NO,不要,这时在窗口中显示文件名,没有路径,说明还没有工程。
图29原理图符号窗口
8.FPGA掉电保护配置编程方法
(1)开始tools→Pragranmer于是弹出如图21所示的编程窗,在编程窗的编程模式Mode中选AvtiveserialProgamming(主动串行编程方式,然后在窗口中ADDfile加入入后缀为CNT10.pof文件,设置完成后检查器件选择窗口是否正确,弹出Assignments→Setting→Device&Pinoptions如图23所示,点击Configuration在UseConfigurationdevice选择EPCS1,再选择压缩,把编程、校验、空检查的6个空框打√,最后点击Start,这时就烧进去了。
图23Device&Pinoptions