You are on page 1of 15

Contadores

Contadores Sncronos

En la imagen anterior podemos observar la base de un contador sncrono, en el cual


tenemos los siguientes elementos:

4 flip-flops J-K, los cuales reciben el nombre de FF0, FF1, FF2 y FF3, los cuales tienen
las se distribuyen de la siguiente forma: el FF0 tiene tanto sus entradas J como K
con un pulso positivo constante y una entrada con pulso de reloj o clock, los otros
3 flip-flop presentan en sus entradas J y K una conjuncin (AND) de las salidas
(Q) del flip-flop anterior y antes del anterior.

Vcc: esto representa un impulso positivo o de nivel alto constante.

Clock: representa un pulso de reloj. Lo cual corresponde a un impulso con el


siguiente patrn ALTO, BAJO, ALTO, BAJO.

Vale la pena mencionar que este contador va a ir de 0 a 15, ya que si realizamos


la operacin 2^4 = 16. Por lo que el contador va a tener 16 combinaciones distintas. Si
fuera necesario interrumpir el funcionamiento o como yo llamo resetearlo (que vuelva
a iniciar), para ello los flip-flop tienen las entradas inferiores. Si no saben cmo hacerlo
comenten y les ayudo.
Contadores Asncronos

Este contador es un tanto ms sencillo que el sncrono, ya que este no presenta las
operaciones con las salidas del flip-flop, este nicamente consiste de lo siguiente:

4 flip-flops: al igual que el sncrono, solo que este en las entradas de sus ltimos 3
Flip-Flops est compuesto por los impulsos positivos constantes (J y k) y la
entrada de reloj en este caso tiene el valor de la salida Q del FF anterior.

Vcc

Clock

Al igual que el anterior, al tener 4 flip-flops va a ir de 0 a 15.

Contador en Anillo

El contador en anillo es un registro de desplazamiento que tiene su salida conectada a


la entrada. Normalmente se implementa con flip-flops con entradas de PRESET y CLEAR,
conectados en cascada y disparados de forma sncrona. Por lo tanto, un contador en
anillo es un contador sncrono. La figura muestra un contador en anillo de 4 bits.
En contador en anillo funciona pasndose de flip-flop a flip-flop un nico bit. Esto quiere
decir que, en cualquier instante del proceso de conteo, slo un flip-flop tiene su
salida Q=1. Esto provoca que el contador en anillo sea el contador ms fcil de
decodificar. De hecho, sabiendo que el flip-flop est a uno, conocemos en que estado
se encuentra el contador. La tabla presenta los estados por los que pasa nuestro
contador de 4 bits, una vez inicializado.

Pulso Q3 Q2 Q1 Q0

0 0 0 0 1

1 0 0 1 0

2 0 1 0 0

3 1 0 0 0

El principal inconveniente del contador en anillo es que para procesar n estados


necesita n flip-flops. Sin embargo, no necesita lgica aadida, ni para construir el
siguiente estado, ni para decodificar el estado. Debido a esto ltimo, el contador en
anillo es (junto con el contador Johnson) el ms rpido que podemos construir,
presentando una frecuencia mxima de funcionamiento.

Contadores Ascendentes y Descendentes

Un contador sncrono ascendente descendente, es aquel capaz de contar en una


secuencia determinada en cualquier direccin. Suponiendo un contador binario de 3
bits, si es solo ascendente este contara 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 direccin
por una entrada adicional.

En un contador sncrono, 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 disear un contador ascendente descendente binario de 3 bits, se debe tener en


cuenta la siguiente tabla de secuencia.

CLK A/D Q2 Q1 Q0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
0 0 0 0
1 0 0 0
1 1 1 1
1 1 1 0
1 1 0 1
1 1 0 0
1 0 1 1
1 0 1 0
1 0 0 1
1 0 0 0
1 1 1 1

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 implementacin 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 Sncrono Ascendente Descendente Automtico

Una aplicacin interesante de este contador, es obtener una secuencia ascendente /


descendente automtica, 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 solucin.

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

Esta solucin, aunque es efectiva no es muy adecuada ya que se contamina el contador


sncrono con un comportamiento basado de seales asncronas. Sin embargo, disear
una solucin completamente sncrona, puede generar problemas en la secuencia debido
a los tiempos de propagacin que toma el Flip-Flop.
Diseo de Contadores

Basado en el concepto de contador sncrono, es posible elaborar diseos para obtener


una secuencia determinada. Esta secuencia, puede llegar a ser incluso una secuencia
aleatoria.

Para realizar el diseo del contador, es necesario seguir una serie de pasos. Para explicar
el proceso de diseo, se plantea un contador de cdigo Gray.

Paso 1 de diseo 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 tambin tener en
cuenta que un estado tendr nicamente un siguiente estado. La tabla de secuencia
tambin determina el nmero de bits del contador y a su vez determina el nmero de
Flip-Flops necesarios para el contador. Por cada bit en la tabla de secuencia, se requiere
un Flip-Flop en la implementacin del contador. Para el caso del contador de cdigo
Gray se usar 4 bits que implica usar 4 Flip-Flops. La tabla de secuencia del contador de
cdigo Gray es la siguiente:

CLK Q3 Q2 Q1 Q0
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 1 1
0 1 0 1
0 1 0 0
1 1 0 0
1 1 0 1
1 1 1 1
1 1 1 0
1 0 1 0
1 0 1 1
1 0 0 1
1 0 0 0
Paso 2 de diseo de contador: Tablas de transicin de estados del Flip-Flop

Para la implementacin 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
transicin de estados del Flip-Flop, determina que valores se requieren en las entradas
J y K para obtener una transicin 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 transicin de
estados del Flip-Flop J-K es la siguiente:

Transiciones
Entradas
de Salida
Qt Qt+1 J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0

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
basculacin. 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 basculacin. 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 diseo de contador: Mapas de Karnaugh

Los mapas de Karnaugh se usan para determinar la lgica 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 diseo. 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 disear 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 transicin 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 diseo de contador: Expresiones Booleanas

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

Paso 5 de diseo de contador: Implementacin

Se implementa el contador con base en las expresiones Booleanas obtenidas en


el paso anterior. La implementacin se presenta en la siguiente figura.

En la implementacin 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 diseo 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 ms 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 de Conteo Aleatorio:

La generacin de una secuencia pseudo aleatoria de nmeros binarios es muy til en


ciertos ambientes de test y desarrollo.

Un generador de secuencia binaria pseudo aleatoria, SBSA, (en ingles, Pseudo Random
Binary Sequence, PRBS) es un circuito que genera una serie de nmeros binarios de n-
bits, un numero por ciclo de reloj, sin seguir un patrn determinado, pero que se repite
luego de 2^n-1 ciclos de reloj. Por lo general un PRBS se implementa como un registro
de desplazamiento de realimentacin lineal (en ingles Linear Feedback Shift Register,
LDFSR). Dicho de otra manera, con el termino PRBS se describe lo que el circuito hace,
mientras que con el termino LFSR se describe como el circuito esta implementado.

En esta nota tcnica se describe en VHDL un LFSR que genera la secuencia binaria
pseudo - aleatoria. Se presentan en VHDL distintos ejemplos de cdigo y su
implementacin en FPGA. Finalmente se detalla un ejemplo de cdigo VHDL
parametrizado a fin de tener un PRBS genrico.
Registro de Desplazamiento

Un registro de desplazamiento es un circuito digital secuencial (es decir, que los valores
de sus salidas dependen de sus entradas y de los valores anteriores) consistente en una
serie de biestables, generalmente de tipo D, conectados en cascada (Fig. 1), que
basculan de forma sincrnica con la misma seal de reloj. Segn las conexiones entre
los biestables, se tiene un desplazamiento a la izquierda o a la derecha de la informacin
almacenada. Es de sealar que un desplazamiento a la izquierda de un conjunto de bits,
multiplica por 2, mientras que uno a la derecha, divide entre 2. Existen registros de
desplazamiento bidireccionales, que pueden funcionar en ambos sentidos. Los registros
universales, adems de bidireccionales permiten la carga en paralelo.

Dependiendo del tipo de entradas y salidas, los registros de desplazamiento se clasifican


como:

Serie-Serie: slo la entrada del primer flip-flop y la salida del ltimo son accesibles
externamente. Se emplean como lneas de retardo digitales y en tareas de
sincronizacin.
Paralelo-Serie: son accesibles las entradas de todos los flip-flops, pero slo la salida
del ltimo. Normalmente tambin existe una entrada serie, que slo altera el
contenido del primer flip-flop, pudiendo funcionar como los del grupo anterior. Este
tipo y el siguiente se emplean para convertir datos serie en paralelo y viceversa.

Este tipo convierte: Dato en paralelo a dato en serie.

Serie-Paralelo: son accesibles las salidas de todos los flip-flops, pero slo la entrada
del primero. Este tipo y el anterior se emplean para convertir datos serie en paralelo
y viceversa, por ejemplo, para conexiones serie como el RS232.

Este tipo convierte: Dato en serie a dato en paralelo.

Paralelo-Paralelo: tanto las entradas como las salidas son accesibles. Se usan para
clculos aritmticos.
Un registro de desplazamiento muy utilizado, que es universal (se llama as porque
puede utilizarse en cualquiera de las cuatro configuraciones anteriormente descritas) y
bidireccional (porque puede desplazar los bits en un sentido u otro) es el 74HC194, de
cuatro bits de datos.
Otros registros de desplazamiento conocidos, fabricados tambin con la tecnologa
CMOS, son el 74HC165 (entrada paralela, salida serie) y 74HC164 (entrada serie, salida
paralelo).
Registro de Entrada y Salida serie

Registros con entrada serie y salida paralelo


La estructura de un registro serie paralelo es muy similar a la de un registro con entrada y
salidas en serie:

Observamos que la nica diferencia es que se le aade una salida a cada una de las
salidas Q del biestable: de esta manera se pueden obtener todos los datos a la vez. Por
otro lado, tambin se puede obtener una salida en serie de cualquier salida Q o Q.
Habitualmente se suele aadir una entrada de puesta a cero asncrona (CLEAR) cuya
funcin es inicializar el registro.
En ltimo lugar destacar que estos registros se suelen utilizar para el cambio de una
palabra de serie a paralelo.
Registros con entrada paralelo y salida serie
A continuacin, se muestra un esquema de un registro con entrada paralelo y salida
serie y carga asncrona.

El funcionamiento es el siguiente: cuando en la entrada de seleccin desplazamiento


/carga', hay un 0 se realiza la carga. Con el inversor este cero se convierte en un 1 y por
lo tanto las puertas NAND que hay arriba y debajo de los biestables se convierten en
inversores.
A continuacin, se introducen los datos: en el bit que haya un 1, se activa el Preset, y en
el que haya un cero, se activa el Clear.
Para el desplazamiento se coloca un 1 en D/C de esta manera se consigue que nunca se
activan las entradas ni PR ni CL, ya que de las puertas NAND siempre saldr un 1. El
desplazamiento se realiza como en un registro serie-serie.
A continuacin, se muestra un registro con carga paralelo y salida serie, pero en este
caso la carga es sncrono, ya que se carga por las entradas sncronas
Registro de entrada y salida en paralelo

Como se puede ver, se ha creado un registro de entrada y salida paralelo a partir de


biestables D con entrada de habilitacin. La entrada de datos es cada una de las entradas
D del biestable; la entrada de habilitacin se une a una entrada de habilitacin global,
de manera que cuando se activa, permite que se lean los datos. Hay otra entrada
(control de salida) que al activarse permite que se lean las salidas. Aqu hemos utilizado
puertas AND, aunque tambin podramos haber utilizados puertas OR y un inversor, o
tambin buffers con entradas de alta impedancia.

Aplicaciones de los Registros

Adems de la conversin serie-paralelo y paralelo-serie, los registros de


desplazamiento tienen otras aplicaciones tpicas:

Generador pseudo aleatorio. Se construye con un registro de desplazamiento,


realimentando a la entrada una combinacin de varias salidas, normalmente un or
exclusivo entre ellas.
Multiplicador serie. Se realiza la multiplicacin mediante sumas y desplazamientos.
Un ejemplo es el 74LS384.
Registro de aproximaciones sucesivas. Se usa en conversores A/D. Se van
calculando los bits sucesivamente, empezando por el ms significativo. Mediante
un conversor DAC se compara la entrada analgica con los resultados parciales,
generando el siguiente bit.
Retardo. Se pueden utilizar para retardar un bit un nmero entero de ciclos de reloj
(consiste simplemente en un conjunto de biestables en cascada, tantos como ciclos
de reloj deseemos retardar los bits).

You might also like