tag 标签: 语句内时延

相关博文
  • 热度 3
    2014-5-28 14:56
    910 次阅读|
    0 个评论
        时延可以细分为两种类型:   1) 语句间时延: 这是时延语句执行的时延。   2) 语句内时延: 这是右边表达式数值计算与左边表达式赋值间的时延。   下面是语句间时延的示例: Sum = (A ^ B) ^ Cin; #4 T1 = A Cin;   在第二条语句中的时延规定赋值延迟4个时间单位执行。就是说,在第一条语句执行后等待4个时间单位,然后执行第二条语句。下面是语句内时延的示例。 Sum = #3 (A^ B) ^ Cin;   这个赋值中的时延意味着首先计算右边表达式的值, 等待3个时间单位,然后赋值给Sum。   如果在过程赋值中未定义时延,缺省值为0时延,也就是说,赋值立即发生。这种形式以及在always 语句中指定语句的其他形式将在第8章中详细讨论。   下面是initial语句的示例: `timescale 1ns / 1ns module Test (Pop, Pid); output Pop, Pid; reg Pop, Pid; initial begin Pop = 0; // 语句 1。 Pid = 0; // 语句 2。 Pop = #5 1; // 语句 3。 Pid = #3 1; // 语句 4。 Pop = #6 0; // 语句 5。 Pid = #2 0; // 语句 6。 end endmodule   initial语句包含一个顺序过程。这一顺序过程在0 ns时开始执行,并且在顺序过程中所有语句全部执行完毕后, initial语句永远挂起。这一顺序过程包含带有定义语句内时延的分组过程赋值的实例。语句1和2在0 ns时执行。第三条语句也在0时刻执行,导致Pop 在第5 ns时被赋值。语句4在第5 ns执行,并且Pid 在第8 ns被赋值。同样,Pop在14 ns被赋值0,Pid在第16 ns被赋值0。第6条语句执行后,initial语句永远被挂起。