使用ModelSim完成基本的HDL仿真_第1页
使用ModelSim完成基本的HDL仿真_第2页
使用ModelSim完成基本的HDL仿真_第3页
使用ModelSim完成基本的HDL仿真_第4页
使用ModelSim完成基本的HDL仿真_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用ModelSim完成基本的HDL仿真时间:2010-02-22 16:12来源:芯合FPGA学习网 作者:admin 点击: 358次这里我们教大家使用ModelSim完成基本的HDL仿真。所应用的仿真代码是ModelSim自带的。 这里我们教大家使用ModelSim完成基本的HDL仿真。所应用的仿真代码是ModelSim自带的。安装了ModelSim后,可以在安装目录的examples/tutorials/verilog/basicSimulation下找到counter.v 和tcounter.v。其中counter.v是被验证设计,tcounter.v是Testbench。 仿真过程

2、如下1.打开ModelSim,首先建立一个新的Project,选择File-New-Project,图12.在弹出的Create Project窗口中给Project任意起一个名字,并指定Project的目录(Project Location)。我们假设Project Name为TestCounter,创建的Library名为work(所有我们编译后的代码的模块将被放入到work库中)。如下图所示:图23.点击OK后弹出添加HDL代码到Project的窗口,如下图:图3我们选择Add Existing File,假设$ModelSim是你的ModelSim的跟目录,则添加下面两个文件:$Mod

3、elSim/examples/tutorials/verilog/basicSimulation/counter.v $ModelSim /examples/tutorials/verilog/basicSimulation/tcounter.v添加文件的窗口如下图所示 图4Tcounter.v的源代码如下:1. moduletest_counter; 2. 3. regclk,reset; 4. wire7:0count; 5. 6. counterdut(count,clk,reset); 7. 8. initial/Clockgenerator 9. begin 10. clk=0; 1

4、1. forever#10clk=!clk; 12. end 13. 14. initial/Teststimulus 15. begin 16. reset=0; 17. #5reset=1; 18. #4reset=0; 19. end 20. 21. initial 22. $monitor($stime,reset,clk,count); 23. 24. endmodule counter.v的源代码如下:1. modulecounter(count,clk,reset); 2. output7:0count; 3. inputclk,reset; 4. 5. reg7:0count;

5、 6. parametertpd_reset_to_count=3; 7. parametertpd_clk_to_count=2; 8. 9. function7:0increment; 10. input7:0val; 11. reg3:0i; 12. regcarry; 13. begin 14. increment=val; 15. carry=1b1; 16. /* 17. *Exitthisloopwhencarry=zero,ORallbitsprocessed 18. */ 19. for(i=4b0;(carry=4b1)&(i=7);i=i+4b1) 20. begin 2

6、1. incrementi=valicarry; 22. carry=vali&carry; 23. end 24. end 25. endfunction 26. 27. always(posedgeclkorposedgereset) 28. if(reset) 29. count=#tpd_reset_to_count8h00; 30. else31. count=#tpd_clk_to_countincrement(count); 32. 33. /* 34. Usethefollowingblocktomakethedesignsynthesizable. 35. 36. alway

7、s(posedgeclkorposedgereset) 37. if(reset) 38. count=8h00; 39. else 40. countCompile All,编译上述两个文件,如下图所示: 图5从tcounter.v的源代码为我们看到Testbench的模块名叫test_counter,我们切换WorkSpace到Library,选择work库下的test_counter,单击鼠标右键选择simulate,如下图所示。图6我们在弹出的Objects窗口中单击鼠标右键,选择Add to wave-Signals in Region,如下图所示:图7我们将仿真时间改为 1 us,并单击菜单中的Run按钮,并如下图所示:图8我们在wave窗口中选择count,将其改为无符号整形显示。选择count,单击鼠标右键,选择Radix-Unsigned,如下图所示: 图9图10 最终仿真结果由于count是连续变化的量,也可以以模拟信号的方式显示。我们将仿真时间改为 20us,并单击菜单中的Run按钮。我们在wave窗口下选择Format-Analog,如下图所示,将显示方式修改为模拟方式。图11将显示的Step改为0.1,如下图所示:图12为了避免模拟方式显示的信号与其他信号重叠,我们可以插入Divide

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论