您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > QuartusII实验讲义
22实验讲义实验一正弦信号发生器实验箱工作在模式1;clock0设为16Hz本实验预备了两个文件:sin.vhd和sinwave.mif。sin.vhd是顶层设计文件;sinwave.mif是rom的初始化文件。这两个文件在下面设计将用到。实验之前建立一个sinwave文件夹将以上两个文件拷入其中。下面将详细介绍设计流程:1工程创建进入QuartusII开发软件,选择File-NewProjectWizad。弹出工程向导对话框,点击Next。23在对应位置填入工程名和顶层实体名,再点击Next。24点击Next。25实验所使用的是Cyclone系列的“EPIC6Q240C8”,点击Finish。工程新建完成,此时只是配置了与工程相关的一些基本设置,在开发过程中如需要,仍然可以通过菜单Assignments-Settings来修改。2sin信号发生器顶层模块的设计新建文件,打开File-New,选择DeviceDesignFiles子类中的VHDLFile,点击OK,创建一个vhdl文件。在编辑区vhdl语言输入,或者用文本方式打开sin.vhd文件将其中的内容拷贝到编辑区,并以sinwave.vhd文件名保存。也可以用下面方法:本实验事先已经准备了sin.vhd文件,可以将其文件名改为sinwave.vhd,添加到工程中。263.定制ROM存储sin波形数据1)建立.mif文件.mif是FPGA片内rom的初始化文件。点击菜单File-New-OtherFiles项,选择MemoryInitializationFile点击确定mif文件中字宽和字的数目,如下图设置,点击OK。打开mif文件。27填入正弦波的数据,以文件名sinwave.mif保存。本实验事先已准备了sinwave.mif文件,也可以通过右击ProjectNavigator中Files,打开File对话框,直接将已经存在的mif文件添加到工程中。2)定制ROM下面我们将初始化数据文件sinwave.mif文件加载到硬件模块中,通过菜单Tools-MegaWizardPlug-InManager。28弹出对话框,选择第一项,点击Next。选择Storage中的LPM_ROM,并选择VHDL,输入文件名:drom.vhd。点击Next。29下面是对生成rom的参数进行设置。如下图设置,点击Next。30如下图设置,点击Next。31指定存放着rom所需的初始化数据的源文件sinwave.mif,并设置rom,使其可在系统更新,设置rom在系统中的实体名为rom1(注意这里的实体名不要超过四个字符),点击Finish。将生成的drom.vhd添加到工程中。右击ProjectNavigator中Files。选择Add/RemoveFilesinProject。找到drom.vhd文件,点击Add。32至此已经完成了设计输入的所有工作,包括:顶层文件设计,rom生成和设置初始化文件。4编译综合编译综合点击菜单Processing-StartCompilation。如果设计没有问题就会,弹出编译成功的对话框,并显示下图。如有错误,就必须根据提示来查找错误。5仿真对工程编译通过后必须进行功能和时序仿真,以便了解系统是否满足要求,步骤如下:33新建波形文件,File-New-OtherFiles-VectorWaveformfile。点击OK。设定波形仿真文件的文件名,sinwave.vwf。点击保存。右击波形文件编辑区右边空白处,选择InsertNodeorBus。34在Name中填入DOUT,点击OK。将DOUT信号输入到波形文件中。用同样的方式将CLK输入到波形文件中。右击CLK,设置输入信号CLK。点击菜单Processing-StartSimulation,对工程进行仿真。右击DOUT选择Properties,Radix选择UnsignedDecimal,点击确定。35下面是正确仿真结果。将DOUT展开观察各位的波形,可以看到正弦波的模样。6管脚分配点击菜单Assignment-AssignmentEditor,打开管脚编辑器,在Location栏设置端口对应的FPGA芯片上的管脚,如下图所示。将工程重新编译一次,用于保存管脚的设置。367硬件设置下载在编译后工程文件夹中就会生成一个sinwave.sof文件,用于下载到FPGA中实现设计的功能。在下载前必须先对硬件进行连接和设置。当确认实验箱上的并口线已经和计算机正确连接之后,还需在QuartusII中作必要的设置。点击菜单Tools-〉Programmer。点击HardwareSetup。打开一个对话框。在点击AddHardware。如下图设置,点击OK。一般情况QuartusII能够自动的监测到sinwave.sof文件。也可以点击AddFile来添加文件。选择Program/Configure。最后点击Start下载sinwave.sof到FPGA中。37实验箱上数码管5和数码管6会以一定的频率显示sinwave.mif文件中的数据,值得说明的是实验箱显示的是16进制的值,而sinwave.mif中给的是无符号的10进制值。可以将仿真文件sinwave.vwf中DOUT的值显示为16进制值,就可以更好地进行对比。至此已经完成了实验一的所有内容。实验二嵌入式逻辑分析仪SingnalTapII的使用在实验一的基础上,将clock0时钟的跳线调到6MHz。点击菜单File-New,选择OtherFiles,选择SignalTapIIFile。点击OK。如下图所示,双击Node下面的空白区,打开NodeFinder对话框,插入信号DOUT。在SignalConfiguration中采样时钟clock选择CLK,采样深度Sampledepth选择8K,Bufferacquisitionmode选择默认。38将设计重新编译一次。如前面所述,点击Setup来设置硬件。在SOFManager中添加sinwave.sof文件,并点击下载sof文件。点击AutorunAnalyzer如图中所圈。右击DOUT,选择BusDisplayFomat-UnsignedLineChar,就可以显示下面波形。39下面介绍一种修改rom中数据的简便的方法,即在系统更新存储器中的数据。点击菜单Tool-In-SystemMemoryContentEditor将sinwave.sof添加到对应位置,点击所圈键,重新下载。右击rom1,选择ReadDataformIn-SystemMemory。就会将内存中的数据读出来,如下图。40将读出的数据如下图进行修改,再右击上图中的rom1,选择的WriteDatatoIn-SystemMemory。FPGA中rom的值就会被修改。为了验证,采用实验二所述SingalTap的方法显示波形。如下图。实验三通过流水线设计进行速度优化流水线技术在速度优化中是最常用的技术之一,它能显著的提高设计的运行速度上限。本实验预备了两个工程,其中adder4为无流水线的四数相加,这种情况下因为电路中含有较高延时的模块,容易造成竞争冒险,所以运算的最大速度会受到限制。Pipeadd为使用流水线的四数相加,通过向电路中间加入触发器,把延时较大的电路分成了几段延时较小的电路,从而通过流水线的技术消除了竞争冒险,提高了最大运行速度。打开工程adder4.qpf,选择Processing-Start-StartAnalysis&Synthesis对vhd文件进行分析与综合,综合结束后选择菜单Tools-NetlistViewers-RTLViewer,得到电路的RTL结构图:41在图中可以看到,红色方框区域存在一个由三个加法器组成的延时较大的组合逻辑块,在时钟clk很高的时候,Add0的计算结果和Add1的计算结果可能无法同时到达Add2的输入端,这使得整体的运算速度受到了限制。下面我们来观察一下这个加法器的功能仿真波形。新建波形文件,File-New-OtherFiles-VectorWaveformfile,点击OK。设定波形仿真文件的文件名,adder4.vwf,点击保存。右击波形文件编辑区右边空白处,选择InsertNodeorBus。42在弹出对话框中点击NodeFinder。NodeFinder可以列出程序中定义的所有输入输出端口,方便您快速的将希望在波形方针观察的端口加到波形仿真文件中。在对话框中将Filter设置为Pins:all,点击右侧的List按钮,将a0、a1、a2、clk和yout加入右侧的窗口,最后点击OK确认。43接下来我们需要为仿真波形中的输入端口设置合适的数值。右键点击a0,选择Value下的CountValue44我们希望a0显示为一个无符号的十进制数值,并且在每个周期后加一。45在Timing栏中可以设置计数的启示和结束时间以及计数周期,这里我们采用默认值。以此方法依次设置a1、a2、a3,通过设置不同的计数值(Incrementby)使它们分别为公差是2、3、4的等差数列。然后设置仿真时钟clk,右键点击clk,选择Value下的Clock。在这个弹出窗口里可以设置时钟的起始和结束时间,时钟的周期以及占空比,这里我们采用默认值。46最后设置输出结果yout的显示格式,右键点击yout并选择Properties。将Radix设置为无符号的十进制,并确认。47选择Processing-GenerateFunctionalSimulationNetlist生成功能仿真网表,这是进行功能仿真必备的步骤。选择Start-StartSimulation进行仿真。仿真波形如下:可以看出,图中的第一组数据的计算结果是在数据到达后的时钟clk的第二个上升沿时48得到的。下面我们来看一看采用流水线设计的加法器在RTL结构和仿真波形上和刚才的设计有什么区别。打开工程pipeadd.qpf,对vhd文件进行分析与综合,综合结束后选择菜单Tools-NetlistViewers-RTLViewer,得到电路的RTL结构图:和上一个工程的RTL结构图相比,本图增加了方框位置的2个D触发器,这样电路就被分成了Add0Add1和Add2这两个延时较小的组合逻辑电路。这样做的好处是消除了竞争冒险,提高了最大运行速度,但同时由于增加了一个级别的流水线导致增加了运算周期。我们还是通过仿真波形来和上一个工程进行比较,按照刚才的方法为本工程建立仿真波形文件,并进行仿真,结果如下:可以看到这一次第一组数据的运算结果是在数据到达后clk的第三个上升沿时得到的。49GW48-PK2EDA实验装置结构图信号与芯片引脚对照表结构图信号名EP1C6Q240结构图信号名EP1C6Q240引脚号引脚号PIO0233PIO38159PIO1234PIO39160PIO2235PIO40161PIO3236PIO41162PIO4237PIO42163PIO5238PIO43164PIO6239PIO44165PIO7240PIO45166PIO81PIO46167PIO92PIO47168PIO103PIO48169PIO114PIO49173PIO126PIO60226PIO137PIO61225PIO148PIO62224PIO1512PIO63223PIO1613PIO64222PIO1714PIO65219PIO1815PIO66218PIO1916PIO67217PIO2017PIO68180PIO2118PIO69181PIO2219PIO70182PIO2320PIO71183PIO2421PIO72184PIO2541PIO73185PIO26128PIO74186PIO27132PIO75187PIO28133PIO76216PIO29134PIO77215PIO30135PIO78188PIO31136PIO79195PIO32137SPKER174PIO33138C
本文标题:QuartusII实验讲义
链接地址:https://www.777doc.com/doc-4393780 .html