miércoles, 12 de octubre de 2011

Contadores Sincronos

El termino síncrono indica que los eventos poseen una relación temporal fija entre ellos, es decir, que ocurren en el mismo instante de tiempo. Esto indica que en un contador síncrono los Flip-Flops siempre comparten la misma señal de reloj.

Contador Síncrono Binario de 2 bits

Para obtener un contador síncrono, se debe usar 2 Flip-Flops J-K. Como todo el reloj es común, no importa si es flanco de subida o bajada en los Flip-Flops, pero todos los Flip-Flops deben ser iguales. Entonces se debe conectar la señal de reloj a todos los Flip-Flops. Las entradas J y K del Flip-Flop cuya salida en Q0, es decir, J0 y K0 deben ir conectados a Vcc, esto va a permitir que esta salida siempre bascula. Luego se conecta Q0 a las entradas J1 y K1. La siguiente figura muestra la implementación del contador y los oscilogramas que dan como resultado de su funcionamiento.

En los oscilogramas, se puede apreciar mismo comportamiento que el contador síncrono de 2 bits, sin embargo, esta implementación tiene una mejora radical. Todos los Flip-Flops actúan en el mismo instante de tiempo, esto indica que el retardo de propagación de un estado a otro siempre es el mismo sin importar el estado en que se encuentre.

Contador Síncrono Binario de 4 bits

Para obtener un contador síncrono de 4 bits, se debe usar 4 Flip-Flops J-K. La implementación es igual que la anterior, es decir que el Flip-Flop cuya salida es Q2 tiene en sus entradas J2 y K2 una AND entre Q0 y Q1. La siguiente figura muestra la implementación del contador y los oscilogramas que dan como resultado de su funcionamiento.

En los oscilogramas, se puede apreciar mismo comportamiento que el contador síncrono de 4 bits, sin embargo, esta implementación tiene una mejora radical. Todos los Flip-Flops actúan en el mismo instante de tiempo, esto indica que el retardo de propagación de un estado a otro siempre es el mismo sin importar el estado en que se encuentre.

Contador Sincrono Ascendente Descendente

Un contador síncrono ascendente descendente, es aquel capaz de contar en una secuencia determinada en cualquier dirección. Suponiendo un contador binario de 3 bits, si es solo ascendente este contaría desde 0 a 7. Si se tiene un contador ascendente descendente, este contador puede contar de 0 a 7 y de 7 a 0, controlando la dirección por una entrada adicional.

En un contador síncrono, las entradas de J y K de cada Flip-Flop, depende de las salidas Q de los Flip-Flops anteriores produciendo un conteo ascendente. Para generar un conteo descendente, Las entradas J y K de cada Flip-Flop, deben depender de las salidas Q negado de los Flip-Flops.

Para diseñar un contador ascendente descendente binario de 3 bits, se debe tener en cuenta la siguiente tabla de secuencia.

CLKA/DQ2Q1Q0
0000
0001
0010
0011
0100
0101
0110
0111
0000
1000
1111
1110
1101
1100
1011
1010
1001
1000
1111

En esta tabla se puede apreciar que si la cuenta es ascendente, el estado siguiente de 1112 es 0002. Si la cuenta es descendente el estado siguiente de 0002 es 1112.

Con base en los conceptos anteriores, la implementación del contador se presenta en la siguiente figura.

En el oscilograma se observa que mientras la entrada A/D se encuentra en 0, el contador cuenta de forma ascendente y mientras la entrada A/D se encuentra en 1, el contador cuenta de forma descendente.

Contador Sincrono Ascendente Descendente Automatico

Una aplicacion interesante de este contador, es obtener una secuencia ascendente / descendente automatica, es decir, sin usar una entrada A/D manual. En este caso, se desea hacer la secuencia 0 a 7 a 0. Entonces, el contador debe identificar cuando el estado es 0002 y 1112. Cuando el contador llega al valor 1112 debe asegurar un 1 en la entrada A/D y cuando llega al valor 0002 debe asegurar un 0 la entrada A/D.

La siguiente figura presenta una posible solucion

En esta solucion, se coloca una compuerta NAND que tendra valor 0 cuando la entrada sea 0002 y otra compuerta NAND que tendra el valor 0 cuando la entrada sea 1112. Las salidas de estas compuertas NAND son colocadas en un nuevo Flip-Flop JK cuyas entradas J y K siempre estan en cero. Entonces, la salida de la compuerta que detecta el 1112 se conecta a la entrada asincrona PRESET y la salida de la compuerta que detecta el 0002 se conecta a la entrada asincrona CLEAR.

Esta solucion aunque es efectiva no es muy adecuada ya que se contamina el contador sincrono con un comportamiento basado de señales asincronas. Sin embargo, diseñar una solucion completamente sincrona, puede generar problemas en la secuencia debido a los tiempos de propagacion que toma el Flip-Flop.

Diseño de Contadores Sincronos

Basado en el concepto de contador síncrono, es posible elaborar diseños para obtener una secuencia determinada. Esta secuencia, puede llegar a ser incluso un a secuencia aleatoria.

Para realizar el diseño del contador, es necesario seguir una serie de pasos. Para explicar el proceso de diseño, se plantea un contador de código Gray.

Paso 1 de diseño de contador: Tabla de Secuencia

Es necesario determinar la tabla de secuencia. La tabla de secuencia debe especificar en estricto orden los estados que tendrá el contador. Hay que tener en cuenta que el siguiente estado del último será siempre el primero. Es necesario también tener en cuenta que un estado tendrá únicamente un siguiente estado. La tabla de secuencia también determina el número de bits del contador y a su vez determina el número de Flip-Flops necesarios para el contador. Por cada bit en la tabla de secuencia, se requiere un Flip-Flop en la implementación del contador. Para el caso del contador de código Gray se usara 4 bits que implica usar 4 Flip-Flops. La tabla de secuencia del contador de código Gray es la siguiente:

CLKQ3Q2Q1Q0
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
Paso 2 de diseño de contador: Tablas de transición de estados del Flip-Flop

Para la implementación del contador, es necesario escoger un tipo de Flip-Flop. Generalmente se elige Flip-Flop J-K gracias a sus 4 posibles estados. La tabla de transición de estados del Flip-Flop, determina que valores se requieren en las entradas J y K para obtener una transición de estado actual a un estado futuro. Un estado actual hace referencia al valor de la salida Q del Flip-Flop un instante antes de efectuar un flanco de reloj. Un estado futuro hace referencia al valor de la salida Q del Flip-Flop un instante despues de efectuar un flanco de reloj. Entonces la tabla de transición de estados del Flip-Flop J-K es la siguiente:

Transiciones
de Salida
Entradas
QtQt+1JK
000X
011X
10X1
11X0

La tabla anterior expone los siguientes casos:

  • Si el Flip-Flop tiene un estado presente Qt=0 y se desea obtener un estado futuro Qt+1=0 entonces se le debe proveer al Flip-Flop un estado de no cambio o un estado de reset. Esto indica que se le debe proveer un J=0, K=0 o J=0, K=1. Esto indica que necesariamente J debe ser 0 y K puede ser 0 o 1. Entonces se enuncia como J=0 y K=X.
  • Si el Flip-Flop tiene un estado presente Qt=0 y se desea obtener un estado futuro Qt+1=1 entonces se le debe proveer al Flip-Flop un estado de set o un estado de basculación. Esto indica que se le debe proveer un J=1, K=0 o J=1, K=1. Esto indica que necesariamente J debe ser 1 y K puede ser 0 o 1. Entonces se enuncia como J=1 y K=X.
  • Si el Flip-Flop tiene un estado presente Qt=1 y se desea obtener un estado futuro Qt+1=0 entonces se le debe proveer al Flip-Flop un estado de reset o un estado de basculacion. Esto indica que se le debe proveer un J=0, K=1 o J=1, K=1. Esto indica que necesariamente K debe ser 1 y J puede ser 0 o 1. Entonces se enuncia como J=X y K=1.
  • Si el Flip-Flop tiene un estado presente Qt=1 y se desea obtener un estado futuro Qt+1=1 entonces se le debe proveer al Flip-Flop un estado de no cambio o un estado de set. Esto indica que se le debe proveer un J=0, K=0 o J=1, K=0. Esto indica que necesariamente K debe ser 0 y J puede ser 0 o 1. Entonces se enuncia como J=X y K=0.
Paso 3 de diseño de contador: Mapas de Karnaugh

Los mapas de Karnaugh se usan para determinar la lógica requerida para las entradas J y K de cada Flip-Flop del contador. Se debe utilizar un mapa de Karnaugh para la entrada J y un mapa de Karnaugh para la entrada K. Cada celda del mapa de Karnaugh representa un estado de la tabla de secuencia establecida para el diseño. En cada celda del mapa de Karnaugh, se coloca el valor que requiere el Flip-Flop para obtener estado siguiente necesario. Por ejemplo: el primer estado de la tabla de secuencia es 00002 y el estado siguiente es 00012, entonces si se desea diseñar la salida Q0, se debe hacer una mapa de Karnaugh para J0 y un mapa de Karnaugh para K0. Para el mapa de Karnaugh de J0, se debe colocar en la celda que corresponde al valor 00002, lo que necesita J en un Flip-Flop J-K para que el estado futuro sea 1, dado un estado presente 0. Revisando la tabla de transición de estado del Flip-Flop J-K, se puede observar que el valor necesario es 1, entonces en la celda 0000 del Flip-Flop se coloca un 1. Se llena el mapa de Karnaugh en todas sus celdas. Se obtiene los siguientes mapas:

Paso 4 de diseño de contador: Expresiones Booleanas

Una vez se ha construido los mapas de Karnaugh, se hace la simplificación para obtener las expresiones Booleanas para J y K de cada Flip-Flop.

Paso 5 de diseño de contador: Implementación

Se implementa el contador con base en las expresiones Booleanas obtenidas en el paso anterior. La implementación se presenta en la siguiente figura.

En la implementación anterior, se ha implementado los resultados de los mapas de Karnaugh para cada una de las entradas del Flip-Flop. Los oscilogramas muestra la secuencia descrita en la tabla de secuencia.

Paso 6 de diseño de contador: Pruebas

Se puede probar el funcionamiento del contador con los oscilogramas, sin embargo la lectura de estos puede llegar a ser compleja. En la practica la forma mas adecuada de revisar el comportamiento del contador es usando un conversor binario – BCD, un decodificador manejador y dos displays que van a permitir visualizar los diferentes valores desde 0 hasta 15 decimal.

Contadores en Cascada

Los contadores en cascada son una implementación que permite conectar varios contadores para generar una secuencia de conteo de varios dígitos. Los contadores con los que se construye un contador en cascada, generalmente son contadores modulo 10, sin embargo, pueden ser de modulo menor. Adicionalmente, en un contador en cascada puede intervenir contadores de diferentes módulos. Un ejemplo puede ser un reloj digital. Para implementar un reloj digital, se requeriría un contador modulo 10 para las unidades de segundos, un contador modulo 6 para las decenas de segundos, un contador modulo 10 para las unidades de minutos, un contador modulo 6 para las decenas de minutos y un contador modulo 12 para las horas.

Para implementar un contador en cascada, es necesario partir de contadores previamente implementados preferiblemente síncronos. Para ello se puede hacer uso de diferentes circuitos integrados como el 74LS190.

Por ejemplo, se puede implementar un contador modulo 100 ascendente / descendente con base en dos contadores modulo 10. Para ello, entonces se utilizaría el contador 74LS190. Este contador tiene una salida que es RC (Riple clock), la cual se coloca en 0, cuando el valor del contador es el mayor y su cuenta es ascendente o cuando el valor del contador es el menor y su cuenta es descendente.

Entonces se podría obtener la secuencia deseada conectando los relojes de los dos contadores a un oscilador y la salida RC del contador del digito de menor peso o unidades a la entrada CE (chip enable) del contador del digito de mayor peso o decenas.

La implementación se presenta en la siguiente figura.

17 comentarios:

  1. Orale que loco jajaja ya tengo con que entretenerm un ratoo, buena entradaaa gracias por la informacion es util poca pero util tnx

    ResponderEliminar
    Respuestas
    1. Pronto complementare la informacion con mas ejemplos y detalles.
      Gracias por su comentario

      Eliminar
  2. Hola disculpa me podrías ayudar en una practica de la escuela, es muy similar a lo que muestras en el vídeo solo que la secuencia es 2 3 0 1 2 0 y que se repita, espero me puedas ayudar te lo agradecería mucho. Saludos!

    ResponderEliminar
    Respuestas
    1. Hola Raul

      En un contador sincrono, con la técnica que estoy presentando, la secuencia no puede repetir números. Esto se debe a que el estado siguiente depende del estado presente. En el caso que plantea, esta repitiendo el 2 y el 0.

      Existe una posibilidad para diseñar un contador como usted necesita, pero entonces el estado siguiente, dependería del estado presente y del anterior. Por otro lado, la secuencia debería iniciar en cero, debido a que cuando se inicia la fuente, por defecto los Flip Flops inician en estado bajo o 0 lógico.

      Le sugiero que revise si esa es la secuencia que le interesa y en ese caso, puedo complementar la entrada con ese diseño.

      Eliminar
  3. Hola, me podrias ayudar con una cosa, a mi me piden diseñar un contador sincrono descendente de 6 a 1, y que comienze automaticamente en 6....si me ayudarias te lo agradeceria mucho, es para la escuela y necesito ayuda urgente. Tengo que dibujar el circuito segun lo que me pide y nose como comenzar. Gracias

    ResponderEliminar
    Respuestas
    1. Hola. Los flip-flops por defecto inician en 0. por lo cual un contador de 3 bits tendría que iniciar en 000. Sin embargo, es posible que inicie en 110 manipulando las entradas asíncronas. Puede intentar colocando la expresión (Q0' Q1' Q2')' en la entrada preset del los flip-flops de mayor peso. Es decir, colocar una NAND de tres entradas.

      Eliminar
  4. Look to the Gorgeous Karnaugh K-Maps minimization software at http://gorgeous-karnaugh.com/

    ResponderEliminar
    Respuestas
    1. Thank you so much.. I found it very interesting and useful.. However, I like to solve the maps manually.

      Eliminar
  5. Un contador ascendente con flip-flop JK quedaría así como lo has puesto hermano?. Agradecería tu respuesta!. Saludos

    ResponderEliminar
    Respuestas
    1. Correcto. La implementación de "Contador Síncrono Binario de 4 bits" es cuenta desde 0000 hasta 1111. Puede revisar el resultado en los oscilogramas.

      Eliminar
  6. Buenas noches necesito un contador sincrono con la secuencia 1,2,7,8,3,4,5,9,0,6 me podría ayudar con los mapas y las expresiones booleanas simplificadas muchas gracias!!!!

    ResponderEliminar
  7. Hola. Esta secuencia tiene un inconveniente. El contador siempre iniciara en 0, entonces es posible hacer la secuencia 0,6,1,2,7,8,3,4,5,9.
    Se puede iniciar en 1, sin embargo, necesita usar las entradas asíncronas.
    Yo le puedo ayudar revisando su diseño. Entonces, envieme (ej. via dropbox) su solución y le doy mis comentarios.

    ResponderEliminar
  8. Buenas tarde hector! , aca estuve leyendo los comentarios y creo que estoy en la misma situacion de uno de los que comentaron anteriormente, estoy con un contador sincronico, que va del 0 al 3 y luego al 0 de nuevo, osea
    0 1 2 3 2 1 0 .. veo que se repiten el 1 y el 2 .. debo usar FF tipo D .. aun ando buscando, pero me esta costando, tendras idea ?

    ResponderEliminar
    Respuestas
    1. Hola Jonathan.
      Tal como usted lo menciona, repetir valores en la secuencia es un problema.
      Una posible solución a este problema en particular, es utilizar un estado presente y un estado anterior para determinar el estado siguiente. Sin embargo, me temo que esta solución podría requerir el uso de registros y esa no seria una buena idea.
      Otra posible solución, podría ser basandose del contador sincrono ascendente/descendente explicado en esta publicación. En esta solución, hay una entrada (dipswitch) adicional que controla el sentido de la secuencia. Entonces, es posible detectar cuando el contador alcanza el 3 (11) y cuando alcanza el 0 (00). De esta forma, podría controlar el comportamiento a través de una entrada basada en las salidas de los flip-flops, en vez de una entrada manual (dipswitch). Sin embargo, esta solución requiere incluir un flip-flop adicional lo cual no me parece un problema mayor.
      Por otro lado usted desea construirlo usando flip-flop D. No entiendo la intension, ademas considero que es un problema innecesario de abordar. Note que para construir contadores ascendentes/descendentes, las entradas JK tienen el mismo valor, ya que se requiere el comportamiento de basculación. El flip-flop D solo le ofrece SET y RESET.
      Este problema me llama la atención, entonces voy a hacer una solución y complemento esta publicación.
      Saludos

      Eliminar
    2. Hola Jonathan.
      Puede por favor revisar la solución que he planteado y me da sus comentarios?
      Saludos

      Eliminar
  9. Les invito a consultar el siguiente libro: http://www.libreriadelau.com/catalog/product/view/id/243263/#.VEYCl76aH0R

    ResponderEliminar
  10. Podrian decirme las caracteristicas del contador Sincrono.!!!

    ResponderEliminar