Hallo! Ich versuche per "generate" einen Speicherkreis zu generieren. Dabei muss ich irgendwie den Ersten an den Letzten schliessen. Der Code in etwa: cline: for i in 0 to 7 generate line_data_in(i) <= line_data_out(i-1) when (copy='1') else data_in_port; end generate cline; So gibt es einen Fehler fuer i=0, da: line_data_out(i-1) = line_data_out(-1) = "Index value -1 is out of range 0 to 7." Eigentlich sollte es bei i=0 den Wert von line_data_out(7) uebernehmen. Wie geht das? Vielen Dank! Zen
probier mal folgendes : line_data_in(i) <= line_data_out((i-1) mod 8) ... weiss nich, ob mod für neg. zahlen geht, sonst gehste in der loop halt bei 1 los und machst noch ne extra zeile für die Verbindung von 0 auf 7. Das sollte auch generisch gehen, wenn du anstelle von 7 vielleicht eine Konstante BUF_SIZE definierst. line_data_in(0) <= line_data_out(BUF_SIZE-1) ...
Also dass ich auf mod nicht gekommen bin verstehe ich nicht... Negative Zahlen waren mir zu unsicher, also habe ich es umgedreht: line_data_in((i+1) mod 8) <= line_data_out(i) when (copy='1') else data_in_port; Funktioniert bestens. Danke fuer den Tipp! Zen
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.