unary‐ii‐wait2 - Obijuan/Icestudio-Digital GitHub Wiki
Circuito 043-unary-ii-wait2
⬅️ Prev | Navegar por los circuitos | Next ➡️ |
---|
Contenido
- Ficha: Contador unario de 2 marcas con espera en 0 y I
- Descargas
- Descripción
- Barra de progreso
- Ruta de datos y control
- Evolución del estado
- Reset
- Diagrama de estado
- Cronograma
- Medición con el analizador lógico
- Recursos
- Conceptos nuevos
- Importancia del circuito
- Enlaces
- Autor
- Licencia
Ficha: Contador unario de 2 marcas con espera en 0 y I
- Circuito Icestudio: Caso de estudio: unary-ii-wait2.ice
- Ficha circuito: (SVG) (PDF) (PNG)
Descripción
Este circuito implementa un contador unario de 2 marcas que funciona manualmente. Tiene 2 estados de espera, asociados a los estados 00
(Cuenta 0, sin marcas) y 10
(Cuenta: 🟢)
Este circuito es similar al unary-ii-wait, pero añadiendo un estado de espera adicional al comienzo. Esto se logra añadiendo otra puerta AND de habilitación, entre el 1
de la izquierda y el primer biestable D
Debido a este estado de espera inicial, al arrancar el circuito permanece en el estado 00
. Cuando se deja pulsado el botón SW1
, el 1
se conecta queda conectado con el primer biestable y se escribe la primera marca: El contador cuenta I, y pasa al estado 10
. Y aquí permanece en el segundo estado de espera, que es el mismo que el del circuito unary-ii-wait
Si se aprita SW2
(manteniendo pulsador SW1
), el sistema realiza la siguiente cuenta: 🟢🟢, y alcanza su valor máximo
Cuando se liberan ambos pulsadores, los dos biestables se reinicial (se hace un reset) y el contador vuelve a su estado inicial, por lo que la cuenta puede volver a comenzar
En este circuito la ruta de datos está controlada por 2 señales de control, ambas provenientes de los pulsadores (Control manual)
Barra de progreso
Al ser un contador unario de 2 marcas, en realidad está representando una barra de progreso de 2 marcas, pero esta vez el avance de la barra se produce manualmente mediante la pulsación de los botones SW1
y SW2
Lo que estamos haciendo manualmente es introducir un número unario, especificando la primera marca con SW1
, y la segunda con SW2
. El resultado se refleja en los LEDs, y la barra avanza hacia la derecha
Una vez que se suelta los pulsadores, el contador vuelve a su estado inicial
Este es el primer circuito que sufre un reset y puede volver a su estado inicial, por lo que el proceso de cuenta se puede repetir indefinidamente. ¡Es el primer circuito que no tiene un fin! ¡Podemos repetir su funcionamiento cuantas veces queramos!
Ruta de datos y control
La ruta de datos está formada por los dos biestables conectados entre ellos por la puerta AND de habilitación (Igual que en el circuito unary-ii-wait), y por el bit-1 constante que ahora está conectado al biestable izquierdo a través de otra puerta AND de habilitación
La misión de estas dos puertas es dejar pasar los 1
s (enable), o bien realizar un reset (poner a 0
) los biestables. El circuito de control lo componen las 2 señales de control que vienen de los pulsadores externos
Evolución del estado
El estado es el mismo que en el circuito unary-ii-wait. Hay 2 biestables, porque es un contador unario de 2 marcas. La diferencia es que ahora, al arrancar en el ciclo 0 el estado NO evoluciona automáticamente y cambia en el ciclo 1, sino que permanece a 00
(los dos biestables en estado de reset) hasta que en el instante i se aprieta el pulador SW1
En ese ciclo i se habilita la entrada del primer biestable y se captura el primer 1
. El estado ahora es 10
. Mientras SW1
siga pulsado el estado permanece igual, hasta que en el instante j
está apretado el pusaldor SW2
y por tanto el circuito evoluciona hacia el estado 11
, alcanzando su valor máximo. Ambos biestables valen 1
. El contador ha finalizado la cuenta. Lo podríamos considerar como un estado final
Reset
Mientras los dos pulsadores estén apretados, el circuto se mantiene con la cuenta máxima. En un momento determinado, por ejemplo en el ciclo w, se sueltan los dos pulsadores. En ese momento las AND de habilitación sacan un 0
por sus salidas y ambos biestables capturan ese valor 0
, volviendo a su estado inicial
Este proceso no se tiene por qué realizar en un único ciclo. Si sólo se suelta SW1
, primero se resetea el biestable izquierdo y en el siguiente ciclo se propaga al derecho (da igual si SW2
está o no apretado)
Como este circuito está controlado por un humano, trabajamos a velocidad humana, por tanto no nos fijamos en los detalles. El resultado es que el contador vuelve a 0
, aunque el transitorio puede durar más de un ciclo
Este es el primer circuito en el que se puede hacer un RESET, para llevar el circuito a su estado inicial, y por así volver a comenzar (repetir)
Diagrama de estado
El diagrama de estados aproximado es el mostrado en este figura
No están dibujados todos los detalles. Se tiene en cuenta que las señales SW1
y SW2
funcionan a velocidad humana. El RESET en realidad tiene un transitorio que se está obviando en este diagrama. Estrictamente el reset sólo se podruce cuando SW1
y SW2
son 0
a la vez. Cuando el usuario tiene ambos pulsadores apretados y los suelta, no se ponen ambas señales a 0
a la vez, sino que uno lo hace antes. Por ello hay un transitorio inapreciable por el ojo humano en el que el circuito pasa por diferentes estados antes de llegar de nuevo al inicial. También ocurre que las señales SW1
y SW2
tiene efectos "rebotes" y no pasan de 1
a 0
de manera limpia. Todos estos efectos se han ignorado porque lo que nos interesa es el comportamiento en la velocidad humana
Es irrelevante, en este circuito, los ciclos que tarde en llegar al estado inicial de manera estable. Lo importante es que lo alcanzará, completando el reset
Cronograma
En este cronograma se muestra la evolución de las señales de salida de los biestables cuando se aprietan los pulsadores SW1 y SW2 en los ciclos i y j respectivamente (En realidad se supone que se prietan un ciclo antes, y que tienen efecto en el ciclo siguiente)
Igual que en el circuito anterior, hay que tener en cuenta que SW1
y SW2
son señanes asíncronas, que se pueden producir en cualquier momento. Se ha supuesto que se han generado en la mitad de los ciclos i-1 y j-1, pero podrían ocurrir en cualquier momento. El cambio de estado, no obstante, se produce de manera síncrona con el reloj
Medición con el analizador lógico
Vamos a realizar diferentes mediciones. En la primera comprobamos lo que ocurre tras el Bit-Bang, cuando ninguno de los pulsadores SW1
o SW2
están apretados
Comprobamos que el circuito se queda en el estado de wait0: el estado inicial 00
. No evoluciona mientras no se apriete el pulsador SW1
En la segunda medición verificamos la transición del estado 00
al estado 10
al apretar el pulsador SW1
y cómo permanece en el nuevo estado (estado de wait0
)
En la tercera medición comprobamos la transición del estado 10
al estado 11
al apretar el pulsador SW2
y cómo permanece en el nuevo estado (estado de wait1
)
Por último vamos a medir el reset. Partimos del estado 11
y soltamos el pulsador SW1
. Observamos el transitorio:
Del estado 11
se pasa al 01
y de ahí al 00
. Lo importante es que pasado el transitorio llegamos al estado inicial. ¡Se ha completado el reset!
Recursos
Recurso | Cantidad | Máximo | Descripcioin |
---|---|---|---|
LC | 4 | 7680 | Celdas lógicas |
IO | 5 | 256 | Bloques de E/S |
Conceptos nuevos
- Reset: El reset se produce cuando un circuito llega al estado inicial, de manera voluntaria
Importancia del circuito
Este es el primer circuito en el que se realiza reset. Esto es muy importante porque significa que el circuito puede volver a comenzar. Esta es la clave para solucionar el problema de la cuenta única, lo que permite que nuestros circuitos realicen muchas cosas nuevas, como por ejemplo generar señales periódicas
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)