Question:
Quel est le raisonnement des fonctions arithmétiques du 74181?
Jichao
2010-01-18 10:31:53 UTC
view on stackexchange narkive permalink

Je ne comprends pas pourquoi le 74181 fonctionne comme il le fait. Il fournit l'ensemble 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 était conçu?

bonne question, mais je ne pense pas qu'aucun de nous, utilisateurs de chiphacker, ne connaisse les motivations de TI au-delà de ce qui est dans la fiche technique ou sur wikipedia http://en.wikipedia.org/wiki/74181
-1
pas sûr ... vérifiez auprès d'un représentant commercial TI? peut-être pourraient-ils vous mettre en contact avec l'un des anciens qui a travaillé sur le 74181 dans les années 1970.
Deux réponses:
#1
+7
Ken Shirriff
2017-01-07 00:36:01 UTC
view on stackexchange narkive permalink

Je sais que c'est une vieille question, mais j'ai récemment procédé à la rétro-ingénierie du 74181 et je peux expliquer en détail pourquoi il a les fonctions dont il dispose.

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 pourriez vous attendre (AND, OR, XOR), mais il y a aussi des fonctions inhabituelles 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 OR B) PLUS (A AND NOT B) semblent assez aléatoires.

Il y a en fait une raison à cet ensemble d'opé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 a 16 fonctions. Si vous avez une fonction booléenne f (A, B) sur les entrées d'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. Étendez-les à 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 NOT A AND B.

Les fonctions arithmétiques sont simplement ces 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 un report A PLUS NOT B PLUS, qui dans la logique du complément à deux se transforme en un report A MOINS B MOINS 1 PLUS.

D'autres fonctions arithmétiques nécessitent un peu plus d'analyse. Supposons que f (A, B) = PAS (A OU B). Alors 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 n'y 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, il crée les signaux Generate et Propagate qui sont utilisés pour carry lookahead. Cela permet au 74181 de fonctionner en parallèle, plutôt que d'utiliser un report d'ondulation.) La seconde moitié du circuit de la puce génère tous les porte en parallèle et calcule la somme finale.

En interne, les fonctions logiques sont implémentées en effectuant l'addition avec les portées internes toutes forcées au niveau 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 l'ordre, c'est pourquoi si vous regardez la fiche technique, il n'y 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 d'abord l'additionneur 4 bits 7483, sorti deux ans plus tôt. Il utilise les mêmes techniques de calcul de report, 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.

#2
+3
starblue
2010-01-19 02:12:04 UTC
view on stackexchange narkive permalink

Un moins B moins 1 est utilisé pour la soustraction, et le complément du drapeau de retenue peut être considéré comme un drapeau d'emprunt.

En fait, même les AVR l'utilisent - ils n'ont pas d'instruction d'ajout immédiat (seulement soustrait immédiat) puisque vous pouvez facilement convertir l'un en un autre. Si les deux valeurs proviennent de registres, alors sub et add sont tous les deux agréables et rapides, mais l'un n'est toujours pas strictement nécessaire.
Oui, voir http://stackoverflow.com/questions/1337831/why-is-this-code-being-generated-by-avr-gcc-and-how-does-it-work


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...