verilog信号定义及使用总结

概述

verilog信号主要包括wire型和reg型两种类型,在信号定义及使用中采用哪种类型很容易弄错或混淆,下面总结如下。

module端口信号定义

将module作为一个黑盒子,从黑盒子输入输出端口来看,可以划分为端口内部信号和端口外部信号。

1、module端口内部信号
module是对端口输入信号进行处理,然后从端口输出信号输出结果,对输入信号是被动接收的,无法自行定义,因此input端口必须为wrie型(默认);output端口可以根据组合或时序输出需要定义为wire型或reg型,同理inout端口。
2、module端口外部信号
module的外部激励信号是主动发出的,可以自行定义,因此可以根据组合或时序输出需要定义为wire型或reg型;但是对于module处理结果的接收是被动的,必须定义为wire,无法自行定义。

always信号定义

通过always可以实现组合电路和时序电路。
在always实现组合电路时,等号左边和右边信号必须为wire型,且触发条件包括右边信号及判断条件;
在always实现时序电路时,等号左边信号可以为wire型或reg型,但是右边信号必须为reg型。

assign信号定义

assign主要用于实现组合电路,等号左边和右边信号必须为wire型。

总结

如何选择wire or reg,可以从两个维度理解记忆,一是从主动和被动角度定义端口信号类型,二是从组合电路和逻辑电路定义内部信号类型。个人理解偏颇之处大家还请大家留言纠正。

猜你喜欢

转载自blog.csdn.net/weixin_39789553/article/details/114076635