Pregunta:
¿Cuál es el razonamiento de las funciones aritméticas en el 74181?
Jichao
2010-01-18 10:31:53 UTC
view on stackexchange narkive permalink

No entiendo por qué el 74181 funciona de esa manera. Proporciona el conjunto completo de funciones lógicas (AND, NAND, OR, NOR, XOR, shift), pero sus funcionalidades aritméticas no son tan claras. Por ejemplo, no contiene A - B y A + B en el mismo modo.

¿Podría proporcionar algunos antecedentes históricos sobre cómo fue diseñado?

buena pregunta, pero no creo que ninguno de nosotros, los usuarios de chiphacker, sepa ninguno de los motivos de TI más allá de lo que está en la hoja de datos o en la wikipedia http://en.wikipedia.org/wiki/74181
@Jason:gracias por tu comentario, entonces, ¿dónde está el buen lugar para esta pregunta?
no estoy seguro ... consulte con un representante de ventas de TI? tal vez podrían ponerte en contacto con uno de los veteranos que trabajaron en el 74181 en la década de 1970.
Dos respuestas:
#1
+7
Ken Shirriff
2017-01-07 00:36:01 UTC
view on stackexchange narkive permalink

Sé que esta es una pregunta antigua, pero recientemente hice ingeniería inversa al 74181 y puedo explicar en detalle por qué tiene las funciones que tiene.

El 74181 es un chip ALU de 4 bits que proporciona 16 funciones lógicas y 16 funciones aritméticas en sus operandos A y B. Muchas de las funciones lógicas son las que cabría esperar (Y, O, XOR), pero también hay las inusuales como A O NOT B. Las funciones aritméticas son aún más extrañas. Si bien tiene A MÁS B y A MENOS B, algunos como (A OR B) MÁS (A Y NO B) parecen bastante aleatorios.

En realidad, existe una razón para este conjunto de operaciones. Las funciones lógicas proporcionan las 16 funciones booleanas f (A, B). Todas las funciones aritméticas se reducen a A PLUS f (A, B) PLUS de mano.

Da un paso atrás para ver por qué hay 16 funciones. Si tiene una función booleana f (A, B) en entradas de un bit, hay 4 filas en la tabla de verdad. Cada fila puede generar 0 o 1. Por lo tanto, hay 2 ^ 4 = 16 funciones posibles. Extiéndalos a 4 bits, y estas son exactamente las 16 funciones lógicas del 74181, desde los triviales 0 y 1 hasta la lógica esperada como AYB y operaciones artificiales como NOT AY B.

Las funciones aritméticas son simplemente estas 16 funciones agregadas a A con el acarreo agregado. Por ejemplo, si f (A, B) = B, obtienes A PLUS B PLUS equipaje de mano. Si f (A, B) = NOT B, obtienes A MÁS NO B MÁS acarreo, que en la lógica del complemento a dos se convierte en A MENOS B MENOS 1 MÁS acarreo.

Otras funciones aritméticas requieren un poco más de análisis. Suponga que f (A, B) = NOT (A OR B). Entonces, cada bit de A PLUS f (A, B) siempre será 1, excepto en el caso de que A sea 0 y B sea 1. Entonces el resultado es A O NOT B. Aunque estás sumando, el resultado es función lógica. Las otras funciones aritméticas extrañas se pueden explicar de manera similar.

Una cosa a tener en cuenta es que A PLUS A te da desplazamiento a la izquierda, pero no hay forma de hacerlo a la derecha en el 74181.

En su implementación, el 74181 tiene cuatro líneas de selección que seleccionan cuál de las 16 funciones f (A, B) se utilizan. La primera mitad de los circuitos del chip calcula las cuatro sumas de 1 bit de A con f (A, B). (Específicamente, está creando las señales Generate y Propagate que se utilizan para acarreo anticipado. Esto permite que el 74181 funcione en paralelo, en lugar de usar un acarreo de ondulación). La segunda mitad de los circuitos del chip genera todos los lleva en paralelo y calcula la suma final.

Internamente, las funciones lógicas se implementan al realizar la suma con los acarreos internos, todos forzados en alto por la línea M: A PLUS f (A, B) con todos los acarreos. Es sencillo ver que esto todavía genera 16 funciones lógicas únicas. Sin embargo, permuta el orden, por lo que si miras la hoja de datos no hay una conexión obvia entre las funciones lógicas y las funciones aritméticas.

Si desea comprender los aspectos internos del 74181, primero observe el sumador de 4 bits 7483, que apareció dos años antes. Utiliza las mismas técnicas de cálculo de acarreo, pero es más sencillo de entender ya que proporciona una función, no 32. Puede pensar en el 74181 como la generalización del 7483.

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

A menos B menos 1 se usa para la resta, y el complemento de la bandera de acarreo se puede ver como una bandera de préstamo.

De hecho, incluso los AVR usan esto: no tienen una instrucción de adición inmediata (solo resta inmediata), ya que puede convertir fácilmente una en otra. Si ambos valores provienen de registros, tanto sub como add son agradables y rápidos, pero uno aún no es estrictamente necesario.
Sí, consulte http://stackoverflow.com/questions/1337831/why-is-this-code-being-generated-by-avr-gcc-and-how-does-it-work


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 2.0 bajo la que se distribuye.
Loading...