Ist das Invertieren des Ausgangs eines CMOS-Netzwerks eine schlechte Praxis?

Ich bin Elektronik & Komm. Engg. 3. Jahr. Student und wir lernen in diesem Semester zum ersten Mal CMOS-Logik unter dem Thema VLSI-Design.
Beim Entwerfen für die logische Gleichung: Y = A + B . C , der Professor schrieb es zuerst als A + B . C ¯ ¯ , dann durch die Gesetze von De Morgan vereinfacht und dann mit CMOS implementiert.

Ich habe mich gefragt, ob es besser wäre, es zu implementieren A + B . C ¯ und verwenden Sie dann einen CMOS-Inverter, um den Ausgang zu invertieren, da dies eine geringere Anzahl von Gattern erfordern würde. Als ich den Professor fragte, ob es auf diese Weise möglich sei, sagte er, dass es keinen Sinn machen würde, CMOS zu verwenden, wenn es auf diese Weise verwendet würde. Ich habe nicht verstanden, was das bedeutet und warum es nicht so implementiert werden kann.

PS Ich bin neu bei Stack Exchange. Entschuldigung für eventuelle Fehler in meiner Art, die Frage zu stellen.

Antworten (3)

Bei der Implementierung in CMOS nehmen einfache invertierende Logikgatter eine Stufe ein, die Inverter, NAND, NOR umfasst.

Nicht invertierende Logikgatter nehmen zwei Stufen ein. Beispielsweise würde ein Puffer tatsächlich aus zwei Invertern Rücken an Rücken bestehen. Ein UND-Gatter wäre eigentlich ein NAND-Gatter plus Inverter ...

Ich nehme an, Ihr Professor hat Folgendes getan:
Y = A + B C = A ¯ ( B C ¯ ) ¯
Die tatsächlich erforderliche Logik ist also ein Inverter (für A), ein NAND (für B, C), ein NAND (Endausgang).

Wenn Sie es so implementieren, wie Sie es vorgeschlagen haben, wäre es tatsächlich so:
Y = A + B C = ( A + ( B C ¯ ) ¯ ¯ ) ¯
Es wäre also ein Inverter + NAND (für B, C), ein Inverter + NOR (Endausgang).

Es braucht also einen zusätzlichen Wechselrichter – in diesem Fall nicht so schlimm. Aber es gibt einen großen Geschwindigkeitsnachteil, 4 Level vs. 2.

Dieses Zitat "er sagte, es würde keinen Sinn machen, CMOS zu verwenden, wenn es so verwendet wird" hat möglicherweise etwas in der Übersetzung verloren. Aber ich vermute, dass Ihr Professor versucht hat, die Tatsache zu vermitteln, dass invertierende Logikgatter die natürlichen Bausteine ​​der CMOS-Logik sind und im Allgemeinen effizienter sind als die nicht invertierenden Gegenstücke.

Tatsächlich hat er das /$/overline{B*C}/ in NOR umgewandelt, also waren es 3 Inverter, 1 NOR und 1 NAND. Trotzdem danke. Ich nehme an, das meinte er, wie @akellyirl sagt, das Invertieren von Toren ergibt einen geringeren Bereich und eine Verzögerung.

Standard-CMOS-Gatter, die im IC-Design verwendet werden, invertieren aus einer Vielzahl von Gründen, einschließlich geringerer Fläche und Verzögerung im Vergleich zu den nicht invertierenden Versionen. Siehe diese Frage . Auch dies muss berücksichtigt werden; nicht nur die Anzahl der Tore.

Es wäre ineffizient, einen Inverter zu verwenden, wenn die Inversion in der Logik wegoptimiert werden kann, indem eine invertierende Logikfunktion wie NAND, NOR usw. verwendet wird (invertierende Logik wird bevorzugt).

Manchmal ist eine nicht invertierende Funktion erforderlich, in diesem Fall ist es genauso einfach, sie mit einem Endinverter zu implementieren. Beim IC-Design ist dies sogar die bevorzugte Methode, da Inverter in einer Vielzahl von Treiberstärken erhältlich sind, sodass der letzte Inverter in der Logik bei Bedarf einen langen Weg zum nächsten Logikbereich fahren kann und kleiner als das Äquivalent ist Stärkepuffer (nicht invertierend).

Danke. Macht es klarer. Ich bin jedoch immer noch etwas verwirrt, da Sie sagten, dass dies manchmal der bevorzugte Weg beim IC-Design ist. Was ist also insgesamt eine bessere Vorgehensweise, um die endgültige Ausgabe zu invertieren oder durch De Morgan zu vereinfachen und invertierte Eingaben zu geben?
@Abhinav - bitte lesen Sie den Rest des Satzes, in dem er erklärt, warum er möglicherweise bevorzugt wird. Der Teil, der "weil Wechselrichter" beginnt.
@WhatRoughBeast Ja, eigentlich habe ich nur diesen Teil nicht verstanden. :P
@ Abhinav Ah. Beim Entwerfen eines ICs müssen Sie Kompromisse eingehen. Um eine bestimmte Geschwindigkeit aufrechtzuerhalten, müssen Sie eine Kapazität aufladen, die davon abhängt, wie viele Gates angesteuert werden und wie weit sie entfernt sind. Im Allgemeinen gilt: Je größer die Fläche des Ausgangstransistors, desto mehr Strom liefert er (wie stark er ist). Aber gleichzeitig möchten Sie natürlich die gesamte Chipfläche so klein wie möglich halten, also machen Sie Gate-Ausgangstreiber nicht stärker als nötig. Hilft das?

Nun, einer der Tricks beim CMOS-Design zur Vereinfachung der Logik besteht darin, ganze Signale selektiv zu invertieren. Die Gesamtlogikfunktion bleibt dieselbe, aber es ist möglich, die Stufen zu vereinfachen und zusätzliche Inverter zu entfernen. Manchmal erfordert es das Hinzufügen einiger Inverter zu den Ein- und Ausgängen, aber im Allgemeinen kann diese Technik die Implementierung erheblich vereinfachen. Dies verringert die Fläche, den Stromverbrauch und die Ausbreitungsverzögerung. Dies ist eine übliche Technik, die beim Erstellen großer Addiererbäume in Dingen wie Multiplikatoren verwendet wird. Die Schichten im Baum werden abwechselnd mit Addierern mit invertierten Ausgängen und Addierern mit invertierten Eingängen aufgebaut. Dies führt zu einer sehr signifikanten Einsparung an Fläche, Leistung und Ausbreitungsverzögerung durch Entfernen einer sehr großen Anzahl von Invertern. Ich glaube, dass die Synthesewerkzeuge diese Art der Optimierung automatisch durchführen werden.