martes, 2 de octubre de 2012

¿Que tanto sabemos ?




SOLUCIONES:
1.   D             2. D             3. C             4. C              5. A    
6. D             7. A             8. D             9. A              10. B  

viernes, 28 de septiembre de 2012

Display de 7 segmentos en Hexadecimal con GAL22V10


Vamos a manejar un display de 7 segmentos, cátodo común, miniatura de referencia SM420561K para ser implementado en el protoboard.

El display dispone de 7 leds para los segmentos a, b, c, d, e, f, g tal como se muestra en la figura anterior.Además se dispone de un octavo led para el punto. La configuración de pines se indica también en la figura. Existen dos pines para el cátodo común que debe conectarse a GND (tierra).

El objetivo del presente proyecto es visualizar en el display los números del 0 al 9, y las letras A,B,C.D,E,F,
del sistema numérico  Hexadecimal.
El punto solo enciende con las letras.



En los almacenes especializados venden  cables  de colores, muy útiles para llevar un orden y no confundirnos al  conectar el display a los pines de la GAL:
Conectores rápidos Macho - Macho 12" x 10
Nosotros conectamos cada segmento con un cable de color específico tal como se muestra en el siguiente esquema, disponiendo de una resistencia de 220 ohmios, 1/4 watio, en serie con cada diodo led, para limitar  la corriente en cada led,  protegiendo la GAL y el Display:
Para programar la GAL trabajamos con el ISPlever de Lattice Semiconductor usando la opción ABEL_HDL:

Veamos el archivo creado en lenguaje ABEL:


MODULE D0F

TITLE 'display del 0 hasta la F'


Clock pin 1;"Se declara el pin 1 como la entrada del reloj

a,b,c,d,e,f,g,p pin 23,22,21,20,19,18,17,16 ISTYPE 'reg,buffer';"Se declaran los pines de salida modo registro (Flip-flops)


Equations

[a,b,c,d,e,f,g,p].CLK = Clock ;"Se indica que los 8 flip-flops trabajan con el mismo reloj


"NOTA: Los flip-flops,por defecto,inician con salida en nivel bajo (todos los segmentos apagados en display de cátodo común)


Truth_Table ([a,b,c,d,e,f,g,p] :> [a,b,c,d,e,f,g,p]) "Se señala la tabla de estado
             [0,0,0,0,0,0,0,0] :> [1,1,1,1,1,1,0,0]; "Al llegar el flanco de subida del reloj se visualiza el CERO
             [1,1,1,1,1,1,0,0] :> [0,1,1,0,0,0,0,0]; "Cambia del CERO al UNO 
             [0,1,1,0,0,0,0,0] :> [1,1,0,1,1,0,1,0]; "Cambia del UNO al DOS 
             [0,1,1,0,0,0,0,0] :> [1,1,1,1,0,0,1,0]; "Cambia del DOS al TRES 
             [1,1,1,1,0,0,1,0] :> [0,1,1,0,0,1,1,0]; "Cambia del TRES al CUATRO    
             [0,1,1,0,0,1,1,0] :> [1,0,1,1,0,1,1,0]; "Cambia del CUATRO al CINCO 
             [1,0,1,1,0,1,1,0] :> [0,0,1,1,1,1,1,0]; "Cambia del CINCO al SEIS
             [0,0,1,1,1,1,1,0] :> [1,1,1,0,0,0,0,0]; "Cambia del SEIS al SIETE
             [1,1,1,0,0,0,0,0] :> [1,1,1,1,1,1,1,0]; "Cambia del SIETE al OCHO
             [1,1,1,1,1,1,1,0] :> [1,1,1,0,0,1,1,0]; "Cambia del OCHO al NUEVE
             [1,1,1,0,0,1,1,0] :> [1,1,1,0,1,1,1,1]; "Cambia del NUEVE a la A (Mayúscula) y enciende el punto 
             [1,1,1,0,1,1,1,1] :> [0,0,1,1,1,1,1,1]; "Cambia de la A a la b (Minúscula) y enciende el punto 
             [0,0,1,1,1,1,1,1] :> [1,0,0,1,1,1,0,1]; "Cambia de la b a la C y sigue encendido el punto  
             [1,0,0,1,1,1,0,1] :> [0,1,1,1,1,0,1,1]; "Cambia de la C a la d y sigue encendido el punto
             [0,1,1,1,1,0,1,1] :> [1,0,0,1,1,1,1,1]; "Cambia de la d a la E y sigue encendido el punto 
             [1,0,0,1,1,1,1,1] :> [1,0,0,0,1,1,1,1]; "Cambia de la E a la F y sigue encendido el punto 
             [1,0,0,0,1,1,1,1] :> [1,1,1,1,1,1,0,0]; "Retorna de la F al CERO, apagándose el punto 

END

Compilamos, y efectuamos la simulación:

Creamos el CHIP REPORT y el archivo JEDEC para programar la GAL:










miércoles, 5 de septiembre de 2012

Lógica programable con GAL22V10


Los dispositivos lógicos programables PLD  como las PAL y GAL nos permiten disponer de chips personales,  que respondan  a nuestras necesidades específicas. Para su programación hay que crear un mapa de fusibles o archivo JEDEC.




Vamos a comenzar a trabajar la GAL22V10 programada a traves del sofware ISPLEVER de Lattice Semicoductor.
Para su programación utilizaremos el SUPERPRO Z
Lo invitamos a visitar la página http://es.wikipedia.org/wiki/L%C3%B3gica_programada  

jueves, 31 de mayo de 2012

Lógica digital combinatoria: Autoevaluación

     SOLUCIONES:

    
     PRIMERA PARTE:
       1. D         2. C          3. D            4. D          5.C              6.D          7.C        8. C         9.A           10.B
       

      SEGUNDA PARTE
a)      Por medio de Mapa de Karnaugh se obtiene la función minimizada: S =C’ A’ +  C B’   la cual se puede implementar con una compuerta OR  de 2  entradas, dos AND de 2 entradas, y 3 inversores.

b)      Se puede utilizar un decodificador de 4 entradas/4 salidas, como 74154. Recordemos que este integrado maneja su salidas negadas, es decir detecta por medio de un Cero lógico en la salida respectiva lo que se introduzca a la entrada. Basta entonces, conectar  las salidas   correspondientes al  2 ,4, 5,  8, 13  a las entradas de una NAND, para lograr la función solicitada.


c)       Con un multiplexor de 16 entradas/ 1 salida,  se conectan las entradas 2,4,5,8 y 13 a Vcc
       ( 1 lógico), y las demás a tierra ( 0 lógico). Al variar D,C,B,A en las entradas de selección del  
       multiplexor, la salida del multiplexor sólamente dará nivel alto en las entradas mencionadas.









miércoles, 23 de mayo de 2012

Contador de 3 bits con GAL22V10 y Chip de Sonido ISD1964

LABORATORIO FINAL:
Se trata de diseñar en ispLEVER e implementar en una GAL22V10  un contador sincrónico de 3 bits utilizando 3 flip-flops o biestables tipo T con visualización en un display de 7 segmentos, cátodo común, y que además con el chip de sonido ISD1964 se pronuncie en Español e Inglés el dígito del 0 al 7 que se muestre en el Display.

Información preliminar (tomada de Wikipedia):

Biestable T (Toggle)


Símbolo normalizado: Biestable T activo por flanco de subida.
Dispositivo de almacenamiento temporal de 2 estados (alto y bajo). El biestable T cambia de estado ("toggle" en inglés) cada vez que la entrada de sincronismo o de reloj se dispara mientras la entrada T está a nivel alto. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo.

TQQsiguiente
00




0
01




1
10




1
11




0


..................................................................................................................................................................
Diseño:
1) Se elabora una Tabla de Estados del contador así:

       ESTADO  PRESENTE      ESTADO SIGUIENTE
               Q2 Q1 Q0                         Q2 Q1 Q0
                0    0    0                            0    0    1
                0    0    1                            0    1    0
                0    1    0                            0    1    1
                0    1    1                            1    0    0
                1    0    0                            1    0    1
                1    0    1                            1    1    0
                1    1    0                            1    1    1
                1    1    1                            0    0    0

2) Luego, se agrega a la tabla anterior las 3 columnas correspondientes a las entradas de los flip-flops T con lo cual la tabla de estados cambia a una Tabla de Excitación:

     ESTADO  PRESENTE      ESTADO SIGUIENTE    ENTRADAS DE FLIP-FLOPS
               Q2 Q1 Q0                         Q2 Q1 Q0                       T(Q2) T(Q1) T(Q0)
                0    0    0                            0    0    1                              0        0         1
                0    0    1                            0    1    0                              0        1         1 
                0    1    0                            0    1    1                              0        0         1
                0    1    1                            1    0    0                              1        1         1
                1    0    0                            1    0    1                              0        0         1
                1    0    1                            1    1    0                              0        1         1
                1    1    0                            1    1    1                              0        0         1     
                1    1    1                            0    0    0                              1        1         1
   
3) Elaboramos ahora una tabla con Estado Presente y Entradas de Flip-flops:


  ESTADO  PRESENTE          ENTRADAS DE FLIP-FLOPS
               Q2 Q1 Q0                       T(Q2) T(Q1) T(Q0)
                0    0    0                             0        0         1
                0    0    1                             0        1         1 
                0    1    0                             0        0         1
                0    1    1                             1        1         1
                1    0    0                             0        0         1
                1    0    1                             0        1         1
                1    1    0                             0        0         1     
                1    1    1                             1        1         1

De esta tabla obtenemos las ecuaciones Booleanas de los Flip-Flops:
              T(Q2) = Q2' Q1 Q0  +  Q2 Q1 Q0 =  Q1 Q0 ( Q2' + Q2) = Q1 Q0
              T(Q1) = Q0
              T(Q0) = 1

4) Dibujamos en el Editor Esquemático de ispLEVER el circuito lógico del Contador de 3 bits:
Se solicita al lector simular el contador,  adicionar en el Editor Esquemático del ispLEVER el decodificador para los 7 segmentos del Display, simular el circuito final de la GAL, y estudiar como automatizar el proceso  para manejar el ISD1964 sin necesidad de activar manualmente el pulsador de reproducción del Chip de Sonido.


   






viernes, 18 de mayo de 2012

UNIDAD ARITMËTICO LÓGICA

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.
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 similar aritmético, que  por ejemplo, obtenga el complemento a uno (invierta los bits Ai y Bi), complemento a 2 (invierta los bits y le sume 1), sume Ai y Bi, reste Ai y Bi.


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.
Colocando en cascada 4 etapas como la anterior se puede elaborar una ALU de 4 bits, similar al 74181, el cual se puede simular en Altera:

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.




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