在使用FPGA的时候我们经常会遇到这样一个问题,这个信号我们到底是定义成wire类型还是定义成reg类型,如果定义不对编译软件也会通不过,有时候你通过编译软件的的提示将它改了回来,但你却并不明白是为什么会报错,而且下次还会再出现,当它再次出现时,我们又得重复的去修改,这样不仅耽误我们开发的时间,而且还影响我们学习的心情,所以这篇文章就是帮助你如何正确使用wire和reg来定义一个信号。
1wire和reg的区别
我们知道Verilog是硬件描述语言,就是通过描述构造底层的硬件电路来实现我们所需要的功能,那么当我们在设计数字电路的过程中经常需要将不同的芯片的引脚相互连接起来,而这一个过程其实就是wire所定义的变量类型,事实上当你写下如下语句时wire busy;
其实就是将某一连线命名为busy,接下来如何连线,就只需要对busy这个线型的信号进行操作了。而reg类型的变量则不同,他是一个寄存器类型的变量,寄存器的功能就是可以将我需要的数据保存在我的寄存器里面,里面的数据也可以根据我的需要随时变化,也就是说当你定义一个需要保存一段时间的数据时,你可以将它定义为一个寄存器变量,如果当你写下如下语句时,reg busy;
这里就是将busy定义成为一个寄存器类型的变量,接下来你要如何去操作这个寄存器,就需要你用别的语句去描述了。综合来看wire就是给某个连线取名字,reg就是给某个寄存器取名字。理解这一点后其实就很好区分那个时候用wire那个时候用reg了。