У меня есть сомнения в generate
, мой код:
parameter m=1;
generate
for(i=0; i<m; i=i+1) :loopstart
begin
statements;
end
endgenerate
Внутри этого цикла m должно быть 2 ^ 0, 2 ^ 1, 2 ^ 2 и т. Д.на .Поскольку возведение в степень не поддерживается, я подумал об инициализации m, а затем умножении его на 2 на каждой итерации.
У меня есть несколько вопросов:
Можно ли использовать m << 1
внутри генерациикаким-то образом (поскольку это то же самое, что умножение на 2)?Если я это сделаю, это приведет к ошибке.
Я сослался на книгу Самира Пальниткара, в которой говорится, что оператор всегда работает внутри генерации, поэтому я попытался:
always @(m)
m <= m*2; // (or m << 1)
Это нет работа.Я понимаю, что это не может быть сделано, потому что m
является параметром, а не переменной.
Если то, что я считаю правильным, этого также нельзя сделать с помощью genvar
, так как genvar
невозможно инициализировать.
Есть ли альтернатива?