首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >verilog错误..。(vlog-2110)非法引用网络数组

verilog错误..。(vlog-2110)非法引用网络数组
EN

Stack Overflow用户
提问于 2020-10-05 18:18:50
回答 1查看 926关注 0票数 1

使用Verilog,我想做4乘4乘法器,但是有一个错误:

vlog-2110)非法引用网络数组"w11“。

关于其他变量w12,o1.还有错误..。

我不明白错误的意思。如果你能解决这个错误,请告诉我。

代码语言:javascript
复制
module half_adder (x,y,s,c);
  input x,y;
  output s,c;

  assign s=x^y;
  assign c=x&y;   
endmodule

module full_adder (x,y,z,s,c);
  input x,y,z;
  output s,c;
  wire w1,w2,w3;

  half_adder h1(x,y,w1,w2);
  half_adder h2(w1,z,s,w3);
  assign c = w2|w3;
endmodule   

module  four_bit_adder (a, b, c0, s, c4);
  input [3:0]a;
  input [3:0]b;
  input c0;
  output [3:0]s;
  output c4;
  wire c1,c2,c3;

  full_adder fu1(a[0],b[0],c0,s[0],c1);
  full_adder fu2(a[1],b[1],c1,s[1],c2);
    
  full_adder fu3(a[2],b[2],c2,s[2],c3);
  full_adder fu4(a[3],b[3],c3,s[3],c4);
endmodule

下一个代码可能有错误。

代码语言:javascript
复制
// 4by4_multiplier
module four_four_multi (A,B, zero, C);
  input [3:0]A;
  input [3:0]B;
  input zero;
  output [7:0]C;
  wire w11[3:0];
  wire w12[3:0];
  wire o1[3:0];
  wire w21[3:0];
  wire w22[3:0];
  wire o2[3:0];
  wire w31[3:0];
  wire w32[3:0];
  wire o3[3:0];
  wire o4;
  
  assign C[0] = A[0] & B[0];

  assign w11[0] = A[0] & B[1];
  assign w11[1] = A[0] & B[2];
  assign w11[2] = A[0] & B[3];
  assign w11[3] = 0;
  
  assign w12[0] = A[1] & B[0];
  assign w12[1] = A[1] & B[1];
  assign w12[2] = A[1] & B[2];
  assign w12[3] = A[1] & B[3];

  four_bit_adder four1(w11, w12, zero, o1 ,w21[3] );

  assign C[1] = o1[0];
  assign w21[0] = o1[1];
  assign w21[1] = o1[2];
  assign w21[2] = o1[3];
  
  assign w22[0] = A[2] & B[0];
  assign w22[1] = A[2] & B[1];
  assign w22[2] = A[2] & B[2];
  assign w22[3] = A[2] & B[3];

  four_bit_adder four2(w21, w22, zero, o2 ,w31[3] );

  assign C[2] = o2[0];
  assign w31[0] = o2[1];
  assign w31[1] = o2[2];
  assign w31[2] = o2[3];
  
  four_bit_adder four3(w31, w32, zero, o3 , o4 );

  assign C[3] = o3[0];
  assign C[4] = o3[1];
  assign C[5] = o3[2];
  assign C[6] = o3[3];
endmodule
EN

回答 1

Stack Overflow用户

发布于 2020-10-06 21:42:00

下面的声明声明网w11,w12,.就像一排网。

代码语言:javascript
复制
  wire w11[3:0];
  wire w12[3:0];
  ...

verilog标准允许您声明它们,但不允许在端口中将它们作为整体数组使用。要在verilog中修复它,需要将这些网声明为向量:

代码语言:javascript
复制
  wire [3:0] w11;
  wire [3:0] w12;
  ...

系统Verilog放宽了这一规则,它应该按照原样使用该语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64214110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档