wire表示直通,即只要输入有变化,输出马上无条件地反映,线信号;如:wire clk; 其中 clk 就是 wire 类型的信号;reg 关键词,寄存器。和线信号不同,它可以在 always 中被赋值,经常用于时序逻辑中。比如 reg[3:0]led,表示了一组寄存器。
wire只能被assign连续赋值,reg只能在initial和always中赋值。wire使用在连续赋值语句中,而reg使用在过程赋值语句中。在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。
输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以使wire/reg类型,输出端口只能驱动wire;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型。用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型;输入和双向端口不能声明为寄存器类型。要是出现不能给input赋值,那么就reg产生一个输出,与它进行封装连接,直接操作reg就可以了;或者在上一层进行