En lógica digital y computación , un contador es un dispositivo que almacena (y a veces muestra) la cantidad de veces que ocurrió un evento o proceso en particular, a menudo en relación con un reloj . El tipo más común es un circuito lógico digital secuencial con una línea de entrada llamada reloj y múltiples líneas de salida. Los valores en las líneas de salida representan un número en el sistema numérico binario o BCD . Cada pulso aplicado a la entrada del reloj incrementa o decrementa el número en el contador.
Un circuito contador suele estar formado por varios flip-flops conectados en cascada. Los contadores son un componente muy utilizado en circuitos digitales y se fabrican como circuitos integrados independientes y también se incorporan como partes de circuitos integrados más grandes.
Un contador electrónico es un circuito lógico secuencial que tiene una señal de entrada de reloj y un grupo de señales de salida que representan un valor de "conteo" entero. En cada flanco de reloj calificado, el circuito incrementará (o decrementará, dependiendo del diseño del circuito) los conteos. Cuando los conteos hayan alcanzado el final de la secuencia de conteo (conteos máximos cuando se incrementa; conteos cero cuando se decrementa), el siguiente reloj hará que los conteos se desborden o se desborden por debajo de su valor original, y la secuencia de conteo comenzará de nuevo. Internamente, los contadores usan flip-flops para representar los conteos actuales y para retener los conteos entre relojes. Dependiendo del tipo de contador, la salida puede ser una representación directa de los conteos (un número binario), o puede estar codificada. Algunos ejemplos de esto último incluyen contadores de anillo y contadores que emiten códigos Gray.
Muchos contadores proporcionan señales de entrada adicionales para facilitar el control dinámico de la secuencia de conteo, como:
Algunos contadores proporcionan una salida de conteo terminal que indica que el siguiente reloj provocará un desbordamiento o subdesbordamiento. Esto se utiliza habitualmente para implementar la conexión en cascada de contadores (combinando dos o más contadores para crear un único contador más grande) conectando la salida de conteo terminal de un contador a la entrada de habilitación del siguiente contador.
El módulo de un contador es el número de estados en su secuencia de conteo. El módulo máximo posible está determinado por el número de flip-flops. Por ejemplo, un contador de cuatro bits puede tener un módulo de hasta 16 (2^4).
Los contadores se clasifican generalmente como sincrónicos o asincrónicos. En los contadores sincrónicos, todos los flip-flops comparten un reloj común y cambian de estado al mismo tiempo. En los contadores asincrónicos, cada flip-flop tiene un reloj único y los estados de los flip-flops cambian en momentos diferentes.
Los contadores se clasifican de distintas maneras. Por ejemplo:
Los contadores se implementan de diversas maneras, incluso como circuitos integrados MSI y LSI dedicados , como contadores integrados dentro de ASIC , como contadores de propósito general y periféricos temporizadores en microcontroladores y como bloques IP en FPGA .
Un contador asincrónico (de ondulación) es una "cadena" de flip-flops de conmutación (T) en la que el flip-flop menos significativo (bit 0) es sincronizado por una señal externa (el reloj de entrada del contador), y todos los demás flip-flops son sincronizados por la salida del flip-flop menos significativo más cercano (por ejemplo, el bit 0 sincroniza el flip-flop de bit 1, el bit 1 sincroniza el flip-flop de bit 2, etc.). El primer flip-flop es sincronizado por flancos ascendentes; todos los demás flip-flops de la cadena son sincronizados por flancos descendentes de reloj. Cada flip-flop introduce un retardo desde el flanco de reloj hasta la conmutación de salida, lo que hace que los bits del contador cambien en diferentes momentos y produzcan un efecto de ondulación a medida que el reloj de entrada se propaga a través de la cadena. Cuando se implementan con flip-flops discretos, los contadores de ondulación se implementan comúnmente con flip-flops JK , con cada flip-flop configurado para alternar cuando se sincroniza (es decir, J y K están ambos conectados a lógica alta).
En el caso más simple, un contador de un bit consiste en un solo flip-flop. Este contador se incrementará (al alternar su salida) una vez por ciclo de reloj y contará de cero a uno antes de desbordarse (empezando de nuevo en cero). Cada estado de salida corresponde a dos ciclos de reloj; en consecuencia, la frecuencia de salida del flip-flop es exactamente la mitad de la frecuencia del reloj de entrada. Si esta salida se utiliza luego como señal de reloj para un segundo flip-flop, el par de flip-flops formará un contador de ondulación de dos bits con la siguiente secuencia de estados:
Se pueden agregar flip-flops adicionales a la cadena para formar contadores de cualquier tamaño de palabra arbitrario, con la frecuencia de salida de cada bit igual exactamente a la mitad de la frecuencia del bit más cercano, menos significativo.
Los contadores de rizado presentan estados de salida inestables mientras el reloj de entrada se propaga a través del circuito. La duración de esta inestabilidad (el tiempo de establecimiento de la salida) es proporcional al número de flip-flops. Esto hace que los contadores de rizado no sean adecuados para su uso en circuitos sincrónicos que requieren que el contador tenga un tiempo de establecimiento de salida rápido. Además, a menudo resulta poco práctico utilizar los bits de salida del contador de rizado como relojes para circuitos externos porque el efecto de rizado provoca un sesgo de sincronización entre los bits. Los contadores de rizado se utilizan comúnmente como contadores de propósito general y divisores de frecuencia de reloj en aplicaciones donde el conteo instantáneo y el sesgo de sincronización no son importantes.
En un contador síncrono, las entradas de reloj de los flip-flops están conectadas y el reloj común activa simultáneamente todos los flip-flops. En consecuencia, todos los flip-flops cambian de estado al mismo tiempo (en paralelo).
Por ejemplo, el circuito que se muestra a la derecha es un contador síncrono ascendente (conteo ascendente) de cuatro bits implementado con flip-flops JK. Cada bit de este contador puede alternar cuando todos los bits menos significativos están en un estado lógico alto. En el flanco ascendente del reloj, el bit 1 alterna si el bit 0 está en un estado lógico alto; el bit 2 alterna si los bits 0 y 1 están ambos en un estado alto; el bit 3 alterna si los bits 2, 1 y 0 están todos en un estado alto.
Un contador de décadas cuenta en dígitos decimales, en lugar de en binario. Un contador de décadas puede tener cada uno (es decir, puede contar en decimal codificado en binario , como lo hizo el circuito integrado 7490 ) u otras codificaciones binarias. Un contador de décadas es un contador binario diseñado para contar hasta 1001 (9 decimal). Un contador de cuatro etapas común se puede modificar fácilmente para convertirlo en un contador de décadas agregando una compuerta NAND como en el esquema de la derecha. Observe que FF2 y FF4 proporcionan las entradas a la compuerta NAND. Las salidas de la compuerta NAND están conectadas a la entrada CLR de cada uno de los FF. ". [1] Cuenta de 0 a 9 y luego se reinicia a cero. La salida del contador se puede poner a cero pulsando la línea de reinicio hacia abajo. Luego, el conteo aumenta en cada pulso de reloj hasta que llega a 1001 (9 decimal). Cuando aumenta a 1010 (10 decimal), ambas entradas de la compuerta NAND se vuelven altas. El resultado es que la salida NAND se vuelve baja y reinicia el contador a cero. D baja puede ser una señal CARRY OUT, que indica que ha habido un conteo de diez.
Un contador de anillo es un registro de desplazamiento circular que se inicia de manera que solo uno de sus flip-flops está en el estado uno, mientras que los demás están en sus estados cero.
Un contador en anillo es un registro de desplazamiento (una conexión en cascada de flip-flops ) con la salida del último conectado a la entrada del primero, es decir, en anillo. Normalmente, se hace circular un patrón formado por un único bit, de modo que el estado se repite cada n ciclos de reloj si se utilizan n flip-flops.
Un contador Johnson (o contador de anillo de cola conmutada , contador de anillo torcido , contador de anillo móvil o contador de Möbius ) es un contador de anillo modificado, donde la salida de la última etapa se invierte y se devuelve como entrada a la primera etapa. [2] [3] [4] El registro recorre cíclicamente una secuencia de patrones de bits, cuya longitud es igual al doble de la longitud del registro de desplazamiento, y continúa indefinidamente. Estos contadores encuentran aplicaciones especializadas similares al contador de décadas (nota: el contador de décadas 74x4017 es un contador Johnson), conversión digital a analógica, etc. Se pueden implementar fácilmente utilizando flip-flops de tipo D o JK.
En la teoría de la computabilidad , un contador se considera un tipo de memoria. Un contador almacena un único número natural (inicialmente cero ) y puede tener una longitud arbitraria. Un contador suele considerarse en conjunción con una máquina de estados finitos (FSM), que puede realizar las siguientes operaciones en el contador:
Las siguientes máquinas se enumeran en orden de potencia, siendo cada una estrictamente más potente que la que está debajo:
Para el primero y el último, no importa si el FSM es un autómata finito determinista o un autómata finito no determinista . Tienen el mismo poder. Los dos primeros y el último son niveles de la jerarquía de Chomsky .
La primera máquina, una FSM más dos contadores, es equivalente en potencia a una máquina de Turing . Véase el artículo sobre máquinas contadoras para una prueba.
Un contador web o contador de visitas es un programa informático que indica el número de visitantes o visitas que ha recibido una página web determinada . Una vez configurados, estos contadores se incrementarán en uno cada vez que se acceda a la página web en un navegador web .
El número se suele mostrar como una imagen digital en línea o en texto simple o en un contador físico, como un contador mecánico. Las imágenes se pueden presentar en una variedad de fuentes o estilos; el ejemplo clásico son las ruedas de un odómetro .
Los contadores web fueron populares a mediados y fines de la década de 1990 y principios de la década de 2000, y luego fueron reemplazados por medidas de tráfico web más detalladas y completas .
Muchos sistemas de automatización utilizan PC y portátiles para supervisar distintos parámetros de las máquinas y los datos de producción. Los contadores pueden contar parámetros como la cantidad de piezas producidas, el número de lote de producción y las mediciones de las cantidades de material utilizado.
Mucho antes de que la electrónica se volviera común, se utilizaban dispositivos mecánicos para contar eventos. Estos se conocen como contadores de conteo . Por lo general, consisten en una serie de discos montados en un eje, con los dígitos del cero al nueve marcados en su borde. El disco más a la derecha se mueve un incremento con cada evento. Cada disco, excepto el más a la izquierda, tiene una protuberancia que mueve el siguiente disco a la izquierda un incremento después de completar una revolución. Estos contadores se usaban como odómetros para bicicletas y automóviles y en grabadoras de cinta , dispensadores de combustible , en maquinaria de producción, así como en otra maquinaria. Uno de los mayores fabricantes fue la empresa Veeder-Root, y su nombre se usaba a menudo para este tipo de contador. [5]
Los contadores portátiles se utilizan principalmente para realizar el inventario y contar las personas que asisten a eventos.
Los contadores electromecánicos se utilizaron para acumular totales en máquinas tabuladoras que fueron pioneras en la industria del procesamiento de datos.