Skip to content

1hot‐n

Juan Gonzalez-Gomez edited this page Jun 22, 2026 · 35 revisions

Circuito 074-1hot-n

⬅️ Prev Navegar por los circuitos Next ➡️

Contenido

Ficha: Contador one-hot de N biestables

Descargas

  • Circuito Icestudio: 1hot-13 (Caso de estudio para N=13)
  • Ficha circuito: (SVG) (PDF) (PNG)

Descripción

Este circuito es en realidad un esquema de circuito, que generaliza la idea de un contador 1-hot de N biestables. Si queremos contar hasta N, necesitamos conectar en serie N+1 biestables D del sistema. O lo que es lo mismo, un contador 1-hot de N biestables puede contar hasta N-1

Con este esquema podemos construir cualquier contador 1-hot, de cualquier número de biestables y capaz de contar hasta cualquier número (siempre que haya espacio físico para incluir todos los biestables necesarios)

Contando hasta el ciclo N-1

Como tenemos N biestables, hay N casillas por donde la marca se puede desplazar. Dado que en el biestable de la izquierda debe haber una marca inicial, este contador sólo puede contar hasta N-1. En esta figura se representa la evolución del estado a medida que transcurren los ciclos. En vez de los valores 1 y 0 se utiliza la marca 🟢️ y su ausencia

Los biestables los numeramos empezando por el de la izquierda, que es el N-1, hasta el de la derecha, que es el 0

Las salidas de los biestable están conectados a LEDs. Si pudiésemos ver el funcionamiento del circuito a cámara lenta, veríamos cómo la marca se va desplazando hacia la derecha, por las casillas (Biestables D), encendiendo el LEDs correspondiente, hasta que llega al último y se enciende el LED0. Esta es la señal que nos indica que se ha alcanzado el valor máximo. En el siguiente ciclo la marca sale del tablero y se obtiene un valor inválido del contador, que lo asociados a la condición de overflow

En esta animación veríamos esta cuenta:

Observamos cómo se produce la cuenta 1-hot. En cada ciclo la marca se desplaza una posición a la derecha, hasta que en el ciclo N-1 llega al biestable N. En el ciclo N y siguientes el contador entra en overflow

Diagrama de estados

Este es el diagrama de estado del circuito 1hot-n. El estado inicial es 100...0 (que representa la cuenta 0 (ciclo 0)

A partir del ciclo N, el estado siempre es 000...0, que se corresponde con el overflow, y no se producen más cambios: Ya no hay movimiento de la marca en el tablero

Cronograma

Cuando tomamos la salida del último biestable (el del extremo derecho) del circuito 1hot-n, lo que se obtiene es la función tic-N: Un pulso mínimo en el ciclo N-1. La salida del resto de biestables también devuelve un Tic, que indica el ciclo actual

Circuito Tic-N

El circuito Tic-N es un circuito que cuenta ciclos usando codificación 1-hot y que devuelve un tic cuando se ha alcanzado su valor máximo en el ciclo N-1

El tiempo que está la señal a nivel bajo, que es el mismo tiempo que tarda en activarse, lo representamos mediante D. Es un tiempo igual a N-1 ciclos

Midiendo el tiempo

La señal MAX tarda un tiempo D en activarse desde que se enciende el circuito. Este tiempo, medido en ciclos es N-1. Pero si lo medimos en segundos, la duración D es de:

$$D = (N-1).T = \frac{N-1}{F_{sys}}$$

Donde N es el número de biestables del contador unario y T es el periodo de cada ciclo. Este periodo es la inversa de la frecuencia del reloj del sistema $F_{sys}$

Esta fórmula es muy importante porque nos permite determinar cuántos biestables necesitamos para esperar un tiempo D, o a la inversa, conocer cuánto tiempo tarda un contador de N biestables

Caso de estudio: Contador unario de 13 Biestables

Vamos a estudiar el caso particular de un contador 1hot de 13 biestables D del sistema. Como tiene 13 biestables (N=13), nos permite contar hasta el ciclo 12 (N-1). Aplicando la fórmula anterior, podemos calcular la duración de esta señal. Como se está utilizando la placa Alhambra-II, sabemos que $F_{sys}=12Mhz$, y al tener 13 biestables escribimos que $N=13$

Sustituyendo en la fórmula tenemos que:

$$D = \frac{N-1}{F_{sys}} = \frac{12}{12Mhz} = \frac{1}{10^6} = 10^{-6} = {1µs}$$

Este circuito empieza a contar en el ciclo 0 y se emite un tic por el LED (D0) cuando se activa la señal max, es decir, cuando ha transcurrido exactamente 1µs (un micro-segundo)

Esta es la pinta que tiene en Icestudio:

Para comprobar su funcionamiento realizamos las mediciones con el analizador lógico. Incluimos las señales de time0, para detectar el Bit-Bang y el reloj

Desde el analizador vemos que efectivamente la señal se pone a 1 en el ciclo 12. Midiendo el tiempo con el propio analizador vemos que efectivamente la señal D está a 0 durante 1µs

Recursos

Recurso Cantidad Máximo Descripcioin
LC 16 7680 Celdas lógicas
IO 14 256 Bloques de E/S

Limitaciones en la cuenta y el tiempo medido

La cuenta máxima ($N_{max}$) a la que se puede llegar con $N$ biestables es $N-1$. Podemos contar un ciclo menos que con el contador unario-n. Sabiendo que en total tenemos 7680 celdas lógicas en la placa Alhambra-II, llegamos a la conclusión de que como mucho podríamos contar hasta 7679 ciclos

Si esto lo pasamos a tiempo (calculando $$D_{max}$$), tenemos que el tiempo máximo que se puede medir es :

$$D_{max} = \frac{N_{max}}{F_{sys}} = \frac{7679}{12Mhz} = 640x10^{-6} = 640µs$$ (Aprox...)

Aproximadamente podemos medir un tiempo similar al del circuito unario-n, es decir, de unos 640µs (aprox.)!!

Problemas a resolver

Utilizar contadores 1-hot en vez de los unario nos permite tener circuitos más simplificados y el poder usar el "pensamiento espacial" basado en la abstracción del tablero y las fichas. Con esta nueva abstración podemos abordar problemas más complejos

Sin embargo, los contadores 1-hot no aportan soluciones directas a los problemas presentados con el circuito unario-n:

  • Problema de la cuenta máxima: ¿Cómo hacer para aumentar nuestra cuenta?
    • Problema del tiempo relativo: ¿Cómo podemos medir un intervalo de tiempo? (y no sólo absoluto, desde el Bit-Bang)
    • Problema del tiempo máximo: ¿Cómo podemos hacer para medir un tiempo mayor a 640µs?

Gracias a la nueva abstracción del pensamiento espacial tablero-ficha, la codificación 1hot nos permitirá abordar estos problemas:

  • Problema del almacenamiento persistente: ¿Cómo podemos hacer para que un biestble almacena la misma información durante más de un ciclo?. Su comportamiento es capturar el dato de la entrada en cada ciclo del sistema...
  • Problema de la cuenta de eventos: ¿Cómo podemos contar otras cosas que no sea ciclos?
  • Problema de la alta velocidad: ¿Cómo hacer circuitos que funcionen más lentamente para que los humanos podamos ver su evolución?

Como ya vimos, estos problemas generales conducen a estos más concretos:

  • Problema del segundo: ¿Cómo podemos medir un intervalo de tiempo de 1 segundo?
  • Problema de la señal de 1Hz: ¿Cómo podemos generar una señal de frecuencia 1Hz? (Periodo total de 1 segundos. Medio seugundo a nivel alto y medio a nivel bajo, que se repita indefinidamente)

Aunque usamos la codificación 1hot, estos contadores siguen siendo unarios. Y por ello siguen teniendo la limitación de NO ESCALAR: se necesitan muchísimos biestables para realizar cuentas grandes

Pero esta codificación nos va a permitir desarrollar los primeros autómatas con los que abordar los problemas anteriores, y seguir creciendo en complejidad

Conceptos nuevos

  • Contador 1hot de N biestables: Contador de N biestables (N casillas) en el que la ficha se desplaza de izquierda a derecha, avanzando un biestable en cada ciclo. Esta es la base del pensamiento espacial
  • Pensamiento espacial: Diseñar circuitos basados en la idea de que hay una única ficha (bit a 1) desplazándose por las casillas del circuito (biestables D). Según en la casilla donde se encuentre la ficha, el circuito tiene un comportamiento u otro, realizando diferentes acciones

Enlaces

Autor

Licencia

Clone this wiki locally