# Como  es el diseño de un ALU de 5 bits



## anderessu (Jun 7, 2011)

Hola como van necesito ayuda con el diseño de un ALU de 5 bit que sume y reste y haga las operaciones logicas, sin utilizar sumadores, les agradeceria cualquier ayuda, yo ya hice el diagrama de bloques pero no se como manejar desbordamientos y tipo de operacion y compuertas de suma y resta... Muchas gracias


----------



## MrCarlos (Jun 7, 2011)

Hola andressu

Dices:
*yo ya hice el diagrama de bloques *

Puedes adjuntar ese diagrama de bloques ?.
O algo que hayas hecho, de otro modo te mandarán a la seccion de Moderación.

saludos
a sus ordenes


----------



## BKAR (Jun 7, 2011)

mmm alu de 5 bits?..sin usar sumadores?
solo con compuertas basicas!!??


----------



## anderessu (Jun 7, 2011)

Gracias Mrcarlos por interesarte en mi problema este es el diagrama de bloques con una explicacion que yo realice...

http://www.mediafire.com/?62qym1bg3boq0pa

Este es un diseño que encontre en wikipedia que suma 2 numeros, no se si podrian ayudarme a cambiarlo para que realice lo que necesito.


http://es.wikipedia.org/wiki/Archivo:2-bit_ALU.png

Lo que no entiendo la manera de como reparir las compuertas logicas entre operaciones de suma y resta, pues no puedo utilizar sumadores, tambien no entiendo como hacer para que el ALU realice las operaciones deseadas, digamos como hago para que diferencie cuando se va ha hacer una operacion aritmetica o una operacion logica, he leido es utilizando el multiplexor pero no tengo claro como...
Les agradeceria que me pudieran ayudar soy estudiante de ingenieria y estoy viendo una materia de electronica digital y no tengo muchos conocimientos sobre el tema.
Gracias....


----------



## MrCarlos (Jun 7, 2011)

Hola andressu

Dame tiempo para asimilar la información que has adjuntado.
Si tengo alguna idea o sugerencia te la haré saber.

saludos
a sus ordenes


----------



## MrCarlos (Jun 8, 2011)

Hola andressu

Digamos que es sencillo el hacer tu ALU de 5 BIT’s a partir del diagrama que aparece en este enlace: [/COLOR]http://es.wikipedia.org/wiki/Archivo:2-bit_ALU.png

En la parte izquierda de ese diagrama está una circuiteria la cual contiene compuertas: Xor, AND, OR y un semi-sumador Por BIT.

Con el 74LS151 seleccionan, por medio de sus entradas de control: S2, S1, S0, lo que quieran que aparezca en su salida Y.
Inclusive trae una tabla de las funciones que ese ALU de 4 BIT’s hace.

OP = 000 0 XOR 
OP = 001 1 AND 
OP = 010 2 OR 
OP = 011 3 Adición

Quiere decir que si tenemos: S2=0, S1=1, S0=1 el circuito efectúa una suma con los valores de los operándoos A y B. y el resultado aparece en las salidas Y de los 74LS151.
Inclusive por esas salidas Y aparecen los resultados de todas las demás funciones.

Si dividimos ese diagrama horizontalmente al centro, el circuito que queda arriba hay que hacerlo 5 veces, hacia abajo, para obtener un ALU de 5 BIT’s. Ciertamente son 5 BIT’s para el operando A. y 5 BIT’s para el operando B. Dándonos un total de 10 BIT’s.

Solo faltaría agregar otra función para la resta.
OP = 100 4 Resta. 

En la imagen que te adjunto se nota un recuadro llamado SS. La compuerta Xor y la AND forman un semi-sumador
La teoría y la forma de hacer un sumador completo viene descrita en el PDF que te adjunto.
Nota que hay 2 recuadros llamados SS puesto que ese ALU es de 2 BIT’s.
En este PDF viene tambien el semi-restador para que lo agregues a tu circuito como FUNCION 100 (4)
Espero que sepas numeración binaria y hacer sumas y restas en binario.

Así que solo tienes que desarrollar el restador de 5 BIT’s (5 para el minuendo, 5 para el sustraendo) y agregarlo al circuito que adjuntaste de wikipedia. Este sería OP = 100 4 Resta. 

Que simulador Utilizas ?.

Desempaca el .ZIP adjunto. Varios de los circuitos contenidos en él se desarrollaron con el CircuitMaker.

saludos
a sus ordenes

PD: busca por acá un archivo PDF. sería tu guia,
como hago un SUMADOR/RESTADOR? 
En el mensage #5.


----------



## anderessu (Jun 8, 2011)

Hola MrCarlos de verdad muchas gracias, excelente tu información, son todo esto que me dijiste ya he entendido mucho acerca del tema, ya mismo me pongo a trabajar en esto.

PD: El simulador que utilizo es el proteus, aunque también tengo instalado el circuitmarker...

Saludos y muchas gracias...


----------



## anderessu (Jun 10, 2011)

Listo muchas gracias MrCarlos ya realice el ALU quedo regrande porque es de solo compuertas pero funciona bien jejeje. Pero segun el requerimiento que me pide el profesor el habla de una bandera de overflow. Tu sabes que es eso? o simplemente son los desbordamientos?


----------



## MrCarlos (Jun 10, 2011)

Hola andressu

Si, efectivamente así es.

El OverFlow es cuando al realizar una operación matemática hay un “Se lleva 1” como decimos por acá.
O un “Le pide prestado un 1”.

Por ejemplo cuando sumas 8+9=17, el 1 de las decenas pasa a la siguiente cifra más significativa.
Si tu “Calculadora” no tiene donde mostrar ese 1 entonces si debe tener un BIT para estos casos llamados OverFlow. 

No se como es tu circuito actualmente. Pero si hiciste separado el sumados y el restador se podrían juntar para hacer un circuito mas pequeño.
Si mal no recuerdo te adjunte un PDF donde se describe como son los semi-sumadores y semi-restadores.
En ese PDF tambien explican como hacer un Sumador-Restador con lo cual se ahorrarían varias compuertas.

saludos
a sus ordenes


----------



## anderessu (Jun 10, 2011)

Hola MrCarlos

El circuito que realice lo hice con la suma y la resta de cirtuitos separados...

Entonces bandera de overflow solo es manejar los desbordamientos ?

Una duda mas y perdone que te moleste tanto....

Como puedo volver el circuito que suma y el circuito que resta para que tambien sirvan con numeros negativos, yo se que debe de transformar cada numero a complemento a 2 y luego sumarlos pero quisiera hacerlo del mismo circuito que suma y del mismo circuito que resta para no llenarlo de mas compuertas jejeje.

Este es la imagen de mi circuito el segmento 1 de 5 segmentos que tiene el circuito los demas son todo lo mismo con la entrada que viene del desbordamiento de la suma y la resta






Este es el link de la imagen

http://www.mediafire.com/i/?p4uog78wco3d4i1


----------



## MrCarlos (Jun 10, 2011)

Hola andressu

Sí, efectivamente así es: bandera de OverFlow solo es manejar los desbordamientos.

En tu mensaje solo aparecen unos cuadritos con una X inscrita. No se ven las imágenes.
En el enlace que anotaste si se ve una parte de tu circuito.

Si se podría hacer que con el circuito que tienes sume o reste números de diferente signo.
Pero actualmente voy a salir y no regresaré sino hasta muy tarde.
Posteriormente te ayudaré a desarrollar esa parte a la que te refieres.
Mientras tanto puede ser que en el PDF que te mencioné venga algo que pudiera ayudarte.

saludos
a sus ordenes


----------



## MrCarlos (Jun 11, 2011)

Hola andressu
Te estoy adjuntando unos circuitos desarrollados con el simulador CircuitMaker.
El ALU de 5 BIT’s contiene una sujerecia para quitar tanto el Sumador como el Restador y en su lugar dejar el Sumador-Restador para disminuir la cantidad de componentes en el propio ALU.

El otro circuito es solo un sumador de números con signo. Es extremadamente grande y mas se haría si reemplazas los sumadores 74LS83 por sumadores a nivel compuertas lógicas.

Espero te sirvan de algo estos circuitos.

saludos
a sus ordenes


----------



## Nitros8891 (Jun 13, 2011)

Como hago para poner ese circuito a restar???


----------



## MrCarlos (Jun 13, 2011)

Hola Nitros8891

A qué circuito te refieres ?.
Y dónde pretendes ponerlo ?.

saludos
a sus ordenes


----------



## Nitros8891 (Jun 13, 2011)

Estoy vuelto loco, ayudame, es q me mandaron estoy y con la guia que le hiciste a anderessu me ayudaste algo pero mira esto:



Diseñe e implemente circuitalmente, un circuito ALU simplificado combinacional, utilizando la técnica de MUX y otros MSI para apoyo. La entrada  la conforman el dato A de 3 bits y la palabra de control de 2 bits C, la cual producirá las siguientes operaciones:
•	Complemento de A
•	Incremento de A en una unidad
•	Decremento de A en una unidad
•	Rotación a la izquierda de A (a través del acarreo)

Todas las entradas y salidas se muestran por medio de LED´s.. Ud decodificara las señales de control según su criterio.

Seniorrr carlosss ressspondaaaaaa


----------



## MrCarlos (Jun 13, 2011)

Hola Nitros8891

Tranquilo, Tranquilo. Ya estoy contestando.

Me gustaría me respondieras esto: Qué es para Tú MUX y MSI ?.. En pocas palabras por favor.

Por lo dicho en tu mensaje #15 entiendo que tu sistema será de 3 BIT’s para los datos de A1, A2, A4, además 2 BIT’s de control para seleccionar la función de tu circuito, C1 y C2.

Bien:
Vamos a suponer las siguiente funciones en el 74LS151 selector de datos.
Función, Entradas C en binario, Operación que efectúa.
0, 00, • Complemento de A.
1, 01, • Incremento de A en una unidad.
2, 10, • Decremento de A en una unidad.
3, 11, • Rotación a la izquierda de A (a través del acarreo).
(Nota las separaciones por comas).

El circuito quedaría +/- así:
*Función 0*,
3 inversores Conectados C/U a A4, A2, A1. Cada salida a las entradas I0(4) de los 3 74LS151.

*Función 1*, 
Las entradas A4, A2, A1 conectadas a las entradas de un Sumador-Restador de 3x3 BIT’s en modo de Sumador; por las entradas B4, B2, B1 se programa un 1(Decimal), 001(Binario) para sumar 1 al valor de A.

*Función 2*, 
Las entradas A4, A2, A1 conectadas a las entradas de un Sumador-Restador de 3x3 BIT’s en modo de Restador, por las entradas B4, B2, B1 se programa un 1(Decimal), 001(Binario) para restar 1 al valor de A.

*Función 3*, 
Aquí es donde ya no podemos continuar pues no dices que tantas veces hay que rotar los BIT’s A4, A2, A1 a la izquierda; o si debe tener algo para indicar cuantas veces hay que rotar, a la izquierda, el valor de las A.
Además hay 3 tipos de rotamiento(Desplazamiento):
Lógico.
Aritmético.
Circulares.

Vamos viendo el Lógico:

Normalmente la rotación hacia la izquierda de una palabra de 3 BIT’s con carry Out e In es pasando 
el valor de Cin pasa a A1, 
el valor de A1 pasa a A2, 
el valor de A2 pasa a A4, 
el valor de A4 pasa a Cout. 
Esto es exactamente igual a efectuad la operación aritmética A + A. Cierto ?.
Cin = 0, A4 = 1, A2 = 1, A1 = 0. esto es igual a 6, si lo recorremos hacia la izquierda una posición tendríamos como resultado 12.
A1 = 0.
A2 = 0.
A4 = 1.
Cout = 1. considerando que este BIT vale 8 el resultado es 12.
Y de hecho en este caso Cout tiene un valor de 8.
Es más entendible ver el proceso sin letras:
0110=6
1100=12.
Nota como los unos se desplazaron hacia Tú izquierda.

Normalmente la rotación hacia la Derecha de una palabra de 3 BIT’s con carry Out e In es pasando 
el valor de Cout pasa a A4, 
el valor de A4 pasa a A2, 
el valor de A2 pasa a A1, 
el valor de A1 pasa a Cin. 
Esto es exactamente igual a efectuad la operación aritmética A - (A/2). Cierto ?.
Haz un ejercicio con el mismo 6, el resultado debe ser 3.

Las funciones 1, 2 y 3 las puedes efectuar con el circuito Sumador-Restador que está en la imagen adjunta y dentro del archivo .ZIP el cual es el circuito desarrollado con el simulador CirquitMaker.
Trae una tabla de verdad para que desarrolles un circuito para eliminar el conmutador llamado S0/R1 y ahí conectar la salida del circuito que te menciono.

Tabla De Verdad
F C1 C2
0  0    0=0 Invierte A.
1  0    1=0 Suma A+1.
2  1    0=1 Resta A-1.
3  1    1=0 Shift-Left=A+A.

Cuando está en la función 0 no hay nada que hacer.
Cuando está en la función 1 el Sumador-Restador debe quedar en el modo Sumador(0) y programar un 1 (001) en sus entradas B.
Cuando está en la función 2 el Sumador-Restador debe quedar en el modo Restador(1) y programar un 1 (001) en sus entradas B.
Cuando está en la función 1 el Sumador-Restador debe quedar en el modo Sumador(0) y programar, el mismo valor que tengan las A’s(A4, A2, A1), en sus entradas B’s(B4, B2, B1).

Te adjunto los siguientes archivos
El archivo: Nitro.ZIP el cual contiene teoría de esto que estamos tratando.
El archivo: ALU De 3 BIT’s contiene el circuito desarrollado con el simulador CircuitMaker.

saludos
a sus ordenes


----------



## Nitros8891 (Jun 14, 2011)

JEjejejee q bueno eres, bueno con los consejos que le diste a MrAnderessu me ayudaron bastante, yo mismo hice la simulacion de sumador de 3 bits con led, eso si, el mio no restaba, pero ahora con tu ayuda no solo resta sino que tambien invierte, Ahora te digo, no se como hacer en el circuito que me mandaste para que haga *la famosa rotacion hacia la izquierda, no se pero segun tu si lo hace, pero a mi no me cuadra*, el conmutador o como sea que se llame, es un switch cierto??, tu sabes el S1/R1... La practica es para hoy y no la monte, a ver si me dan chance de entregarla otro dia, otra cosa que menciono el profesor, era que había que usar un registro para guardar y despues ir aumentandole o disminuyendole unidades, realmente jamas lo escuche diciendo eso, pero un companiero me dijo que si, francamente lo encuentro inutil, con el circuito que me has dado no veo la necesidad de usar nada mas..

De todas maneras este no es el fin, aun me quedan 5 practicas mas, y estare por aqui los proximos dias, Saludos hermano


----------



## MrCarlos (Jun 14, 2011)

Hola Nitros8891

Dices en tu mensaje: *la famosa rotacion hacia la izquierda, no se pero segun tu si lo hace, pero a mi no me cuadra*,

Creo que te lo explique, para mi, muy claro:
Normalmente la rotación hacia la izquierda de una palabra de 3 BIT’s con carry Out e In es pasando 
el valor de Cin pasa a A1, 
el valor de A1 pasa a A2, 
el valor de A2 pasa a A4, 
el valor de A4 pasa a Cout. 
Esto es exactamente igual a efectuad la operación aritmética A + A. Cierto ?.

Fijate este último renglón.... Fácil no ?.

Tambien te mencioné que había que hacer un circuito con la tabla de verdad.
Para qué... 
Para cuando tu “ALU” esté en la *funcion número 1* el circuito Sumador-Restador *Sumara 1* al valor de A.
Para cuando tu “ALU” esté en la *funcion número 2* el circuito Sumador-Restador *Restara 1* al valor de A.
Para cuando tu “ALU” esté en la *funcion número 3* el circuito Sumador-Restador *Sumara* Por el operando B el valor de A. Porque Rotar es igual a sumar el valor de A a la A *(A+A).*

En la Funcion 3 dices que no te cuadra, me pordías mostrar el circuito que hciste para lograr esa función 3?.

saludos
a sus ordenes


----------



## Nitros8891 (Jun 18, 2011)

Disculpe sr Carlos, es algo dificil, hoy me estoy sentando a seguir con esto, mi compañero busco lo de registros, pero me da fastidio eso, lo que si entiendo de lo que me esta diciendo, cuando me dices que el cin pasa a A1, pero el detaller es como???? a mi parecer hay que hacer otro circuito con su tabla de verdad como me lo indicas, intentare hacerlo, si no puedo, entonces me voy con registros, a pesar que no he leido nada de eso....Saludos


----------



## MrCarlos (Jun 18, 2011)

Hola Nitros8891

Te vuevlo a repetir “recorrer hacia la izquierda es igual a sumar al mismo valor de A a la A, Así: A + A.
Esto lo puedes lograr con el Sumador-Restador Que te adjunté mensajes arriba. O con el que te adjunto Ahora.
Pero el valor de la segunda A se mete por las entradas B.

Tambien, Claro, Lo puedes hacer con Registros de corrimiento pero esto aumentaría la cantidad de IC’s utilizados.

ESTUDIA y analiza el circuito que está en la imagen adjunta espero te sirva.
En el ZIP está el circuito desarrollado en CircuitMaker.

Te toca investigar Qué hacen los IC’s 74LS125 los cuales están en la parte baja del diagrama. 

saludos
a sus ordenes
PD: he olvidado preguntarte si puedes utilizar el 74LS83 el cual es un sumador completo. Con este se reduciría drásticamente el tamaño de tu ALU.


----------



## Nitros8891 (Jun 18, 2011)

Hola muchas gracias, este circuito funciona bien, hace todo, pero es bastante grande jejeje, una de mis dudas es que las entradas B son en realidad simples entradas de corriente de 5 V cierto???, ahora el switch SO/R1, que es lo que realmente es?? es un switch o que?? un pulsador?? realmente no se que es, y lo simule como un switch y no funciono, Saludos


----------



## MrCarlos (Jun 18, 2011)

Hola Nitros8891

No, no es así. Esos pequeños círculos con una rayita son conectores que tienen un nombre y todos los del mismo nombre van conectados entre si.

El Switch S0/S1 ya no sirve para nada, lo puedes eliminar del diagrama.
Es un Switch el cual no existe en el mercado, es solo para facilitar los circuitos, lo que hace es aplicar un uno o un cero según para donde está orientado.

Qué hay de esto que te mencione en mi mensaje anterior ?.
_Te toca investigar Qué hacen los IC’s 74LS125 los cuales están en la parte baja del diagrama. _

Y esto otro en las últimas líneas de mi mensaje anterior ?.
_PD: he olvidado preguntarte si puedes utilizar el 74LS83 el cual es un sumador completo. Con este se reduciría drásticamente el tamaño de tu ALU_

saludos
a sus ordenes


----------



## Nitros8891 (Jun 18, 2011)

Otra cosa las entradas B yo no las entiendo, no se de donde las sacas, osea con el switch metes los bits en el sumador restador, y estas entradas son las A, las B como se meten??, te pregunto de nuevo, estas entradas son constantes de 5v q siempre van a entrar?? yo no entiendo, como expreso esas entradas en mi protoboard

????????????????????????????????????/


----------



## MrCarlos (Jun 18, 2011)

Hola Nitros8891

No lo puedo creer, no te puedo explicar para que me comprendas.

Por favor, ve la imagen que viene en mi mensaje #20.(LA IMAGEN llamada Borrame E). Hazla más grande.

Notas los 3 rectángulos que están en la parte superior izquierda ?.
Uno se llama “Función”, el del centro se llama “Oper A” (= Operando A), el último se llama “ALU”.
Este es un display HEXagecimal en el cual se muestra el resultado de la operación del ALU.
Los 2 primeros rectángulos son DigiSwitch’s que según el número, en el cuadro inscrito, es el código binario que sale por sus terminales: 4, 3, 2, 1.

El DigiSwitch llamado “Función” se encarga de programar las entradas S0, S1 de los 74LS151.
En las salidas de este DigiSwitch: 3, 2, 1 hay unos CONECTORES llamados C1 y C2, Los Ves ?.... Esos conectores son los mismos que están conectados a los 74LS151, inclusive se llaman igual C1 y C2. NOTAS que la salida 3 de éste DigiSwitch está conectado a Gnd(Tierra) ?.
TODOS LOS CONECTORES DEL MISMO NOMBRE ESTÁN CONECTADOS ENTRE SI.

El DigiSwitch llamado “Oper A” se encarga de programar las entradas A del ALU. Éste tiene otros CONECTORES llamados A4, A2, A1. NOTAS que bajo este DigiSwitch hay 3 inversores y que cada uno tiene un CONECTOR de los mismos nombres ?. 
También el Sumador-Restador tiene 3 CONECTORES de los mismos nombres A4, A2, A1 ?.
TODOS LOS CONECTORES DEL MISMO NOMBRE ESTÁN CONECTADOS ENTRE SI.

El Display HEXagecimal llamado ALU tiene otros CONECTORES llamados: Out8, Out4, Out2, Out1. 
Estos CONECTORES Se encuentran también en las salidas Z de los 74LS151. Los ves ?
TODOS LOS CONECTORES DEL MISMO NOMBRE ESTÁN CONECTADOS ENTRE SI.

Los CONECTORES B4, B2, B1. preguntas de donde salen. Cierto ?.
Notaste esta frase en mis mensajes #20 y #22 ?
*Qué hay de esto que te mencione en mi mensaje anterior ?.*
*Te toca investigar Qué hacen los IC’s 74LS125 los cuales están en la parte baja del diagrama. *
Precisamente de los IC’s 74LS125 salen esos conectores llamados: B4, B2, y B1. los Ves ?.
Pues de ahí salen. Y, si lo notas, en el Sumador-Restador Están esos mismos conectores.
TODOS LOS CONECTORES DEL MISMO NOMBRE ESTÁN CONECTADOS ENTRE SI.

Ya investigaste qué hacen los 74LS125 ?.... si no lo has hecho no podrás entender el funcionamiento de tu ALU.

Tampoco me has respondido a esto:
_PD: he olvidado preguntarte si *puedes utilizar el 74LS83* el cual es un sumador completo. Con este se reduciría drásticamente el tamaño de tu ALU_

saludos
a sus ordenes


----------



## Eduardo (Jun 18, 2011)

MrCarlos dijo:


> Hola Nitros8891
> No lo puedo creer, no te puedo explicar para que me comprendas.
> ............ ............ ............ ............
> .... ............ ............ ............  .......


Que paciencia admirable MrCarlos...

Son años de monasterio tibetano verdad?


----------



## Nitros8891 (Jun 18, 2011)

Estaba muy ciego con respecto a las entradas B, que realmente son salidas, jeje tengo mucho que hacer aun, Gracias por todo sin  ti no lo hubiera podido entender...Gracias hermano..

Por cierto me compañero dijo que no se podia usar la pastilla del sumador, habia que construirlo, sin embargo, esa alu, es extremadamente grande para un solo protoboard, es imposible ponerlo, aunque tengo una nueva duda y la voy a poestar en otro lugar ya este tema esta muy trillado, Saludos



Eduardo dijo:


> Que paciencia admirable MrCarlos...
> 
> Son años de monasterio tibetano verdad?




Jejejeje si


----------

