bitGateLab Digital · Aprende Abrir el simulador

Aprende › Tema 10

Contadores y registros de corrimiento: diseño paso a paso

Lectura de 7 min · Equipo bitGateLab

Un contador es un grupo de flip-flops que recorre una secuencia fija de estados con cada pulso de reloj; un registro es un grupo de flip-flops que guarda o desplaza una palabra binaria. Con ellos se miden tiempos, se dividen frecuencias, se convierten datos de serie a paralelo y se generan secuencias de control. Necesitas tener claros los flip-flops D, JK y T y sus tablas de excitación, que se explican en latches y flip-flops.

Contador asíncrono (de rizo)

La forma más sencilla de contar es encadenar flip-flops T con T = 1, de modo que cada uno conmute y divida la frecuencia entre 2. Solo el primero recibe el reloj del sistema; cada uno de los siguientes toma como reloj la salida del anterior. Con flip-flops disparados por flanco de bajada se conecta Q de una etapa al reloj de la siguiente y el contador cuenta hacia arriba; con flanco de subida hay que usar Q para contar hacia arriba (con Q contaría hacia abajo).

Su defecto es el retardo acumulado: la etapa n no cambia hasta que cambiaron todas las anteriores, como una onda que recorre la cadena. Durante ese tiempo la salida pasa por valores falsos.

Ejemplo: contador asíncrono de 4 bits con tCQ = 12 ns por flip-flop. Pasa de 0111 a 1000.

  1. Q0 cambia de 1 a 0 a los 12 ns: la salida se lee 0110.
  2. Q1 cambia a los 24 ns: 0100.
  3. Q2 cambia a los 36 ns: 0000.
  4. Q3 cambia a los 48 ns: 1000, el valor correcto.

Durante 48 ns la salida mostró 0110, 0100 y 0000. Si un circuito decodifica esos valores, verá pulsos falsos. Para leer siempre un valor estable el periodo del reloj debe superar 48 ns, es decir, f < 20.8 MHz.

Contador síncrono

En el contador síncrono todos los flip-flops reciben el mismo reloj, y la lógica decide quién conmuta. En un contador binario ascendente un bit conmuta cuando todos los bits menos significativos valen 1:

T0 = 1, T1 = Q0, T2 = Q0·Q1, T3 = Q0·Q1·Q2

Todas las salidas cambian juntas, tCQ después del flanco. El periodo mínimo ya no depende del número de bits por la cadena de flip-flops, sino de tCQ + retardo de la AND + tsu.

Contador módulo N

Un contador módulo N recorre N estados y vuelve a empezar. Necesita al menos ⌈log2 N⌉ flip-flops. Hay dos formas de hacerlo.

Con reset asíncrono: se toma un contador binario y se detecta el primer estado que no debe aparecer. Para módulo 10 ese estado es 1010; basta con una NAND de Q3 y Q1 conectada al clear activo en bajo, porque es la primera vez que Q3 y Q1 valen 1 a la vez. Funciona, pero el estado 1010 aparece durante unos nanosegundos y genera un pulso corto en las salidas.

Diseño síncrono: se escribe la tabla de estados y se calculan las entradas con la tabla de excitación. No hay estados transitorios.

Ejemplo: contador síncrono módulo 6 (0 a 5) con flip-flops T. Estados Q2 Q1 Q0; los estados 110 y 111 no se usan y valen X.

Q2 Q1 Q0SiguienteT2T1T0
000001001
001010011
010011001
011100111
100101001
101000101

Cada T vale 1 cuando el bit cambia. Simplificando con las X:

  • T0 = 1.
  • T1 = Q2·Q0 (cubre 001 y 011; en 101 vale 0 porque Q2 = 1).
  • T2 = Q1·Q0 + Q2·Q0 = Q0·(Q1 + Q2).

Revisa los estados sin usar: desde 110, T2 = 0, T1 = 0, T0 = 1, el contador va a 111; desde 111, T2 = 1, T1 = 0, T0 = 1, va a 010. Ambos regresan a la secuencia: el contador arranca solo aunque encienda en un estado inválido.

Registros de corrimiento

Un registro de corrimiento son flip-flops D en cadena: la salida de cada uno alimenta la entrada del siguiente y, con cada flanco, todos los bits avanzan una posición. Según cómo entran y salen los datos se clasifican así:

Ejemplo: registro SIPO de 4 bits, inicialmente en 0000, con Q0 ← entrada, Q1 ← Q0, Q2 ← Q1, Q3 ← Q2. Se envían los bits 1, 0, 1, 1 en ese orden.

FlancoBit de entradaQ0 Q1 Q2 Q3
111 0 0 0
200 1 0 0
311 0 1 0
411 1 0 1

Después de 4 flancos, leído como Q3 Q2 Q1 Q0, el registro contiene 1011: el primer bit enviado quedó en Q3.

Contador en anillo y contador Johnson

Si la salida del último flip-flop de un registro de corrimiento se conecta a la entrada del primero, se obtiene un contador en anillo. Se inicializa con un solo 1 (por ejemplo 1000) y ese 1 circula: 1000, 0100, 0010, 0001, 1000. Con n flip-flops tiene n estados y cada estado ya viene decodificado, porque solo una salida está en 1. Hay que garantizar la carga inicial; si arranca en 0000 se queda ahí para siempre.

Si en lugar de Q se realimenta Q del último flip-flop, se obtiene el contador Johnson (o de anillo torcido), con 2n estados. Para 4 bits (Q0 Q1 Q2 Q3, con Q0 ← Q3):

0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000

Cada estado se distingue con una AND de solo dos entradas, mirando dónde está la frontera entre unos y ceros: por ejemplo 1100 es el único con Q1 = 1 y Q2 = 0, y 0000 es el único con Q0 = 0 y Q3 = 0.

Para 4 flip-flops: un contador binario usa los 16 estados, un Johnson usa 8 y un anillo usa 4. Los estados sobrantes del Johnson (8) y del anillo (12) deben corregirse con lógica adicional si el circuito puede arrancar en ellos.

Errores comunes

Pruébalo en el simulador

Comparar un contador asíncrono con uno síncrono en el cronograma es la mejor forma de ver el efecto de rizo.

  1. Coloca cuatro flip-flops T con T = 1, conecta el reloj al primero y encadena los demás como contador asíncrono.
  2. Conecta las cuatro salidas a indicadores y a un display o a una barra de LEDs.
  3. Arma junto a él el contador síncrono con T1 = Q0, T2 = Q0·Q1 y T3 = Q0·Q1·Q2, todos con el mismo reloj.
  4. Abre el cronograma, deja correr el reloj y observa la transición de 0111 a 1000 en ambos.
  5. Arma un registro de cuatro flip-flops D en cadena, cambia la entrada serie antes de cada flanco y observa cómo avanzan los bits; después realimenta Q de la última etapa a la primera y verifica los 8 estados del Johnson.

Ejercicios

  1. ¿Cuántos flip-flops necesitas para un contador módulo 12 binario, en anillo y Johnson?
    Respuesta

    Binario: 4 (24 = 16 ≥ 12). Anillo: 12. Johnson: 6 (2 × 6 = 12).

  2. ¿Qué compuerta y qué salidas usarías para hacer un contador módulo 12 con reset asíncrono activo en bajo a partir de un contador binario de 4 bits?
    Respuesta

    12 = 1100. Una NAND de Q3 y Q2 conectada al clear, porque es la primera vez que ambos valen 1.

  3. Un contador asíncrono de 8 bits usa flip-flops con tCQ = 10 ns. ¿Cuál es el peor tiempo de asentamiento?
    Respuesta

    8 × 10 = 80 ns, por ejemplo al pasar de 01111111 a 10000000.

  4. ¿Qué AND de dos entradas decodifica el estado 0111 del contador Johnson de 4 bits?
    Respuesta

    Q0·Q1: es el único estado con Q0 = 0 y Q1 = 1.