Entwurf eines Synchronzählers mit d-Flip-Flops

Ich muss einen Zähler mit zwei Eingängen entwerfen: xund y. Wenn y = 0, verhält sich der Zähler wie ein 3-Bit-Ringzähler, und wenn y = 1, verhält er sich wie ein 3-Bit-Johnson-Zähler. Wenn x = 0, wird aufwärts gezählt, und wenn x = 1, wird abwärts gezählt. Ich darf nur D-Flip-Flops und alle von mir benötigten Logikgatter verwenden.

Als Referenz sind hier die Zustandstabellen eines 3-Bit-Rings und eines Johnson-Zählers (in dieser Reihenfolge):

Ringtisch

Johnson-Tisch

Also habe ich natürlich diese große Zustandstabelle erstellt:

Zustandstabelle

Da es zwei Eingänge und drei Zustände gibt, hängt jeder folgende Zustand von fünf Bits ab. Daher sind die K-Maps für Q1+, Q2+und Q3+(die eigentlich D1, D2und D3für die Flip-Flops sind) Maps von fünf Variablen, was dies etwas kompliziert macht.

Die Frage ist: Gibt es eine Möglichkeit, die Minimierung mit k-maps einfacher durchzuführen (vielleicht fehlt mir etwas)? Oder, wenn es keine Möglichkeit gibt, die Minimierung zu vereinfachen, ist es dann klüger, k-Maps von fünf Variablen oder vielleicht eine andere Methode (vielleicht Quine-Mccluskey oder etwas ganz anderes) zu verwenden?

Was meinst du mit "einfacherer Weise" für die Minimierung? - Fragen Sie nach einer minimierten Form Ihrer Wahrheitstabelle oder nach einer einfacheren Methode, um die Minimierung tatsächlich durchzuführen? - Einfacher als die Standardmethode, beschrieben zB in Wikipedia ?
@HannoBinder Gibt es eine einfachere Methode zum Minimieren dieser Wahrheitstabelle als die Verwendung von K-Maps mit 5 Variablen?
Wenn ich darüber nachdenke, glaube ich, dass eine Wahrheitstabelle nicht der richtige Ansatz für die Aufgabe ist, da, wie Sie bereits bemerkt haben, die gewünschte Ausgabe zu keinem Zeitpunkt wirklich eine direkte logische Funktion der Eingabe ist.
Der Ringzähler hat drei gültige Zustände und der Johnson-Zähler hat sechs. Was soll mit dem Zählstand passieren, wenn sich Y ändert? Außerdem würde ich vorschlagen, dass Sie separate Wahrheitstabellen für Ihre drei Zustandsbits ausarbeiten. Das macht es viel einfacher, die Schaltung für jedes Bit separat zu erarbeiten.

Antworten (2)

Eine Konstruktionsvereinfachung besteht darin, zuerst die Up/Down-Johnson- und Ringzähler unabhängig voneinander zu entwerfen. Platzieren Sie dann einfach einen Mux, der Q*je nach y.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Das wäre sicherlich eine Vereinfachung, und danke für den Vorschlag. Dennoch wird mir keine Freiheit zum Experimentieren gegeben, und ich stecke in dieser Art fest, Dinge zu tun. Deshalb muss ich wissen, ob nur die Minimierung vereinfacht werden kann.

Sie haben ausdrücklich angegeben, dass Sie beliebige Logikgatter verwenden können, die Sie benötigen. In diesem Fall müssen (und sollten) Sie überhaupt keine Minimierung vornehmen.

Hier sind zwei Optionen:

  1. Verwenden Sie die Zustandstabelle, um eine nicht minimale Produktsummenform abzulesen. (Jede Zeile ist ein Produkt der fünf Eingabevariablen, und Sie summieren alle Produkte, die dazu führen, dass die Ausgabevariable wahr ist.)

  2. Ich verstehe, dass Sie die Lösung von @apalopohapa nicht verwenden können, da sie 6 Flip-Flops anstelle von 3 hat, aber Sie können das kombinatorische Äquivalent ausführen: Führen Sie die nächsten Zustandsfunktionen nur für den Ringzähler aus, führen Sie die nächsten Zustandsfunktionen nur für den Johnson-Zähler aus , verwenden Sie dann Muxes, die von gesteuert werden, yum die endgültigen nächsten Zustandswerte auszugeben. (Sowohl Ringzähler als auch Johnson-Zähler sind gerade deshalb beliebt, weil die nächste Zustandslogik übrigens sehr klein ist.)

Es gibt auch Logikminimierungsprogramme (Google "espresso logic minimizer"), aber in diesem Fall brauchen Sie wirklich keine.