基于lpm_rom的八选一波形发生器.doc

上传人:夏** 文档编号:556205333 上传时间:2023-09-10 格式:DOC 页数:17 大小:1MB
返回 下载 相关 举报
基于lpm_rom的八选一波形发生器.doc_第1页
第1页 / 共17页
基于lpm_rom的八选一波形发生器.doc_第2页
第2页 / 共17页
基于lpm_rom的八选一波形发生器.doc_第3页
第3页 / 共17页
基于lpm_rom的八选一波形发生器.doc_第4页
第4页 / 共17页
基于lpm_rom的八选一波形发生器.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于lpm_rom的八选一波形发生器.doc》由会员分享,可在线阅读,更多相关《基于lpm_rom的八选一波形发生器.doc(17页珍藏版)》请在金锄头文库上搜索。

1、最近一直在学stm32,怕时间久了FPGA生疏,就重新做了下八选一的波形发生器,用lpm_rom做,做完之后再用quartus进行功能仿真和时序仿真,主要是把实验流程记录下来。以免过阵子又忘了。一、设计输入Step1打开Quartus软件,新建工程:File-NewProjiectWizard,设置工程文件夹存放位置以及工程名一路Next,到Page3of5选器件,我的是CycloneIIEP2C8Q208C8,然后又是Next直到Finish。Step2新建文件*.bdf文件,http:/ 采用原理图输入:File-New-Design-BlockDiagram/SchematicFile,

2、OK!新建一个*.bdf文件。Step3新建mif文件,这个文件用来装lpm_rom初值:File-New-MemoryFiles-MemoryInitializationFile,OK。字数为256,字的位数为8,一会儿建lpm_rom再细讲。点OK。用MATLAB生成sin波形的初始值,装入mif文件。总共有256个值,装好之后如下在wave_sel_8_1工程文件夹下新建一个mif文件夹,用来装初始化文件。把新建的mif文件保存到mif文件夹下,名字为sin.mif。这个文件用来装sin波形的初始值。Step4对新建的*.bdf文件进行编辑。http:/ 双击空白部分,出现Symbol窗

3、口,在Libraries一栏选择d:/altera/90/quartus/libraries.-megafunctions-storage-lpm_rom。点OK,出现下图进行lpm_rom配置:outputfile选择VHDL或VerilogHDL,这个是没什么影响的。lpm_rom_sin是修改后的名字。NextOutput位宽为8位,memory为256个字。由于位宽是8位,所以每个字也是8位,256个字即memory的深度,需要8位地址线可寻址,28=256。所以地址线宽度为8,说明可寻址深度是28=256。输出宽度为8,说明每个存储单元是8位。一路Next直到这里这是新建的memor

4、y初始化,点Browse,在mif文件夹下,找到sin.mif文件。路径如下:一直Next到最后一步这几个文件暂时还搞不清楚,都选上吧。暗色的是不能更改的。Finish之后出现选Yes,在bdf文件上单击鼠标,刚才新建的lpm_rom_sin就放到工程里了。Step5到此为止,一个完整的lpm_rom_sin做好了,现在最重要的是要保存成果。把这个bdf文件保存在wave_sel_8_1文件夹下,名字为wave_sel_8_1.bdf。重复step3和step4,依次把lpm_rom_triangular、lpm_rom_square、lpm_rom_sawtooth1、lpm_rom_saw

5、tooth0、lpm_rom_ladder、lpm_rom_stair1、lpm_rom_stair0剩下的7个lpm_rom做好。这8个波形依次是正弦波、三角波、方波、锯齿波1(向上)、锯齿波0(向下)、梯形波、阶梯波1(向上)、阶梯波0(向下)。就是麻烦,小心仔细一点就OK了。好了,8个波形ROM产生了,还差一个计数模块和一个选择模块。最麻烦的部分已经做完了,Ctrl+S一下,然后休息一下。Step6新建计数模块,File-New-Design-VHDLFiles保存为count.vhd,放在wave_sel_8_1下。右键count.vhd-CreateSymbolFilesforCur

6、rentFile。回到bdf文件下,双击空白部分选择Project-COUNT,点击OK。放入工程中。Crtl+s。养成保存的好习惯。Step7新建选择模块,File-New-Design-VHDLFiles保存为SEL8_1.vhd。剩下步骤同step6。Step8所有的模块都已经做好了,就剩下输入、输出管脚了。还是双击bdf文件的空白部分直接在Name中输入input,点OK。Output也一样,总共需要3个输入,一个输出。3个输入分别是CLK、CLRn、in_sel2.0(这个是总线,3跟,器选择作用)。一个输出是output7.0。选中的波形就通过这个output输出。Step9连线,

7、最后结果是有事没事就按Ctrl+S。现在看一下整个工程的目录结构然后就得仿真了,仿真的目的是在软件环境下验证电路的行为和设想中的是否一致。功能仿真是在设计输入之后,是没综合、布局布线之前的仿真,又叫行为仿真或前仿真,不考虑电路的逻辑和门的时间延时,着重考虑电路在理想环境下的行为和设计构想的一致性。时序仿真又称后仿真,是在综合、布局布线时候,即电路以及映射到特定的工艺环境后,考虑期间延时的情况下对布局布线的网标文件的一种仿真,器件延时信息是通过反标时序延时信息来实现的。二、功能仿真我用的是QuartusII9.0,以前装过QuartusII11.0,根本就没有波形文件这一说,当然就仿不了真了,所

8、以又换回来了。Step1新建一个波形文件:File-New-Verification/DebuggingFiles-VectorWaveformFile。Step2添加节点,双击红色区域,出现下图点击NodeFinder一路OK返回保存为Step3设置仿真截止时间:Edit-Endtime。截止时间为1ms。Step4设置时钟周期为20ns,如下Step5设置复位信号CLKnStep6设置选择信号in_sel设置选择信号设置为10.24us(1024ns)加1,时钟周期为20ns,即每512个周期选择信号加1,而每个波形的取样值为256个,所以最终结果是每个波形出现两次然后接着出现下一个波形。

9、Step7设置仿真模式Assignments-Settings-SimulatorSettingsStep8生成功能仿真网表。Step9到现在为止都没有编译过整个工程,功能仿真只是验证它的行为是不是符合设计要求,不需要编译,查看Task栏点击开始功能仿真。漫长的等待,这个时候总是相当紧张的。OK,看波形之前进行简单的设置出现OKYOK8个波形依次出现,每个波形两个周期。如果把in_sel信号的时间设为512ns,则每个波形出现一次,如下出现的顺序很有意思,可以想一下为什么是这样。最先建波形的却最后出现。三、时序仿真时序仿真之前得综合、布局布线。Step1综合,右键-startStep2布局布线,,同上完了之后任务栏状态为Step3设置仿真模式Assignments-Settings-SimulatorSettingsStep4点击仿真,经过一些简单的设置后出现波形整个过程没有管脚分配及时序约束,这应该是在设计输入中完成的。编程与配置也没做。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号