文档介绍:该【正弦波发生器Modeim 仿真图文】是由【鼠标】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【正弦波发生器Modeim 仿真图文】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。正弦波发生器 ModelSim 仿真
要求:使用 ModelSim 对 Quartus 工程正弦波发生器进行功能仿真(前仿真)和时序仿
真(后仿真)。
1 在 Quartus工程中建立正弦波发生器
lpm_counter_6bits
lpm_rom_sin
up counter
clock INPUT clock
VCC q[5..0] address[5..0]
q[7..0] OUTPUT q[7..0]
inst clock
inst1
该正弦波发生器由两部分构成: 6 位二进制计数器( lpm_counter_6bits)和 ROM
(lpm_rom_sin)。该计数器作为地址产生器产生递增的地址,ROM 中存放正弦波的幅度数
据,地址相当于正弦波的相位,相位递增幅度进行变化,这样便形成正弦波。
lpm_counter_6bits的创建
新建一个“.bdf”文件,并另存为。双击空白处,显示如下对话框,选择“lpm_counter”,
点击 OK。然后按照如图所示操作。
后面一直点击“Next”,直到“Finish”,完成 6 位二进制计数器的生成。
lpm_rom_sin的创建
利用同样的方法创建lpm_rom_sin。所不同的是在创建该模块之前,首先应建立一个初
始数据文件,这里可直接在 Quartus 中创建 Memory Initalizaton File,输入正弦波的幅度值,
也可以用 C++中的函数生成数据。我们使用第二种方式,如下:
运行后生成 文件,然后装在初始文件。
点击“Finish”后生成。
编译生成网表文件
(1) 选定芯片(这里选用EP2C8Q208C8),并将不用管脚置三态。
(2) 选择第三方的仿真工具:
由于我们只做系统仿真,所以不用分配管教,编译后发现编译过程多了这样一步:产生
DEA 第三方工具所需要的网表。
在下方消息栏中可以看出该过程产生了两个文件“:”文件和“”
文件。
这时打开我们所建工程的目录,发现多了一个“simulaton”文件夹,打开发现有一个
“modelsim”文件夹,打开后发现有“”文件(设计文件,记载芯片中的布线信
息,在后面的仿真我们就利用该文件来代替我们原始的设计文件)和“”文件
(芯片布线间的延迟文件)。
建立仿真的激励文件:
加入仿真模型库
我们使用的 CycloneII 系列的器件,所以我们需要加入 文件。而且我们
还用到了 Altera 的 ip 核(lpm_counter 和 lpm_rom),所以我们需要加入 文件。
复制到“modelsim”文件夹中。
2 ModelSim功能仿真
使用 ModelSim 做仿真,可以新建一个工程进行仿真,还可以直接编译文件进行仿真。
第二种方法比较简单,我们这里采用该方法。
直接点击编译按钮,出现如下界面:
在“Workspace”的 work 中找到我们需要的顶层模块——wave_top。
因为我们做的是前仿真,不加入延迟信息,所以我们还需将“”文件做些修
改:改完后重新编译下修改过的文件。
双击“wave_top”后,可成功打开如下界面:
添加信号到波形窗口,在命令栏中输入“run 10us”,回车,便产生仿真波形。
3 ModelSim时序仿真
首先把刚才修改过的””文件修改回来(加入延迟信息),并且重新编译。选
择“Library”栏,双击“wave_top”模块。这时我们发现仿真出现了错误:( 文件
错误)。
这时,我们关掉仿真。新建一个ModelSim 工程来避免该错误。
点击“Compile All”。
点击“Simulate/Start Simulaton”,同样在“work”路径下选择我们的顶层模块——
wave_top。
在 SDF 选项卡中加入“”文件。
点击 OK 后我们便发现成功的Loading 了 SDF 文件。后面的过程跟功能仿真一样。