Forum: FPGA, VHDL & Co. Implementierung 2bit Zähler in einem FPGA


von Benedikt H. (benni_1)


Angehängte Dateien:

Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von Benedikt H. (benni_1)


Lesenswert?

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!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von T.U.Darmstadt (Gast)


Lesenswert?

Lothar M. schrieb:
> Denk mal darüber nach: ein Zähler ist nix anderes als eine simple FSM,

oder umgekehrt! :-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Da könnten wir eine geraume Zeit lang drüber diskutieren... ?

von Martin O. (ossi-2)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.