1

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

Есть еще один подход, который я должен рассматривать, или способ сделать то, что я пытаюсь?

+0

Почему бы не определить провода внутри блока генерации? Чтобы вы могли настроить размеры проводов, вы можете получить доступ, если он был массивом. (Например, 'generateStage [3] .stageInputs') –

+0

Можете ли вы объединить 2 выходных провода сцены или все выходы различны? И сколько у вас уровней? –

ответ

1

Вы можете перемещать объявления ваших проводов в петлю generate вместо того, чтобы создавать их массивы.

module Log2Alg #(N=1) (
    output x, 
    input [N-1:0] a, b 
    ); 
    localparam numStages = $clog2(N); 


    genvar i, j; 
    generate 
     for(i = 0; i < numStages; i = i + 1) 
     begin: generateStage 
     wire stageInputs [2**(N-i):0]; 
     wire stageOutputs [2**(N-i-1)-1:0]; 
      // Do _stuff_. Loop over j = i**2-1:0 
      // 
     end 
    endgenerate 

endmodule 

Затем, если вам нужно получить доступ провода в разной стадии от текущих вещей, вы можете использовать что-то вроде generateStage[i+1].stageInputs. Индекс, который вы используете для доступа generateStage, должен быть константой, потому что это не массив одинаковых элементов.

+0

Последующий вопрос: Можно ли каким-либо образом создать или получить доступ к неявному generateStage [-1]? – Vreenak

+0

Вы можете запустить цикл генерации в -1. Вы также можете установить условное генерирование вокруг кода _stuff_. –

 Смежные вопросы

  • Нет связанных вопросов^_^