跳转至

描述方法和设计层次

行为描述

过程赋值语句

[!note] 为什么 verilog 规定只有寄存器类型的变量才能够在过程赋值语句中被赋值? 实际上, 在 verilog 中定义的寄存器变量, 在综合时候并不一定映射成一个是在的触发器硬件. 比如如下的代码:

wire A_in, B_in, C_in;
reg Temp, D_out;
...
always @(A_in or B_in or C_in) begin
  Temp = A_in & B_in;
  D_out = Temp | C_in;
end
其中的 Temp 并不会被映射成一个实在的触发器硬件, 其综合的结果是: image.png 可以看到, Temp 被实际综合为了组合逻辑, 而不是一个存储单元. 在 Verilog 中, 寄存器变量的特点是需要在仿真运行器件上保持它的值, 即, 这个变量在仿真时候需要占据内存空间.