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
@ 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
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!!!
@ Der Türke (derturke)
>so hab ich mir das vorgestellt!!!
Kann man so machen, wenn das die Aufgabe ist.
MFG
Falk
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?
@ 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
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?
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.