【发布时间】:2017-02-08 21:46:05
【问题描述】:
我有一个问题,需要分阶段向下汇聚线,其中每个阶段的输入和输出是前一个阶段的一半(类似于分段选择器)。我不想在我的模块中有未连接的电线。
我可以声明一个大小为 numStages 个向量的数组,然后在生成循环中定义每个向量的大小吗?例如:
module Log2Alg(x, a, b);
parameter N = 1;
localparam numStages = $clog2(N);
output x;
input [N-1:0] a, b;
wire [???] stageInputs [0:numStages-1];
wire [???] stageOutputs [0:numStages-1];
genvar i, j;
generate
for(i = 0; i < numStages; i = i + 1)
begin: generateStage
stageInputs[i] = [2**(N-i):0]; // ???
stageOutputs[i+1] = [2**(N-i-1)-1:0] // ???
// Do stuff. Loop over j = i**2-1:0
end
endgenerate
endmodule
我是否应该考虑另一种方法,或者实现我正在尝试的方法?
【问题讨论】:
-
为什么不在生成块中定义电线?这样您就可以调整导线尺寸,并且可以像访问数组一样访问。 (例如
generateStage[3].stageInputs) -
你能合并一个stage的2个输出线还是所有输出都不一样?你有几个阶段?
标签: arrays multidimensional-array vector verilog system-verilog