Verilog 编程:语句、设计编码与实用建议
1. Verilog 语句类型
Verilog 有两种类型的语句:过程性(顺序)语句和连续性(并发)语句。过程性语句用于给变量赋值,通常嵌入在 always
块中,遵循顺序执行的规则;连续性语句用于给网络(net)赋值,各语句并行执行。
连续性 Verilog 编码的重要规则如下:
- 网络代表唯一的线,不允许使用 reg
类型。
- 语句顺序无关紧要。
- 每个语句以 assign
关键字开头,必须使用阻塞赋值( =
)。
例如,以下代码由于网络 “T” 有多个常量驱动而无法编译:
assign T = A | B;
assign T = C ^ T;
assign G = D & T;
但调整为如下形式则可以正常编译:
assign T1 = A | B;
assign G = D & T2;
assign T2 = C ^ T1;
过程性编码的重要规则如下:
- 变量不代表唯一的线。
- 如果使用阻塞赋值( =
), always
块内语句的顺序很重要。
- 在循环评估中需要保存的变量需要使用 reg
类