食品网站建设策划方案,网上下载的网站模板怎么用,构建网站的主要步骤,让人做网站 需要准备什么文章目录 一、简介二、示例 一、简介
Verilog中只有一个通用的always过程块#xff0c;SystemVerilog中追加了3个具有更明确目的专用always块。
always_ffalways_combalways_latch
always_ff, always_comb, always_latch分别是用于寄存器#xff08;flip-flop#xff0c;… 文章目录 一、简介二、示例 一、简介
Verilog中只有一个通用的always过程块SystemVerilog中追加了3个具有更明确目的专用always块。
always_ffalways_combalways_latch
always_ff, always_comb, always_latch分别是用于寄存器flip-flop代表时序逻辑sequential logic, 组合逻辑以及锁存器的建模。 事实上always_ff, always_comb, always_latch能实现的always都能够实现。
新增的always语句具有如下的特点
always_comb用于可综合组合逻辑的建模不需要明确地定义敏感列表。 always_comb与always (*)在表达组合逻辑时几乎是等价的。always_ff用于可综合时序逻辑的建模必须带由posedge或者negedge所定义的敏感列表。
可综合设计规则
使用always_comb进行组合逻辑建模always_comb中使用阻塞赋值使用always_ff进行时序逻辑建模always_ff中只能使用非阻塞赋值。只有非阻塞赋值才能正确描述时钟沿触发的同步逻辑行为。同步设计中一般不允许使用latch因此不要使用always_latch通用的always只用于testbench的设计在always_comb/always_ff/always_latch不允许使用时间和事件控制语句绝对不允许在同一个过程块内混合使用阻塞和非阻塞两种赋值。组合逻辑和时序逻辑尽量不要在一个过程块中描述。
二、示例
时序逻辑
always_ff (posedge clk_in or negedge rst_n_in) beginif( !rst_n_in ) begind b0;end else begind (a b) | c;end
end组合逻辑
always_comb begincase(curr_state)s0: beginout1 1b1;out2 1b0;ends1: beginout1 in1; out2 1b1;ends2: beginout1 1b1;out2 in2;enddefault: beginout1 1b0; out2 1b0;endendcase
end