Verilog语法小结

建模方式

  • 数据流建模
 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

时序逻辑

  • 状态机的分类(按照输出相关性)
  1. mealy :输出不仅与当前状态有关,还与输入有关;
  2. moore: 输出只与当前状态有关。
  • 状态的编码:
  1. 二进制编码:节约资源,但状态翻转时容易引起毛刺。
    2.格雷码: 减小状态翻转时的可能产生的毛刺。
  2. 独热码: N个状态采用n位来编码
  • 状态机结构
  1. 两段式
  • 同步时序:状态更新,复位
    always(clock and rst)
  • 组合逻辑块:case模块
    always(current_state)
    同时将状态更新放入组合逻辑中(非阻塞赋值)。
    可能会存在隐患,状态更新放到组合逻辑中,可能会导致误翻转
  1. 三段式
  • 时序同步模块:状态更新
    always(clock ...)
  • 组合逻辑确定下一个状态
    always(current state)
  • 时序输出模块:
    always(clk rst)
    case(next_state)//变化输出靠next_state。

你可能感兴趣的:(Verilog语法小结)