moin, mir tut sich gerade folgendes Problem auf: ich habe ein signal index: integer range 0 to 1023; Nun denke ich mir fuer diese 1024 Zahlen sollte ein 10 Bit breites Signal genuegen. Wenn ich die Schose aber kompiliere (mit ghdl, bin ein armer Linuxnutzer) und mir im GTKwave anzeigen lasse wird "index" da als 32bit Zahl aufgefuehrt: index[31:0] Wie vermittle ich dem Teil nun, dass das eigentlich ein index[9:0] sein soll. Die "range" Angabe scheint ja nicht wirklich zu helfen. Es muss uebrigens ein integer sein, weil ich das ding zur Indizierung eines Arrays brauche. Mit "unsigned"-Typen aus dem numeric_std-Paket geht das wohl nicht. Danke, Tim
> Mit "unsigned"-Typen aus dem numeric_std-Paket geht das wohl nicht.
Wie wärs mit einer Conversion:
1 | signal index: unsigned(9 downto 0); |
2 | :
|
3 | data <= ram(to_integer(unsinged_index)); |
hmm, ja, das funktioniert. Nun haemmere ich gerade meinen Kopf gegen die Wand, weil ich da selbst nicht drauf gekommen bin, obwohl ich ech schon wild rumcaste. Aus Interesse und fuer die Zukunft wuerde ich aber trotzdem wissen wollen, wieso der Integer nicht auf die noetige Groesse verkleinert wird.
> wieso der Integer nicht auf die noetige Groesse verkleinert wird.
Sieh dir mal /Synthese/-Ergebnisse an. Bei der Synthese wird dann auch
tatsächlich gespart und optimiert.
Evtl. gibt es auch einen Schalter an deiner SW?
bis zur Synthese dauert es wohl noch etwas wenn im aktuellen Tempo weitergeht :(. Doof nur, dass erst dann optimiert wird. So kann ich einen Integer nicht in meiner Simulation als Arrayindex benutzen, weil mein Array nunmal keine 2**32 Werte enthaelt. Naja, das Problem haben wir ja jetzt formschoen umgangen. Ich sollte wohl mal auf ISE umsteigen, dann hab ich nicht immer das Gefuehl meine Probleme laegen im OpenSource compiler begruendet (auch wenns sie's gar nicht sind). Tim
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.