Ich habe eine Frage zur Implementierung von Zählern in einem FPGA, Google weiß da auch nicht weiter. Folgendes: Ich habe einen 2bit-Zähler, synthetisiere den in Vivado, schau mir den Verdrahtungsplan auf dem Chip an und erkenne, dass mein Zähler als "Zustandsautomat" realisiert wurde. Sprich, 2 FF's, deren Ausgänge gehen auf 2LUT's die jeweils den folge-Zählwert ermitteln und an die FF's zurückgeben. Diese übernehmen den Wert dann zur nächsten Taktflanke. Soweit so gut. Aber: Es wäre doch auch möglich jeweils mit dem invertierten Ausgang den Enable Pin des folgenden FF's anzusteuern. Das sieht dann quasi so aus, wie bei einem asynchronen Zähler (siehe Foto) läuft aber natürlich synchron und braucht auch viel weniger Logikelemente/Gatterdurchlaufzeit und arbeitet damit schneller. Was ich nicht verstehe, warum wird das nicht so synthetisiert? Vielen Dank und viele Grüße, Benedikt
Benedikt H. schrieb: > Was ich nicht verstehe, warum wird das nicht so synthetisiert? Es gibt oft mehrere Möglichkeiten für die Synthese eine Beschreibung umzusetzen. Wenn Du die von Dir skizzierte Variante haben möchtest, solltest Du das genau so hinschreiben. Duke
Benedikt H. schrieb: > Aber: Es wäre doch auch möglich jeweils mit dem invertierten Ausgang den > Enable Pin des folgenden FF's anzusteuern. Das sieht dann quasi so aus, > wie bei einem asynchronen Zähler (siehe Foto) läuft aber natürlich > synchron und braucht auch viel weniger Logikelemente/Gatterdurchlaufzeit > und arbeitet damit schneller. Es bringt nichts, die LUT vor dem Flipflop einzusparen, denn die ist sowieso da und muss durchlaufen werden, weil das FPGA so aufgebaut ist. Wozu also noch mehr optimieren?
Ja okay, ich habe mir den Verdrahtungsplan in Vivado noch einmal genauer angesehen. Die einzigen Signale, welche am LUT vorbeigeschleift werden, sind tatsächlich das CLK- und Reset-Signal. Somit ist die Variante als Zustandsautomat wirklich die effizienteste Möglichkeit (und einzig sinnvolle). Vielen Dank für die Antworten und schönes Wochenende!
Benedikt H. schrieb: > Somit ist die Variante als Zustandsautomat wirklich die effizienteste > Möglichkeit (und einzig sinnvolle). Denk mal darüber nach: ein Zähler ist nix anderes als eine simple FSM, die ohne Verzweigungen einfach durchläuft.
Lothar M. schrieb: > Denk mal darüber nach: ein Zähler ist nix anderes als eine simple FSM, oder umgekehrt! :-)
Da könnten wir eine geraume Zeit lang drüber diskutieren... ?
Dann fang ich mal an..... In PLLs gibt es z.B. oft sogenannte N/N+1 Teiler, die umschaltbar bis N bzw N+1 zählen. Man nennt sie Zähler, aber FSM ist auch recht nah dran.
Jeder Zähler ist sicher eine FSM, weil es eine endliche Anzahl Zustände gibt, die in definierter Reihenfolge durchlaufen werden. Aber nicht jede FSM kann (aufgrund möglicher Verzweigungen und "Abkürzungen") auch sinnigerweise als Zähler bezeichnet werden, denn am jeweiligen Zustand kann nicht sicher erkannt werden, wie viele Takte vergangen sind.
:
Bearbeitet durch Moderator
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.