http://www.elektroniknet.de/distribution/design-in/artikel/133350/ (kommt ja hier auch immer wieder mal)
Bei dem Aufwand an ICs (2 bis 3 Stück pro entprellte Taste) ist es wohl in den meisten Fällen einfacher, Umschalttaster mit nachgeschaltem RS-Flipflop zu verwenden. Und wenn ein Mikrocontroller mit im Spiel ist, macht man die Entprellung sowieso besser per Software. Edit: Ich sehe jetzt erst, dass das im FPGA-Forum gepostet wurde. Da liegt der Fall natürlich ganz anders.
:
Bearbeitet durch Moderator
Mag vlt sein, dass die Schaltung für einige Taster funktioniert, meiner Erfahrung nach gibt's viele Taster, bei denen Fehlsignale erzeugt werden (auch auf DebBoards bekannter Hersteller). Such einfach mal im Netz nach Taster und Timing für den Schaltvorgang. Du wirst überrascht sein.
Ops, das mit dem Zahler habe ich falsch gelesen, hab's für ein Shiftreg gehalten. Ist aber trotzdem umständlich. Einfach ein Zähler und damit ein Sample-Event erzeugen. Die Zählerlänge muss naatürlich vorher gemessen werden, ist von Board zu Board unterschiedlich.
berndl schrieb: > http://www.elektroniknet.de/distribution/design-in/artikel/133350/ > (kommt ja hier auch immer wieder mal) Man könnte ja auch mal einfach im Tutorial des µC.net nachsehen. https://www.mikrocontroller.net/articles/Entprellung
war ja nur mal als Denkanstoss gemeint... Und funktioniert ja fast genauso wie PEDAs SW-Implementierung im Controller...
Verwunderlich, daß Digi das jetzt publiziert. Was soll das? Werbung? Die Schaltung ist ja Standard zur Erkennung von Flanken und zeitlicher Unterdrückung - wie will man es sonst machen? So ist es aber nur intern benutzbar! Wenn sie es richtig machen würden, müssten sie das erste Signal noch einsynchen, also noch ein FF setzen, weil es im Kontext einen FPGA-Designs gfs aufgelöst wird.
Weltbester FPGA-Pongo schrieb im Beitrag #4702232: > Wenn sie es richtig machen würden, müssten sie das erste Signal noch > einsynchen Nicht nötig. Denn das Signal geht ja garantiert nur auf 1 Flipflop. Deshalb können keine inkonsistenen Zustände im FPGA auftreten. Und Metastabilität ist jier sowieso kein Problem...
Das Hauptproblem bei dieser und vergleichbaren Ansätzen ist der Resourcenverbrauch. Bei einem Taster noch kein Problem, wenn man aber mehrere Taster oder ein Tastenfeld (per MUX angesteuert) hat, dann ist nunmal wie bei uCs der Timerinterrupt-Ansatz der beste Weg. Da wird einfach nur gesampelt (bzw. parallel dazu für ein Tastenfeld geMUXt) und man erhält alle 5-10 ms einen "perfekten" Zustand.
berndl schrieb: > Und funktioniert ja fast genauso wie PEDAs SW-Implementierung im > Controller... Naja, der Trick an dieser Implementierung sind die "seitlichen" Zähler, wo das erste Zählerbit in einem Byte und das zweite Bit im anderen Byte ist. Und somit pro Rechenoperation gleich 8 Zähler auf einmal zählen. Das lässt sich so nicht auf FPGAs übertragen, weil es dort ja keine Byte-Orientierung gibt... Ein etwas anderer Ansatz ist es, eine Pegeländerung des Eingangssignals nicht ganz vorn zu detektieren, sondern den internen entprellten Pegel mit dem Eingang zu vergleichen. Dann kommt sowas wie beim MAX6816 heraus: http://www.lothar-miller.de/s9y/archives/4-Tasterentprellung-wie-MAX6816.html Sigi schrieb: > Das Hauptproblem bei dieser und vergleichbaren Ansätzen ist der > Resourcenverbrauch. Ein Rechenbeisüiel dazu: es sollen 20 Taster mit 20ms entprellt werden, der FPGA-Takt ist 50MHz, also 20ns pro Takt. Pro Taster, der mit 20ms entprellt werden soll, dann ist dafür ein 20 Bit (20ms/20ns = 1000000 = 20Bit) breiter Zähler nötig. Bei 20 Tastern wären das dann 400 Bits/Flipflops. Deshalb ist es dort dann sinnvoll, einen einzigen Clock-Enable mit z.B. 2ms zu erzeugen (2ms/20ns = 100000 = 17 Bits), denn dann reichen jeweils noch 3 Bit pro Taster für den Entprellzähler (7*3ms=21ms). In der Summe sind das dann bei gleicher Funktionalität nur noch 17+(20*3) = 77 Flipflops. Der Ressourcenverbrauch wurde so auf 20% reduziert. Peters Lösung für den Mikrocontroller hat sogar nur 2 Zählerbits pro Eingang (weil ja 2 Bytes zum Zählen für 8 Eingänge werdendet werden). Damit müsste der Vorteiler für den Clock-Enable also für 5ms auf 19 Bits aufgebohrt werden, dafür fallen dann pro Zähler nur noch 2 Bits an. Das Resultat sind damit 19+(2*20) = 59 Flipflops, und damit nur 15% der ursprünglich benötigten Anzahl.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Weltbester FPGA-Pongo schrieb im Beitrag #4702232: >> Wenn sie es richtig machen würden, müssten sie das erste Signal noch >> einsynchen > Nicht nötig. Denn das Signal geht ja garantiert nur auf 1 Flipflop. > Deshalb können keine inkonsistenen Zustände im FPGA auftreten. Und > Metastabilität ist jier sowieso kein Problem... Das sehe ich anders. In einer echten Schaltung hättest Du Recht, aber bei einem FPGA kann alles mit allem zusammengerechnet und gekürzt werden und je nachdem, wie die Schaltung dahinter aussieht, werden Register, die das Synchronisieren tätigen auch gerne mal absorbiert oder dupliziert. Man muss unbedingt mit einem Constraint sicherstellen, dass das nicht passiert. Und das dopppelte Eintakten ist zumindest bei schnellen Schaltungen ein immer noch existierendes Problem- weenn auch theoretisch.
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.