全部博文(320)
分类:
2010-06-08 17:04:39
wire型,意为连线型,一般用于组合逻辑(CL)之中。verilog HDL模块中的输入输出信号类型默认时自动定义为wire型。
reg型,意为寄存器型,既可以用组合逻辑实现,亦可用于时序逻辑中,即用触发器(filp-flop)实现。
wire型和reg型在verilog HDL语法中的区别在于,wire型数据通常用assign语句赋值,reg型数据必须被放在过程语句中(如initial、always)中,通过过程赋值语句赋值。
同样一个组合电路,不光可以用wire型数据来写,实际上也可以用reg型数据写:
(1) wire写法
wire cl_a;
assign cl_a = a ?A : B;
(2) reg写法
reg cl_a;
or A or B)
begin
if(a)
cl_a = A;
else
cl_a = B;
end
(3)reg写法2
reg cl_a;
or A or B)
begin
cl_a = a? A : B;
end
需要注意的是,reg型在用于组合逻辑时,always(parameter)中的参数为组合逻辑的参数;reg型参数在always中赋值采用阻塞赋值。
下面举出reg型数据使用触发器实现的例子:
reg f_a;
clk)
begin
f_a <= a ? A : B;
end
对应该电路实现为:
reg型在用触发器实现时,always(parameter) 中的参数通常为时钟边沿,这是由触发器的性质决定的,reg型参数在always中复制采用非阻塞赋值。
From:http://blog.csdn.net/leonsc/archive/2009/09/11/4547696.aspx