Ich möchte den Parameterwert in Verilog abhängig vom 3-Bit-Wert des digitalen Eingangspins ändern. Hier ist ein Beispiel aus meinem Verilog-Code.Ändern des Parameterwerts in 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
Wenn ich kompilieren ich diesen Fehler:
ncvlog: *E,PANOTL: A parameter is not a legal lvalue [3.10(IEEE)].
3'b001 : C_IP = 0.6;
Ich verstehe Verilog Parameter für Konstanten sind, und kann daher nicht während der Simulation geändert werden. Was wäre jedoch die beste Umgehungsmöglichkeit für dieses Problem?
Dank Greg. Was ist in Ihrem Funktionsbeispiel PARAM_DACIP? DACIP ist ein 3-Bit-Logikeingang in meinem Code. Wie übergebe ich es an die Funktion calc_C_IP? – sanforyou
Was ist PARAM_DACIP auch in Ihrer faustgeschachtelten bedingten Anweisungslösung? Wie kann ich es mit dem 3-Bit-DACIP-Eingangspin in Verbindung bringen? – sanforyou
@Sandeep, in Ihrem ursprünglichen Code haben Sie 'reg_DACIP' verwendet, von dem ich annahm, dass es ein 'reg'-Typ war. In meinem Beispiel habe ich' reg_' in 'PARAM_' geändert, um zu bestätigen, dass es ein Parameter und kein Register ist. Sie nehmen an, dass 'PARAM_DACIP' definiert ist als' parameter [2: 0] PARAM_DACIP = 3'b100; '(oder ein anderer Wert) – Greg