文档介绍:该【正弦波发生器Modeim 仿真图文】是由【鼠标】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【正弦波发生器Modeim 仿真图文】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。正弦波发生器ModelSim仿真?要求:使用ModelSim对Quartus工程正弦波发生器进行功能仿真(前仿真)和时序仿真(后仿真)。?1?在Quartus工程中建立正弦波发生器?lpm_counter_6bitslpm_rom_sinup?counterclockINPUTclockVCCq[5..0]address[5..0]q[7..0]OUTPUTq[7..0]instclockinst1?该正弦波发生器由两部分构成: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工程来避免该错误。???pile?All”。?点击“Simulate/Start?Simulaton”,同样在“work”路径下选择我们的顶层模块——wave_top。在SDF选项卡中加入“”文件。??点击OK后我们便发现成功的Loading了SDF文件。后面的过程跟功能仿真一样。