Implementieren einer Funktion mit Decoder, Encoder und einigen Gattern

Implementieren Sie die Funktion F(A,B,C,D,E) = A'B'C'DE'+ABCD'E, indem Sie nur die erforderlichen Komponenten aus den unten angegebenen verwenden:

  • Ein 3:8-Decoder mit High-Aktiv-Ausgängen und einem High-Aktiv-Freigabeeingang
  • Ein 8:3 Priority Encoder mit Input No. 7 mit höchster Priorität mit einer aktiven High-Freigabe, die bei Deaktivierung die Ausgänge auf logisch Low zwingt
  • Ein XOR- Gatter mit 2 Eingängen
  • Ein ODER- Gatter mit 2 Eingängen
  • Ein UND -Gatter mit 2 Eingängen

Meine Versuche:

  • Mir ist aufgefallen, dass die Funktion die Minterms 2 und 29 - 00010 und 11101 hat.
  • Ich kann den Decoder mit einem Enable-Pin (für eine Variable) mit vier Eingängen versehen.
  • Das Zeichnen der K-Map scheint nichts zu vereinfachen.
  • Die Anwendung von De-Morgans Gesetz scheint die Dinge nicht zu vereinfachen.
  • Versucht mit B, C und E im Decoder und A oder D in der Freigabe. Dies liefert mir 8 Minterms von B, C und E.

Ich stecke fest, wie ich es nur mit diesen implementieren soll.

Wie nähere ich mich dieser Frage (und anderen ähnlichen Designfragen) weiter?

Willkommen bei EE.SE! Das scheint eine Hausaufgabenfrage zu sein. Beachten Sie, dass Hausaufgabenfragen auf EE.SE eine Sonderbehandlung genießen/erleiden. Wir geben keine vollständigen Antworten, wir geben nur Hinweise oder sokratische Fragen, und nur dann, wenn Sie sich selbst ausreichend bemüht haben. Andernfalls würden wir Ihnen einen Bärendienst erweisen und gleichzeitig von Hausaufgabenfragen überschwemmt werden. Siehe auch hier .

Antworten (2)

Es gibt kein festgelegtes Verfahren zur Lösung dieser Art von Problemen. Es erfordert viel Kreativität und Einsicht.

Einige Erkenntnisse, die sich als nützlich erweisen könnten:

  • Die beiden Muster ergänzen sich gegenseitig.
  • Prioritätscodierer sind besonders gut darin, Kombinationen von Nullen zu erkennen.
  • Decoder sind besonders gut darin, Kombinationen von Einsen zu erkennen.

Es gibt eine Lösung, die genau die aufgeführten Gates verwendet. (Es erfordert keine "gültige" Ausgabe auf dem Encoder, obwohl dies ein normales Merkmal eines solchen Chips ist.) Ich werde es in ein oder zwei Tagen posten, wenn Sie immer noch nicht weiterkommen.


Die Wahrheitstabelle für einen Prioritäts-Encoder sieht folgendermaßen aus:

      Inputs         Outputs
E 7 6 5 4 3 2 1 0    V C B A
-----------------    -------
0 x x x x x x x x    0 0 0 0   <--
1 1 x x x x x x x    1 1 1 1
1 0 1 x x x x x x    1 1 1 0
1 0 0 1 x x x x x    1 1 0 1
1 0 0 0 1 x x x x    1 1 0 0
1 0 0 0 0 1 x x x    1 0 1 1   <--
1 0 0 0 0 0 1 x x    1 0 1 0
1 0 0 0 0 0 0 1 x    1 0 0 1
1 0 0 0 0 0 0 0 1    1 0 0 0
1 0 0 0 0 0 0 0 0    0 0 0 0

Die wichtigste Erkenntnis hier ist, dass sowohl die erste als auch die sechste Zeile dieser Tabelle für dieses Problem von Bedeutung sind. Achten Sie auf die CAusgabe. Wenn Sie die Eingänge richtig verdrahten, können Sie sie für ABCDE = 000x0oder auf Low gehen lassen ABCDE = xxx0x. Die verbleibende Frage ist, wie Sie das XOR-Gatter verwenden können, um zwischen diesen beiden Fällen zu unterscheiden.


Vollständige Lösung

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Danke David. Ich kann mir nicht vorstellen, wie der Encoder mit dem XOR-Gatter mir A'B'C'DE' geben würde. Wenn Sie Ressourcen kennen, die mir helfen könnten, die Ausgabe des Prioritätscodierers so zu verstehen, wie ich sie sehen soll, wäre dies eine große Hilfe.
Hilft meine Änderung oben?
Ich kann A, B, C, E jeweils in die Eingänge 7, 6, 5, 4 einfügen und 3 würde mit 1 verbunden werden. D würde mit Enable verbunden werden. XOR kann mit den Ausgängen B und C verbunden werden, um zwischen den beiden zu unterscheiden. Damit ist A'B'C'DE' implementiert.
Schließen, aber nein. Sie können Ausgang B nicht verwenden, da die Zeilen 2-5 der Tabelle auch für verschiedene ungültige Kombinationen von Eingängen aktiviert sind. Aber wenn Sie den C-Ausgang mit dem D-Signal XOR-verknüpfen, erhalten Sie, was Sie wollen. Ich habe meine vollständige Lösung in meine Antwort aufgenommen.
Vielen Dank Dave. Ich verstehe jetzt den Denkprozess hinter solchen Fragen.
Haben Sie weitere solcher Fragen (die Mux, DMux, Decoder, Encoder, Addierer usw. erfordern), die grobes Denken erfordern?
Nein, ich persönlich nicht. Ich schreibe im Allgemeinen, was ich will, in Verilog oder VHDL und überlasse es den Synthesewerkzeugen, sich um die Implementierung zu kümmern :-) Vielleicht hat jemand, der einem akademischen Umfeld näher steht, einige andere.
Darf ich wissen, welche Synthesewerkzeuge Sie verwenden? Ich könnte Probleme rückwärts lösen, indem ich sie verwende. Ich habe sehr grundlegende Kenntnisse von Verilog.
Ich verwende fast ausschließlich Tools von Herstellern – Quartus für Altera (jetzt Intel), Vivado für Xilinx, Libero für Microsemi (früher Actel).

Die Tatsache, dass Ihr Problem als Summe von zwei Produkten ausgedrückt wird, gibt Ihnen einen großen Hinweis auf die Lösung, da Sie zwei komplexe Komponenten und ein ODER-Gatter zur Verfügung haben. Es sollte also nur darum gehen, eine Komponente dazu zu bringen, eines der Produkte zu erzeugen, die andere Komponente, um das andere Produkt zu erzeugen, und dann das ODER-Gatter zu verwenden, um die beiden zu kombinieren, um die Ausgabe zu erhalten. Sie haben auch zwei scheinbar zufällig ausgewählte Tore, die Ihnen helfen.

Der Begriff ABCD'E ist der einfache. Sie haben vier Eingänge, die 1 sein müssen, und einen, der 0 sein muss. Kombinieren Sie zwei der Eingänge, die 1 sein müssen, mit dem UND-Gatter und Sie haben nur noch drei Eingänge, die 1 sein müssen, und einen, der sein muss 0, und das geht ganz einfach mit Ihrem 3:8-Decoder.

Das zweite ist schwieriger, also überlasse ich es Ihnen, es herauszufinden, aber schreiben Sie die Wahrheitstabelle und studieren Sie sie, um zu sehen, wie Sie den 8: 3-Encoder mit dem XOR-Gatter kombinieren können, um das zweite Produkt zu erhalten.

Danke. Ich konnte ABCD'E nach dieser Erkenntnis leicht implementieren. Ich habe versucht, den anderen Begriff zu implementieren. Ich kann sehen, dass ich vier der Terme vom Encoder erhalten kann (unter Verwendung von enable (used D in enable) und ich muss einen Term direkt in das XOR-Gatter eingeben. Ich habe den Ausdruck für die Ausgabe von Priority-Encodern gesehen und versucht um A'B'C'DE' in den Ausdruck für das LSB einzufügen. Durch Hit and Trial könnte ich die Ausgabe vom Encoder als: A'B'C'D machen, indem ich die entsprechenden Eingänge auswähle. Wenn ich E kombiniere mit diesem mit einem XOR.Ich bekomme einen zusätzlichen Begriff im gewünschten Ergebnis.Irgendwelche Hinweise, was ich jetzt tun könnte?
Nein, Sie müssen einen einzelnen Begriff aus der Encoder/XOR-Kombination erhalten. Ich gebe Ihnen einen Hinweis - ignorieren Sie die codierten Ausgabebits und konzentrieren Sie sich auf die gültige Ausgabe. D ist sicherlich der richtige für die Freigabe.
Q0(Das LSB) = (m6'(m4'm2'm1+m4'm3+m5)+m7). [ohne Aktivieren zu berücksichtigen] Ich setze m6 = A, m4 = B, m2 = C, m1 = 1 und ruhe als Null. Das gibt mir A'B'C'. Mit der Freigabe als D. Der Ausdruck ist A'B'C'D. A'B'C'DE' mit einem XOR zu bekommen, ist die Herausforderung für mich. Ich könnte es mit einem UND machen.
Wie gesagt, ignoriere Q0, Q1 und Q2. Sie möchten den Encoder wirklich als OR-Gatter mit vier Eingängen und Aktivierung behandeln.
Ich kann mich einfach nicht um dieses hier kümmern. Ich bin neu dabei.