Forum: FPGA, VHDL & Co. Bitvector in VHDL


von der T. (derturke)


Lesenswert?

Hallo leute

die Aufgabe ist folgende:zählen wieviele Bits in einem Bitvector auf 1
gesetzt sind und sie anschließen rechtsbündig ausgibt

also beispiel a=100101101 conv(a)=000011111

hat da einer ne idee wie man das realisieren kann in VHDL ?wie man die
high positionen zählt ist mir klar aber das rechtsbündig ausgeben ist
mir noch unklar?

MFG
Der Turk

von Falk B. (falk)


Lesenswert?

@ Der Türke (derturke)

>die Aufgabe ist folgende:zählen wieviele Bits in einem Bitvector auf 1
>gesetzt sind und sie anschließen rechtsbündig ausgibt

>also beispiel a=100101101 conv(a)=000011111

Das glaube ich nicht. Es ist die Anzahl der '1' Bit gefragt. Hier also 
5.

>hat da einer ne idee wie man das realisieren kann in VHDL ?wie man die
>high positionen zählt ist mir klar

Glaub ich nicht so ganz. das kann man seriell mit einem Schieberegister 
machen oder parallel mit vielen kleinen ROMs + Addieren.

> aber das rechtsbündig ausgeben ist mir noch unklar?

Wahrscheinlich eine sehr akademische Formulierung für ein stinknormale 
Binärzahl, welche logischerweise rechtsbündig orientiert ist (sprich LSB 
ganz links = Bit#0).

MFG
Falk

von der T. (derturke)


Lesenswert?

also ich habs folgendermasen gemacht! 2 Funktionen die eine zählt die 
'1' im bitvector und gibt die anzahl als integer zurück wobei zu 
bemerken ist wenn zb. drei '1' im bitvector wäre er mir nicht 3 ausgibt 
sondern 2 hoch 3-1 damit ich später bei der Conv funktion den Vector mit 
1 dann rechtsbündig habe.

Die andere funktion wandelt die integer zahl in einen Bitvector um

01101 => 3 einsen
2^3-1=7 => 0111
so hab ich mir das vorgestellt!!!

von Falk B. (falk)


Lesenswert?

@ Der Türke (derturke)

>so hab ich mir das vorgestellt!!!

Kann man so machen, wenn das die Aufgabe ist.

MFG
Falk

von Morin (Gast)


Lesenswert?

Die große Frage ist wie so oft, ob das ganze synthetisierbar sein soll. 
Falls nein (nur Simulation), stimmt deine Lösung.

Falls es aber synthetisierbar sein soll, sieht die Sache schon ganz 
anders aus. Da kommen dann auch so Fragen dazu wie: Soll es asynchron 
oder synchron sein, und wenn letzteres in wievielen Takten? Wie viele 
Bits ist der Vector breit, oder soll das als Parameter einstellbar sein? 
Wie gut soll die Lösung optimiert sein?

von Falk B. (falk)


Lesenswert?

@ Morin (Gast)

>anders aus. Da kommen dann auch so Fragen dazu wie: Soll es asynchron
>oder synchron sein, und wenn letzteres in wievielen Takten? Wie viele

ASYNCHRON soll es sicher NIE sein, aber ggf. kombinatorisch. ;-)

MfG
Falk

von Matthias (Gast)


Lesenswert?

Als noch nicht sehr erfahrener FPGA-Designer frag ich mich jetzt, ob man 
das nicht auch mit den LUTs gut implementieren kann, sodass sich von den 
LUTs her eine Baumstruktur ergibt. Für einen 16-bit Vektor kommen zuerst 
4 LUTs, nächste Stufe 2 LUTs und dann schließlich das Ergebnis.

Wie der Code dazu ausschaut sodass das Synthesetool wirklich das macht, 
was mir vorschwebt, ist mir zwar noch nicht ganz klar, aber im Prinzip 
müsste das doch möglich sein. Dazu noch vergleichsweise 
ressourcenschonend und auch schnell, wenn man noch in regelmäßigen 
Abständen Register dazwischenschaltet.

Oder hab ich da was übersehen?

von Falk B. (falk)


Lesenswert?

@ Matthias (Gast)

>LUTs her eine Baumstruktur ergibt. Für einen 16-bit Vektor kommen zuerst
>4 LUTs, nächste Stufe 2 LUTs und dann schließlich das Ergebnis.

Kann man so machen. Wurde schon mal hier diskutiert. Such mal mit der 
Suchfunktion oben in der Menuleiste.

>Wie der Code dazu ausschaut sodass das Synthesetool wirklich das macht,
>was mir vorschwebt, ist mir zwar noch nicht ganz klar, aber im Prinzip

Nimm ein einfaches Case mit 16 Mögilchkeiten, der Ausgang ist ein drei 
Bit Vektor.

>müsste das doch möglich sein. Dazu noch vergleichsweise

Ja.

>ressourcenschonend und auch schnell, wenn man noch in regelmäßigen
>Abständen Register dazwischenschaltet.

Ja.

MFG
Falk

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.