您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 正弦信号的设计基于Verilog的设计
桂林理工大学信息学院EDA仿真与实践实习报告EDA仿真与实践实习报告所属课程:EDA仿真与实践实习设计题目:正弦函数信号发生器的设计指导教师:学院:班级:姓名:学号:实验地点:教一楼(EDA实验室1310)实验时间:2012年6月4号—2012年6月22号桂林理工大学信息学院EDA仿真与实践实习报告-1-目录第一章设计目的...........................................................2第二章设计要求...........................................................2第三章设计内容...........................................................2第四章设计原理...........................................................2第五章设计步骤...........................................................35.1建立.mif格式文件(两种方法)..........................................35.2定制LPM_ROM及调用.mif文件............................................45.3完成顶层设计..........................................................5第六章课程设计总结........................................................8桂林理工大学信息学院EDA仿真与实践实习报告-2-第一章设计目的进一步熟悉QuartusII6.0及其LPM_ROM与FPGA硬件资源的使用方法。培养动手能力以及谐作能力。第二章设计要求1、CLK为12MHz。2、通过DAC0832输出正弦波电压信号,电压范围0~-5V。3、通过仿真观察波形。第三章设计内容在QuartusII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和仿真测试。信号输出的D/A使用实验系统上的DAC0832。第四章设计原理正弦波信号发生器的结构由四部分组成:1、计数器或地址发生器(这里选择6位)。2、正弦信号数据ROM(6位地址线,8位数据线),含有64个8位数据(一个周期)。3、VHDL顶层设计。4、8位D/A(实验中可用ADC0832代替)。图1所示的信号发生器结构框图中,顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由6位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。LPM_ROM底层是FPGA中的M4K模块。地址发生器的时钟CLK的输入频率与每周期的波形数据点数(在此选择64点),以及D/A输出的频率f的关系是:f=fo/64桂林理工大学信息学院EDA仿真与实践实习报告-3-图1正弦信号发生器结构框图第五章设计步骤首先确定如图1中所示的波形数据文件。QuartusII能接受的ROM模块中的初始化数据文件的格式有两种:MemoryInitializationFile文件(.mif文件)格式和Hexadecimal(Intel-Format)File文件(.hex文件)格式,这里只用.mif格式。5.1建立.mif格式文件(两种方法)方法一:首先在QuartusII中选择ROM数据文件编辑窗口,即在File菜单中选择New并在New窗口选择Otherfile页,再选择MemoryInitializationFile项,单击OK按钮后产生ROM数据文件大小选择窗口。根据64点8位正弦数据的情况,可选ROM的数据数Number为64位,数据宽Wordsize取8位。单击OK按钮,将出现如图2所示的空的mif数据表格,表格中的数据格式可通过鼠标右键单击窗口边缘的地址数据弹出窗口选择。此表中任一数据(如第三行的99)对应的地址为左列与顶行数之和(如16+2=18,十六进制为12,即00010010)。然后将波形数据填入此表中。最后在File菜单单击Saveas按钮,保存此数据文件,这里不妨取名romd.mif。图2将波形数据填入mif文件表中VHDL顶层设计singt.vhd正弦波数据存储ROM6位计数器(地址发生器)8位D/A波形数据输出桂林理工大学信息学院EDA仿真与实践实习报告-4-方法二:用.mif文件生成器,将参数设成如图3所示,然后保存,再运行保存的.mif文件,这样就能产生所需的函数数据了。图3.mif生成器的参数设置5.2定制LPM_ROM及调用函数.mif文件在设计正弦波信号发生器前,必须首先完成存放波形数据ROM的设计。利用MegaWizardPlug-Inmanager定制正弦信号数据ROM宏功能块,并将以上的波形数据加载于此ROM中。设计步骤如下:(1)打开MegaWizardPlug-Inmanager初始对话框。在Tools菜单中选择MegaWizardPlug-Inmanager产生一个对话框,选择Createanewcustom...项,即定制一个新的模块。单击Next按钮后,在所产生的对话框的左栏选择Storage项下的LPM_ROM,再选择Cyclone器件和VHDL语言方式;最后输入ROM文件存放的路径和文件名,单击Next按钮。(2)选择ROM控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和ROM中数据数分别为6和64;选择地址锁存控制信号inclock。(3)单击Next按钮在对话框的“WhatshouldtheRAM…”栏选择默认的Auto。在栏选择“Doyouwantto…Yes,usethisfileformemorycontentdata”项,并按Browse钮,选择指定路径上的文件data_rom.mif。在“AllowIn-SystemMemory…”栏选择打勾,并在“TheInstanceIDofthisROM”栏输入ROM1,作为ROM的ID名称。最后单击Next按钮,再单击Finish按钮后完桂林理工大学信息学院EDA仿真与实践实习报告-5-成ROM定制。5.3完成顶层设计顶层的设计主要包括编辑顶层文件、创建工程、全程编译、观察RTL电路图、仿真、了解时序分析结果、引脚锁定、等等。(1)信号发生器的顶层设计文件如下所示:modulesin(RST,CLK,EN,Q,AR,WR_n);output[7:0]Q;output[5:0]AR;outputWR_n;inputEN,CLK,RST;wire[5:0]TMP;reg[5:0]Q1;wireWR_n;wireRST;//例化分频器,得到1Hz时钟divider_by_50Mu0(.o_clk(clk_1_Hz),.rst_n(RST),.i_clk(CLOCK_50));always@(posedgeCLKornegedgeRST)if(!RST)Q1=7'B000000;elseif(EN)Q1=Q1+1;elseQ1=Q1;assignTMP=Q1;assignAR=TMP;assignWR_n=~EN;asinIC1(.address(TMP),.clock(CLK),.q(Q));endmodule桂林理工大学信息学院EDA仿真与实践实习报告-6-/*divider_by_50M.v/Verilog*/moduledivider_by_50M(outputrego_clk,inputrst_n,inputi_clk);/*parameterN=50_000_000;parameterM=24_999_999;//M=(N/2)-1*/parameterN=10_000;parameterM=4_999;//M=(N/2)-1reg[25:0]cnt;always@(posedgei_clk,negedgerst_n)beginif(!rst_n)cnt=0;elsebeginif(cnt==N-1)cnt=0;elsecnt=cnt+26'b1;endend桂林理工大学信息学院EDA仿真与实践实习报告-7-always@(posedgei_clk,negedgerst_n)beginif(!rst_n)o_clk=0;elsebeginif(cnt=M)o_clk=1;elseo_clk=0;endendendmodule2)为此顶层设计创建一项工程,工程名和实体名都是sin。3)全程编译一次后进入时序仿真测试。图4是仿真过程截图,由波形可见,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出。图4仿真波形输出图桂林理工大学信息学院EDA仿真与实践实习报告-8-第六章课程设计总结在本次设计的过程中,我们用的是quartus9.0版本,由于刚开始的时候我用的电脑不是很好,而且这个软件还学要破解,我又没有怎么听老师讲的内容,所以都没怎么做,搞到最后时间很匆忙。当我把第一个问题解决完的时候,第二个问题接踵而至。第二个问题出现在完成存放波形数据ROM的设计过程中,没有正确的选择指定路径文件名romd.mif导致用于例化的波形数据ROM文件data_rom.vhd编译失败,经过同学的指导和我的思考和分析后,我正确的选择指定路径文件名romd.mif,这样编译正确通过。第三个问题是,在仿真的过程中,我对仿真的具体流程不太熟悉,因为平时做实验都用的是max+plus2软件在进行编译仿真,最后,在老师和同学的热情帮助下,顺利完成仿真。并熟练地掌握了quartus的使用方法。在这次设计中,我也深深地体会到“细节决定成败”这句话的真正含义,也许就因为一个小的细节就会导致设计的失败。还有最后一步用逻辑分析仪的时候,一定要将所要观察的输出调到波形状态,否则,只能观察到一些数据而已。因为我们是第一批用这个试验箱的人,所以大家都不太懂,这一步也用了我们很多的时间。当然了,虽然这次的实习有点曲折,但是还是很有意思的,因为这种实践实习在很大程度上加强了我们的动手能力,让我们更加深刻的理解到教学理论上的知识。
本文标题:正弦信号的设计基于Verilog的设计
链接地址:https://www.777doc.com/doc-2363872 .html