Hallo, ich soll einen asynchronen 4-Bit Zähler konstruieren, der nur bis 12 zählt und anschließend wieder zur 0 springt und von da aus von Vorne beginnt. Die Konstruktion soll grundsätzlich mit von positiven taktflanken gesteuerten JK-Flip-Flops erfolgen, wobei man natürlich auch und, oder, Negation etc. verwenden kann zum Vereinfachen. Nach Aufstellen der Schalttafel, vereinfachen, und überführen der Gleichungen in eine Schaltung habe ich jetzt auch eine wohl tatsächlich funktionierende Schaltung(1), nur leider ist der aktuelle Entwurf für einen synchronen 4-Bit Zähler (bis 12) und ich brauche ja einen Asynchronen. Ich verwende 4 JK-Flip-Flops um die 4-stellige Dual-Zahl darzustellen und im Grunde möchte ich ja, das jedes Mal wenn eine positive Taktflanke auftritt alle Flip-Flops schalten (zur Not mit ner gewissen Verzögerung). Wenn man jetzt den Clock-Eingang aller Flip-Flops direkt mit dem Takt verbindet ist das ja kein Problem, aber wie soll das gehen wenn das nicht erlaubt ist? Grüße (1) (Den Schaltplan habe ich nicht hochgeladen, da er in einem Digitaltechnik-Simulator erstellt wurde und kaum leserlich ist. Mit dem Simulator kann man aber auch testen (Lampen, Anzeigetafeln), daher weiß ich dass er korrekt funktionieren sollte.)
> asynchronen 4-Bit Zähler konstruieren, der nur bis 12 zählt
Meinst du jetzt der zählt von 0 bis 12, teilt also die Taktfrequenz
durch 13, oder meinst du der zählt 0 bis 11 und teilt die Taktfrequenz
durch 12?
:
Bearbeitet durch User
Lol Tschuldigung. Also zählt von 0 bis einschließlich der 12 und springt dann zur 0.
EinNutzer schrieb: > Wenn man jetzt den Clock-Eingang aller Flip-Flops direkt > mit dem Takt verbindet ist das ja kein Problem, aber wie soll das gehen > wenn das nicht erlaubt ist? Zunächst mal so für einen Binärzähler: https://www.elektronik-kompendium.de/sites/dig/0212151.htm Für andere Zähllängen muss man dann mit Verknüpfungen für die einzelnen FFs die JK geeignet anders setzen, so dass z.B. bei Stand 12 als nächstes die '0' oder '1' erreicht wird - je nach dem gewünschten Ablauf.
Ja, die Verknüpfungen habe ich bereits gesetzt, so das nach der 12 die 0 kommt. Mein Problem ist jetzt wie ich von einer funktionierenden synchronen Version zu einer asynchronen Version komme. Ich nutze allerdings einflankengesteuerte JK-Flip-Flops, die auf positive Flanken reagieren. (Evtl. darf man auch zweiflankengesteuerte wie im Link benutzen, aber einflankengesteuerte kann man auf jeden Fall benutzen, daher wollte ich es erstmal damit versuchen.) Ist die Konvertierung des synchronen Zählers zu einem asynchronen Zähler bei einflankengesteuerten JK-Flip-Flops sehr kompliziert/unmöglich oder nur eine Frage der Präfarenz?
> Evtl. darf man auch zweiflankengesteuerte wie im Link benutzen
Die gibt es seit >30 Jahren nicht mehr in freier Wildbahn.
Du musst das LSB-FF und die FFs die bei 12 auf 1 stehen direkt mit dem
Eingangstakt verbinden. Also in deinem Design 3FFs. Den Rest musst du
mit kombinatorischer Logik an den J und K Eingängen erledigen. Ich denke
man benötigt da nur zwei 2fach UND und ein 3fach UND für die Logik. (Das
zweite FF bekommt den Takt vom Q\-Ausgang des ersten FF.)
:
Bearbeitet durch User
Helmut S. schrieb: > Du musst das LSB-FF und die FFs die bei 12 auf 1 stehen direkt mit dem > Eingangstakt verbinden. Also in deinem Design 3FFs. LSB-FF meint den allerersten Flip-Flop? Und wenn ich sie direkt verbinde ist es dann wirklich noch eine asynchrone Schaltung oder gibt es keine komplett asynchrone Schaltung für diese spezifische Aufgabenstellung? (Komplett asynchron meint nur ein einzelner Eingang mit Takt verbunden.) > Den Rest musst du mit kombinatorischer Logik an den J und K Eingängen > erledigen. Ich denke man benötigt da nur zwei 2fach UND und ein 3fach UND > für die Logik. Meinst du mit dem Rest jetzt die grundsätzliche Schaltung, also das es von 12 auf 0 geht usw oder bezieht sich das auch auf die Taktübergabe? (Die grundsätzliche Schaltung funktioniert, auch wenn ich sie dann wohl unnötig kompliziert konstruiert habe (verwendet zwei zusätzliche Oder + noch mehr Eingänge an den Und.))
Eingangsstakt -> FF0 -> FF1 Eingangsstakt -> FF2 Eingangsstakt -> FF3 Wertigkeit der FFs FF0 , FF1, FF2, FF3 1, 2, 4, 8
Nach weiterem Nachdenken komme ich zu dem Schluss: unmöglich. Beim Stand 12 (0101) müssten ja das 2. und 4. FF schalten, um auf 0000 zu kommen. Aber beide erhalten ja keine positive Taktflanke, weil das erste auf 0 bleiben müsste. IMHO geht das nur synchron - ich lasse mich aber gerne eines Besseren belehren. Asynchron kann ich mir das gerade nur über Reset vorstellen.
Achtung, LSB bei mir links FF 0,1,2,3 12 = 0011
Helmut S. schrieb: > Achtung, LSB bei mir links > FF 0,1,2,3 > 12 = 0011 Du schreibst das Datum dann sicher auch im Format <Tag>.<Monat>.<Jahr> ... ;-)
Wolfgang schrieb: > Helmut S. schrieb: >> Achtung, LSB bei mir links >> FF 0,1,2,3 >> 12 = 0011 > > Du schreibst das Datum dann sicher auch im Format <Tag>.<Monat>.<Jahr> > ... ;-) Der Grund ist einfach, weil ich dem Fragesteller das Leben hier einfacher machen will. Der Eingangstakt geht links rein in die Teilerkette und rechts sind die Ausgänge. Der Ausgang des ersten FF (FF0) ist der Takt des zweiten rechts daneben liegendem FF (FF1). Damit ist links das LSB.
:
Bearbeitet durch User
Helmut S. schrieb: > Achtung, LSB bei mir links > FF 0,1,2,3 > 12 = 0011 Bei mir auch - ich hätte nur 0011 nehmen sollen anstatt 0101. An meiner Einschätzung ändert sich trotzdem (noch) nichts. :-)
Der synchrone Zähler braucht viel Aufwand, damit bei der nächsten aktiven Taktflanke alle Ausgänge synchron (!) auf den folgenden Zählerstand schalten. Dazu wird an J und K jeder Stufe jeweils das zum folgenden Zählerstand passende Signal gelegt. Diesen Aufwand betreibt ein Asynchron-Zähler gerade nicht! Deshalb ist es Unsinn, den auf asynchron reduzieren zu wollen. Da arbeitet jede Stufe als T-FF, wobei der Takt vom Ausgang des vorigen FFs kommt. Beim Erreichen (in deinem Fall) der 13, was durch Logik-Verknüpfungen erfasst wird, werden alle FFs über ihre SET/RESET-Eingänge auf die Binärkombination NULL gesetzt. 13 = Q0 & !Q1 & Q2 & Q3 Das funktioniert schulbuchmäßig bei negativer Flankensteuerung! Bei positiver Flankensteuerung muss man halt mit den !Qx und noch einem kleinen Trick arbeiten...
Hier meine Lösung wie bereits beschrieben. Das zusätzlich benötigte ODER-Gatter A4 hatte ich ursprünglich nicht bedacht. Im Anhang sind auch die Dateien für die Simulation mit LTspiceXVII. Unzip -> RUN.
:
Bearbeitet durch User
@ Helmut S. (helmuts) Da hast du dir ja viel Mühe gemacht - aber die Aufgabenstellung übersehen: Es soll ein asynchroner (such mal bei Guugle nach diesem Begriff) Zähler werden ...
Jacko schrieb: > @ Helmut S. (helmuts) > > Da hast du dir ja viel Mühe gemacht - aber die Aufgabenstellung > übersehen: > > Es soll ein asynchroner (such mal bei Guugle nach diesem Begriff) > Zähler werden ... Mein Zähler ist asynchron. Der ist ähnlich gestrickt wie der Teiler durch 5 beim 74LS90. Seite 4, http://www.ti.com/lit/ds/symlink/sn74ls92.pdf Dieser 74LS90 ist ein Asynchronzähler. Mein Zähler ist auch ein Asynchronzähler da der Ausgang des 1. FF den Takt des 2. FF erzeugt. Dabei sind nicht alle FF taktmäßig hintereinander. Schau den Schaltplan des 74LS90 an.
:
Bearbeitet durch User
Helmut S. schrieb: > Mein Zähler ist asynchron. Der ist ähnlich gestrickt wie der Teiler > durch 5 beim 74LS90. Naja, strenggenommen sind sowohl dein Zähler als auch der 7490 teilsynchrone Zähler, denn bei einem lupenreinen asynchronen Schaltwerk zeichnet sich jeder Zustandsspeicher durch seine eigene, individuelle Takt- bzw Datenleitung aus, die er mit keinem anderen Zustandsspeicher im Schaltwerk gemeinsam hat. Diese Eigenschaft haben weder der 7490( zwei FF gemeinsamer Takt) noch dein Vorschlag (drei FF gemeinsamer Takt).
Ich sehe das genau so wie G.O. Deshalb auch oben meine korrigierte Einschätzung, dass es mit rein asynchronem Zähler nur über Reset gehen würde. Aber asynchrone Designs haben ihre Tücken und auch die Variante mit Reset hat sie. Schließlich müsste da für kurze Zeit der Zustand '13' erreicht werden, der dann über Kombinatorik die Mimik zurücksetzt. Das erzeugt Glitches, die niemand haben will. Will man einen reinen Binärteiler durch 2^n haben, dann sind sie vielleicht sogar vorteilhaft: es schalten w.c. nicht alle FFs gleichzeitig.
Ja eben, das ist eine Hausaufgabe! Beim schulbuchgemäßen asynchronen Zähler wird jedes FF ohne Schnickschnack vom Vorgänger getaktet. Der Zähler von 0..12 muss also kurz die 13 liefern, um auf NULL gesetzt zu werden. Dass diese Einfachheit des Designs Vorteile (als schneller Teiler) und Nachteile (als Zähler mit Ausgangs-Glitches) hat, dürfte wohl der Sinn der Übung sein. - Glitches gibts da schon vor dem maximalen Zählerstand! Tückisch ist doch nur die positive Flanke! ;-)
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.