[TB] loop von x"8" bis x"E"

Gast #730032
Lesenswert?
• ▲
▼
hi!

habe folgendes syntaktisches Problem in einer Testbench.

Möchte eine Schleife von 0x8 bis 0xE laufen lassen. Allerdings bekomm 
ich das absolut nicht hin  und das Netz konnte mir auch nicht helfen...

Der Codeausschnitt:

for i in x"8" to x"E" loop
  write(ADDR => X"FFFD40" & (i) & "00", DATA => (others => '0'));
  write(ADDR => X"FFFD40" & (i) & "01", DATA => (others => '0'));
  write(ADDR => X"FFFD40" & (i) & "10", DATA => (others => '0'));
  write(ADDR => X"FFFD40" & (i) & "11", DATA => (others => '0'));
end loop;


(Möchte damit Zugriffe auf einen Speicherbereich nachbilden)


Modelsim sagt:
Range of a parameter specification must be of a discrete type.
** Error:  No feasible entries for infix operator "&".
** Error:  Bad expression in left operand of infix expression.
** Error:  Bad expression in expression of element association.
** Error:  No feasible entries for infix operator "&".
** Error:  Bad expression in left operand of infix expression.
** Error:  Bad expression in expression of element association.
** Error:  No feasible entries for infix operator "&".
** Error:  Bad expression in left operand of infix expression.
** Error:  Bad expression in expression of element association.
** Error:  No feasible entries for infix operator "&".
** Error:  Bad expression in left operand of infix expression.
** Error:  Bad expression in expression of element association.
** Error:  VHDL Compiler exiting


eine Idee?


..ich glaub ich muss gar nicht mehr erwähnen, dass ich noch ein blutiger 
VHDL Anfänger bin, oder?
Gast #730049
Lesenswert?
• ▲
▼
variable einführen, schleifenindex in vectortyp konvertieren, in etwa:

use IEEE.numeric_std.all;
...

variable v_addr_temp: std_logic_vector(29 downto 0);
...
begin
...
for i in 8 to 14 loop
  v_addr_temp := X"FFFD40" & std_logic_vector(unsigned(i,4)) & "00";
  write(ADDR => v_addr_temp, DATA => (others => '0'));
  ...
Gast #730104
Lesenswert?
• ▲
▼
Das Prinzip der Lösung hab ich verstanden. Allerdings kommt in der Zeile

"v_addr_temp := X"FFFD40" & std_logic_vector(unsigned(i,4)) & "00";"

der Fehler: Type conversion (to unsigned) can not have aggregate 
operand.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren