Ich würde gerne bei einem Bitvector rausfinden, wieviele Leitungen auf "1" geschaltet sind und das ganze in einem Takt. Die Überlegungen, die ich bereits angestellt habe, haben mich noch nicht weiter gebracht. Gibt es da vielleicht bekannte Tricks, wie man das macht? Evtl. eine mathematische Lösung? Das durchzählen mit Variablen in einem Loop liegt leider weit unter der gewünschten Geschwindigkeit...
In der geforderten Geschwindigkiet gibt es ohne externe Hardware exakt 2 Lösungen: Tabelle oder POPCOUNT Befehl. Letzter ist unter Controllern etwas rar, weil die NSA für die Jobs, derentwegen dieser Befehl immer wieder mal in Rechnern zu finden ist, naheliegenderweise AVRs erst garnicht in Betracht zieht.
Ich würde einfach mit Addierern die einzelnen Bits aufaddieren. Gruß, fpga-dev
Da haben FPGA-User und Hagen schon vor mehr als eineinhalb Jahren versucht das Syntheseergebnis zu optimieren. Das Ergebnis war, das das Synthesetool schon die optimalste Lösung findet. einsen im Vektor zählen Beitrag "einsen im Vektor zählen" Weils so schön war : Einsen Zählen II Beitrag "Weils so schön war : Einsen Zählen II" MfG Holger
Das Problem tritt auch beim majority gate auf. Google spuckt viele hits aus, ist vielleicht einen Blick wert.
Dank diesem Thread: Beitrag "Weils so schön war : Einsen Zählen II" Habe ich es nun verstanden, so habe ich das auch vogestellt gehabt aber bei dem Code wurde die Denkarbeit einem regelrecht genommen g Habe es für meine Bedürfnisse angepasst (128 Bit) und es scheint zu funktionieren. Synthesis zeigt knappe 20ns an. Was mich gewundert hat ist, dass man beim Verwenden des std_logic_vector als Fkt Variable praktisch die Umwandlung conv_to_std_logic_vector erspart, aber an der Geschwindigkeit nichts gewinnt (habe da andere Erfahrungen). Wenn man diese Logik auf einen Takt Taktet, hat man zunächst einen gewissen Offset (ist ja auch klar), aber im Endeffekt kann man die Bits der Synthesis nach mit über 200 MHz auf einem Virtex2 zählen und irgendwo aufaddieren (wenn ich mich nicht irre). Im Anhang ist die pdf mit der Waveform, wollte keine .09k BMP Datei uppen.
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.