Ich gebe über ein Generic an, ob ein vector signed ist und möchte den dann entsprechend ein Bit länger machen, wenn dieser generic wert true ist. Kann ich irgendwie boolean in positive wandeln, damit das in die Berechnung meiner vektorlänge eingeht?
Carsten F. schrieb: > Ich gebe über ein Generic an, ob ein vector signed ist und möchte den > dann entsprechend ein Bit länger machen, wenn dieser generic wert true > ist. Übergib doch einfach einen Integer zwischen 0 und 1 und addiere diesen Wert bei der Deklaration der Vektorbreite dazu. Etwa so:
1 | Generic ( signbit : natural range 0 to 1 := 0; |
2 | size : natural range 0 to 15 := 6 ); |
3 | |
4 | :
|
5 | :
|
6 | |
7 | std_logic_vector(signbit+size downto 0); |
:
Bearbeitet durch Moderator
das attribut pos liefert den Ordinalwert eines Aufzählungstypen:
1 | -- "b" ist dein generic
|
2 | signal x : std_logic_vector(15 + boolean'pos(b) downto 0); |
macht also genau das, was Du willst
Markus F. schrieb: > das attribut pos liefert den Ordinalwert eines Aufzählungstypen: Sehr elegante Loesung! :-)
Markus F. schrieb: > das attribut pos liefert den Ordinalwert eines Aufzählungstypen: Nett, kannte ich auch noch nicht. Ich hätte mir jetzt mit diesem Boolean und einem if ... generate die passenden Vektoren gebaut. Ginge auch, braucht nur etwa 4-6 Zeilen mehr :-)
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.