Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Verilog:可以进行索引实例化吗?_Verilog - Fatal编程技术网

Verilog:可以进行索引实例化吗?

Verilog:可以进行索引实例化吗?,verilog,Verilog,我有一个文件,类似于 module AB(A,B,Out); input A,B; output Out; wire Out; assign Out = A & B; endmodule 我需要使用这个计算的N个数。 即a=1001;b=0001,我需要做一些类似于按位和的事情,我有N个位 我将其用作一个实例: op[0] = a[0] & b[0]; op[1] = a[1] & b[1]; op[2] = a[2] & b[2]; op[3

我有一个文件,类似于

module AB(A,B,Out);
  input A,B;
  output Out;

  wire Out;
  assign Out = A & B;
endmodule
我需要使用这个计算的N个数。 即a=1001;b=0001,我需要做一些类似于按位和的事情,我有N个位

我将其用作一个实例:

op[0] = a[0] & b[0];
op[1] = a[1] & b[1];
op[2] = a[2] & b[2];
op[3] = a[3] & b[3];
op[4] = a[4] & b[4];
当我尝试使用索引I执行此操作时,我有:

AB g(a[i],b[i],Op[i]) for i = 0 to N-1. 
如果我这样做,它说AB是未申报的


这不可能吗?如果是,还有什么选择?

这可以使用支持实例数组的
generate
语句来实现。该结构在Verilog IEEE Std 1364-2001中引入

genvar i;
generate
    for (i=0; i<4; i=i+1) begin
        AB g (a[i], b[i], op[i]);
    end
endgenerate
genvari;
生成
对于(i=0;i您有几个选项:

  • 参数化模块中的总线大小
  • 实例数组
  • 生成
    语句
但要回答这个问题,可以使用实例数组

module testbench ();
   localparam WIDTH = 4;

   reg [WIDTH-1:0] a_in, b_in;
   wire [WIDTH-1:0] out_a;

   AB u0[WIDTH-1:0]
     (
      .A(a_in),
      .B(b_in),
      .Out(out_a)
     );

   initial begin
      ...
   end

endmodule

这里,
a\u in[3]
b\u in[3]
out\u a[3]
被映射到
u0[3]

和Toolic的端口:如果我的问题很愚蠢,那就很抱歉。我是verilog的新手:)我想知道我是否应该为j=0编写一个带有嵌套for循环(2个循环)的generate语句。。。其中i=0到。。。设计模块内部;或者我应该在测试台上写参数化的总线大小。我还想知道我是否可以在同一张幻灯片中使用二维数组,如[j][I]。我已经在pdf的幻灯片19中为原理图(bitwidth-8)编写了代码,现在我正在尝试将其参数化。。