Verilog 学习笔记(2)——ModelSim 的基本使用

Verilog 学习笔记(2)——ModelSim 的基本使用

ModelSim 的基本使用

在上一章中我们已经介绍了 ModelSim 的基本用途与安装,这章介绍 ModelSim 的基本使用方法。

如何在 ModelSim 中建立工程并完成仿真

一开始会弹出 Welcome 的窗口,我们先 Close。

16

在 File->New->Library 先建立一个自己的库。

1718

然后就可以新建工程了(之后打开也可以在前面关掉的 Welcome 窗口新建或打开工程)

点击 File->New->Project 建立工程,在对应的地方输入工程名,选择工程存储路径,输入库的名称(并不是前面建的库,而是这个工程所要用到的实例化的库),我以一个四位加法器为例。

19

选择 Create New File

20

命名就随便写,语言记得改为 Verilog(默认是 VHDL)。

21

像上一章提到的,为了仿真还要建立一个 Testbench,重复以上步骤新建一个 Testbench。

建立完了以后应该是如图所示有两个.v 格式的文件。

22

双击之后就可以开始编辑了,一般来说应该是默认的内置编辑器,如果想用 VSCode 编辑的话,先按照绪论里的布道指南配好 Verilog 插件,然后在 Transcript 窗口(如果没有的话 View->Transcript)里输入

proc external_editor {filename linenumber} { exec "{{VSCode路径}}\\Code.exe" -g $filename:$linenumber}

回车,输入

set PrefSource(altEditor) external_editor

即从默认的内置编辑器改为用 VSCode 打开。

若要改回默认的编辑器,则在 Transcript 窗口输入

unset PrefSource(altEditor)

24

在.v 文件中输入相应的 Verilog 代码,不过我还没讲怎么写,所以先看看就好。

adder_4:

module adder_4(
        input [3:0] A,
        input [3:0] B,
        output [4:0] sum );

    assign sum = A+B;

endmodule

adder_4_tb:

`timescale 1ns/1ns

module adder_4_tb();

    reg  [3:0]  A;
    reg  [3:0]  B;
    wire [4:0]  sum;

    initial begin
        A = 0;
        B = 0;
        #10;
        A = 4'b0110;
        B = 4'b1010;
        #10;
        A = 4'd3;
        B = 4'd7;
        #10;
        A = 5;
        B = 8;
        #10;
        A = 4'he;
        B = 4'ha;
        #10;
        A = 4'hf;
        B = 4'hf;
    end

    //initial begin
    //    #100 $finish;
    //end

    adder_4 adder0(
    .A(A),
    .B(B),
    .sum(sum)
    );

endmodule

然后菜单里 Compile->Compile all 或者右键文件 Compile ,在 Transcript 里会有编译结果(如果有错就要 debug 不过我这两条应该没有问题)

25

之后就可以进行仿真了,菜单 Simulate->start simulation ,选择建立的 tb 文件,把 Enable optimization 框选去掉

26

27

在 object 窗口里选择想要仿真的信号,右键->add to->wave->selected signals 来加入波形

28

在上方工具栏 Run,我这里跑150ns

29

出现如图波形,如果觉得在这个窗口看不方便可以点击箭头所指按钮把 Wave 窗口独立,另外右键信号->Radix可以更改进制和符号,最终实现如图

31

符合四位加法器的功能,验证通过。至此功能仿真完成。

使用 ModelSim 的一些快捷键

Modelsim 重度使用者的故事:快捷键

下一章就可以开始正经的 Verilog 了。。。

 

点赞 0

No Comments

Add your comment