Verilog:reg和wire的区别

关于wire

在Verilog中,wire可以看作一个导线(或则任意位宽的总线),需要注意的几点是:

  1. wire可以用于将实例化时的输入输出端口连接到电路的其他地方
  2. wire类型必须被其他东西驱动而不能用于储存其他数据
  3. wire类型在always@块中不能作为=<=的左值
  4. wireassign语句的左值唯一合法的类型
  5. wire只能用于组合逻辑电路

关于reg

regwire比较类似,但是能够储存信息,类似寄存器,需要注意的几点是:

  1. reg可以在实例化模块时连接其输入
  2. reg不可以再实例化模块时连接其输出
  3. reg可以在声明模块时作为其输出
  4. reg不可以在声明模块时作为其输入
  5. reg类型时always@块中作为=,<=左值的唯一合法类型
  6. reg不能作为assign语句的左值
  7. reg类型可以创建寄存器,以用于类似于always@(posedge)的块
  8. reg可以描述组合逻辑也可以描述时序逻辑

regwire的共性

  1. 都可以作为实例化模块时的输入
  2. 都可以作为always@块中=,<=的右值以及assign的右值