Verilog HDL提供了哪两种类型的显式时序控制

描述

Verilog HDL提供了两种类型的显式时序控制:一种是延迟控制,即定义执行语句的延迟时间;另一种是事件控制,只有当某一事件发生时才允许该语句继续向下执行。

Verilog仿真时,仿真时间由以下四种形式进行控制:

(1)定义过的门级或线传输延迟

(2)由#符号引入的延迟控制

(3)由@符号引入的事件控制

(4)等待语句

其中形式1是由门级器件来决定的,无须讨论。

1、延迟控制#

Verilog延迟控制格式为:

# expression

延迟时间由expression的值确定。

example1:

module delay; reg[1:0] r; initial #70 $stop; initial begin : b1 #10 r=1; #20 r=1; #30 r=1; end initial begin : b2 #5 r=2; #20 r=2; #30 r=2; end always @r begin $display(“r=%0d at time %0d”,r,$time); end endmodule

执行结果如下:

r=2 at time 5 r=1 at time 10 r=2 at time 25r=1 at time 30 r=2 at time 55 r=1 at time 60

在赋值语句中使用:

current_state=#clock_period next_state;

2、事件控制

一个事件可以通过运行表达式:-》event变量来被激发。

事件变量的声明:

event var;

event触发为:

-》var;

捕获触发为:

@(var);

在赋值语句中使用:

current_state=@(posedge clock) next_state;

3、等待语句

wait(expression)

当等待的表达式为假则中断运行,知道表达式变为真。

4、延迟定义模块

Verilog可以对模块中某一指定的路径进行延迟定义,延迟定义块内容要放在specify和endspecify之间,延迟定义块是一个独立的块结构,不在任何其他模块(如initial或always)内出现,在定义块内使用specparam关键字定义参数。

(1)并行连接:每条路径都有一个源域和一个目标域,每一位对应相连(向量位数相同)。

(source=》destination)=《delay_value》;

(2)全连接:位对位连接,源和目标位数不必相同(源域的每一位和目标域的每一位分别相连)。

(source*》destination)=《delay_vaule》;

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分