×
嵌入式 > 技术百科 > 详情

Verilog HDL设计模拟

发布时间:2021-08-02 发布时间:
|

Verilog HDL不仅提供描述设计的能力,而且提供对激励、控制、存储响应和设计验证的建模能力。激励和控制可用初始化语句产生。验证运行过程中的响应可以作为“变化时保存”或作为选通的数据存储。最后,设计验证可以通过在初始化语句中写入相应的语句自动与期望的响应值比较完成。

下面是测试模块Top的例子。该例子测试2.3节中讲到的FA_Seq模块。

‘timescale 1ns/1ns

module Top; /⁄一个模块可以有一个空的端口列表。

reg PA, PB, PCi;

wire PCo, PSum;

/⁄正在测试的实例化模块:

FA_Seq F1(PA, PB, PCi, PSum, PCo); /⁄定位。

initial

begin: output Q, Qbar;

input R, S;

nand #1 (Q, R, Qbar);

nand #1 (Qbar, S, Q,);

//在门实例语句中,实例名称是可选的。

endmodule

module Test;

reg TS, TR;

wire TQ, TQb;

//测试模块的实例语句:

RS_FF monitor ("At time %t ," , $time,

"TR = %b, TS=%b, TQ=%b, TQb= %b", TR, TS, TQ, TQb);

endmodule

RS_FF模块描述了设计的结构。在门实例语句中使用门时延;例如,第一个实例语句中的门时延为1个时间单位。该门时延意味着如果R或Qbar假定在T时刻变化,Q将在T+1时刻获得计算结果值。

模块Test是一个测试模块。测试模块中的RS_FF用实例语句说明其端口用端口名关联方式连接。在这一模块中有两条初始化语句。第一个初始化语句只简单地产生TS和TR上的波形。这一初始化语句包含带有语句间时延的程序块过程赋值语句。

第二条初始化语句调用系统任务$monitor。这一系统任务调用的功能是只要参数表中指定的变量值发生变化就打印指定的字符串。下面是测试模块产生的输出。请注意`timescale指令在时延上的影响。

At time 0, TR=0, TS=0, TQ=x, TQb= x

At time 10, TR=0, TS=0, TQ=1, TQb= 1

At time 50, TR=0, TS=1, TQ=1, TQb= 1

At time 60, TR=0, TS=1, TQ=1, TQb= 0

At time 100, TR=1, TS=0, TQ=1, TQb= 0

At time 110, TR=1, TS=0, TQ=1, TQb= 1

At time 120, TR=1, TS=0, TQ=0, TQb= 1

At time 150, TR=0, TS=1, TQ=0, TQb= 1

At time 160, TR=0, TS=1, TQ=1, TQb= 1

At time 170, TR=0, TS=1, TQ=1, TQb= 0

At time 200, TR=0, TS=0, TQ=1, TQb= 0

At time 210, TR=0, TS=0, TQ=1, TQb= 1

At time 250, TR=1, TS=0, TQ=1, TQb= 1

At time 260, TR=1, TS=0, TQ=0, TQb= 1

后面的章节将更详细地讲述这些主题。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器