No entiendo por qué el 74181 funciona como lo hace. Lo hace proporcionar el conjunto completo de funciones lógicas (AND, NAND, OR, NOR, XOR, shift), pero sus funciones aritméticas no son tan claras. Por ejemplo, no contiene A - B
y A + B
en el mismo modo.
¿Podrías proporcionar algunos antecedentes históricos sobre cómo fue diseñado?
Comentarios
- buena pregunta, pero no ' creo que ninguno de nosotros, los usuarios de chiphacker, conocería cualquiera de los motivos de TI más allá de lo que está en la hoja de datos o en la wikipedia 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. Quizás ellos puedan ponerlo en contacto con uno de los veteranos que trabajaron en el 74181 en 1970 ' s.
Respuesta
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 lo hace.
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 algunas inusuales como A OR 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 O 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 arrastre.
Retroceda 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. Entonces hay 2 ^ 4 = 16 funciones posibles. Amplíe estas a 4 bits, y estas son exactamente las 16 funciones lógicas del 74181, desde 0 y 1 triviales hasta la lógica esperada como AY B y operaciones artificiales como NOT A AND B.
Las funciones aritméticas son simplemente estas 16 funciones agregadas a A con el equipaje de mano agregado. Por ejemplo, si f (A, B) = B, obtienes A MÁS B MÁS equipaje de mano. Si f (A, B) = NO B, obtienes A MÁS NOT B PLUS carry-in, que en dos «s-complemento lógico se convierte en A MINUS B MINUS 1 PLUS carry-in.
Otra aritmética fu Las acciones 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 donde A es 0 y B es 1. Entonces el resultado es A O NO B. Aunque estás haciendo una suma, el resultado es un 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 carry lookahead . Esto permite que el 74181 funcione en paralelo, en lugar de utilizar un acarreo de ondulación.) La segunda mitad del circuito del chip genera todos los acarreos 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 el Las mismas llevan técnicas de cálculo, pero es más simple de entender ya que proporciona una función, no 32. Puede pensar en el 74181 como la generalización del 7483.
Respuesta
A minus B minus 1
se usa para la resta, y el complemento de la bandera de acarreo puede verse como una bandera de préstamo.
Comentarios
- De hecho, incluso los AVR usan esto: no tienen una instrucción de agregar inmediata (solo resta inmediata) ya que puede convertir fácilmente uno en otro. Si ambos valores provienen de registros entonces ambos su by add son agradables y rápidos, pero aún no es estrictamente necesario.
- Sí, consulte stackoverflow.com/questions/1337831/…