博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

always语言指导原则

Posted on 2015-10-22 22:17  期待1991  阅读(404)  评论(0编辑  收藏  举报

1、每个always只有一个@(event-expression).

2、always块可以表示时序逻辑和组合逻辑。

3、带有posedge和negedge关键字的是表示沿触发的时序逻辑,没有的表示组合逻辑或者电平敏感的锁存器。或者两者都表示。

4、每个在always快中赋值的信号必须定义成reg型或者整形(integer[<msb> :<lsb> ] identifier)。整形变量默认是32位。

5、always块中应该避免组合反馈回路,always块中的赋值必须是明确的。否则,需要设计者在设计中加入电平敏感的锁存器,来保持赋值前的最后一个值。解释如下:

  //我们不建议这样,你懂的,容易出错。

  input a,b,c;

  reg d,e;

  always@(a or b or c)//电平敏感列表就是a,b,c

    begin

      e=d & a & b;//因为电平敏感列表里面没有d,所以在d变化时,e不能立即变化,要等到a,b,c变化时才能体现出来。也就是相当于存在一个电平敏感的透明锁存器在暂存d的数据。

      d=e|c;

    end

6、把某一信号值赋值为’bx,综合器把它解释成无关状态,综合器生成的硬件电路做简洁。

 

摘自:verilog数字系统设计教程(夏宇闻)