Я хотел бы изменить значение параметра в Verilog в зависимости от 3-битного цифрового входного значения. Вот пример из моего кода verilog.Изменение значения параметра в Verilog
paramter real C_IP=0;
always @ (reg_DACIP)
begin
case (reg_DACIP)
3'b000 : C_IP = 0.8;
3'b001 : C_IP = 0.6;
3'b010 : C_IP = 0.4;
3'b011 : C_IP = 0.2;
3'b100 : C_IP = 0.0;
3'b101 : C_IP = -0.2;
3'b110 : C_IP = -0.4;
3'b111 : C_IP = -0.6;
endcase
end
Когда я компилирую, я получаю эту ошибку:
ncvlog: *E,PANOTL: A parameter is not a legal lvalue [3.10(IEEE)].
3'b001 : C_IP = 0.6;
Я понимаю параметры Verilog предназначены для констант, и, следовательно, не могут быть изменены во время моделирования. Однако каким будет оптимальное решение этой проблемы?
Спасибо Грег. В примере с вашей функцией, что такое PARAM_DACIP? DACIP - это 3-битный логический входной штырь в моем коде. Как передать его функции calc_C_IP? – sanforyou
Также в вашем решении с условным выражением в кулаке, что такое PARAM_DACIP? Как я могу связать его с 3-битным входным контактом DACIP? – sanforyou
@Sandeep, в вашем исходном коде вы использовали 'reg_DACIP', который, как я предполагал, был' reg', я изменил 'reg_' на' PARAM_' в моем примере, чтобы sugest был параметром, а не регистром. вы предполагаете, что 'PARAM_DACIP' определяется как' параметр [2: 0] PARAM_DACIP = 3'b100; '(или какое-то другое значение) – Greg