Forum: FPGA, VHDL & Co. VHDL boolean nach integer


von Carsten F. (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Markus F. (mfro)


Lesenswert?

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

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Markus F. schrieb:
> das attribut pos liefert den Ordinalwert eines Aufzählungstypen:

Sehr elegante Loesung! :-)

von Christoph Z. (christophz)


Lesenswert?

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
Noch kein Account? Hier anmelden.