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?
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')); ...
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.
to_unsigned() statt unsigned(). Umwandlung durch Voranstellen des Typs geht nur zwischen eng verwandten Typen, z.B. std_logic und unsigned.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.