Un contador es un circuito secuencial que pasa por una secuencia prescrita de estados. La secuencia puede seguir un conteo binario o cualquier otra secuencia de estados.
Los contadores se encuentran en casi todo sistema digital. Se utiliza para contar el numero de ocurrencias de un evento o para generar secuencias de temporizado para controlar operaciones en un sistema digital.
De las diversas secuencias que puede seguir un contador, la secuencia binaria directa es la mas simple y la mas directa. Un contador que sigue la secuencia binaria se denomina contador binario n bits, consta de n flip-flops y puede contar en binario desde 0 hasta 2n-1.
Un contador con n flip-flops no necesariamente debe contar 2n números. Puede truncarse la secuencia para contar un numero menor de estados. Por ejemplo un contador BCD (contador del 0 al 9) cuenta la secuencia binaria desde 0000 hasta 1001 y regresa a 0000 para repetir la secuencia. Otros contadores pueden seguir una secuencia arbitraria que es posible no sea la secuencia binaria directa. En cualquier caso, el procedimiento de diseño será el mismo.
Existe una clasificación básica de los contadores, que los divide en asíncronos y síncronos, en función de si la señal de reloj dispara simultáneamente a todos los flip-flops (síncrono) o no (asíncrono). Además, los contadores pueden clasificarse atendiendo al tipo de secuencia que generan o al número de estados por el que pasan (módulo).
Contadores Asincronos
En los sistemas asíncronos los FF no están conectados al mismo reloj, por lo que no cambian simultáneamente. La señal de reloj sólo ataca al flip-flop que representa al bit menos significativo. Los otros FF se conectan en cascada sirviendo su salida de reloj para el siguiente, hasta llegar al bit mas significativo.
Contador binario ascendente tipo ripple
En la figura se muestra un contador asincrono de 2 bits.
Está constituido con dos flip flop J K con ambas entradas conectadas a 1, por lo que cambiarán de estado en el flanco de bajada de su entrada de reloj. El reloj externo se conecta solamente a la entrada de reloj del primer flip flop (FF0). Este cambiará de estado en cada flanco de bajada del reloj. El siguiente flip flop(FF1), tiene como entrada de reloj la salida de FF0 por lo que cambiará de estado cada vez que la salida Q0 cambie de 1 a 0. Debido a que cada flip flop responde con cierto retardo, los flip flop no son disparados simultáneamente, por lo que operan de forma asincrona. De hecho, la salida Q0 se producirá un tiempo después de que baje el reloj, y como esta es la entrada de reloj de FF1, la salida Q1 se producirá un tiempo después de que Q0 cambie de 1 a 0. De esta forma el retardo se irá propagando a medida que se vayan agregando flip flops, como las olas en el agua, de aquí que estos contadores se denominan tipo "ripple"
Note que por simplicidad, en el diagrama de tiempo no se toma en cuenta este retardo, y se muestra como si las transiciones ocurrieran simultáneamente.

Usualmente todas las entrada de CELAR se conectan juntas, de manera que un pulso pueda poner todos los FF en cero antes de comenzar la cuenta.
Como se mostró anteriormente este contador de 2 bit tipo ripple pasa por 4 estados diferentes, dependiendo del valor de la cuenta (00,01,10,11). De igual forma, un contador con n flip flops, pasará por 2n estados diferentes. El numero de estados diferentes por lo que pasa un contador se denomina modulo. El contador de 2 bits se denomina entonces contador modulo 4.
Un contador mod-n (modulo n) puede denominarse también contador divisor por n (divide-by-n counter) . Esto porqué el FF correspondiente al bit mas significativo ( el mas lejos desde el que está conectado al pulso de reloj original) produce un pulso de reloj por cada n pulsos del reloj de entrada del FF correspondiente al bit menos significativo ( el FF disparado por el reloj principal). El contador mod-4 analizado anteriormente puede llamarse también contador divisor por 4 (divide-by-4 counter). El siguiente es un contador asincrono de 3 bits. Trabaja exactamente como el de dos bits, solo que ahora, debido al tercer FF se contarán 8 estados.

Contador Ascendente BCD asincrono
Los contadores analizados anteriormente cuentan 2n estados diferentes, donde n es el numero de FF. Realmente con n flip flop se puede tener en la secuencia HASTA 2n estados diferentes, por lo que podríamos contar un menor numero de estados y tendríamos una secuencia truncada. Esto se hace forzando a reciclar los FF antes de que pase por todos sus estados normales. Un ejemplo común se tiene con un contador de década. Si quisiéramos realizar un contador modulo 10 (de 0 a 9) se necesitarían 4 flip flops. Con 4 FF de la forma indicada anteriormente podríamos contar hasta 16 estados diferentes (de 0 a 15), por lo que al llegar a 9 si queremos volver a 0 lo que hacemos es poner en cero todos los FF utilizando las entradas de CLEAR. Para hacer esto necesitamos decodificar el estado de numeración siguiente al mas alto con un circuito combinatorio adicional que haga que los FF, en lugar de mostrar un 10 (1010) muestren un cero (0000) haciendo un CLEAR en todos los FF. Esto se hace con la compuerta NAND que se muestra en el circuito. Se utiliza una compuerta NAND porque la entrada de CLEAR está negada. Esto quiere decir que los FF se resetean con un cero.
El siguiente es un contador de década, contador de 0 a 9 o contador BCD:

Debe ser evidente la manera de obtener la función del circuito que resetea a cero.
CONTADORES SINCRONOS
Contadores síncronos
En los contadores síncronos las entradas de reloj de todos los flip flops se conectan juntas a un reloj común. De esta manera todos los FF cambian de estado simultáneamente (en paralelo). El circuito a continuación muestra un contador sincrono de 3 bits. Analice el diagrama de tiempo para comprender el funcionamiento del contador y verifique que todos los FF cambian simultáneamente.

Contador Ascendente BCD sincrono
De forma similar al contador asincrono de decadas, un contador sincrono de décadas cuenta del 0 al nueve, por lo que de nuevo se tiene una secuencia truncada, la cual puede implantarse con el siguiente circuito.

La diferencia está que debido a que el contador es sincrono, los cambios deben ejecutarse simultáneamente en todos los FF en función del reloj principal, común a todos ellos. Esta vez para forzar el paso de 9 a 0 (y no 10) y recomenzar la cuenta, no se utilizan las entradas de CLEAR, que como se mencionó en la guía de Flip Flops, son entradas asíncronas. En cambio se utilizan compuertas que fuerzan el cambio en forma sincrona. La manera de diseñar este tipo de circuitos se estudiar en la guía correspondiente al diseño de contadores.