今天在看书时发现一点疑惑,问题大致是这样的:
一个电路网络,要对其中一个2输入与门的输出(定义为tmp吧,其实此处并不存在端口或变量)进行一些赋值操作,。在Verilog编程中按说是应该把其定义为wire型变量,可是今天看的一个例子却定义成了reg型,当然在使用tmp是在always模块中,我也知道在always模块中需要赋值的变量应该定义为reg型,是不是此时对tmp定义为reg型也同样兼容了wire型。是不是只有在组合逻辑时才可以定义为wire型变量,还是因为上者的情况是在always模块中的缘故。自己没法确定
组合逻辑的输出看你用在啥地方?
如果用在always模块之外,定义成WIRE;
例如二输入的与逻辑
assign c=a & b;
定义成WIRE类型,好处,C值随着A,B值立即变化,不受时钟或其他信号的影响。
如果定义成REG,一定要always 模块赋值
例如always ( a or b)
begin
c<=a & b;
end
上面两种表达方法,电路的形式一样,结果一样。只是表达方法不同罢了。