Je ne comprends pas pourquoi le 74181 fonctionne comme il le fait. fournit lensemble complet des fonctionnalités logiques (AND, NAND, OR, NOR, XOR, shift), mais ses fonctionnalités arithmétiques ne sont pas aussi claires. Par exemple, il ne contient pas A - B
et A + B
dans le même mode.
Pourriez-vous fournir un historique sur la façon dont il a été conçu?
Commentaires
- bonne question, mais je ne pense ' quaucun de nous, utilisateurs de chiphacker, ne connaîtrait les motivations de TI au-delà de ce qui est dans la fiche technique ou sur wikipedia en.wikipedia.org/wiki/74181
- @Jason: merci pour votre commentaire. Alors, où est la bonne place pour cette question?
- Je ne sais pas … vérifiez auprès dun représentant commercial TI? Peut-être pourrait-il vous mettre en contact avec lun des anciens qui a travaillé sur le 74181 dans les années 1970 ' s.
Réponse
Je sais que cest une vieille question, mais jai récemment procédé à une rétro-ingénierie du 74181 et je peux expliquer en détail pourquoi il a les fonctions
Le 74181 est une puce ALU 4 bits qui fournit 16 fonctions logiques et 16 fonctions arithmétiques sur ses opérandes A et B. La plupart des fonctions logiques sont ce à quoi vous pouvez vous attendre (AND, OR, XOR), mais il y en a aussi des inhabituels comme A OU PAS B. Les fonctions arithmétiques sont encore plus étranges. Bien que vous ayez A PLUS B et A MOINS B, certains tels que (A OU B) PLUS (A AND NOT B) semblent assez aléatoires.
Il y a en fait une raison à cet ensemble dopérations. Les fonctions logiques fournissent les 16 fonctions booléennes f (A, B). Les fonctions arithmétiques se résument toutes à un report A PLUS f (A, B) PLUS.
Revenez en arrière pour voir pourquoi il y en a 16. Si vous avez une fonction booléenne f (A, B) sur les entrées à un bit, il y a 4 lignes dans la table de vérité. Chaque ligne peut afficher 0 ou 1. Il y a donc 2 ^ 4 = 16 fonctions possibles. à 4 bits, et ce sont exactement les 16 fonctions logiques du 74181, du trivial 0 et 1 à la logique attendue comme A ET B aux opérations artificielles comme PAS A ET B.
Les fonctions arithmétiques sont simplement celles-ci 16 fonctions ajoutées à A avec le report ajouté. Par exemple, si f (A, B) = B, vous obtenez un report A PLUS B PLUS. Si f (A, B) = NOT B, vous obtenez A PLUS NOT B PLUS carry-in, qui dans une logique de complément de deux « s se transforme en un report A MOINS B MOINS 1 PLUS.
Autre arithmétique fu Les fonctions demandent un peu plus d’analyse. Supposons que f (A, B) = PAS (A OU B). Ensuite, chaque bit de A PLUS f (A, B) sera toujours 1 sauf dans le cas où A est 0 et B est 1. Donc le résultat est A OU PAS B. Même si vous faites une addition, le résultat est un fonction logique. Les autres fonctions arithmétiques étranges peuvent être expliquées de la même manière.
Une chose à noter est que A PLUS A vous donne un décalage à gauche, mais il ny a aucun moyen de faire un décalage à droite sur le 74181.
Dans son implémentation, le 74181 a quatre lignes de sélection qui choisissent lesquelles des 16 fonctions f (A, B) sont utilisées. La première moitié du circuit de la puce calcule les quatre sommes de 1 bit de A avec f (A, B). (Plus précisément, elle crée les signaux Generate et Propagate qui sont utilisés pour carry lookahead . Cela permet au 74181 de travailler en parallèle, plutôt que dutiliser un report dondulation.) La seconde moitié du circuit de la puce génère toutes les retenues en parallèle et calcule la somme finale.
En interne, les fonctions logiques sont implémentées en effectuant une addition avec les portées internes toutes forcées à létat haut par la ligne M: A PLUS f (A, B) avec toutes les portées. Il est simple de voir que cela génère toujours 16 fonctions logiques uniques. Cependant, cela permute lordre, cest pourquoi si vous regardez la fiche technique, il ny a pas de lien évident entre les fonctions logiques et les fonctions arithmétiques.
Si vous voulez comprendre les éléments internes du 74181 « , regardez dabord ladditionneur 4 bits 7483 , sorti deux ans plus tôt. Il utilise le les mêmes techniques de calcul portent, mais est plus simple à comprendre car il fournit une fonction, pas 32. Vous pouvez considérer le 74181 comme la généralisation du 7483.
Réponse
A minus B minus 1
est utilisé pour la soustraction, et le complément du drapeau de retenue peut être vu comme un drapeau demprunt.
Commentaires
- En fait, même les AVR lutilisent – ils nont pas dinstruction dajout immédiat (seulement soustrait immédiat) car vous pouvez facilement convertir lune en une autre. Si les deux valeurs proviennent de registres alors les deux su b et add sont sympas et rapides mais lun nest toujours pas strictement nécessaire.
- Oui, voir stackoverflow.com/questions/1337831/…