unary‐ii - Obijuan/Icestudio-Digital GitHub Wiki
Circuito 038-unary-ii
⬅️ Prev | Navegar por los circuitos | Next ➡️ |
---|
Contenido
- Ficha: Contador unario de ciclos, de 2 marcas
- Descargas
- Descripción
- Contando hasta el ciclo 2
- Contando tiempo
- Diagrama de estados
- Cronograma
- Circuito UCONT2
- Medición con el analizador lógico
- Recursos
- Conceptos nuevos
- Importancia del circuito
- Enlaces
- Autor
- Licencia
Ficha: Contador unario de ciclos, de 2 marcas
- Circuito Icestudio: unary-ii.ice
- Ficha circuito: (SVG) (PDF) (PNG)
Descripción
Este es el primer circuito que nos permite contar. La forma más básica de contar es mediante el sistema unario, en el que sólo se usa una marca. Por cada elemento a contar se dibuja una marca. Este sistema, aunque muy primitivo, todavía lo seguimos usando cuando contamos con los dedos, cuando contamos votos en una pizarra, o cuando los presos marcan en las paredes de sus celdas los días que llevan encerrados
Puedes encontrar más información sobre el sistema unario en el cuaderno ténico CT18: Fundamentos. Sistema unario
El circuito presentado en esta lámina sólo permite contar hasta 2. Para almacenar las marcas se usan 2 Biestables. El valor del biestable indica si está marcado o no. Así, una valor de 1
significa marca. Un valor de 0
es la ausencia de marca
La cuenta unaria de 2 marcas se puede describir así, usando el elemento 🟢️ como marca:
- Ninguna marca (significa 0)
- 🟢️: Una marca. Significa 1
- 🟢️🟢️: Dos marcas. Significa 2
Los dos biestables son las casillas donde puede o no haber marca. La representación anterior la podemos poner así en forma de tabla, a partir de los valores de los biestables
Biestable B1 | Biestable B2 | Descripción |
---|---|---|
0 | 0 | Estado inicial. Cuanta a 0 |
1 | 0 | Una marca. Cuenta a 1 |
1 | 1 | Dos marcas. Cuenta a 2. Estado final |
1 | 1 | Dos marcas. Cuenta a 2. Estado final |
... | ... | Estado final |
Vemos que este contador llega hasta 11
(🟢️🟢️, dos marcas), y se queda en este estado
¿Pero qué es lo que cuenta este contador?
Este contador tan básico en realidad está contando ciclos. La tabla la podemos redefinir así:
Ciclo | Cuenta unaria | Cuenta decimal | Descripción |
---|---|---|---|
0 | 0 | Estado inicial. Ciclo actual: 0 | |
1 | 🟢️ | 1 | Ciclo actual: 1 |
2 | 🟢️🟢️ | 2 | Estado final. Ciclo actual: 2 (ó mayor) |
3 | 🟢️🟢️ | 2 | Estado final... |
A partir del ciclo 2 la cuenta alcanza su valor máximo y por tanto el contador satura
Si nos fijamos en la salida del biestable B0, vemos que se pone a 1
cuando alcanza el valor máximo. Mirando la información de este biestable sabemos que el número de ciclos será >=2. En el flanco de subida de esta señal sabremos que estas exactamente en el ciclo 2
Por eso, esta señal la denominamos MAX. Hemos alcanzado el valor máximo. Estamos en saturación
Contando hasta el ciclo 2
Como sólo tenemos 2 biestables, sólo podemos representar 2 marcas y por tanto sólo podemos contar hasta 2. 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
La salida de estos biestables está conectada a los LEDs 7 y 6 respectivamente. Si pudiésemos ver el funcionamiento del circuito a cámara lenta, veríamos cómo en estos LEDs aparece la cuenta en unario, que nos indica el ciclo en el que estamos, hasta que se alcanza el valor máximo (2), donde saturamos y ya no sabemos exactamente en qué ciclo estamos
En esta animación veríamos esta cuenta:
Aunque es una forma muy rudimentaria, mirando el estado sabemos en qué ciclo estamos:
- Estado 00: 100% de seguridad que estamos en el ciclo 0
- Estado 10: 100% de seguridad que estamos en el ciclo 1
- Estado 11:
- Si flanco de subida en biestable B0, 100% que estamos en el ciclo 2 _ Resto de casos, 100% seguro que estamos en un ciclo mayor a 2. Es decir, que podemos garantizar que al menos han pasado 2 ciclos desde el arranque del circuito
Contando tiempo
¿Y qué utilidad tiene contar el tiempo? Los circuitos que estamos haciendo hasta ahora son tan simples que apenas tiene utilidad. No obstante, ya somos capaces de generar señales de arranque de otros circuitos. Podemos tener circuitos que estén inactivos hasta que los arranquemos en los ciclos que nosotros queramos: uno en el ciclo 0, otro en el 1 y otro en el 2. Basta con usar la señal generada por este contador unario (función step)
Diagrama de estados
Este es el diagrama de estado del circuito unary-ii. El estado inicial es 00
, que representa la cuenta 0 (ciclo 0)
En el siguiente ciclo se pasa al estado 10
(ciclo 1 en unario) y luego al estado final 11
(ciclo 2 en unario). A partir del ciclo 2, el estado siempre es 11
, y no se producen más cambios: Ya no hay movimiento de marcas en el tablero
Cronograma
La salida del circuito unary-ii la podemos tomar de cualquiera de los biestables B1 ó B0. La señal correspondiente a B1 es la que ya conocemos del circuito sysclk-conn: un escalón en el ciclo 1. Esta señal se puede utilizar como señal de arranque para señalizar a otro circuito que puede comenzar
La señal nueva es la que se saca de B0. Es un escalón en el ciclo 2. O lo que es lo mismo, un escalón en el ciclo 1 al que se le aplica un retraso de 1 ciclo
Pero esta señal, además, tiene otro significado muy importante cuando estamos utilizando este circuito como contador de ciclos: La señal MAX
Esta señal se pone a 1
cuando el contador a alcanzado su valor máximo. Nos está indicado en qué ciclo el bit 1
que se desplaza llega al biestable de más a la derecha, y por tanto ya no se podrá propagar más
Circuito UCONT2
El circuito UCONT2 es un circuito que cuenta en unario en 2 LEDs. Como funciona a la velocidad del reloj del sistema, esto es, muy rápido, los humanos no apreciamos esta cuenta. Simplemente veremos cómo hay 2 LEDs encendidos, correspondientes a las 2 marcas de la cuenta unaria. El significado es: estamos en un ciclo mayor a 2
Medición con el analizador lógico
Realizamos la medición de las señales de los dos biestables. Necesitamos utilizar la señal time0, para detectar el BIT-BANG
Este es el resultado:
Recursos
Recurso | Cantidad | Máximo | Descripcioin |
---|---|---|---|
LC | 3 | 7680 | Celdas lógicas |
IO | 3 | 256 | Bloques de E/S |
Conceptos nuevos
- Contador. Este es el primer circuito que realiza una cuenta, aunque de manera rudimentaria
- Contador unario. Este es el primer circuito que cuenta en unario, con dos marcas
- Contador de tiempo. Este es el primer circuito que cuenta tiempo. Es decir, que tiene noción de en qué ciclo estamos, y así poder reaccionar a eso
- Señal MAX: Es la señal que se pone a
1
cuando el contador alcanza su valor máximo (En los siguientes ciclos saturará)
Importancia del circuito
El circuito Unary-ii es otro circuito clave, que abre muchas posibilidades nuevas:
- Debido al movimiento de sus bits, este circuito es capaz de contar. Esta es una habilidad nueva que hasta ahora NO TENIAMOS
- Además, lo que cuenta este circuito son ciclos. Esto nos permite cronometrar. Ahora sabemos cuánto tarda en llegar una señal, o activar una señal transcurridos un número de ciclos
Enlaces
- 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
Autor
- Juan González-Gómez (Obijuan)