Forum: FPGA, VHDL & Co. bit in vectore umwandeln


von inga (Gast)


Lesenswert?

hallo
ich habe einen component mit einem 5 bit vectore ausgang ( 4 downto 0)
und einen mux mit 2 eingänge jeweils (3 downto 0)
das heisst ich kann 4 bit von dem component mit einem eingang von dem 
mux verbinden
aber wie soll ich der fünfte mit einem 4 bit vector verbinden ?
ich habe ein signal deklariert so 000&fûnfte bit
aber bei portmap es kommt immer die meldung die sind nicht gleichwertig
ich bitte um hilfe
oder wie kann machen dass ich das die 3 bit von dem vectore immer auf 
nul festlegen
ich hoffe sie wissen was ich will danke

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


Lesenswert?

> ich hoffe sie wissen was ich will
Nein, das ist noch nicht ganz klar.
Evtl. könnte etwas VHDL-Code helfen...

von ich (Gast)


Lesenswert?

bau dir einen 5 bit mux statt einen 4 bit.

von inga (Gast)


Lesenswert?

nein ich will 4 bit mux weil ich das für bcd decoder brauche
um diese 5 bit in hexa zahlen darstellen kann in 2 
siebensegmenteanzeigen
und das alles mit vhdl
zusammenfassung 5 bit vector in 2 hexazahlen einmal (0000 BIS 
1111)anzeige 1
                                           und ( 0000 bis 0001)anzeige2

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


Lesenswert?

Du willst die Zahlen 0..63 im Vektor (5 downto 0) in zwei BCD-Zahlen 
umrechnen. Das geht nicht mit einem Mux.
Hier habe ich Lösungen für die Aufgabe: 
http://www.lothar-miller.de/s9y/archives/33-Byte-nach-BCD.html
Das ist zwar für einen 8-Bit Vektor, aber der Lösungsweg ist der 
selbe...

von inga (Gast)


Lesenswert?

zuerst danke miller
ich will binär in hexa umwandeln

zb 11111 ist 1F hexa
01010 ist 1A hexa
mit deinem decoder kann ich ZB 11111 umwandeln ;die 1111 in enem F 
umwandeln Und 1 bleibt
01010 ,1010 in A und 0 bleibt
mux brauche ich nicht um zu  decodieren aber die 2 anzeigen koennen 
nicht gleichtzeitig angeschaltet werden (beide miteinandere verbunden) 
aber hintereinandere , wenn man  die umschlatung schnell mache 60 hz man 
glaubt das die 2 anzeigen sind beide ständig an .vielleicht kennen sie 
das mit einer dcf uhr
vielleicht habe die frage kompliziert gemacht
wenn einer der ausgange von meinem component zb heisst A ich will daraus 
ein vector (000A) eingang fuer den mux das ist alles

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


Lesenswert?

> ich will binär in hexa umwandeln
Binär ist nur eine andere Schreibweise für Hex (und umgekehrt).

Dann ist der Ansatz
>>> 000&fûnfte bit
schon richtig:
1
signal ausgang : std_logic_vector( 4 downto 0);
2
signal hex : std_logic_vector( 4 downto 0);
3
signal digit : std_logic;
4
:
5
   hex <= ausgang(3 downto 0) when digit ='0' else  "000"&ausgang(4);

von inga (Gast)


Lesenswert?

danke miller

kann ich auch so machen

einen component programmieren in dem der eingang ist der hexa zahl
eingang :in std_logic_vector( 4 downto 0)-- hexazahl
ausgang1: out std_logic_vector (3 downto 0)
ausgang2 out std_logic_vectore( 3 downto 0)

signal out1:std_logic_vectore ( 3 downto 0) --- mit eingang(3Downto 
0)verbunden
signal out2 :std_logic -- mit eingang (4) verbunden
.
.

augang1 <= out1(3 downto 0)
augang2 <= 000& out2

nachher sind ausgang1 und ausgang2 meine mux eingänge

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


Lesenswert?

So ist es besser:
augang2 <= "000" & out2

von inga (Gast)


Lesenswert?

danke miller
du bist für alle da .danke nochmal

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.