# Uso de las ALU (Unidad de Aritmética Lógica)



## Camilo M.E. (Abr 22, 2009)

es la primera vez que utilizo una alu, y aunque tengo una manual de semiconductores me entere que estos integrados necesitan ser programados, y el problema es que en la escuela no contamos con el material necesario y aunque ya investigue como utilizarlo quieciera saber si alguien ya lo utilizo y si tienen algun tip a algo referente a este circuito.


----------



## Chico3001 (Abr 22, 2009)

que alu tienes? la 74ls181? esa se usa de manera muy simple, tiene 2 juegos de pines de entrada y uno de salida (el resultado)

A0-A3 y B0 a B3 son las entradas, solo ten cuidado por que son negadas

F0 a F3 son las salidas, tambien estan negadas

S0 a S3 son los pines de control, segun el numero colocado en estos pines es la operacion logica que realizara la ALU, como Suma, Resta, Comparacion, Doblado y demas.... 

M es un pin de funcion para seleccionar entre operaciones logicas y operaciones aritmeticas

El resto de los pines lo puedes ir revisando en esta direccion

http://www.geomundos.com/mexico/tecnologia/alu-74ls181_doc_13449.html


----------



## Camilo M.E. (Abr 24, 2009)

sobres, ya esta, la empece a utilizar,en efecto es el 74ls181, ya forme las funciones, las salidas f0 a f3 en un simulador las conecte a un dysplay codificado de 4 entradas, pero yo me imagino que en la practica puedo utilizar un decodifiacdor de bcd a 7 segmentos, o realmente existe un dysplay codificado? como quiera gracias


----------



## Chico3001 (Abr 24, 2009)

Si existen los displays con decodificador integrado, pero son muy dificiles de conseguir.... la opcion mas simple es usar un decodificador externo y un dispay, el tipico es el 74ls47 pero hay muchos... 

Ojo, es de BCD a 7 segmentos, pero la alu que estas usando es hexadecimal asi que si quieres ver numeros mayores a 9 vas a tener que buscar otra forma de implementar el display


----------



## unzero (Oct 6, 2012)

Muchachos tengo un duda tengo un 74LS181(ALU) pero no se si esta funcionando correctamente, ya he probado muchas combinaciones y aun no obtengo un resultado que se acople a la tabla, me podrian explicar como es el funcionamiento de esta compuerta y como debo hacer un montaje con ella?


----------



## MrCarlos (Oct 7, 2012)

Hola unzero

Realmente no hay mucho que explicar ya que todo lo que se requiere para utilizar este IC viene en sus hojas de datos.

Tal vez solo hacer notar que las operaciones aritméticas están expresadas en notación complemento a 2.

No sé que programa simulador para circuitos electrónicos utilizas pero te adjunto una imagen donde viene un circuito que pudieras armar en tu simulador para experimentar con ese ALU 74LS181.
Éste circuito es solo para las funciones aritméticas del ALU.
Además te adjunto el circuito desarrolado con el simulador ISIS de Proteus.

Te sugiero que no nombres a este ALU como compuerta ya que no lo es.

saludos
a sus ordenes


----------



## unzero (Oct 11, 2012)

Gracias MrCarlos, me queda una duda, en que consiste eso de los Active High Operands y Active Low Operands


----------



## MrCarlos (Oct 11, 2012)

Hola unzero Podemos decir que *Active High Operands *es cuando los niveles lógicos son ciertos cuando son altos 1.En consecuenciaodemos decir que *Active Low Operands *es cuando los niveles lógicos son ciertos cuando son bajos 0. Recuerda que cada BIT en un número binario tiene un valor según la posición que ocupa en el conjunto de BIT’s.Si es de 4 BIT’sEl de la extrema derecha tiene un valor de 1El que le sigue hacia la izquierda tiene un valor de 2El que le sigue hacia la izquierda tiene un valor de 4El que le sigue hacia la izquierda tiene un valor de 8Por ejemplo para representar el 3 en binario sería 0011. suma los valores de los que son 1. verás que es 3.Así que el 1 se representa en binario 0001. (El de la extrema derecha tiene un valor de 1).Aquí estamos utilizando *Active High Operands* porque estamos tomando los valores que son “1” como ciertos(Válidos). Por ejemplo, vamos a llamar NORMAL a esto:0011(Binario) + 0001(Binario)=0100(Binario) este número binario representado en decimal sería 4. Cierto ?? y esto no es que sea ANORMAL sino *Active Low Operands.*Pero puedes utilizar los ceros para efectuar esa sencilla suma.1100(Binario) +1110(Binario)=1011(Binario)Ahora estamos tomando los valores que son “0” como ciertos(Válidos).saludosa sus ordenes


----------



## unzero (Oct 17, 2012)

Ya entiendo MrCarlos entonces el diagrama que me diste sirve para active low operands, cierto?, pero si digamos quiero utilizar el metodo de active high tendria que quitar los negadores de las entradas A y B y dejar el restro como esta o hay que cambiar algo más?


----------



## MrCarlos (Oct 17, 2012)

Hola unzero

Bueno si pero... hubiera sido más rápido si quitas los negadores y haces pruebas. No Crees ??

saludos
a sus ordenes


----------



## unzero (Oct 18, 2012)

MrCarlos estuve haciendo unas pruebas, quite los negadores de las entradas A y B y deje todo lo demas como estaba pero ya no me funciona la ALU correctamente, hay funciones que toma bien y hay otras que no, que puedo tener mal?. Gracias


----------



## MrCarlos (Oct 18, 2012)

Hola unzero

Dame un ejemplo de las funciones que toma bien y otros ejemplos de las que toma mal.
Con unos y ceros.
Ejemplo:
S = 0000
A = 0010
B = xxxx
F = 0001

A ver si puedo definir con ello que está pasando.

saludos
a sus ordenes


----------



## unzero (Nov 4, 2012)

Bueno, la verdad es que deje el primer montaje, funcionaba bien y sabia como explicarlo, muchas gracias Mr Carlos, me fuiste de gran ayuda!!


----------



## and070 (Nov 9, 2013)

tengo un 74ls181 lo simule y algunas funciones no me daban, pensando que era cosa del simulador lo arme y tampoco me daba no se si sere yo que yo estoy haciendo el calculo o si me pueden decir que estoy haciendo mal, por ejemplo la funcion aritmetica 7(0111) dice que corresponde a AB minus 1, suponiendo que A es 0110 y B 1110 supongo yo que daria 101 pero en la alu de 111, usando logica positiva(M=L y C=H) ...


----------



## Sr. Domo (Dic 11, 2013)

and070 dijo:


> tengo un 74ls181 lo simule y algunas funciones no me daban, pensando que era cosa del simulador lo arme y tampoco me daba no se si sere yo que yo estoy haciendo el calculo o si me pueden decir que estoy haciendo mal, por ejemplo la funcion aritmetica 7(0111) dice que corresponde a AB minus 1, suponiendo que A es 0110 y B 1110 supongo yo que daria 101 pero en la alu de 111, usando logica positiva(M=L y C=H) ...



A= 0110
B= 1110
Resultado= 0101 

me parece que el operando B lo tienes al revés, porque en la simulación está así: B3,2,1,0= 0111, por lo que equivale a 7 y en tu comentario dices que B es igual a 1110 y equivale a 14

En ambos casos el resultado sería 0101 porque solo 0*11*0 de cada operando tendrá como resultado un 1 al hacer la operación AND, por lo que sería 0110 sin restarle el -1, 0110 equivale a 6, restale uno y sería 5 (0101) pero como resultado da 7 y con Cn=L da 8.

Obtuve una respuesta a esto, mira el datasheet, abajo de la tabla de verdad y en Note 2 dice que las operaciones están expresadas en complemento a 2.

Entonces, supongamos que A=0110 y B=0111, complementando a dos cada operando sería:
A=1010 (10) y B=1001 (9), entonces hacemos un AND con los nuevos operandos y el resultado es F=1000 (8) ahora a este resultado le restamos 1 y sería F=0111 Me parece que la ALU complementa a dos primero los operandos y luego hace la operación con los operandos complementados y saca el resultado. 
Esta es la unica explicación que le encuentro, no se si esté bien.

salu2!


----------



## Grafeno94 (Jul 4, 2014)

hola colegas, podrian decirme como funciona la ALU en la imagen, epecificamente el multiplexor; este tiene 4 lineas de entrada y dos bits para seleccionar que dato de entrada pasara a la salida.el problema es que las entradas del multiplexor son de 16bits de ancho, pensando yo aqui,4x16=64 lineas de entradas, esto esta errado explíquenme como funciona eso: 

https://farm4.staticflickr.com/3855/14575268832_64ddcf0c46_o.jpg ...


----------



## Daniel Meza (Jul 4, 2014)

Lo que pasa es que el selector elige grupos de entradas, no las entradas individuales en si. Con los dos bits S[1:0] se tienen hasta 4 combinaciones. Cada una de estas combinaciones corresponde a un grupo, y cada grupo puede ser de n bits; para este caso 16

Espero haberme explicado, saludos


----------



## chclau (Jul 5, 2014)

Un multiplexor con dos entradas de seleccion elige de entre cuatro datos de entrada, un dato de salida. Los datos de entrada y salida pueden ser de cualquier tamaño, podes elegir entre cuatro entradas de un bit o como en este caso, entre cuatro entrdas de 16 bits cada una


----------



## Grafeno94 (Jul 5, 2014)

y si lo quiero simular en un programa como proteus o logisim como haria para configurar la entradas y salidas del mux de n-bits


----------



## chclau (Jul 5, 2014)

Eso depende de los recursos que tengas ahi, se pueden hacer multiplexores de mayor cantidad de bits encadenando multiplexores mas chicos, lo que puede ser muy laborioso si los mux basicos son mucho mas angostos que los 16 bits que necesitas, o podes usar una GAL. Sin embargo, para un mux tan ancho no se si proteus tenga los recursos para hacerlo facilmente, incluso usando una GAL, yo optaria por simularlo con un FPGA


----------



## MrCarlos (Jul 5, 2014)

Hola Grafeno94

Si pretendes simularlo en el ISIS de Proteus o en el Multisim con compuertas, sumadores, inversores y otros IC’s, sería un diseño muy, muy grande.

Analizando el esquema que aparece en el enlace que adjuntaste en tu mensaje *#16* podemos decir que se requieren:
16 compuertas AND de 2 entradas.
Un sumador de 16+16 BIT’s con Cin y Cout.
16 Inversores.
Luego viene el romboide nombrado: *16-bit wide 1-of4 MUX*.

Este MUX tendría: 
64 entradas, 16 de las compuertas *AND*, 16 Del *Sumador*, 16 De los *Inversores*, 16 Directas de *Q[15:0]* 
16 salidas *Z[15:0]*.
2 entradas de control *ALU Function Select Code [1:0]*.

Éste *16-bit wide 1-of4 MUX* debe seleccionar: 
Con Code=*00*,
Las 16 entradas Directas de *Q[15:0] *y mostrarlas en los 16 BIT’s* Z[15:0].*
Con Code=*01*,
Las salidas de los 16 inversores y mostrarlas en los 16 BIT’s* Z[15:0].*
Con Code=*10*,
El resultado del sumador y mostrarlas en los 16 BIT’s* Z[15:0].*
Con Code=*11*,
Las salidas de las compuertas AND y mostrarlas en los 16 BIT’s* Z[15:0].*
Imagínate la complejidad de este *16-bit wide 1-of4 MUX*. 

Así que mi recomendación es igual a las que te hace chclau en su mensaje *#20*.

Sin embargo si deseas continuar como te planteo arriba puedes empezar haciendo una hoja de trabajo de 15 x 8 pulgadas en el ISIS de Proteus.
Colocar horizontalmente, muy juntas, 16 compuertas AND de 2 entradas 75LS08. A la derecha,
Colocar horizontalmente, Una línea separados, 4 sumadores 74LS238. A la derecha,
Colocar horizontalmente, muy juntos, 16 inversores 74LS04.

Luego veremos cómo desarrollar el *16-bit wide 1-of4 MUX*.

saludos
a sus ordenes


----------



## Daniel Meza (Jul 6, 2014)

Para el Mux puede intentar con el 74LS153 que en su interior trae dos mux 4-1, sería cuestión de juntar 16 de estos .

Si la finalidad es saber sólo el *como funciona* tal ALU bastaría con armar una de menos bits, por ejemplo 8 y solamente extender el concepto teóricamente

Saludos


----------



## kaik19 (Nov 12, 2020)

Buenas estoy afrontando un proyecto sobre una alu de 4 bits que selecciona entres tres funciones diferentes según unas señales de control.
Tengo el circuito controlador que sirve para seleccionar que función se ejecuta en cada momento mi problema viene a la hora de poder mostrar
los diferentes resultado por una única salida, se que es un tema de multiplexores pero me estoy rompiendo la cabeza y no logro implementarlo
dejo una captura por si alguien me puede ayudar.  Si dejo el circuito tal cual la primera función la realiza bien si intento conectar las demás funciones a la salida 
me empieza a dar problemas aunque los multiplexores que incluyen cada función estén desactivados
Gracias de antemano


----------

