High Zustände eines Bitvectors zählen

Gast #569567
Lesenswert?
• ▲
▼
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...
Gast #569575
Lesenswert?
• ▲
▼
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.
Gast #570626
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.