verilog入门语法学习-第1篇

1. 如何观察被测模块的响应:

在initial 块中,用系统任务$time 和 $monitor

$time 返回当前的仿真时刻

$monitor 只要在其变量列表中有某一个或某几个变 量值发生变化,便在仿真单位时间结束时显示其变 量列表中所有变量的值。

1 例:
2 initial begin
3 $monitor ($time, , “out=%b a=%b sel=%b”, out,a,b,sel);
4 end

2.如何把被测模块的输出变化记录到数据库文件中?

(文件格式为VCD,大多数的波形显示工具都能读取该格式)

可用以下七个系统任务:

1 $dumpfile(“file.dump”); //打开记录数据变化的数据文件
2 $dumpvars(); //选择需要记录的变量
3 $dumpflush; //把记录在数据文件中的资料转送到硬盘保存
4 $dumpoff; //停止记录数据变化
5 $dumpon; //重新开始记录数据变化
6 $dumplimit(<file_size>); //规定数据文件的大小(字节)
7 $dumpall; //记录所有指定信号的变化值到数据文件中

3. $<标识符> ‘$’ 符号表示 Verilog 的系统任务和函数

常用的系统任务和函数有下面几种:

1 $time //找到当前的仿真时间
2 $display, $monitor //显示和监视信号值的变化
3 $stop //暂停仿真
4 $finish //结束仿真

4.特殊符号 “#” 常用来表示延迟: 在过程赋值语句时表示延迟。

1 例:initial begin #10 rst=1; #50 rst=0; end

5. 编译引导语句用主键盘左上角小写键 “ ` ” 起头 用于指导仿真编译器在编译时采取一些特殊处理

1 `include “global.v”
2 `define  //宏定义
3 `include  //包含其他文件
4 `timescale  //仿真分辨了
5 `uselib  //使用库
6 `resetall  //编译引导语句把所有设置的编译引导恢复到缺省状态,不明白啊?

6.`timescale 用于说明程序中的时间单位和仿真精度

7.选择数据类型时常犯的错误,其中过程块是always块吗?

1 在过程块中对变量赋值时,忘了把它定义为寄存器 类型(reg)或已把它定义为连接类型了(wire2 把实例的输出连接出去时,把它定义为寄存器类型了
3 把模块的输入信号定义为寄存器类型了。
posted @ 2017-12-28 20:39  429512065  阅读(355)  评论(0编辑  收藏  举报