Contador binario ascendente y descendente utilizando el reloj como bit menos significativo
Contador binario ascendente y descendente utilizando el reloj como bit menos significativo
Introducción
En un contador binario convencional, el reloj constituye la señal que provoca el cambio de estado de los flip-flops, mientras que las salidas de estos representan los diferentes bits del número binario.
En el circuito desarrollado en esta práctica se utiliza una estrategia ligeramente diferente e interesante desde el punto de vista didáctico:
La propia señal de reloj se utiliza como el bit menos significativo del contador.
De esta manera, el reloj puede considerarse como Q0, mientras que las salidas de los flip-flops representan los bits superiores.
Para conseguir que el contador pueda trabajar tanto en sentido ascendente como descendente, es necesario seleccionar adecuadamente entre la señal de reloj original y su versión invertida.
Esta selección se realiza mediante los jumpers correspondientes al control de SENTIDO.
Generación de la señal de reloj
El circuito comienza con un oscilador basado en el NE555.
La frecuencia del reloj puede modificarse mediante el control de velocidad, permitiendo observar con mayor facilidad la secuencia de los estados del contador.
La salida del 555 constituye la señal:
CLK
Esta señal tiene una característica fundamental: cambia permanentemente entre los niveles lógico 0 y 1.
Por esta razón puede ser considerada directamente como el bit menos significativo Q0.
Es decir:
Q0 = CLK
Cuando el reloj está en nivel bajo:
Q0 = 0
y cuando está en nivel alto:
Q0 = 1
Por lo tanto, el bit menos significativo cambia continuamente de estado.
¿Por qué utilizar el reloj como bit menos significativo?
Recordemos que en un contador binario cada bit tiene una frecuencia que es la mitad de la frecuencia del bit inmediatamente inferior.
Por ejemplo, para un contador de tres bits:
| Bit | Frecuencia aproximada |
|---|---|
| Q0 | f |
| Q1 | f/2 |
| Q2 | f/4 |
En nuestro circuito podemos considerar:
Q0 = CLK
por lo que los flip-flops posteriores producen:
Q1 = CLK/2
Q2 = CLK/4
Esto permite construir el contador utilizando directamente las relaciones de división de frecuencia producidas por los flip-flops.
Pero aparece inmediatamente una dificultad:
¿En qué flanco debe cambiar Q1 para que el conteo sea ascendente y en cuál para que sea descendente?
La respuesta a esta pregunta explica todo el funcionamiento del selector de sentido.
Los flip-flops 7474 como divisores de frecuencia
El circuito utiliza flip-flops D 7474.
Cada flip-flop está configurado para funcionar como un elemento de conmutación, conectando su entrada D con la salida complementaria.
De esta manera:
D = /Q
Cuando llega el flanco activo del reloj, el flip-flop cambia de estado.
Por ejemplo:
| Q actual | /Q actual | Próximo Q |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 0 |
Por lo tanto, cada vez que recibe un flanco apropiado, el flip-flop conmuta.
Esto hace que cada etapa pueda utilizarse como un divisor de frecuencia por 2.
El problema del sentido de conteo
Supongamos que tenemos tres bits:
Q2 Q1 Q0
y que:
Q0 = CLK
Para realizar un conteo ascendente necesitamos obtener:
000 → 001 → 010 → 011 → 100 → 101 → 110 → 111 → 000
Observemos qué ocurre con Q0.
Q0 cambia en cada transición del reloj:
0 → 1 → 0 → 1 → 0 → 1...
Pero Q1 no debe cambiar en todos los flancos.
Debe cambiar solamente cuando Q0 pasa de:
1 → 0
Esto es precisamente lo que ocurre en un contador binario ascendente.
Por ejemplo:
001 → 010
Aquí Q0 pasa de 1 a 0 y, simultáneamente, Q1 pasa de 0 a 1.
¿Qué ocurre en el conteo descendente?
Para contar en sentido contrario queremos:
111 → 110 → 101 → 100 → 011 → 010 → 001 → 000 → 111
Ahora Q1 debe cambiar cuando Q0 pasa de:
0 → 1
Por lo tanto, hemos encontrado una diferencia fundamental:
Conteo ascendente
Q1 debe reaccionar al flanco descendente de Q0.
Conteo descendente
Q1 debe reaccionar al flanco ascendente de Q0.
Pero los 7474 utilizados en este circuito reaccionan al flanco positivo de su señal de reloj.
Entonces necesitamos una forma de convertir un flanco descendente en un flanco ascendente.
Y aquí aparece la inversión de la señal.
El inversor con 2N2222
El circuito incorpora un transistor 2N2222 configurado como inversor.
Su funcionamiento es sencillo:
| CLK | Salida del inversor |
|---|---|
| 0 | 1 |
| 1 | 0 |
Por lo tanto:
CLK = 0 → /CLK = 1
CLK = 1 → /CLK = 0
Además de invertir el nivel lógico, esta etapa invierte también la posición de los flancos.
Un flanco:
0 → 1
en la entrada se transforma en:
1 → 0
en la salida.
Y un flanco:
1 → 0
se transforma en:
0 → 1
Esto resulta fundamental para controlar el momento en que los flip-flops deben cambiar de estado.
Selección del sentido de conteo
El circuito incorpora un selector de sentido que permite escoger entre las señales necesarias para realizar el conteo ascendente o descendente.
En términos conceptuales:
SENTIDO ASCENDENTE → utilización de la señal complementaria cuando sea necesario detectar el flanco descendente del bit anterior.
SENTIDO DESCENDENTE → utilización de la señal directa para detectar el flanco ascendente del bit anterior.
Por ello, los jumpers no son simplemente un mecanismo para "decirle" al circuito si debe contar hacia arriba o hacia abajo.
En realidad, los jumpers modifican qué señal y qué flanco reciben las etapas siguientes.
El reloj como Q0
Una característica particular de este diseño es que no necesitamos un flip-flop adicional para representar el bit menos significativo.
Normalmente podríamos tener:
CLK → FF0 → Q0
Pero en este circuito hacemos:
CLK → Q0
y utilizamos directamente el reloj como primer bit.
Por tanto:
Q0 = CLK Q1 = frecuencia dividida entre 2 Q2 = frecuencia dividida entre 4
Esto reduce la cantidad de elementos necesarios y, al mismo tiempo, permite que el estudiante observe físicamente cómo una señal periódica puede formar parte de una representación binaria.
Secuencia de conteo ascendente
Consideremos tres bits:
Q2 Q1 Q0
La secuencia deseada es:
| Decimal | Q2 | Q1 | Q0 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 |
| 2 | 0 | 1 | 0 |
| 3 | 0 | 1 | 1 |
| 4 | 1 | 0 | 0 |
| 5 | 1 | 0 | 1 |
| 6 | 1 | 1 | 0 |
| 7 | 1 | 1 | 1 |
| 0 | 0 | 0 | 0 |
Obsérvese que cada vez que Q0 pasa de:
1 → 0
Q1 debe cambiar.
Y cuando Q1 pasa de:
1 → 0
Q2 debe cambiar.
Esto es precisamente el comportamiento de un contador binario ascendente.
Secuencia de conteo descendente
Para el sentido descendente:
| Decimal | Q2 | Q1 | Q0 |
|---|---|---|---|
| 7 | 1 | 1 | 1 |
| 6 | 1 | 1 | 0 |
| 5 | 1 | 0 | 1 |
| 4 | 1 | 0 | 0 |
| 3 | 0 | 1 | 1 |
| 2 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 0 | 0 | 0 | 0 |
| 7 | 1 | 1 | 1 |
Ahora la condición cambia.
Q1 debe cambiar cuando Q0 pasa de:
0 → 1
y Q2 debe cambiar cuando Q1 pasa de:
0 → 1
Por ello se requiere utilizar la señal directa en los puntos correspondientes.
Análisis mediante flancos
Esta es probablemente la mejor forma de comprender el funcionamiento del circuito.
Conteo ascendente
Q0: _|‾|_|‾|_|‾|_|‾|_ ↓ ↓ ↓ 1→0 1→0 1→0 ↓ ↓ ↓ Q1 cambia
Es decir, Q1 debe reaccionar a los flancos descendentes de Q0.
Como el 7474 responde al flanco ascendente, se utiliza la señal invertida:
Q0 → inversor → /Q0 → reloj del siguiente flip-flop
De esta forma:
Q0: 1 → 0
produce:
/Q0: 0 → 1
y ese nuevo flanco ascendente puede activar al 7474.
Conteo descendente
En este caso Q1 debe reaccionar directamente al flanco ascendente de Q0:
Q0: _|‾|_|‾|_|‾|_|‾|_ ↑ ↑ ↑ 0→1 0→1 0→1 ↓ ↓ ↓ Q1 cambia
Por tanto, no es necesario invertir la señal.
Esta es la razón fundamental por la que el circuito necesita disponer de CLK y /CLK.
Tabla de funcionamiento del sentido
Podemos resumir la idea mediante la siguiente tabla:
| Sentido | Señal utilizada para detectar el cambio de Q0 | Flanco de Q0 que provoca cambio de Q1 |
|---|---|---|
| Ascendente | /Q0 | 1 → 0 |
| Descendente | Q0 | 0 → 1 |
Esta tabla constituye una de las claves para comprender el circuito.
No se trata simplemente de "invertir el conteo".
Lo que hacemos realmente es seleccionar qué transición del bit menos significativo debe producir la transición del bit siguiente.
Indicadores luminosos
Las salidas del contador se llevan a indicadores LED que permiten observar visualmente el estado de cada bit.
Los LED permiten observar directamente cómo las frecuencias se van dividiendo:
- Q0 "led C" cambia más rápidamente.
- Q1 "led B" cambia a la mitad de frecuencia.
- Q2 "led A" cambia a la cuarta parte.
Esto permite relacionar tres conceptos que normalmente se estudian por separado:
contador binario → división de frecuencia → representación binaria
Una observación importante sobre el "bit" de reloj
Existe una particularidad que el estudiante debe comprender.
Cuando decimos que el reloj es Q0, no significa que el reloj deje de ser una señal de sincronización.
La misma señal cumple simultáneamente dos funciones:
- Es la señal temporal que origina el movimiento del contador.
- Se interpreta como el bit menos significativo de la secuencia.
Por eso resulta imprescindible considerar tanto su nivel lógico como sus flancos.
En un instante determinado:
Q0 = CLK
y, por tanto, el estado completo del contador puede expresarse como:
Q2 Q1 CLK
Esto permite observar cómo el estado binario evoluciona directamente siguiendo la señal de reloj.
La importancia del selector de sentido
El selector de sentido constituye, por tanto, una pequeña implementación de lógica de control.
Al cambiar los jumpers, no estamos modificando la frecuencia del oscilador ni cambiando la configuración interna de los flip-flops.
Estamos cambiando qué transición de una etapa se utiliza para activar la siguiente.
Esto constituye un principio muy importante en circuitos secuenciales:
El orden de una secuencia puede modificarse controlando qué flanco o qué estado de una etapa se utiliza como evento para la siguiente etapa.
Este mismo principio aparece posteriormente en circuitos más complejos, como secuenciadores, máquinas de estados y controladores digitales.
Construcción y comprobación
Una vez montado el circuito, se recomienda realizar las siguientes pruebas.
Prueba 1: reloj
Ajustar el potenciómetro del 555 y comprobar que la frecuencia del reloj puede modificarse.
Prueba 2: sentido ascendente
Colocar los jumpers en la posición correspondiente al conteo ascendente y observar la secuencia:
000 → 001 → 010 → 011 → 100 → 101 → 110 → 111
Prueba 3: sentido descendente
Cambiar la posición de los jumpers y verificar:
111 → 110 → 101 → 100 → 011 → 010 → 001 → 000
Prueba 4: análisis de frecuencia
Utilizando un osciloscopio, si está disponible, medir:
- CLK
- Q1
- Q2
y comprobar experimentalmente que las frecuencias se relacionan aproximadamente como:
f(Q1) ≈ f(CLK)/2
f(Q2) ≈ f(CLK)/4
Prueba 5: análisis de flancos
Finalmente, observar qué transición de Q0 provoca el cambio de Q1 en cada sentido.
Esta última prueba es especialmente importante porque permite comprobar experimentalmente el principio que hace posible el conteo ascendente y descendente.
Conclusión
Este contador presenta una característica particular: utiliza directamente la señal de reloj como el bit menos significativo de la representación binaria.
A partir de ella, los flip-flops 7474 generan los bits superiores mediante divisiones sucesivas de frecuencia.
La posibilidad de contar en ambos sentidos se obtiene seleccionando las señales y flancos adecuados. Para ello, el circuito dispone tanto de la señal de reloj original como de su versión invertida mediante un transistor 2N2222.
En el conteo ascendente, el siguiente bit debe cambiar cuando el bit menos significativo pasa de 1 a 0. Como los 7474 responden al flanco positivo, se utiliza la inversión de la señal para transformar ese flanco descendente en un flanco ascendente.
En el conteo descendente, el siguiente bit debe cambiar cuando el bit menos significativo pasa de 0 a 1, por lo que puede utilizarse directamente la señal correspondiente.
Así, detrás de un aparentemente sencillo selector de jumpers existe un principio fundamental de los circuitos secuenciales:
la elección del flanco con el que se sincroniza una etapa determina la secuencia de estados que seguirá el contador.
Y esta idea será especialmente útil cuando posteriormente pasemos de los contadores a la construcción de secuenciadores y máquinas de estados, donde ya no solamente contaremos números binarios, sino que utilizaremos los estados para controlar procesos completos.





Comentarios
Publicar un comentario