定义和实例化模块时reg的使用
在实例化元件时,wire 类型信号可以被连接至任意端口上,但 reg 类型的信号只能被连接至元件的输入端口上。
在声明元件时,我们可以将任意端口声明为 wire 类型,但只能将输出端口声明为 reg 类型,否则会出现问题。
定义输出端口时,我们可以直接定义成reg类型
output reg a;
或者在模块内部声明
reg
寄存器,然后通过assign
语句将寄存器中的值赋给wire
型输出端口
output b; //b是wire型(net)端口 reg temp; assign b = temp;
## task 和 function 中 reg 的使用任务(
task
)中,返回值是通过输出端口的变量决定的, 而task输出端口必须为reg
类型。因此在调用task
时,需要在调用前定义一个reg型变量,接收task
的返回值。函数(
function
)中,调用函数的表达式的操作结果就是返回值。在函数的定义时,默认存在一个与函数同名的,在函数内部的寄存器(reg
),相当于C语言中的
int function(……){ int temp_reg; //建立临时变量,储存要返回的结果 /* 对temp_reg 进行操作*/ return temp_reg; }