miércoles, 3 de octubre de 2012

Contador decodificado : Laboratorio.

Un decodificador, o  DECODER ( en inglés), como su nombre lo indica, descifra un "código". Analice el gráfico siguiente que presenta claramente la idea:
Como laboratorio, vamos a utilizar 2 GAL 22V10 para implementar un contador de anillo de 16 bits.

Utilizando un 555 como reloj, en una GAL1  implementamos un contador binario ascendente  de 4 bits, que cuente del 0 al 15 (desde 0000 hasta  1111 en binario), y aprovechando su versatilidad obtenemos las salidas Y0,Y1,Y2,Y3,Y4 y Y5, del decodificador.

Con la GAL2  elaboramos la otra parte del decodificador de 4 entradas, o sea las 10 salidas restantes (Desde Y6  hasta Y15).


Observe que las salidas Q3,Q2,Q1 y Q0 del contador de 4 bits, van conectados a los pines 4,6,8,y 10, de ambas GAL (Las entradas D,C,B y A del decodificador).

Para trabajar con el Isplever de Lattice Semiconductor para la GAL1  primero elabore el contador de 4 bits mediante tabla de estados manejando los flip-flops Q3,Q2,Q1 y Q0 como salidas modo registro,buffer:  ISTYPE 'reg,buffer'. Compile y elabore el archivo en ABEL-HDL, y genere el respectivo símbolo esquemático (una cajita con su entrada de reloj (Clock) y  sus 4 salidas:Q3,Q2,Q1 y Q0).  No es conveniente desde ya efectuar los enlaces (link) para crear el mapa de fusibles, sino que este paso lo dejamos para el final, cuando ya esté terminada la GAL con su contador y sus salidas del decodificador Y0,Y1,Y2,Y3,Y4 y Y5.   Para agregar al contador la parte del decodificador desde Y0 hasta Y5, elabore en la misma GAL22V10 ahora una tabla de verdad con entradas D,C,B,A y salidas Y0,Y1,Y2,Y3,Y4,Y5, salidas combinatorias: ISTYPE 'com,buffer'. Recuerde que el Isplever entiende el símbolo :> para la tabla de estado y  ->  para la tabla de verdad, aunque se denomina igual:  Truth_table. Genere el símbolo esquemático para el decodificador parcial Y0...Y5, y  luego cree un nuevo archivo esquemático final, donde se llaman los símbolos (cajitas) tanto del CONTADOR como del DECODER, para que les coloque las entradas : Clock, D,C,B,A  y las salidas: Q3,Q2,Q1,Q0,Y0,Y1;Y2,Y3,Y4,Y5. y compile este archivo final.
Ahora si se efectuan los enlaces (Link) y se indaga por la capacidad de la GAL para implementar lo requerido (Fit), para crear, ahora sí, el mapa de fusibles y el Chip Report, donde se presenta la configuración de pines definitiva. Desde luego que lo mas importante de todo es el archivo JEDEC (mapa de fusibles) de la GAL1, pues es el que nos exige el superpro Z para poder programar la GAL.

 Si se pretende cablear, en el archivo esquemático final, las salidas del contador Q3,Q2,Q1,Q0 con las entradas D,C,B,A, para no hacerlo manualmente en el protoboard, es probable que al compilar el esquemático se genere error al efectuar la opción FIT y no nos pueda crear el mapa de fusibles.Ello es debido a la imposibilidad de la GAL, de acuerdo a su arquitectura, para llevar las salidas del contador a la entradas del decodificador.  Para conocer estos detalles, es muy conveniente estudiar la arquitectura de la GAL ( está muy bien explicado en los capítulos 7 y 11 del libro de Digitales, Thomas Floyd, 7a.Edición).


Para la GAL2, es mucho mas sencillo el procedimiento, pues solo se requiere elaborar la tabla de verdad del decodificador con entradas: D,C,B,A y en este caso las 10  salidas combinatorias Y6,Y7,Y8,Y9,Y10,Y11,Y12,Y13,Y14,Y15.   Desde luego que hay que cablear en el protoboard D,C,B,A  a las salidas del contador Q,Q2,Q1,Q0 de la primera GAL.


Sería preferible, por consumo de corriente, que los veinte leds ( 4 del contador  y  16 del decodificador) estén en ánodo común y no en cátodo común, o sea que los leds en lugar de encender con los UNOS se encendieran con los CEROS lógicos.   


Muchas veces se requiere manejar buffer three-state ( tres estados) no inversores con el fin de amplificar corriente sin variar los niveles lógicos. 

El buffer de 3 estados se llama así porque al trabajar como un switch o interruptor a la salida además del CERO y UNO lógicos se puede tener un tercer estado de ALTA IMPEDANCIA (circuito abierto) dependiendo de una entrada de habilitación llamada ENABLE.


En el dibujo vemos que si B (Enable) vale un UNO lógico, el buffer se comporta como una compuerta YES, cumpliendo con su función amplificadora de corriente, pero si B = 0, la salida es ALTA IMPEDANCIA comportándose como un circuito abierto.

El buffer puede tener su entrada de control o Enable activo con nivel bajo tal como se observa en la siguiente gráfica:


En este caso, cuando el ENABLE = 0, el buffer se comporta como interruptor cerrado (compuerta YES), y cuando el ENABLE = 1, el buffer se comporta como interruptor abierto ( ALTA IMPEDANCIA).

A nivel comercial existen varias referencias de buffer no inversores de 3 estados, como el chip 74LS125: 


El  74LS244 ( 8 buffer con Smith Trigger incorporado para arreglar la forma de onda) se muestra a continuación:

Observe que el pin 1 dispone del ENABLE en nivel bajo para manejar 4 buffer, y el pin 19 maneja los otros cuatro buffer.

Para el laboratorio presente del contador decodificado es conveniente colocar buffer a las salidas del contador Q3,Q2,Q1,Q0 para manejar las entradas del decodificador D,C,B,A tanto de la GAL1 como de la GAL2, para amplificar corriente, y el contador no se bloquee o se altere en su secuencia, por problemas de carga.

Se recomienda, además,  para las salidas del decodificador, utilizar dos barras de 8 leds cada una, similares a la mostrada en la siguiente gráfica:
Para las salidas del contador utilizar otra barra de 4 leds:
                                                            
Con dos barras de Leds de 10 pines cada una, se tendría el número preciso de Leds requeridos.

Estas barras se pueden montar con facilidad en el protoboard y los leds consumen mínima corriente, y no causan problema por carga en la GAL. Desde luego lo recomendable es siempre usar para cada led su respectiva resistencia ( 220 ohmios, 1/4 watio). Para nuestro caso requerimos 20 resistencias.

Recuerde además que el 555 está trabajando en la primera Gal como Astable (generador de pulsos):


La frecuencia se calcula por la fórmula:  f (clk) = 1,44 / ( R1 + 2 R2). C

En caso de que el lector desease utilizar lógica cableada en lugar de la programación de las GAL, debe usar un contador comercial de 4 bits, por ejemplo, el 74LS93  y decodificarlo con un 74LS154.

El  74LS93 es un contador asíncrono implementado con 4 flip-flops J-K. 

Se puede trabajar con 3 o 4 bits, por ello dispone de 2 entradas de reloj CP1 y CP0.  Para trabajarlo con 4 bits que es nuestro caso, se conecta Q0 a CP1  y se introduce la señal astable del 555 por la entrada CP0.   MR1 y MR2 deben estar a tierra.
En lugar de CP1 y CP0 las entradas de reloj se pueden llamar CKB y CKA,  y en lugar de MR1 y MR2 las entradas para resetear el contador se denominan R0(1) y R0(2), tal como lo muestra el Data Sheet de un fabricante del integrado.Asi mismo las salidas del contador se llaman QD,QC,QB,QA en lugar de Q3,Q2,Q1,Q0, donde Q3=QD es el bit más significativo y Q0=QA corresponde al bit menos significativo.

El  74LS154 decodifica   QD,QC,QB,QA a 16 salidas activas en nivel bajo.

El 74LS154 ( de 24 pines)  dispone  de 4 entradas y 16  salidas, y   obedece la siguiente tabla de verdad:

 

74LS154 (74154) Pinout
Las salidas QD,QC,QB,QA del contador deben estar puenteadas con las entradas D,C,B,A del decodificador.



  

  









No hay comentarios:

Publicar un comentario