当前位置:   article > 正文

3.wire类型和reg类型的区别与联系_wire类型 可以做按位与

wire类型 可以做按位与

Verilog中,wire和reg是两种不同的信号类型。先不涉及太多直奔主题,怎么用?

如果不加位宽,则都默认表示1bit类型的数据举例:

  1. //reg 类型
  2. reg a;//1bit数据
  3. reg b;//1bit数据
  4. //wire类型
  5. wire a;//1bit数据
  6. wire b;//1bit数据

如果加了位宽,则表示相应位宽的数据,以2bit举例

  1. reg [1:0] a;//2bit数据
  2. wire [1:0] a;//2bit数据

reg 和wire的写代码的时候使用范围,那个地方该用wire,哪个地方改用reg?

  1. 重点1
  2. //在always语句块和initial语句块中(过程赋值语句)(还有function和task这里没有举例),左边必须使用reg类型的变量
  3. reg a;
  4. reg [1:0] b;
  5. always@(------)begin
  6. a = --------------;//a 必须使用reg类型
  7. b = --------------;//b和a 一样
  8. end
  9. initial begin
  10. a = --------------;//a 必须使用reg类型
  11. b = --------------;//b和a 一样
  12. end
  13. 重点2
  14. //在所有的assign语句(连续性赋值语句)中必须使用wire类型
  15. wire c;
  16. wire [1:0] d;
  17. assign c = --------;//c必须得是wire类型
  18. assign d = --------;//d和c一样

初学者先学会上面如何使用;

下面具体讲二者区别与联系;

联系:wire 和 reg类型都是4值逻辑,也就是除了表示0和1外,还表示x(不定态,就是未知状态)还有高阻态z,wire默认值为z,reg默认值为x,;  不像,bit ,byte, int ,只有0和1两种,且默认值为0.

区别:wire表示一根物理的导线,不能存储结构,主要起到连接作用,只负责传递驱动级的输出;比如assign    m =  n  &  q;   n &q 得到的值立刻返回给m,表达式计算的结果立刻给左边m

        reg表示存储单元,用于存储数据,wire类型不能存储数据,只能用来传递。reg类类型在没有输入的时候可以保持原来的值不变,在时钟沿到来或者异步信号改变等条件触发时可以改变内部状态。reg虽然是寄存器类型,但是也可以被综合工具综合为组合逻辑

always () begin

c    =   d & m;//此时c必须时reg类型,d和m既可以时wire类型也可以时reg类型

end

注:在实例化DUT时候,对于输入的wire类型要用reg类型去驱动,输出的reg类型要用wire类型去采样,具体看上一章,module的实例化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/613918
推荐阅读
  

闽ICP备14008679号