建模方式
assign add = a + b;//通过跟踪数据流来改变信号,常见于wire型变量
initial // 用于仿真
always @ (list) //用于综合
begin
end
- 结构化建模
通过调用底层逻辑模块来进行电路描述,值得注意的是:底层模块中有参数时,可通过顶层模块修改底层模块的参数
module para1(C, D); //declaretion a module with param a and b;
parameter a = 1;
parameter b = 1;
...
endmodule
module para2;//reset the lower module para
para1 #(4,3) U1(C1, D1);
para1 #(.b(5), .a(6)) U2(C2, D2);
endmodule
时序逻辑
- mealy :输出不仅与当前状态有关,还与输入有关;
- moore: 输出只与当前状态有关。
- 二进制编码:节约资源,但状态翻转时容易引起毛刺。
2.格雷码: 减小状态翻转时的可能产生的毛刺。
- 独热码: N个状态采用n位来编码
- 两段式
- 同步时序:状态更新,复位
always(clock and rst)
- 组合逻辑块:case模块
always(current_state)
同时将状态更新放入组合逻辑中(非阻塞赋值)。
可能会存在隐患,状态更新放到组合逻辑中,可能会导致误翻转
- 三段式
- 时序同步模块:状态更新
always(clock ...)
- 组合逻辑确定下一个状态
always(current state)
- 时序输出模块:
always(clk rst)
case(next_state)//变化输出靠next_state。