「BUAA-CO」P1_Verilog中reg的使用


定义和实例化模块时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;
    }


文章作者: Hyggge
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hyggge !
  目录