原创 深入研究Modelsim之使用do文件仿真(1)

2010-6-19 15:41 4900 10 11 分类: FPGA/CPLD

Modelsim的仿真功能非常强大,本文介绍使用do脚本仿真单个Verilog或者VHDL文件的操作过程,希望对大家有用!


以带时钟和复位信号的计数器为例,代码如下:



module counter (      clk, n_rst,    a,   b,   d    );<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


input        clk;


input        n_rst;


input  [7:0] a;


input  [7:0] b;


output [8:0] d;


reg    [8:0] d;


always@(posedge clk)


begin


      if (!n_rst)


           d <= 9'b000000000;


      else


           d <= a + b;


end


endmodule


然后编写如下内容的do格式文件:



1)        vlib work


2)        vmap work


3)        vlog counter.v


4)        vsim -L work work.counter -t 1ns


5)        add wave -r /*


6)        force -repeat 20 clk 0 0, 1 10


7)        force n_rst 1


8)        force a 16#AA


9)        force b 16#BB


10)     run 40


11)     force n_rst 0


12)     run 40


13)     force n_rst 1


14)     force a 16#55


15)     force b 16#aaa


16)     run 40


 


启动Modelsim,将工作目录切换到counter.vcounter.do文件所在目录,在命令框里输入do counter.do 即可自动进行仿真,显示的波形图如下:


点击看大图


counter.do 文件解释


1)  新建work


2)  映射work


3)  编译counter.v文件,默认编译到work库里


4)  仿真work库里名为counter的模块,时间单位为1ns


5)  将工程中所有信号量添加到波形图里


6)  添加时钟信号,周期为20(ns)。如果要改变时钟周期,代码中“20”和“10”要同时改变,且为两倍关系,“10”为一个周期中高电平所占时间。


7)  n_rst 信号置1


8)  a 赋值为16进制的AA b10101010


9)  b 赋值为16进制的BB b10111011


10)              运行40ns,如图中的前两个周期


11)              n_rst 0


12)              运行40ns,如图中的中间两个周期


13)              n_rst 1


14)              a 赋值为16进制55 b01010101


15)              b 赋值为16进制 AA b10101010


16)              支行40ns,如图中后两个周期


 


 


补充:如果要仿真单个VHDL文件,只要将第3行换成vcom counter.vhd 即可。


 


可以下载本文的PDF版:


https://static.assets-stash.eet-china.com/album/old-resources/2010/6/19/bc4d19a7-5848-48d6-97d6-868ca7e9bdf5.rar

文章评论1条评论)

登录后参与讨论

用户576008 2010-7-10 16:25

看看啊
相关推荐阅读
用户124183 2010-10-04 18:48
[Craftor原创]基于Verilog的I2C总线驱动设计
摘要:此版本的设计中,笔者将协议里对总线的操作细分为4个,即起始(Start)、写(Write)、读(Read)、停止(Stop),并给对应的操作编码:起始(1000)、写(0100)、读(0010)...
用户124183 2010-09-03 10:42
4/8/16/32/64位乘法器的设计
4/8/16/32/64位乘法器的设计,单个时钟周期运算出结果。思路如下:4位乘法器a,b输入,y输出。使用case语句,对于输入a,y输出是b输入的16种可能。单个周期内可以输出结果。8位乘法器a,...
用户124183 2010-09-02 15:32
除法器的设计与仿真(Verilog&VHDL)
最近在做算法,要用到除法。本来想使用除法器的IP核,但发现Xilinx的除法器IP核是流水线的,如果是批量的数做除法,自然是很快,也很方便。而我的算法中需要将前一次的结果算出来之后,再到下一次运算里做...
用户124183 2010-08-06 09:58
Modelsim中添加Xilinx仿真库
不少朋友在刚接触Xilinx的FPGA时,对仿真库的编译和使用不是很了解,而官方的说明也不是很详细,而且看起来有些费劲,这里Craftor给出在Modelsim中编译和使用Xilinx库的详细教程,P...
用户124183 2010-08-02 22:51
周末写了个51单片机软核
为了弥补这段时间的罪过,这个周末决定做宅男,写程序。其实酝酿51软核已经有好几个月时间了,之前是因为在一个地方卡住了,中间停止了。上周五上班的时候突然来了灵感,一下子想通了,呵呵代码不长,1000多行...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条