• Verilog 延时模型


      众所周知,Verilog提供了5中表示延迟的语句:

    1 (#5) a = b;// blocking assignment with LHS··············1
    2 
    3 a = (#5) b;// blocking assignment with RHS··············2
    4 
    5 (#5) a <= b;// non-blocking assignment with LHS·········3
    6 
    7 a <= (#5) b;// non-blocking assignment with RHS·········4
    8 
    9 assign (#5) a = b;// continuous assignment with LHS·····5

      前面四个都是写在always块内。

      连续赋值没有RHS。

      1.0时刻,计算右边表达式的值,生成左边的结果,暂存,等待5个时钟单位,再把结果赋值给a。等待期间,b的任何变化不起作用。在tb里面常用,例如生成时钟。不能用来模拟任何器件特性。

      2.0时刻,开始计时,除此之外什么也不做,计时到5时,右侧的值等待5个时间单位赋值给左边,等待期间,b的任何变化都会生效,只是有5个时间单位的延迟。可以用来模拟组合逻辑传输延迟

      3.和1没有实质区别。

      4.右侧的值等待5个时间单位赋值给左边,用在时钟沿触发的always块内就可以模拟FF传输延迟,C到Q端。

      5.0时刻,计算右边表达式的值,生成左边的结果,暂存,等待5个时钟单位,再把结果赋值给a。等待期间,b的任何变化都生效。组合逻辑惯性延迟(电容滤波效果)。

      5与2的区别在于,2把所有变化都记录下来,在5个时间单位之后赋值给左边。但是5在右边每次变化都会把上次暂存的值清空更新,因此5对于小于5个时钟周期的变化不敏感。

      而为什么5能模拟惯性延迟,1却不行呢?答案很简单,我们只需要把实际的电路波形图画出来,就明白了。 

      可以,但永远不要使用0延迟。

      不同仿真器的结果可能不同。

  • 相关阅读:
    数据库学习摘记 —— 关系代数和关系演算
    数据库学习摘记 —— 数据库基本概念杂记
    POJ 3130 How I Mathematician Wonder What You Are! (半平面相交)
    POJ 3311 Hie with the Pie (状压dp)
    hdu 1533 Going Home (最小费用最大流)
    bzoj 2115 Xor (线性基)
    hdu 5120 Intersection (圆环面积相交->圆面积相交)
    BZOJ 2460 元素(线性基)
    POJ 3348 Cows (凸包模板+凸包面积)
    UVA 12012 Detection of Extraterrestrial(KMP求循环节)
  • 原文地址:https://www.cnblogs.com/aliothx/p/13579661.html
Copyright © 2020-2023  润新知