Verilog: как добавить параметры

Я хочу иметь параметризованный модуль. Он имеет следующее определение:

module example (...);
    parameter A = 2;
    parameter B = 2;
    parameter C = A + B;

endmodule

Однако, когда я распечатываю значения параметров, я получаю A = 2, B = 2 и C = 1... Есть идеи, почему?


person Jin    schedule 27.02.2013    source источник


Ответы (1)


Нашел решение - использовать localparam.

module example (...);
  parameter A = 2;
  parameter B = 2;
  localparam C = A + B;

endmodule
person Jin    schedule 27.02.2013
comment
На самом деле в вашем исходном вопросе C должно быть равно 4. Однако это опасно и очень возможно переопределить, потому что C является параметром. Использование localparam — это правильный способ определить параметр, который не может быть переопределен с помощью defparam или назначения значений параметра экземпляра. - person jclin; 01.03.2013
comment
За исключением того, что localparams нельзя использовать для списков портов, используя объявления портов в стиле Verilog-2001. - person Morgan; 01.03.2013