У меня есть проблема, которая требует сходимости проводов поэтапно, где каждая ступень имеет пополам столько входов и выходов, что и предыдущий (думаю, похоже на поэтапные селектора). Я не хочу иметь несвязанные провода в моем модуле.Verilog массив векторов разного размера
Могу ли я объявить массив величин 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') –
Можете ли вы объединить 2 выходных провода сцены или все выходы различны? И сколько у вас уровней? –