-
Notifications
You must be signed in to change notification settings - Fork 0
1hot‐n
| ⬅️ Prev | Navegar por los circuitos | Next ➡️ |
|---|
- Ficha: Contador one-hot de N biestables
- Descripción
- Contando hasta el ciclo N-1
- Diagrama de estados
- Cronograma
- Circuito TicN
- Midiendo el tiempo
- Caso de estudio: Contador unario de 13 biestables
- Recursos
- Limitaciones en la cuenta y el tiepo medido
- Problemas a resolver
- Conceptos nuevos
- Enlaces
- Autor
- Licencia
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)
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
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
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
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
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:
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
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
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
Sustituyendo en la fórmula tenemos que:
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
| Recurso | Cantidad | Máximo | Descripcioin |
|---|---|---|---|
| LC | 16 | 7680 | Celdas lógicas |
| IO | 14 | 256 | Bloques de E/S |
La cuenta máxima (
Si esto lo pasamos a tiempo (calculando
Aproximadamente podemos medir un tiempo similar al del circuito unario-n, es decir, de unos 640µs (aprox.)!!
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
- 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
- Colección iceK: Colección para Icestudio. Constantes
- Colección iceFF: Colección para Icestudio. Biestables
- Cuaderno ténico CT18 de FPGAs Libres: Fundamentos. Sistema unario
- Juan González-Gómez (Obijuan)
- shift
- shift-reg2
- sreg-02-sys-sr-basic🟡
- sreg-concat-left
- sreg-concat-right
- concat-sysdff-sreg2
- concat-sreg2-sysdff
- sreg-03-sys-sr-basic🟡
- concat-sreg2-sreg2
- sreg-04-sys-sr-basic🟡
- unary-ii🔵
- unary-iii
- unary-n🔴
- unary-ii-timer
- unary-ii-timer-bmax
- unary-iii-timer
- sreg-unary-ii-timer
- sreg-unary-iii-timer
- unary-n-timer
- sreg-unary-n-timer
- unary-ii-wait🔵
- unary-ii-wait2🔵
- unary-ii-wait2-simp
- unary-ii-rst
- unary-iii-rst
- unary-mod3🔵
- unary-mod4
- unary-modn
- unary-mod2🔵
- unary-prescaler1:2
- unary-prescaler1:2-ini
- unary-prescaler1:3
- unary-prescaler1:4
- unary-prescaler1:n
- heart-prescaler1:2🟡
🚧 TODO 🚧
- 🟡: Nuevo bloque introducido
- 🔵: Circuito importante
- 🔴: Presentación de limitaciones y retos a superar