第三章修改090107.docx
- 文档编号:15670253
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:62
- 大小:836.82KB
第三章修改090107.docx
《第三章修改090107.docx》由会员分享,可在线阅读,更多相关《第三章修改090107.docx(62页珍藏版)》请在冰点文库上搜索。
第三章修改090107
第三章可编程器件应用实验与课程设计
3.1EDA工具的使用
3.1.1QuartusII软件的使用
QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
本小结将以四位二进制加法计数器为例来介绍QuartusII的使用方法,实验中用到实验箱为GW48-PK2,关于GW48-PK2的使用请参看参考文献。
用QuartusII设计一个四位二进制加法计数器的具体步骤如下:
一、创建工程和编辑设计文件
首先应该建立好工作库目录。
此例中设立文件夹为:
E:
\vtest\count4,作为工作库,以便将设计过程中的相关文件存储在此。
任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关文件的文件夹,此文件夹将被EDA软件默认为工作库(WorkLibrary)。
注意,文件夹不能用中文。
在建立了文件夹后就可以进行创建工程和编辑设计文件的工作了,具体步骤如下:
图3-1工程路径设置对话框
(1)创建工程,利用“NewPrejectWizard”创建此设计工程。
选择菜单“File”“NewPrejectWizard”,点击Next>,即可弹出工程设置对话框(图3-1)。
点击此框最上一栏右侧的按钮“…”,设置工程路径,找到文件夹E:
\vtest\count4;填写工程名和顶层文件名称后,点击Next>按钮进行一步。
(2)添加设计源程序。
如果己有源程序,可以在此加入到工程中,如果没有选Next>进行下一步。
图3-2添加设计文件对话框
(3)选择目标芯片。
首先在“Family”栏选芯片系列,在此选“ACEX1K”系列,选择此系列的具体芯片:
EP1K30TC144-3(图3-3)。
图3-3选定目标器件对话框
(4)选择仿真器和综合器类型。
点击图3-3的“Next”按钮,这时弹出的窗是选择仿真器和综合器类型的,如果都是选默认的“NONE”,表示都选QuartusII中自带的仿真器和综合器,因此,在此都选默认项“NONE”(图3-4)。
图3-4设置综合器、仿真器、时序分析器类型对话框
(5)结束设置。
点击图3-4中的Next>后,弹出工程设置统计窗口,列出此项工程的相关设置情况。
最后按键“Finish”。
(6)在Quartus中编辑源程序,并保存。
选择菜单“File->New…”,在New窗中选择编译文件的语言类型,这里选“VHDLFile”(如图3-5所示)。
然后在VHDL文本编译窗中键入如图3-6所示的VHDL程序,将其存盘为count4.vhd。
图3-5选择编辑文件的语言类型
图3-6编辑输入设计文件
二、编译前设置
在对工程进行编译处理前,必须作好必要的设置。
具体步骤如下:
(1)选择目标芯片。
如果在“NewPrejectWizard”中没有进行目标芯片的设置,也可以这样来进行目标芯片的选择:
选择“Assignmemts->Device…”,在弹出的对话框中选择Device。
图3-7设置目标器件
(2)选择目标器件编程配置方式。
由图3-8中的按钮“DeviceandPinOptions”进入选择窗,首先选择“Configuration”项,在此框的下方有相应的说明,在此可选Configuration方式为ActiveSerial,这种方式指对专用配置器件进行配置用的编程方式,而PC机对此FPGA的直接配置方式都是JTAG方式。
在“Configurationdevice”项,选择配置器,如果电路中没有配置器件,可选择Auto(根据实验系统上目标器件配置的EPCS芯片决定如图3-8所示)。
图3-8选择配置器件和配置方式
(3)对未使用引脚进行设置。
在图3-8窗的“UnusedPins”窗,对未使用引脚设置。
具体设置,可根据电路板的情况而定。
图3-9未使用引脚的设置
三、编译
选择Processing菜单的“StartCompilation”项,启动全程编译。
注意这里所谓的编译(Compilation)包括QuartusII对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。
如果工程中的文件有错误,在下方的Processing处理栏中会显示出来。
对于Processing栏显示出的语句格式错误,可双击此条文,即弹出vhdl文件,在闪动的光标处(或附近)可发现文件中的错误。
再次进行编译直至排除所有错误。
四、仿真
仿真就是对设计项目进行一项全面彻底的测试,以确保设计项目的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。
对工程的编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。
仿真操作前必须利用QuartusII的波形编辑器建立一个矢量波形文件以作仿真激励。
步骤如下:
(1)打开波形编辑器。
选择菜单File中的New项,在New窗中选“VectorWaveformFile”,点击OK,即出现空白的波形编辑器(图3-10)。
图3-10波形编辑器
(2)设置仿真时间区域。
在Edit菜单中选择“EndTime”项,在弹出的窗中的“Time”窗中键入51,单位选“us”,即整个仿真域的时间即设定为51微秒,点击OK,结束设置。
图3-11设置仿真时间
(3)输入信号节点。
将计数器的端口信号节点选入此波形编辑器中。
方法是首先选View菜单中的“UtilityWindows”项的“NodeFinder”选项(也可使用快捷键Alt-1快速的调出NodeFinder窗口)。
其对话框如图3-12所示,在Filter框中选Pins:
all,然后点击“List”钮。
于是在下方的“NodesFound”窗中出现了设计中的count4工程的所有端口引脚名。
用鼠标将端口节点CLK,RESET和输出总线信号Q都拖到波形编辑窗,点击放大缩小钮后,用鼠标在波形编辑区域右键点击,使仿真坐标处于适当位置(图3-13)。
图3-12NodeFinder对话框
图3-13设置好输入输出端口的波形编辑器
图3-14选择时钟周期和占空比
(4)编辑输入波形。
点击时钟名CLK,使之变兰色,再点击左列的时钟设置键,在Clock窗中设置CLK的周期为20ns(图3-14);所示的Clock窗中的“Dutycycle”是占空比,可选50,即50%占空比;选择一段范围的RESET信号,再点击左列的高电平设置键,使RESET在某段时间为高电平,实现电路的复位。
(5)总线数据格式设置。
点击输出总线信号Q,使之变兰色,在Q上点击右键,在弹出菜单中选择Properties菜单,在“NodeProperties”对话框中的Radix中选择UnsignedDecimal。
图3-15设置仿真信号数据格式
(6)存盘波形文件。
选择File中的“Saveas”,将以名为count4.vwf(默认名)的波形文件存入文件夹e:
\vtest\count4中。
注意:
如果仿真文件名与工程默认名称不同,例如取名为cnt4.vwf,则要在工程中进行相应的设置才能正常仿真。
设置方法如下:
在菜单Assignments中选Settings…;然后在弹出的对话框中SimulatorSettings中的SimulationInput中进行设置(图3-16)。
图3-16仿真波形文件设置
(7)启动仿真器、观察仿真结果。
在菜单Processing项选“StartSimulation”,仿真结果后,可以观察仿真结果,查看仿真结果是否与设计的要求相符合。
图3-17四位二进制加法计数器仿真结果
(8)时序仿真与功能仿真设置。
QuartusII既可以进行时序仿真,又可以进行功能仿真。
介但缺省的仿真类型是时序仿真。
如果要进行功能仿真也要进行相应的设置。
具体方法如下:
首先,SimulatorSettings(图3-16)中的SimulationMode设置成Functional。
其次,在菜单Processing中选择GenerateFunctionalSimulationNellist。
然后,才可以进行功能仿真。
五、引脚锁定、下载和硬件测试
为了能对计数器进行硬件测试,应将计数器的输入输出信号锁定在芯片确定的引脚上。
在此选择GW48系统的电路模式5。
在使用EP1K30适配板的情况下,其引脚分别为:
主频时钟CLK接Clock0(第126脚);四位二进制的计数输出Q由数码管1显示,相应引脚号分别为:
33、32、31、30;RESET信号由键1控制,引脚号为8.
(1)引脚锁定。
在菜单Assignments中,选Pins项或AssignmentsEditor项,在弹出的窗口中(图3-18)进行引脚的设置。
引脚锁定后,必须再编译一次(ProcessingStartCompilation),将引脚锁定信息编译进下载文件中。
图3-18引脚锁定图
(2)选择编程器。
为了将编译产生的下载文件配置进FPGA中进行测试,首先将系统连接好,上电,然后在菜单Tool中,选择Programmer,于是弹出如图3-19所示的编程窗。
在图3-19所示的编程窗中,点击“HardwareSetup”,选择编程器类型。
这里选择“ByteBlasterMV”。
图3-19编程下载对话框
(3)选择编程模式和配置。
在图3-19所示的编程窗中,Mode栏中有三种编程模式可以选择,JTAG、PassiveSerial和ActiveSerial。
选JTAG,最后点击下载标符。
当“Progress”显示出100%,以及在底部的处理栏中出现“ConfigurationSucceeded”时,表示编程成功。
为了能很好地观察到实验结果,可以将实验箱的clock0的跳线帽设置到1Hz。
3.1.2QuartusII中集成第三方软件的使用
从QuartusII7.1开始支持Node-LockedLicense的第三方综合器直接从Quartus中调用,因此,我们可以更加方便地在QuartusII中使用第三方软件。
下面就举例说明如何直接从Quartus中直接调用第三方的综合器和仿真器进行综合与仿真。
综合器以Synplify为例,仿真器以Modelsim为例。
例子中的VHDL程序仍采用四位二进制加法计数器为例。
Quartus采用8.1,安装在d:
\altera;Synplify版本是Synplify9.6.1,安装在d:
\Synplicity;Modelsim版本是ModelSimSE6.4安装在d:
\Modeltech。
具体步骤如下:
(1)第三方软件路径的设置。
要想在QuartusII中直接调用第三方的工具软件,就必须要让QuarusII知道第三方软件的路经位置,设置路径方法如图所示:
在菜单Tools->Options->General->EDAToolsOptions中设置Synplify和Modelsim的安装路经。
注意:
同时要选中EnableNativeLinkforSynplify/SynplifyProwithanode-lockedlicense。
这一点非常重要,如果不选的话,就无法直接从Quartus中直接调用Synplify进行综合。
(2)对于新建工程,进行到选择仿真器和综合器类型的步骤时,要进行第三方工具的设置。
按照如下方式设置:
EDAdesignentry/synthesistool选Synplify,选中Runthistoolautomaticallytosynthesizethecurrentdesign;EDAsimulationtool选Modelsim;如果让Quartus在综合、适配后自动调用Modelsim进行门级时序仿真可以选中RunGateLevelSimulationautomaticallyaftercompilation(图3-21)
图3-20第三方综合、仿真软件安装路径设置
图3-21设置第三方综合器、仿真器
(3)对于工程的文件要进行Modelsim仿真,我们还需要编写一个TestBench程序,假设对于上面的工程,我们编写的Testbench如下,并把它存为count_tb_vhd.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycount_tb_vhdis
generic(clk_period:
Time:
=20ns);
endcount_tb_vhd;
architecturebehaveofcount_tb_vhdis
componentcount4
port
(reset,clk:
instd_logic;
q:
outstd_logic_vector(3downto0));
endcomponent;
signalclk:
std_logic:
='0';
signalreset:
std_logic:
='0';
signalq:
std_logic_vector(3downto0);
--constantclk_period:
time:
=20ns;
begin
u1:
count4portmap
(clk=>clk,
reset=>reset,
q=>q);
clk_gen:
process
begin
clk<='1';
waitforclk_period/2;
clk<='0';
waitforclk_period/2;
endprocess;
tb:
process
begin
waitfor20ns;
reset<='1';
waitfor20ns;
reset<='0';
waitfor200ns;
wait;
endprocess;
process
begin
waitforclk_period*5000;
waitforclk_period/2;
assertfalsereport
"ENDOFSIMULATION"
severityfailure;
endprocess;
endbehave;
(4)在Quartus中对Testbench进行相应设置。
选择菜单Assignments->Settings->EDAToolSettings->Simulation选中Compiletestbench(图3-22),点TestBenches…按钮进入下一界面。
图3-22Testbench文件设置
(5)按下New…进行下一步设置
图3-23新建Testbench
(6)填入测试名称、顶层模块名和例化元件的名称u1,点Filename后的…按钮,设置testbench文件位置(图3-24),选择count_tb_vhd.vhd(图3-25),并将测试文件加入列表中(图3-26)。
图3-27是设置完成后的示意图。
至此,我们已经完成了第三方软件的设置,下面就可能用第三方工具进行综合和仿真等工作了。
图3-24Testbench详细设置
图3-25选择Testbench文件位置
图3-26添加测试文件
图3-27设置完成后的图例
(7)利用第三方软件进行综合与仿真。
执行菜单Processing->StartCompilation。
Quartus就会自动调用Synplify进行综合、然后再自动完成适配、时序分析、写网表等工作。
如果在第三方工具的设置中(图3-21)选中了RunGateLevelSimulationautomaticallyaftercompilation,它还会自动调用Modelsim完成门级时序仿真,并自动显示出仿真波行。
如果没有选中RunGateLevelSimulationautomaticallyaftercompilation,则可以在Quartus中选择菜单Tools->RunEDAGateLevelSimulation,Quartus会调用Modelsim进行门级时序仿真,并自动显示出仿真波行。
图3-28门级时序仿真结果(综合器可以是第三方软件)
如果综合器没有选择第三方的工具,而是直接用quarus自己的综合器。
还可以让Quartus调用Modelsim执行RTL级功能仿真。
Quartus中选择菜单Tools->RunEDARTLSimulation,则Quartus会调用Modelsim进行RTL级功能仿真,并自动显示出仿真波行。
图3-29RTL级功能仿真结果(综合器采用的Quartus自己的综合器)
(8)如果在创建工程时没有对第三方软件进行设置,也对可以在创建工程后再进行设置。
对于综合器的设置:
可以选择菜单Assignments->Settings->EDAToolSettings->DesignEntry/Synthesis。
Toolname选择SynplifyPro,并且选中Runthistoolautomaticallytosynthesizethecurrentdesign(图3-30);
对于仿真器的设置:
可以选择菜单Assignments->Settings->EDAToolSettings->Simulation。
Toolname选择Modelsim,并且选中Runthistoolautomaticallytosynthesizethecurrentdesign(图3-31)。
图3-30第三方综合工具的设置
图3-31第三方仿真工具的设置
3.2可编程器件基本实验
实验一1位全加器VHDL文本输入设计
一、实验目的
(1)学习使用VHDL语言设计简单组合逻辑电路。
(2)学习使用VHDL语言中的结构描述方法设计逻辑电路。
(3)学习使用QuartusII软件。
(4)学习FPGA器件的编程和配置。
二、实验设备与器材
(1)GW-PK2EDA实验箱一台。
三、实验内容及实验步骤
利用QuartusII设计一位全加器(参考程序如下),仿真测试;给出仿真波形,进行引脚锁定,并在实验箱上进行硬件验证。
实验具体步骤如下:
(1)用原理图方式或文本方式输入设计文件并存盘
(2)选择目标器件并编译、综合
(3)进行时序仿真
(4)锁定引脚,并编译、综合
(5)在实验箱上选择模式5或6
(6)将数据下载到实验箱
(7)在实验箱上验证全加器的功能
--程序1:
或门逻辑描述
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYor2aIS
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC);
ENDENTITYor2a;
ARCHITECTUREfu1OFor2aIS
BEGIN
c<=aORb;
ENDARCHITECTUREfu1;
--程序2:
半加器描述
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_adderIS
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDENTITYh_adder;
ARCHITECTUREfh1OFh_adderis
BEGIN
so<=NOT(aXOR(NOTb));
co<=aANDb;
ENDARCHITECTUREfh1;
--程序3:
1位二进制全加器顶层设计描述
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYf_adderIS
PORT(ain,bin,cin:
INSTD_LOGIC;
cout,sum:
OUTSTD_LOGIC);
ENDENTITYf_adder;
ARCHITECTUREfd1OFf_adderIS
COMPONENTh_adder
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTor2a
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALd,e,f:
STD_LOGIC;
BEGIN
u1:
h_adderPORTMAP(a=>ain,b=>bin,
co=>d,so=>e);
u2:
h_adderPORTMAP(a=>e,b=>cin,
co=>f,so=>sum);
u3:
or2aPORTMAP(a=>d,b=>f,c=>cout);
ENDARCHITECTUREfd1;
注意,此3程序必须分别进行编译、设置成工程和仿真;最后处理顶层文件程序3。
四、实验报告要求
(1)写出用VHDL语言设计一位全加器的设计方案。
(2)用QuartusII作出一位全加器的仿真波形,并与实验结果进行对比。
(3)写出vhdl结构描述方法设计逻辑电路的心得。
实验二7人投票表决器VHDL设计
一、实验目的
(1)学习使用VHDL语言设计组合逻辑电路。
(2)学习使用VHDL语言中的结构描述方式与行为方式设计逻辑电路。
二、实验设备与器材
(1)GW-PK2EDA实验箱一台。
三、实验内容及实验步骤
利用QuartusII设计一个七人投票表决器,具体要求:
参加表决者7人,同意为1,不同意为0,同意者过半同表决通过,指示灯亮。
在QuartusII环境下,输入设计方案,并进行编译、综合;给出仿真波形,进行引脚锁定,下载到实验箱,并在实验箱上进行硬件验证。
图3-32七人投票表决器原理图
注1:
可以采用1位全加器构成,其原理图如图3-32所示,也可以采用VHDL语言的行为描述方式进行设计。
注2、建议选“实验电路模式5”,用键1-7作为7个表决输入;表决结果接发光管D8;引脚锁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 修改 090107
![提示](https://static.bingdoc.com/images/bang_tan.gif)