Можете ли вы использовать значение параметра для присвоения в Verilog? Могу ли я как-то определить ширину переменной параметра?
Ex:
module mymodule #(parameter type =2)
(...
output [(3+type)-1:0] out);
wire [2:0] rate;
...
assign out = {rate, {1'b0{type}} };
endmodule
Скажем просто type = 2. Тогда я бы хотел иметь длину в битах 5. Скорость по-прежнему имеет длину в битах 3 (скажем так, 3'b100), когда я назначаю, я хочу, чтобы она была 100 000.
Аналогично, если type = 6. Тогда я хотел бы иметь длину в битах 9. скорость по-прежнему имеет длину в битах 3 (опять же, скажем, ее 3'b100), когда я назначаю, я хочу, чтобы она была 100 000000.
Я не получаю никаких синтаксических ошибок, но когда я пытаюсь смоделировать это, я получаю: «ошибка: тип операнда конкатенации» имеет неопределенную ширину »
Как вы, ребята, подойдете к такой дизайнерской проблеме?