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)编写了代码,现在我正在尝试将其参数化。。