1、正弦信号发生器设计实验指南de2DOC实验练习 正弦信号发生器练习一 正弦信号发生器设计利用分频器将clk设为16hz本实验预备了两个文件:sin.v和sinwave.mif。sin.vhd是顶层设计文件;sinwave.mif是rom的初始化文件。这两个文件在下面设计将用到。实验之前建立一个sinwave文件夹将以上两个文件拷入其中。下面将详细介绍设计流程:1 工程创建进入QuartusII开发软件,选择File-New Project Wizad。弹出工程向导对话框,点击Next。在对应位置填入工程名和顶层实体名,再点击Next。点击Next。实验所使用的是Cyclone系列的“EP2C3
2、5Q672C6”,点击Finish。工程新建完成,此时只是配置了与工程相关的一些基本设置,在开发过程中如需要,仍然可以通过菜单Assignments -Settings来修改。2 sin信号发生器顶层模块的设计新建文件,打开File-New,选择Device Design Files子类中的Verilog,点击OK,创建一个verilog文件。在编辑区verilog语言输入,或者用文本方式打开sin.v文件将其中的内容拷贝到编辑区,并以sinwave.v文件名保存。也可以用下面方法:本实验事先已经准备了sin.v文件,可以将其文件名改为sinwave.v,添加到工程中。3定制ROM存储sin波
3、形数据1) 建立.mif文件.mif是FPGA片内rom的初始化文件。点击菜单File-New-Memory Files项,选择Memory Initialization File点击确定mif文件中字宽和字的数目,如下图设置,点击OK。打开mif文件。填入正弦波的数据,以文件名sinwave.mif保存。本实验事先已准备了sinwave.mif文件,也可以通过右击Project Navigator 中Files,打开File对话框,直接将已经存在的mif文件添加到工程中。2)定制ROM下面我们将初始化数据文件sinwave.mif文件加载到硬件模块中,通过菜单Tools-MegaWizard
4、 Plug-In Manager 。弹出对话框,选择第一项,点击Next。选择Memory Compiler中的ROM:1-PORT,并选择Verilog,输入文件名:drom.v。点击Next。下面是对生成rom的参数进行设置。如下图设置,点击Next。 如下图设置,点击Next。指定rom所对应的初始话文件sinwave.mif。点击Finish。将生成的drom.vhd添加到工程中。右击Project Navigator中Files。选择Add/Remove Files in Project。选择以后是否自动加载该类文件。找到drom.vhd文件,点击Add。至此已经完成了设计输入的所有
5、工作,包括:顶层文件设计,rom生成和设置初始化文件。4 编译综合编译综合点击菜单Processing-Start Compilation。如果设计没有问题就会,弹出编译成功的对话框,并显示下图。如有错误,就必须根据提示来查找错误。5 仿真对工程编译通过后必须进行功能和时序仿真,以便了解系统是否满足要求,步骤如下:新建波形文件,File-New-Other Files-Vector Waveform file。点击OK。设定波形仿真文件的文件名,sinwave.vwf。点击保存。右击波形文件编辑区右边空白处,选择Insert Node or Bus。在Name中填入DOUT,点击OK。将DOU
6、T信号输入到波形文件中。用同样的方式将CLK输入到波形文件中。右击CLK,设置输入信号CLK。点击菜单Processing-Start Simulation,对工程进行仿真。右击DOUT选择Properties,Radix选择Unsigned Decimal,点击确定。下面是正确仿真结果。6 管脚分配点击菜单Assignment-Pins,打开管脚编辑器,设置如下Location。将工程重新编译一次,用于保存管脚的设置。7 硬件设置下载在编译后工程文件夹中就会生成一个sinwave.sof文件,用于下载到FPGA中实现设计的功能。在下载前必须先对硬件进行连接和设置。当确认实验箱上的并口线已经和
7、计算机正确之后,还需在Quartus II中作必要的设置。点击菜单Tools-Programmer。点击Hardware Setup。打开一个对话框。在点击Add Hardware。如下图设置,点击OK。 一般情况Quartus II能够自动的监测到sinwave.sof文件。也可以点击Add File来添加文件。选择Program/Configure。最后点击Start下载sinwave.sof到FPGA中。实验箱上七段显示管会以一定的频率显示sinwave.mif文件中的数据,值得说明的是实验箱显示的是16进的值,而sinwave.mif中给的是无符号的10进制值。可以将仿真文件sinwa
8、ve.vwf中DOUT的值显示为16进制值,就可以更好地进行对比。至此已经完成了实验一的所有内容。练习二 SingnalTap的使用点击菜单File-New,选择Other Files,选择SignalTap II File。点击OK。如下图所示,双击Node下面的空白区,打开Node Finder对话框,插入信号DOUT。在Signal Configuration中cloclk填入CLK,Sample depth选择8k,Buffer acquisition mode如图选择。将设计重新编译一次。如前面所述,点击Setup来设置硬件。在SOF Manager中添加sinwave.sof文件,
9、并点击下载sof文件。点击Autorun Analyzer如图中所圈。右击DOUT,选择Bus Display Fomat-Unsigned Line Char,就可以显示下面波形。练习三 在线rom读取和写入在实验二的基础上,不用改变任何硬件设置。下面将介绍在线rom读取和写入。在Project Navigator选择Hierarchy,展开sinwave,双击选择drom:u1。打开MegaWizard Plug-In Manager。点击Next,找到对应页,将所圈的地方设置如下图。重新编译工程。点击菜单Tool-In-System Memory Content Editor将sinwave.sof添加到对应位置,点击所圈键,重新下载。右击rom1,选择Read Data form In-System Memory。就会将内存中的数据读出来,如下图。将读出的数据如下图进行修改,再右击上图中的rom1,选择的Write Data to In-System Memory。FPGA中rom的值就会被修改。为了验证,采用实验二所述SingalTap的方法显示波形。如下图。