ModelSim仿真教程

本文章详细介绍了怎样用ModelSim仿真Verilog,虽然只是很简单的一个二分频器的例子,但却正式小白入门所需要的。

本教程以ModelSim
SE 10.4为例

1. 新建工程

file->new->project,输入工程名 例如half_clkModelSim仿真教程

2. 新建文件

新建二分频器模块文件和testbench文件,分别为half_clk和half_clk_tb,注意type选择Verilog。

ModelSim仿真教程

3. 编写模块文件和激励文件内容

half_clk.v

half_clk
1
2
3
4
5
6
7
8
9
10
11
12
module half_clk_dai(clk_in, rst, clk_out );
    input clk_in, rst;
    output clk_out;
    reg clk_out;  
always @(posedge clk_in or negedge rst)
   begin 
      if(!rst) 
          clk_out<=0;
      else 
          clk_out<=~clk_out;
   end
endmodule

half_clk_tb.v

half_clk_tb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
`timescale
1ns/1ns
 
module half_clk_top;    
    reg clk_in;
    reg rst;  
    initial
        begin 
           clk_in=1;
           rst=1;
           #1000  rst=0;
           #1000  rst=1;
       end  
    always #200 clk_in=~clk_in;     
    half_clk_dai dai1(.clk_in(clk_in),.rst(rst),.clk_out(clk_out));
endmodule

4. 编译文件

编译前一定注意要保存文件!! 【ctrl+s】

点击工具栏按钮,编译全部文件,如果文件名后的status显示√就表示没有语法错误,编译成功。

否则

ModelSim仿真教程

如果有错误可以双击红色的error查看具体的错误信息。

ModelSim仿真教程

5. 工程仿真

点击工具栏的Simulation按钮进行仿真。

ModelSim仿真教程

选择work->half_clk_top,因为只需要对testbench文件进行仿真就行,取消左下角的优化选项,因为可能会把object框里的信号量优化掉.

在 instance里显示了testbench的文件结构,有一个always和一个initial,调用的half_clk里有个一always循环。

ModelSim仿真教程

在信号量上 右键->add > To Dataflow > Selected Items可以查看设计图

ModelSim仿真教程ModelSim仿真教程

如果ware里没有信号可以右键->add wave添加,然后设置运行时间5ms,点击run,就会显示波形。

ModelSim仿真教程ModelSim仿真教程

可以看到分频器正确运行,输出频率是输入频率的一半。

ModelSim仿真教程

上一篇:C语言程序设计(翁恺)--第三周课件中的三个遗留点


下一篇:实验问题集中记录