首先Verilog中物理数据可以分为线型和寄存器型,在数据定义的时候我们容易混淆。在这里我们一wire和reg为区别讨论它们的区别。
主要讨论几大区别:
一.reg相当于寄存器,wire相当于物理连线。。。。
二.reg寄存器保持最后一次赋值,但是wire却需要连续的驱动。。
三.输入端口可以是wire/reg驱动,但输入端只能是wire。输出端只能是wire驱动,但输出端口可以是wire/reg.
四.wire表示直通,只要输入有变化,输出就会无条件发生变化。而reg表示一定要有触发,输出才会反应输入。
五.wire只能在assign中能被赋值,reg只能在initial或者always赋值。
六.wire用在连续赋值中,相当于表达式左边的值改变右边的值就会立即改变。(相当于一条线)而reg用在过程赋值中。而对于reg类型,表达式右边的值是在某一个触发条件的情况下赋值到下一个寄存器。根据触发条件的不同对应不同的硬件电路。例如:根据电平的上升沿或者下降沿触发,这个硬件模型就是触发器,如果根据高电平还是低电平,那么这个硬件模型就是锁存器。如果是右侧任意数的操作,那么这个硬件电路模型就是就是逻辑组合电路。