Forum: FPGA, VHDL & Co. Function Aufruf ergibt Fehler. Warum?


von Marco (Gast)


Lesenswert?

Moin Moin

ich möchte eine Funktion programmieren. Modelsim gibt aber einen Fehler 
aus, den ich nicht verstehe.
1
entity SEB_AUDIO_VOL_CONTROL is
2
port(
3
      WERT_L_16BIT_IN  : in  std_logic_vector(15 downto 0);
4
      WERT_R_16BIT_IN  : in  std_logic_vector(15 downto 0);
5
......

Nun soll die Funktion SCALING aufgerufen werden.
1
begin
2
.....
3
if (MASTER = x"00") then
4
  case WERT_TT is        
5
  when TT_0 =>  WERT_R_16BIT_OUT <= (others => '0');
6
                WERT_R_16BIT_OUT <= (others => '0');
7
  when TT_1 =>  WERT_R_16BIT_OUT <= SCALING(WERT_R_16BIT_IN);
8
                WERT_R_16BIT_OUT <= SCALING(WERT_R_16BIT_IN);
9
...

Die Funktion.
1
-- Signal
2
  subtype word is std_logic_vector(15 downto 0); 
3
4
-- function
5
  function AUDIO_SCALING(VECTOR : word) return word is
6
  variable RESULT  : word := x"0000";
7
  variable STEP_1  : integer := 0;
8
  begin 
9
    RESULT <= VECTOR(15 downto 1) & '1';
10
    return RESULT;
11
  end function AUDIO_SCALING;


Nun bekomme ich aber wenn ich das mit Modelsim überprüfen möchte immer 
folgenden Fehler:
Target of signal assignment is not a signal
Fehler verweist auf die Zeile mit *RESULT <= VECTOR(15 downto 1) & '1';*
in der Funktion.

Was habe ich verkehrt gemacht.

Gruß
Marco

von Thomas K. (tomthegeek)


Lesenswert?

Hi

du verwendest RESULT als Variable, also musst du auch ein 
variable-assignment machen:
1
 RESULT := VECTOR(15 downto 1) & '1';

Gruß Thomas

von Marco (Gast)


Lesenswert?

Oh, mann, klar.
Danke

Das hätte ich heute bestimmt nicht mehr gefunden.


Gruß
Marco

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.