Ich verstehe nicht, warum die 74181 so funktioniert, wie sie funktioniert bieten den vollständigen Satz logischer Funktionen (AND, NAND, OR, NOR, XOR, Shift), aber die arithmetischen Funktionen sind nicht so klar. Beispielsweise enthält sie nicht A - B
und A + B
im selben Modus.
Können Sie einen Verlaufshintergrund zum Design angeben?
Kommentare
- gute Frage, aber ich glaube nicht, dass einer von uns Chiphacker-Benutzern eines der TI-Motive über das im Datenblatt oder auf Wikipedia angegebene hinaus kennt de.wikipedia.org/wiki/74181
- @Jason: Danke für Ihren Kommentar. Wo ist dann der gute Ort für diese Frage?
- nicht sicher … erkundigen Sie sich bei einem TI-Vertriebsmitarbeiter? Vielleicht könnten sie Sie mit einem der Oldtimer in Verbindung setzen, die 1970 an der 74181 gearbeitet haben. ' s.
Antwort
Ich weiß, dass dies eine alte Frage ist, aber ich habe den 74181 kürzlich rückentwickelt und kann ausführlich erklären, warum er die Funktionen hat Dies ist der Fall.
Der 74181 ist ein 4-Bit-ALU-Chip, der 16 Logikfunktionen und 16 Rechenfunktionen für seine Operanden A und B bereitstellt. Viele der Logikfunktionen entsprechen Ihren Erwartungen (AND, OR, XOR), aber es gibt auch ungewöhnliche wie A ODER NICHT B. Die arithmetischen Funktionen sind noch seltsamer. Während Sie A PLUS B und A MINUS B haben, scheinen einige wie (A ODER B) PLUS (A UND NICHT B) ziemlich zufällig zu sein.
Es gibt tatsächlich einen Grund für diese Reihe von Operationen. Die Logikfunktionen stellen alle 16 Booleschen Funktionen f (A, B) bereit. Die arithmetischen Funktionen beschränken sich alle auf A PLUS f (A, B) PLUS Übertrag.
Gehen Sie zurück, um zu sehen, warum es 16 gibt Funktionen. Wenn Sie eine Boolesche Funktion f (A, B) für Ein-Bit-Eingänge haben, enthält die Wahrheitstabelle 4 Zeilen. Jede Zeile kann 0 oder 1 ausgeben. Es gibt also 2 ^ 4 = 16 mögliche Funktionen. Erweitern Sie diese bis 4 Bits, und dies sind genau die 16 Logikfunktionen des 74181, von trivial 0 und 1 über erwartete Logik wie A UND B bis hin zu erfundenen Operationen wie NICHT A UND B.
Die arithmetischen Funktionen sind einfach diese 16 Funktionen zu A hinzugefügt, wobei der Übertrag hinzugefügt wurde. Wenn beispielsweise f (A, B) = B ist, erhalten Sie den Übertrag A PLUS B PLUS. Wenn f (A, B) = NICHT B, erhalten Sie A PLUS NICHT B PLUS-Übertrag, der sich in zwei „s-Komplement-Logik in A MINUS B MINUS 1 PLUS-Übertrag verwandelt.
Anderer arithmetischer Fu Funktionen erfordern etwas mehr Analyse. Angenommen, f (A, B) = NICHT (A ODER B). Dann ist jedes Bit von A PLUS f (A, B) immer 1, außer in dem Fall, in dem A 0 und B 1 ist. Das Ergebnis ist also A ODER NICHT B. Auch wenn Sie addieren, ist das Ergebnis a logische Funktion. Die anderen seltsamen arithmetischen Funktionen können auf ähnliche Weise erklärt werden.
Eine Sache, die zu beachten ist, ist A PLUS A gibt Ihnen eine Linksverschiebung, aber es gibt keine Möglichkeit, eine Rechtsverschiebung auf dem 74181 durchzuführen.
In seiner Implementierung verfügt der 74181 über vier Auswahlleitungen, die auswählen, welche der 16 f (A, B) -Funktionen verwendet werden. Die erste Hälfte der Schaltung des Chips berechnet die vier 1-Bit-Summen von A mit f (A, B). (Insbesondere werden die Generate- und Propagate-Signale erzeugt, die für Carry Lookahead . Dadurch kann der 74181 parallel arbeiten, anstatt einen Ripple-Carry zu verwenden.) Die zweite Hälfte der Schaltkreise des Chips generiert alle Carry-Vorgänge parallel und berechnet die endgültige Summe.
Intern werden die Logikfunktionen implementiert, indem eine Addition mit den internen Übertragungen durchgeführt wird, die alle von der M-Leitung hoch erzwungen werden: A PLUS f (A, B) mit allen Übertragungen. Es ist leicht zu erkennen, dass dadurch immer noch 16 eindeutige logische Funktionen generiert werden. Die Reihenfolge wird jedoch durchlässig. Wenn Sie sich das Datenblatt ansehen, besteht daher kein offensichtlicher Zusammenhang zwischen den logischen Funktionen und den arithmetischen Funktionen.
Wenn Sie die Interna des 74181 verstehen möchten, schauen Sie sich zuerst den 4-Bit-Addierer 7483 an, der zwei Jahre zuvor herauskam Dieselbe Übertragsberechnungstechniken, ist jedoch einfacher zu verstehen, da sie eine Funktion bietet, nicht 32. Sie können sich die 74181 als Verallgemeinerung der 7483 vorstellen.
Antwort
A minus B minus 1
wird für die Subtraktion verwendet, und das Komplement des Übertragsflags kann als Leihflag angesehen werden.
Kommentare
- Tatsächlich verwenden sogar AVRs dies – sie haben keine Anweisung zum sofortigen Hinzufügen (nur sofortiges Subtrahieren), da Sie leicht in eine andere konvertieren können. Wenn beide Werte aus Registern stammen dann beide su b und add sind nett und schnell, aber eines ist immer noch nicht unbedingt erforderlich.
- Ja, siehe stackoverflow.com/questions/1337831/…