verilog 时延相关语法

《Verilog HDL与数字系统设计简明教程》吴戈 人民邮电出版社 p34~35
1、时延的概念
连续赋值语句中经常出现时延,时延就是给出一个值,程序执行到此处就会暂停下来,等待这个值规定的若干个单位时间(单位时间的大小是默认值或由预处理指令timescale定义),然后再继续执行后面的语句。定义时延的形式是使用符号“#”,如#3就表示在此等待3个单位时间。
时延可以单独作为一句,如“#3;”就是程序中的一条语句。时延也可以内嵌在连续赋值语句中,跟在关键词assign之后。如果在连续赋值语句中没有定义时延,则默认时延值为0,右端表达式的值会立刻赋值给左端线网。如果在连续赋值语句中定义了时延值,例如:

assign #6 Ask = Quiet || Late;

那么右边表达式的计算结果要经过6个单位时间的时延之后才能赋给等号左端的线网目标。如下图中1所示,例如在时刻5,Late的值发生变化,则计算等号右端的表达式,并且在时刻11(从时刻5开始延时6个单位时间)时把结果值赋给Ask。
在整个时延过程中,如果等号右端表达式的值再次发生变化,那么时延结束时应把最新的值赋给等号左侧的线网。例如:

assign #4 Cab = Drm;

如下图2中所示,在时刻5,Drm从0变为1,那么根据连续赋值语句中的时延定义,应该在时刻9把新的值1赋给Cab,但是因为Drm在时刻8又变为0,所以到时刻9,赋给Cab的是Drm的最新值0。同样,因为值变化快于时间间隔,Drm在时刻18的值变化也无法反

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值