martes, 20 de noviembre de 2012

Evaluemos nuestros conocimientos sobre Electrónica Digital Combinacional

Estimado lector: lo invitamos a desarrollar los tres ejercicios que le presentamos a continuación: 

Esperamos haya resuelto correctamente cada uno de los 3 ejercicios propuestos.  A continuación volvemos a cada uno de ellos con su respectiva solución:

miércoles, 14 de noviembre de 2012

Unidad Aritmético Lógica: Diseño completo de una ALU de 4 bits

La unidad aritmético lógica, también conocida como ALU(siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como  suma, resta,  etc.) y operaciones lógicas (OR, AND, XOR, etc), entre dos números binarios. Es parte fundamental de un microprocesador.

 Se recomienda consultar: http://es.wikipedia.org/wiki/Unidad_aritm%C3%A9tico_l%C3%B3gica

El método más simple y directo de diseñar un CIRCUITO LÖGICO de una ALU se muestra a continuación, tal como se plantea en el texto "Lógica Digital y diseño de Computadores" de Morris Mano para una etapa de 2 bits Ai y Bi.
EJERCICIO: Simular en ALTERA el Circuito Lógico indicado en la gráfica anterior.

El circuito debe repetirse n veces para un circuito lógico de n bits. Las cuatro compuertas generan las 4 operaciones lógicas OR, OR EXCLUSIVA, AND y NOT. Las 2 variables de selección en el Multiplexor seleccionan una de las 4 compuertas en la salida.

Al igual que el circuito lógico se puede diseñar un circuito  aritmético, en el cual además de las entradas Ai   y Bi debe tenerse en cuenta el acarreo de entrada Ci, y en su salida además de Fi, en este caso se agregaría  el acarreo  de salida Ci+1

Veamos la siguiente tabla de función para el circuito aritmético en una etapa:

S1       S0       Ci             Salida                              Descripción de la función realizada
0          0         0              Fi = Ai                               Transfiere Ai
0          0         1              Fi = Ai mas 1                     Incrementa Ai
0          1         0              Fi = Ai  mas Bi                   Suma Ai con Bi
0          1         1              Fi = Ai mas Bi mas 1          Suma Ai con Bi mas acarreo
1          0         0              Fi = Ai mas Bi´                   Suma Ai con el complemento de B
1          0         1              Fi = Ai mas Bi´ mas 1         Resta Ai menos Bi
1          1         0              Fi = Ai menos 1                  Decrementa Ai
1          1         1              Fi = Ai                                Transfiere Ai  

El diagrama para la unidad aritmética de una etapa es el siguiente:
El circuito lógico puede ser combinado en el circuito aritmético para producir una unidad lógica aritmética. Las variables de selección S1 y S0 pueden hacerse comunes a ambas secciones siempre y cuando se use una tercera variable de selección S2 para diferenciar entre los dos.

Las salidas de los circuitos lógicos y aritméticos de cada estado pasan por un multiplexor con la variable de
selección s2 . Cuando S2=0  se. selecciona la salida aritmética, pero cuando S2 = 1 se selecciona la salida lógica.

L
Al simular en Altera debemos obtener una sola caja tal como se muestra en la siguiente gráfica:
Luego se acoplan las 4 cajitas  para formar la ALU de 4 bits, tal como se muestra:
Se espera que el estimado lector  haya efectuado paso a paso la simulación de la ALU en Altera. Esto le permite una completa comprensión de este importante concepto de la Electrónica Digital.

En una forma similar a lo descrito, se ha diseñado una ALU comercial, el circuito integrado 74LS181, el cual estudiaremos a continuación, al simularlao en Altera. La mejor forma de estudiar un chip comercial antes de implementarlo en el protoboard es analizar su tabla de funcionamiento de acuerdo a su hoja de datos suministrada por el fabricante (Data Sheet)  y efectuar su simulación.
La ALU 74181 se puede trabajar con cualquiera de dos tablas de funcionamiento.Una tabla con los datos activos en nivel bajo y otra donde los datos son activos en nivel alto, tal como la que se muestra a continuación:


EJERCICIO: Simular en ALTERA el 74181 para verificar el comportamiento de las dos tablas.

domingo, 11 de noviembre de 2012

Restador binario :Análisis de casos


Se sugiere al lector imprimir para luego estudiar el artículo que se presenta como PDF en https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r65019.PDF 

Como repaso de los circuitos estudiados hasta el momento en el curso de Digitales 1 vale la pena consultar http://lc.fie.umich.mx/~jrincon/elec3-cap7.pdf

ESTUDIO DE CASOS:

Se desea implementar un RESTADOR BINARIO A-B.  A y B son números de 4 bits cada uno, dispuestos en Dip-Switch. El resultado de la resta se viasualiza con 5 Leds, cátodo común. Cuatro Leds indican el resultado de la resta y un quinto Led,SIGNO, enciende cuando la resta es negativa. El circuito se ha compilado en Altera y su simulación indica que funciona correctamente.  Explique detalladamente su funcionamiento.

CIRCUITO LÓGICO:

SIMULACIÓN:

jueves, 8 de noviembre de 2012

Diseño de sumador paralelo de 4 bits: 7483


Iniciamos con la suma de 2 números X,Y de 1 bit cada uno: 


Luego al tener en cuenta el acarreo de entrada tendremos una tabla de verdad más completa:
Con 2 Half Adder y una compuerta OR se puede obtener el circuito lógico de un Full Adder:
Con 1 half adder y 3 full adder se construye el sumador binario de 4 bits:
Ejercicio 1: Efectuar la simulación en Altera del sumador de 4 bits, a partir del half adder, siguiendo el proceso jerárquico en el diseño.
..........................................................................................................
El sumador 7483 dispone de 4 full adder:
Su circuito aparece en el data sheet, tal como se muestra:

Ejercicio 2: Efectuar la simulación en Altera del comportamiento del sumador 7483, llamando al sumador incorporado en librería.

miércoles, 7 de noviembre de 2012

Seleccionar el menor entre dos números dados: Laboratorio

LABORATORIO: Dados dos números X  y  Y  de  4 bits cada uno  que se presentan  en un Dip-Switch, en un display de 7 segmentos debe visualizarse en hexadecimal el MENOR de los dos números,  y simultáneamente debe oirse un mensaje asociado indicando cual es el número menor.  Si los números son iguales debe encenderse el PUNTO.


Solución:
Si deseamos aplicar la ley de dividir para vencer lo primero es lograr un esquema general mental de lo que requerimos para solucionar este proyecto propuesto.

Puede ser algo así:
El lector podrá apreciar que no le damos mucha importancia al DECODIFICADOR que permita a partir de las entradas M3 M2 M1 M0  mostrar en el display de 7 segmentos el caracter respectivo en Hexadecimal.
Se supone que con una GAL22V10 manejando la respectiva tabla de verdad en Isplever facilmente lo podemos lograr. O implementando el integrado TTL o CMOS  que realice esa función. 

Copiamos de Wikipedia un display en visualización hexadecimal:


Buscando encontramos un integrado CMOS que cumple con lo que necesitamos, cuyo datasheet se muestra:
Personalmente sólo lo utilizaría sino tuviese un programador para quemar la GAL. Desde luego siempre lo mas conveniente es la lógica programable que la lógica cableada. La Gal se deja reprogramar, el Chip habría    que guardarlo para cuando se volviese a requerir.

Volviendo al esquema que inicial presentamos observamos que lo fundamental es lograr seleccionar entre los  dos números X y Y el número menor. Lo del decodificador es cuestión secundaria que se efectúa al final.

¿ Cómo seleccionar el menor entre X y Y ?   En una entrada del blog el lector podrá estudiar el integrado 7485 que es un comparador de magnitud. Ese integrado si es indispensable comprarlo pués debido a la cantidad muy grande de sumandos en sus ecuaciones Booleanas es imposible implementarlo con la Gal22V10.

Con el 7485 se puede establecer entre X y Y cuando X es menor que Y. Lo mas recomendable es simularlo, por ejemplo en Altera para familiarizarnos con el integrado y saberlo manejar con propiedad antes de comprarlo. ¿ para qué compro algo si no lo se utilizar ? Esa es la importancia de la Simulación. Primero aprendo a manejar y después compro el carro. Parece que eso es lo mas inteligente, y no comprarlo y  estrellarlo aprendiendo a conducirlo.  Muchas veces los estudiantes queman los chips por no haberlos simulado previamente. Bueno, personalmente de estudiante a mi me pasaba lo mismo; en esos tiempos no había posibilidad de efectuar simulación. De algo debe servir la experiencia. Como decía mi abuela: "La experiencia no se improvisa y se aprende de ella"

Simulemos entonces el 7485 en Altera en modo gráfico:

Se hace necesario consultar el Data Sheet del 7485 para conocer como se conectan las entradas de cascada.


Compilamos el esquemático y simulamos:

Sabiendo como trabaja el 7485 lo compramos y lo implementamos en el protoboard.  Luego requerimos multiplexar entre los números X y Y el número menor.

El integrado mas apropiado es el 74157 que es un chip que trae incorporado 4 MUX de 2 entradas / 1 salida.

Con este integrado  con  Selector = 0  podemos  hacer que M3 M2 M1 M0 = X3 X2 X1 X0  y  con  Selector = 1 hacer que M3 M2 M1 M0 = Y3 Y2 Y1 Y0.

Ahora, si Selector = salida A > B (del comparador de magnitud 7485) entonces tendremos:
                             A =  X
                             B =  Y

Si  X > Y, entonces  salida A > B = 1, y se hacemos el selector del Mux igual a la salida A > B del 7485 entonces el MUX hace que su salida M3 M2 M1 M0 sea igual a Y3 Y2 Y1 Y0, lo cual es lo que se quiere.

Si X < Y, o,  si X = Y ,  la salida A>B = 0, y el MUX hace M3 M2 M1 M0 = X3 X2 X1 X0, lo que tambien se desea.

Lo recomendable es que pruebe a nivel de simulación con Altera que esto es cierto y luego monte en el protoboard el 7485 y el 74157 y verifique con 4 leds de prueba que en M3 M2 M1 M0  aparece el MENOR  de los números X3 X2 X1 X0    y   Y3 Y2 Y1 Y0.

Para la simulación en Altera elabore un nuevo archivo gráfico tal como se muestra y efectúe su compilación:


Verifique que las formas de onda son las correctas:
Muchas veces los estudiantes argumentan "que en el tablero y en el papel todo funciona, pero en la práctica real en el protoboard la situación es muy diferente"   Personalmente insisto que la simulación es muy importante. Las ideas de los grandes hombres primero se plasmaron en un diseño, en el papel, antes de concretarse en hechos reales.  Ojalá Leonardo Da Vinci, kepler, Galileo, Newton, Einstein y demás hubiesen podido trabajar en sus diseños con las herramientas que las Tecnologías de la Información y de la Comunicación en este momento nos ofrecen. Dentro de todas esas herramientas los programas de Simulación son algo estupendo, que verdaderamente ayuda. Son suministrados por los mismos fabricantes de los dispositivos: ALTERA, LATTICE SEMICONDUCTOR, etc.

Continuando con nuestro proyecto de laboratorio, ahora implemente en el protoboard lo que ha simulado y verifique su perfecto funcionamiento.

Con un quinto Led puede probar que cuando X = Y  enciende el punto del display de cátodo común 7 segmentos.

Veamos un esquema de lo que llevamos simulado y probado hasta el momento, faltando el decodificador para visualización hexadecimal en el display de 7 segmentos y el chip de sonido ISD1964.
Una vez que hasta acá todo funciona bien, ahora sí programe, simule e implemente la GAL22V10 con el decodificador para el display 7 segmentos con visualización en hexadecimal o utilice el chip CMOS que realiza esta función.

Lo último que debe implementar es el Chip de Sonido. Es obvio que M3 M2 M1 M0 o sea los 4 bits del número MENOR seleccionado deben estar puenteados a las entradas de dirección A3 A2 A1 A0 del ISD1964 para poder reproducir los mensajes que previamente en esas respectivas direcciones deben haber sido grabados dede la dirección binaria 0000 (0) hasta la dirección 1111 (15).

En resumen los pasos que se recomiendan  a seguir son los siguientes:

1.Simular en Altera el 7485 y luego  implementarlo en el protoboard  para  verificar su perfecto comportamiento con el  Dip Switch de 8 interruptores  y 3  leds de prueba colocados a las salidas A > B, A = B, A< B.
2.  Simular en Altera adicional al comparador de magnitud 7485 el 74157 para multiplexar el número menor entre X y Y. Verifique que hasta acá todo funciona bien con el Dip Switch y los  4 leds de prueba colocados a M3 M2 M1 M0.

 Utilice la salida (A=B) del 7485 para encender el PUNTO del display 7 segmentos. Verifíquelo en el protoboard con un quinto led de prueba.
3. Programe en Isplever con GAL22V10 el decodificador para manejar los 7 segmentos a,b,c,d,e,f,g en hexadecimal.  Implemente en el protoboard y verifique su perfecto comportamiento.

4..Implemente el Chip de sonido habiendo efectuado previamente la grabación de los 16 mensajes exigidos.

                                                                       ..........¡ E X I T O S !...........

lunes, 5 de noviembre de 2012

Comparador de magnitud de 4 bits: 7485 ¿Cómo se diseña ?

Vamos a estudiar como diseñar el comparador de magnitud 7485.

Los comparadores de magnitud son circuitos que comparan el valor binario de dos números, proporcionando información de cuál es mayor, menor, o si ambos son iguales.

Veamos para dos números A y B,de 1 bit cada uno, su tabla de verdad:

      A     B            Z(A mayor B)          Z(A igual B)             Z(A menor B)

      0       0                   0                          1                            0
      0       1                   0                          0                            1 
      1       0                   1                          0                            0
      1       1                   0                          1                            0

De  la tabla, se deducen las ecuaciones Booleanas para cada salida:
                            Z(A mayor B) = A B'
                            Z(A igual B) = A' B' +  A B =  A xnor B
                            Z(A menor B) = A' B
Si ahora, tuviésemos dos bits A1,A0 y B1,B0, sin necesidad de elaborar la tabla de verdad, por simple lógica, podemos obtener las ecuaciones Booleanas:
Z(A mayor B) = A1 B1' +  (A1 xnor B1) (A0 B0' ), lo cual lo podemos interpretar así: Para que A sea mayor que B, basta que A1 sea 1 y B1 0, pero si A1 y B1 son bits iguales, ambos ceros o ambos unos, A0 debe ser 1 y B0 debe ser 0.
Z(A igual B) =  (A1 xnor B1) (A0 xor B0 ),  lo cual lo podemos interpretar diciendo que A es igual a B, siempre y cuando A1 y B1 sean bits iguales (ambos ceros o ambos unos), y así mismo A0 y B0.
Z(A menor B) = A1' B1 +  (A1 xnor B1) (A0' B0 ), es decir para que A sea menor que B, basta que A1 sea 0 y B1 sea 1, pero si A1 y B1 son bits iguales, ambos ceros o ambos unos, A0 debe ser 0 y B0 debe ser 1.
Podemos finalmente extrapolar ideas y considerar cada número A y B de 4 bits cada uno,( A3 A2 A1 A0 ), y ,( B3 B2 B1 B0 ), y por lógica deducimos las tres ecuaciones Booleanas, así:

Z(A mayor B) = A3 B3' +  (A3 xnor B3) A2 B2' + (A3 xnor B3) (A2 xnor B2) A1 B1'
 + (A3 xnor B3) (A2 xnor B2) (A1 xnor B1) A0 B0'  

Z(A igual B) = (A3 xnor B3) (A2 xnor B2) (A1 xnor B1) (A0 xnor B0)

Z(A menor B) = A3'B3 +  (A3 xnor B3) A2' B2 + (A3 xnor B3) (A2 xnor B2) A1'B1 + (A3 xnor B3) (A2 xnor B2) (A1 xnor B1) A0'B0

Es interesante darnos cuenta como se obtienen las ecuaciones, sin necesidad de manejar mapas de Karnaugh para tablas de verdad muy grandes, sólo por simple lógica, elemento fundamental  en el diseño digital.

El circuito integrado 74LS85 es un comparador de magnitud de 4 bits, cuyo diseño fué efectuado con la técnica explicada. 
Este chip dispone adicionalmente de 3 entradas de cascada, lo cual permite poder expandirlo, para aumentar su capacidad; por ejemplo para elaborar comparadores de magnitud de 8 bits.