# Circuito de 4 operaciones con 74181



## rpmp707 (Jun 15, 2012)

Saludos.
debo realizar un circuito con la ALU de tal forma que este realice 4 operaciones aritméticas o lógicas con 2 números previamente ingresados y de forma secuencial. Es decir, ingresamos el 2 y el 7, pasa un pulso del reloj, y en el display aparece la suma, en el siguiente pulso la resta, y así.
Ni idea como hacerlo =(, solo pude hacer uno en el que se ingresa los datos, se selecciona el tipo de operación y muestra el resultado.
Alguien puede ayudarme por favor?
PD: Adjunto una imagen del circuito que pude hacer.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Por medio de la entrada M(8) le puedes decir al 74181 que quieres efectuar una función aritmética si es nivel bajo o lógica si es nivel alto.

Luego, según entiendo, después de ingresar los operandos, el circuito debe hacer en secuencia 4 operaciones, ya sean aritméticas o lógicas.

Para lograrlo debes programar las entradas S0(6), S1(5), S2(4), S3(3) con el código de la función que quieres que realiza el 74181.
Supongo que ya conoces esos códigos. Aquí abajo están los códigos para las funciones aritméticas que puede realizar el ALU.

Ejemplo F=9 suma el operando A con el operando B y pone el resultado en las salidas F.
Programar el 9 en las entradas S sería así:
S0=1
S1=0
S2=0
S3=1

Suponiendo que en seguida quieres realizar la función F=0 que es restar 1 al calor de A.
Entonces tienes que programar en las S todas en cero.

Por lo tanto debes diseñar un Secuenciador(Decodificador) que te de, precisamente la secuencia de combinaciones de números para los códigos de las funciones que quieras utilizar.

M=0 Arithmetic. (Note **)

F=0, [A minus 1], Quiere Decir: (A-1)
F=1, [AB minus 1], Quiere Decir: (A AND B) - 1
F=2, [AnB minus 1], Quiere Decir: (A AND nB) -1
F=3, [minus 1], Quiere Decir: - 1
F=4, [A plus (A + nB)], Quiere Decir: A + (A OR nB)
F=5, [AB plus (A + nB)], Quiere Decir: (A AND B) + (A OR nB)
F=6, [A minus B minus 1], Quiere Decir: (A - B) - 1
F=7, [A + nB], Quiere Decir: (A OR nB)
F=8, [A plus (A + B)], Quiere Decir: A + (A OR B)
F=9, [A plus B], Quiere Decir: A + B
F=A, [AnB plus (A + B)], Quiere Decir: (A AND nB) + (A OR B)
F=B, [A + B], Quiere Decir: (A OR B)
F=C, [A plus A*], Quiere Decir: A + A (Note *)
F=D, [AB plus A], Quiere Decir: (A AND B) + A
F=E, [AnB minus A], Quiere Decir: (A AND nB) - A
F=F, [A], Quiere Decir: A

Notes: * Each bit is shifted to the next most significant position.
** Arithmetic operations expressed in 2's complement notation.

F= Función.
A= Operando A.
B= Operando B.
- Es Restar.
+ Es Sumar.
AND = Efectua La Función Lógica AND.
OR = Efectua La Funcion Lógica OR
nX = Complemento de X.

saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Ok, entendí, y como puede observar en la imagen que adjunte logre hacer el circuito pero ni idea con que elementos o como empezar a hacer el secunciador. 
Si me podría guiar cómo agregrarle y que agregar al circuito del que ya dispongo (puede ver que es muuuuy básico) para que haga lo que necesito se lo agradecería =).


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Puesto que van a ser 4 funciones las que pretendes realizar debes utilizar un contador de 0 a 3.

Vamos a suponer que pretendes efectuar las siguientes funciones:
F=9, [A plus B], *Quiere Decir: A + B*
F=0, [A minus 1], *Quiere Decir: (A-1)*
F=F, [A], Quiere Decir: *A*
F=6, [A minus B minus 1], Quiere Decir: *(A - B) - 1*
Por decir algo; y en ese orden.

De tal suerte que el contador irá contando así:
*00* y el Secuenciador, en sus salidas debe tener 4 BIT’s 1001. Para F=9.
*01* y el Secuenciador, en sus salidas debe tener 4 BIT’s 0000. Para F=0.
*10* y el Secuenciador, en sus salidas debe tener 4 BIT’s 1111. Para F=F.
*11* y el Secuenciador, en sus salidas debe tener 4 BIT’s 0110. Para F=6.

Ese Secuenciador lo puedes diseñar fácilmente con el programa llamado Boole-Deusto que puedes encontrar atraves de Google.com.
Lo bajas y lo instalas en tu PC. Lo corres y seleccionas *Combinational Circuit,* le das un nombre, y en *# Of Input lines *le dices que son 2, en # Of Output Lines le dices que son 4. Puedes nombrar las lineas de entrada y las de salida.
En seguida presionas el botón *Manual Truth Table* y haces la tabla de verdad, es la que aparece aquí arriba.
Una vez hecha presionas el botón *Evaluate*. Y luego el botón *Exit*.
Luego presionas el botón *Minimized SOP Expresión*. En la ventana que aparece puedes ver el circuito para cada salida del Secuenciador presionando el botón *View Circuit*.

Si el Boole Deusto que bajes está en español los nombres que aquí aparecen en ingles estarán en español.

Suerte.

saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Muchisimas gracias =D, ya mismo me pongo a hacerlo.
Solo una pregunta me aparece el circuito con los elementos para de ahí poder pasarlo al proteus?
Ya que la simulación la debo presentar en proteus.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Digamos que SI aparece el circuito con los elementos para de ahí pasarlo al ISIS de Proteus.
Esto es: aparecen compuertas AND o OR e Inversores.
Tú tienes que seleccionarlos en tu simulador y hacer las conexiones como se ven en el Boole Deusto.
O Sea: el Boole Deusto solo te da una imagen de las conexiones y las compuertas que intervienen para lograr el fin.
Pero no te da el número de identificación de las compuertas.

saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Acabó de crear el circuito con el Boole Deusto, y tengo que usar una not en B y directo A, ahora si no estoy mal deberan ser las entradas de un 74139 para que con 2 entradas me den 4 salidas y las salidas ir a S0 S1 S2 S3 de la 74181, además en E del 74139 deberá ir un reloj para que haga automáticamente la secuencia.
Adjunto un gráfico, para que visualice lo que entendí.
Por cierto gracias por su tiempo MrCarlos, ha sido de mucha ayuda.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Bien: las salidas del Secuenciador(Decodificador) que creaste con el Boole Deusto van a las entradas S0 hasta S3 del ALU.
Ojo: a las entradas del Secuenciador se conecta un contador que cuente de 0 a 3 y... ya sea que se detenga o que continúe de 0 a 3. este en un contador de 2 BIT’s el cual puedes hacer con 2 Flip-Flip’s tipo J-K o tipo D.

Si vas a efectuar funciones aritméticas con el ALU, la entrada M debes conectarla a un nivel bajo (Cero).
Si vas a efectuar funciones lógicas con el ALU, la entrada M debes conectarla a un nivel alto (Uno).

La secuencia de las 4 funciones será la misma, aritméticas o lógicas, ya que tu Secuenciador solo tiene aquella secuencia que hayas diseñado con el Boole Deusto.

saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Hola MrCarlos.

Ya complete el circuito, creo que lo hice bien. 
Podría darle un vistazo y ver si lo logre por favor =)?

De antemano gracias.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Modifique un poco tu circuito agregándole unos Display0s de 7 Segmentos y moví algunas cosas para que cupieran, te lo adjunto en el .ZIP.

En tu circuito, fíjate que efectúa 2 funciones en el mismo tiempo del contador.

Fijate En Los Display's
LLamados Contador y Funcion

Cuando El Contador Está En 0
Efectúa Las Funciones E y F
0 E y F

Cuando El Contador Está En 1
Efectúa Las Funciones D y F.
1 D y F

Cuando El Contador Está En 2
Efectúa Las Funciones B y F.
2 B y F

Cuando El Contador Está En 3
Efectúa Las Funciones 7 y F.
3 7 Y F

Si eso es lo que quieres pues está bien.

Hay un detalle algo grabe: las terminales llamadas: G(17) y P(15) Son salidas del ALU. No las debes conectar ni al Vcc. ni a Tierra, se quemaría el Circuito integrado.
La Entrada Llamada CN(7) es Carry In. La tienes programada a 1 con lo cual sumará 1 al resultado de la función,

Fíjate en el circuito que hice basado en tus requerimientos. Espero te sirva también.

Nota que esta ALU 74181 efectúa las operaciones por el método de complemento a 2.
Así que no esperes que al efectuar 2 + 2 te de 4.
Dale una leída a las hojas de datos que puedes conseguir en este enlace.
http://www.alldatasheet.com/


saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Saludos MrCarlor.

No, en realidad deseo que con los datos ingresados realice una operación a la vez, cómo logro eso?
Vi el circuito que tuvo la gentileza de adjuntar y tengo un par de preguntas:

1) El 74190 que hace en el circuito, es decir veo que lo conecto a la selección de operación (S0, S1, etc) en lugar del contador?
2) Apenas llevo manejando Proteus poco más de un mes, y no se como logra "cortar" los cables y "unirlos en su lugar de llegada" por medio de lo creo son Outputs.
3) Si el resultado se muestra en complemento a2 como lo paso para que al realizar 1+1 de como resultado 2 y no el complemento a2.

Perdone lo novato de las preguntas pero mis conocimientos son limitados.
Gracias por su tiempo.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

1) El 74LS190 en mi circuito es un contador el cual utilizo para el famoso Secuenciador que en realidad es muy sencillo. Solo consta de un inversor. El Secuenciador, claro.
Tú lo hiciste con 2 Flip-Flip’s.

2) No entiendo claramente este punto. Te refieres a las terminales que en su punta tienen un nombre ??
si a eso te refieres esas terminales se llamad conectores. Hay varios tipos pero básicamente funcionan igual.
El objeto de esas terminales es el NO hacer tantas líneas en los circuitos. Se ven más claros, entendibles.
Solo inserta una terminal y dale un nombre. Todas las terminales del mismo nombre estarán interconectadas sin tocarse.

3) Vuelve a complementar a 2 el resultado. O agrega unos inversores en los operandos A y B y en las salidas del resultado de la Función.

saludos
a sus ordenes


----------



## rpmp707 (Jun 16, 2012)

Saludos MrCarlos.

1) Es decir que puedo utilizar el secuenciador con FF jk o este que usted tuvo la amabilidad de disenar?
2) Si exactamente a eso me refería, y si me imagine que era para evitar tanta línea, y me hubiera servido saber como evitar hacer tanta línea hace un par de semanas que hice un circuito contador aleatorio con 4 FF... parecía laberinto... jejeje...
3) Osea antes de conectarlos al display paso el F0, F1, F2, F3, a una not y de ahí al display?

Gracias por su tiempo.


----------



## MrCarlos (Jun 16, 2012)

Hola rpmp707

Si efectivamente así es. Lo que hace el Boole Deusto es algo así como un decodificador donde sus entradas son las salidas de un contador y sus salidas son o van a estar de acuerdo a la tabla de verdad que le hayas asignado.
Puedes utilizar el 74LS190 o Flip-Flop’s.
Sin embargo no se porque utilizaste el 74LS139. por eso te hace doble función.

Te mencione, en mensajes anteriores que se utilizaría un contador y el Secuenciador que diseñaste.

En mi mensaje anterior cometí un error con la ínfo. Que te dí.
En realidad solo hay que agregar inversores en las entradas de los operandos A y B.
O complementar a 2 las salidas F’s.
Para complementar a 2 hay que invertir el número binario y sumarle 1.

Ejemplo:
6(Dec) 0110(Binario).
9(Dec) 1001(Binario) *complemento a 1.*
1(Dec) 0001(Binario) +
10(Dec) 1010(Binario)= *complemento a 2.*

saludos
a sus ordenes


----------



## rpmp707 (Jun 17, 2012)

Saludos MrCarlos.

Luego de dormir un poco, y leer todo más tranquilo, me di cuenta de un par de cosas:

1) Mi error, y grave, conectar las salidas a tierra y vcc, pero la verdad ayer ya estaba tonto de intentar hacer este bendito deber, solo con su ayuda, sin orientación del profesor o apuntes. Al borde de la locura si no me ayudaba la verdad.
2) Cometio un error chiquitico en una cosa que tuvo la gentileza de explicarme, cuando el Cn esta en 1 significa sin acarreo, con 0 (como usted lo conecto) hay acarreo. Bueno esto originó que también exista un error en los codigos, que con la ayuda de Google ya corregí. Y por fin pude entender el funcionamiento del circuito que me ayudo a disenar.

Aunque aún tengo la duda del funcionamiento del 74190, porque por ejemplo, si desearía (por un punto extra) hacer que haga 5 operaciones el circuito, cómo procedo?

Gracias por su tiempo.

PD: Experimentando con el Boole y con el 74190 creo haber logrado un secuenciador del 0 al 7, y que indique 8 operaciones. Adjunto el archivo en proteus y Boole para que si tiene un tiempo y la voluntad me ayude revisandolo por favor.
Si es que el circuito funciona correctamente solo me faltaría lograr que solo haga 5 operaciones y no 8, es decir debo lograr que el secuenciador solo vaya hasta el 5, con el 74190 no sé como, espero también me pueda ayudar con este detalle.

Gracias por su tiempo.


----------



## MrCarlos (Jun 17, 2012)

Hola rpmp707

Dame un poco de tiempo; por ahora estoy algo ocupado, como hoy se festeja el Dia Del Padre tengo casa llena de Hijos, Nietos y demás.

Por lo pronto te diré que basados en el tema original nos fuimos por otro camino a este final.
Puedes utilizar directamente el 74LS190 a las entradas S’s del ALU.
Y al contador 74LS190 programarle donde inicie y donde termine.
Esto es sin utilizar el Secuenciador.

Luego reviso los archivos que me adjuntaste.

saludos
a sus ordenes


----------



## rpmp707 (Jun 17, 2012)

Saludos, y Feliz día MrCarlos.

Claro, no se preocupe, muy amable de su parte.


----------



## rpmp707 (Jun 18, 2012)

Saludo MrCarlos.

Ya creo que lo logre =D use un secuenciador con FF y con la ayuda de Boole-Deusto, obtuve las 5 operaciones, pero hice una laberinto de cables... porque no sé como usar los conectores =(.

Podría echarle una mirada por favor y decirme si lo hice bien más allá del laberinto que forme.

Gracias de antemano.


----------



## MrCarlos (Jun 18, 2012)

Hola rpmp707

Vaya que si es un laberinto este circuito.
Mirándolo muy a la ligera veo que tienes el Display de las funciones mal conectado.
El PIN de la extrema Derecha es el BIT menos significativo va conectado a S0; el de la extrema izquierda es el BIT más significativo va conectado a S3.

Como no mencionas cual es la secuencia de las funciones no sé si el Secuenciador está bien desarrollado.

saludos
a sus ordenes


----------



## rpmp707 (Jun 18, 2012)

Ya logré usar los conectores y reducir significativamente el circuito, como podrá ver en la imagen, ahora solo tengo un problema, no logró hacer la secuencia de operaciones con el Boole-Deusto =(, me sale cualquier orden menos el que supuestamente indique.
Como Hagó la secuencia para que las operaciones salgan de la siguiente manera:
000 y el Secuenciador, en sus salidas debe tener 4 BIT’s 1001. Para F=9.
001 y el Secuenciador, en sus salidas debe tener 4 BIT’s 0000. Para F=0.
010 y el Secuenciador, en sus salidas debe tener 4 BIT’s 1111. Para F=F.
011 y el Secuenciador, en sus salidas debe tener 4 BIT’s 0110. Para F=6.
100 y el Secuenciador, en sus salidas debe tener 4 BIT’s 0011. Para F=3.

Muchas gracias por su tiempo.
PD: Me puede contestar por privado por favor porque me da la impresión de que mañana 100 personas van a tener mi deber =/.


----------



## MrCarlos (Jun 18, 2012)

Hola rpmp707

Ya casi, ya casi.
Necesitas practicar con el Boole Deusto.
Nombra, dales un nombre, a las variables; tanto de entradas como salidas.
Analiza las imágenes que te adjunto en el archivo .ZIP.
Nota como las salidas tienen su nombre S0, hasta S3.

El Boole tiene un detalle:
La variable A la toma como la más significativa
La variable Z la toma como la menos significativa.
Esto es, la letra “más chica” la toma como la variable más alta.

saludos
a sus ordenes


----------



## rpmp707 (Jun 19, 2012)

Saludos MrCarlos.

Lo logré =D. Muchas gracias le adjunto unas imagenes para que vea.
Muchas gracias por todo, no hubiera podido hacerlo sin su ayuda y paciencia.

PD: Presento el deber y subo la simulación para que la persona que pueda necesitarla la use.


----------

