Что это означает {} после параметра в verilog? - PullRequest
0 голосов
/ 27 марта 2020
module test #(parameter WIDTH = 4) (output wire [WIDTH-1:0] result, input wire input );
// synopsys template
assign result = {WIDTH{input}};
endmodule

В этом коде {input} после WIDTH означает что? Как это влияет на параметр?

1 Ответ

2 голосов
/ 27 марта 2020

Фигурные скобки, перед которыми стоит параметр, называются оператором репликации .

assign result = {WIDTH{input}};

делает WIDTH копии 1-битного input -сигнала и присваивает его выходному сигналу WIDTH-бита result. Это означает, что input не влияет на параметр, как вы подозревали в своем вопросе. Скорее, этот параметр влияет на количество копий input.

Для справки в будущем также обратитесь к SystemVerilog LRM . Простые вопросы, связанные с синтаксисом, подобные вашим, можно легко найти в этом документе. Например, взгляните на Раздел 11.4.12.1 Операция репликации в документе, на который я ссылался.

...