收藏 分销(赏)

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

上传人:xrp****65 文档编号:7659127 上传时间:2025-01-11 格式:DOC 页数:17 大小:1MB 下载积分:10 金币
下载 相关 举报
基于lpm_rom的八选一波形发生器.doc_第1页
第1页 / 共17页
基于lpm_rom的八选一波形发生器.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
最近一直在学stm32,怕时间久了FPGA 生疏,就重新做了下八选一的波形发生器,用lpm_rom做,做完之后再用quartus进行功能仿真和时序仿真,主要是把实验流程记录下来。以免过阵子又忘了。   一、设计输入 Step1 打开Quartus软件,新建工程:File -> New Projiect Wizard,设置工程文件夹存放位置以及工程名 一路Next,到Page3 of 5选器件,我的是Cyclone II EP2C8Q208C8,然后又是Next直到Finish。   Step2 新建文件*.bdf文件, 采用原理图输入:File -> New -> Design -> Block Diagram/Schematic File,OK!新建一个*.bdf文件。   Step3 新建mif文件,这个文件用来装lpm_rom初值:File -> New -> Memory Files -> Memory Initialization File,OK。 字数为256,字的位数为8,一会儿建lpm_rom再细讲。点OK。用MATLAB生成sin波形的初始值,装入mif文件。总共有256个值,装好之后如下   在wave_sel_8_1工程文件夹下新建一个mif文件夹,用来装初始化文件。把新建的mif文件保存到mif文件夹下,名字为sin.mif。这个文件用来装sin波形的初始值。   Step4 对新建的*.bdf文件进行编辑。 双击空白部分,出现Symbol窗口,在Libraries一栏选择d:/altera/90/quartus/libraries... -> megafunctions -> storage -> lpm_rom。点OK,出现下图 进行lpm_rom配置:output file 选择VHDL或Verilog HDL,这个是没什么影响的。lpm_rom_sin是修改后的名字。 Next Output 位宽为8位,memory为256个字。由于位宽是8位,所以每个字也是8位,256个字即memory的深度,需要8位地址线可寻址,2^8 = 256。所以地址线宽度为8,说明可寻址深度是2^8 = 256。输出宽度为8,说明每个存储单元是8位。 一路Next直到这里 这是新建的memory初始化,点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_sawtooth0、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 -> VHDL Files 保存为count.vhd,放在wave_sel_8_1下。   右键count.vhd -> Create Symbol Files for Current File。 回到bdf文件下,双击空白部分  选择Project -> COUNT,点击OK。放入工程中。Crtl + s。养成保存的好习惯。   Step7 新建选择模块,File -> New -> Design -> VHDL Files 保存为SEL8_1.vhd。剩下步骤同step6。   Step8 所有的模块都已经做好了,就剩下输入、输出管脚了。还是双击bdf文件的空白部分 直接在Name中输入input,点OK。Output也一样,总共需要3个输入,一个输出。3个输入分别是CLK、CLRn、in_sel[2..0](这个是总线,3跟,器选择作用)。一个输出是output[7..0]。选中的波形就通过这个output输出。   Step9 连线,最后结果是 有事没事就按Ctrl + S。现在看一下整个工程的目录结构   然后就得仿真了,仿真的目的是在软件环境下验证电路的行为和设想中的是否一致。功能仿真是在设计输入之后,是没综合、布局布线之前的仿真,又叫行为仿真或前仿真,不考虑电路的逻辑和门的时间延时,着重考虑电路在理想环境下的行为和设计构想的一致性。时序仿真又称后仿真,是在综合、布局布线时候,即电路以及映射到特定的工艺环境后,考虑期间延时的情况下对布局布线的网标文件的一种仿真,器件延时信息是通过反标时序延时信息来实现的。   二、功能仿真 我用的是Quartus II 9.0,以前装过Quartus II 11.0,根本就没有波形文件这一说,当然就仿不了真了,所以又换回来了。 Step1 新建一个波形文件:File -> New -> Verification/Debugging Files -> Vector Waveform File。   Step2 添加节点,双击红色区域,出现下图 点击Node Finder 一路OK返回 保存为   Step3 设置仿真截止时间:Edit -> End time。截止时间为1ms。   Step4 设置时钟周期为20ns,如下   Step5 设置复位信号CLKn     Step6 设置选择信号in_sel 设置选择信号设置为10.24us(1024ns)加1,时钟周期为20ns,即每512个周期选择信号加1,而每个波形的取样值为256个,所以最终结果是每个波形出现两次然后接着出现下一个波形。   Step7 设置仿真模式Assignments -> Settings -> Simulator Settings   Step8 生成功能仿真网表。   Step9 到现在为止都没有编译过整个工程,功能仿真只是验证它的行为是不是符合设计要求,不需要编译,查看Task栏 点击开始功能仿真。漫长的等待,这个时候总是相当紧张的。 OK,看波形之前进行简单的设置 出现 OK Y OK 8个波形依次出现,每个波形两个周期。如果把in_sel信号的时间设为512ns,则每个波形出现一次,如下 出现的顺序很有意思,可以想一下为什么是这样。最先建波形的却最后出现。   三、时序仿真 时序仿真之前得综合、布局布线。 Step1 综合,右键 -> start   Step2 布局布线,,同上 完了之后任务栏状态为   Step3 设置仿真模式Assignments -> Settings -> Simulator Settings   Step4 点击仿真,经过一些简单的设置后出现波形 整个过程没有管脚分配及时序约束,这应该是在设计输入中完成的。编程与配置也没做。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服