Forum: FPGA, VHDL & Co. [VHDL] unsigned to bit_vector


von Ano N. (oorim)


Lesenswert?

Hi

Ich suche eine möglichkeit von unsigned nach bit_vector zu wandeln.

Mein Ansatz war:
1
library IEEE;
2
use IEEE.numeric_bit.ALL;
3
use IEEE.numeric_std.all;
4
-- [...]
5
   signal Qout1, Qout2: unsigned(3 downto 0);
6
-- [...]
7
   Qout1_bit <= bit_vector(to_bit(Qout1));

Aber das gibt eine Fehlermeldung
[quote]
Error 10621: VHDL Use Clause error at bcd_counter.vhd(10): more than one 
Use Clause imports a declaration of simple name "unsigned" -- none of 
the declarations are dircetly visible
Error 10784: HDL error at numeric_std.vhd(65): see declaration for 
object "unsigned"
Error 10609: VHDL error at numeric_bit.vhd(62): another match for 
"unsigned"
[/quote]

Ich find nichts wie ich den Typ trotzdem umwandeln soll ... ich nutze 
unsigned um den Zahlenwert in einem Counter zu inkrementieren.


Grüße

von Besserwisser (Gast)


Lesenswert?

Ja, hättest du statt bit_vector
nun mal stdlogic_vector genommen,
wie das heute üblich ist, dann hättest
du die Probleme nicht.

Gruß

besserwisser

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


Lesenswert?

Ano Nym schrieb:
> Aber das gibt eine Fehlermeldung
Die besagt, dass ein Typ namens unsigned mehrfach definiert wurde.
In numeric_bit:
1
type UNSIGNED is array (NATURAL range <> ) of BIT;
Und in numeric_std:
1
type UNSIGNED is array ( NATURAL range <> ) of STD_LOGIC;
Du wirst dich entscheiden müssen, ob du nun Bitvektoren oder 
STD_LOGIC-Vektoren verwenden willst. Ich würde dir den üblichen 2. Weg 
vorschlagen...

von Duke Scarring (Gast)


Lesenswert?

@Ano Nym:

Falls Du doch beide Bibliotheken brauchst, kannst Du auch explizit 
mitteilen, welche Du verwenden möchtest:
1
library IEEE;
2
use IEEE.numeric_bit.ALL;
3
use IEEE.numeric_std.all;
4
-- [...]
5
   signal Qout1, Qout2: ieee.numeric_std.unsigned(3 downto 0);
6
-- [...]
7
   Qout1_bit <= bit_vector(to_bit(Qout1));

Duke

von Ano N. (oorim)


Lesenswert?

Hey

Danke. Ich sollte wohl dazu sagen das ich erst mit VHDL angefangen habe.

Hab jetzt alles auf std_logic_vectoren anstelle von unsigned und 
bit_vector umgebastelt und ich konnte compilen (kompilieren). Was mein 
Board davon hält werde ich morgen rausfinden - bin gerade erst 
aufgestanden und bin gleich weg :)


Grüßle

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


Lesenswert?

Ano Nym schrieb:
> auf std_logic_vectoren anstelle von unsigned und bit_vector umgebastelt
Das unsigned ist schon ok.
Als Merksatz:
Mit Vektoren rechnet man nicht. Dafür gibt es in der numeric_std die 
Datentypen signed, unsigned und integer. Nur von bit und bit_vector 
solltest du die Finger lassen...

von Ano N. (oorim)


Lesenswert?

dann muss ich da noch mal ran :)

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.