欢迎来到天天文库
浏览记录
ID:40595086
大小:334.50 KB
页数:11页
时间:2019-08-04
《使用ModelSim完成基本的HDL仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、使用ModelSim完成基本的HDL仿真时间:2010-02-2216:12来源:芯合FPGA学习网作者:admin点击:358次这里我们教大家使用ModelSim完成基本的HDL仿真。所应用的仿真代码是ModelSim自带的。 这里我们教大家使用ModelSim完成基本的HDL仿真。所应用的仿真代码是ModelSim自带的。安装了ModelSim后,可以在安装目录的examples/tutorials/verilog/basicSimulation下找到counter.v和tcounter.v。其中counter.v是被验证设计,tcounter.v是Testben
2、ch。 仿真过程如下1.打开ModelSim,首先建立一个新的Project,选择File->New->Project,图12. 在弹出的CreateProject窗口中给Project任意起一个名字,并指定Project的目录(ProjectLocation)。我们假设ProjectName为TestCounter,创建的Library名为work(所有我们编译后的代码的模块将被放入到work库中)。如下图所示: 图23.点击OK后弹出添加HDL代码到Project的窗口,如下图: 图3我们选择AddExistingFile,假设$ModelSim是你的ModelSim
3、的跟目录,则添加下面两个文件:$ModelSim/examples/tutorials/verilog/basicSimulation/counter.v$ModelSim/examples/tutorials/verilog/basicSimulation/tcounter.v添加文件的窗口如下图所示图4Tcounter.v的源代码如下:1.module test_counter; 2. 3.reg clk, reset; 4.wire [7:0] count; 5. 6.counter dut (count, clk, reset); 7. 8.initial //
4、 Clock generator 9. begin 10. clk = 0; 11. forever #10 clk = !clk; 12. end 1. 2.initial // Test stimulus 3. begin 4. reset = 0; 5. #5 reset = 1; 6. #4 reset = 0; 7. end 8. 9.initial 10. $monitor($stime,, reset,, clk,,, count); 11. 12.endmodule counter.v的源代码
5、如下:1.module counter (count, clk, reset); 2.output [7:0] count; 3.input clk, reset; 4. 5.reg [7:0] count; 6.parameter tpd_reset_to_count = 3; 7.parameter tpd_clk_to_count = 2; 8. 9.function [7:0] increment; 10.input [7:0] val; 11.reg [3:0] i; 12.reg carry; 13. begin 14. increment = v
6、al; 15. carry = 1'b1; 16. /* 17. * Exit this loop when carry == zero, OR all bits processed 18. */ 19. for (i = 4'b0; ((carry == 4'b1) && (i <= 7)); i = i+ 4'b1) 20. begin 21. increment[i] = val[i] ^ carry; 22. carry = val[i] & carry; 23. end
7、 24. end 25.endfunction 26. 1.always @ (posedge clk or posedge reset) 2. if (reset) 3. count = #tpd_reset_to_count 8'h00; 4. else 5. count <= #tpd_clk_to_count increment(count); 6. 7./**************************************************
此文档下载收益归作者所有