Systemverilog中always_comb / always_latch / always_ff用法

在Verilog HDL中,always块会根据敏感列表和编码综合出组合逻辑,锁存器,时序逻辑。仿真器无法验证综合出的电路是否与你的目标一致。

Systemverilog增加了特别实现过程块alway_comb, always_latch和always_ff。这些过程块减少了设计的模糊性,使得仿真器能够检查,并实现特定的硬件电路。(三种always_块均用于RTL设计。)

1 组合逻辑块 always_comb

always_comb用于产生组合逻辑:

  • 隐式的,全变量敏感列表。
  • 任意变量只能被一个always_comb赋值。
  • 不能包含时间控制和事件控制。
  • 若推断块内不是组合逻辑,可能会产生警告。
  • 在时间0时,所有initial块和always块后自动触发。
always_comb
begin
    if(sel)
        out = a;
    else
        out = b;
end

2 锁存器块 always_latch

  • 隐式的,全变量敏感列表。
  • 任意变量只能被一个always_comb赋值。
  • 不能包含时间控制和事件控制。
  • 若推断块内不是锁存器逻辑,可能会产生警告。
  • 在时间0时,所有initial块和always块后自动触发。
always_latch
begin
    if(en)
        out = a;
end   

3 寄存器块 always_ff

  • 在always_ff块中被赋值的变量,不能在其他过程块中被赋值。
  • 不能包含时间控制。
  • 包含且仅包含一个事件控制。
  • 若推断块内不是时序逻辑,可能会产生警告。
always_ff@(posedge clk or negedge rst_n)
begin
    if(~rst_n)
        q <= 0;
    else
        q <= d;
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值