描述方法和设计层次
行为描述
过程赋值语句
[!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
并不会被映射成一个实在的触发器硬件, 其综合的结果是: 可以看到,Temp
被实际综合为了组合逻辑, 而不是一个存储单元. 在 Verilog 中, 寄存器变量的特点是需要在仿真运行器件上保持它的值, 即, 这个变量在仿真时候需要占据内存空间.