ax‐sysdff - Obijuan/Icestudio-Digital GitHub Wiki

Circuito 029-ax-sysdff

⬅️ Prev Navegar por los circuitos Next ➡️

Contenido

Ficha: Elemento primitivo sys-dff (Biestable D)

Descargas

Descripción

En este circuito se presenta el último elemento primitivo: El biestable D del sistema. Se trata de un elemento secuencial, que almacena 1 bit. Tiene 2 entradas. Una es la del reloj, clk y la otra es de datos, d. Tiene una única salida, q, que es el valor almacenado en el biestable

El valor del biestable, por defecto es 0. Es el valor que tiene almacenado en el ciclo 0, cuando arranca el circuito

Por la entrada d se conecta un 1 constante. La salida q está conectada a un LED para ver el resultado

El funcionamiento del circuito es el siguiente. En el ciclo 0 el LED está apagado, porque el biestable está a 0. Cuando llega el flanco de subida del reloj, se captura el 1 que llega por su entrada, y pasa a ser el nuevo valor almacenado en el biestable. Por ello el LED se enciende

Es decir, que este circuito tiene apagado el LED en el ciclo 0 y lo enciende en el ciclo 1. En el resto de ciclos permanece encendido (hasta que se apague o reinicie el circuito)

Biestable D del sistema

El bietable D del sistema es un circuito secuencial. Tiene la capacidad de almacenar un bit. El bit a almacenar es el que viene por su entrada de datos d. Se captura este dato de entrada cada vez que llega un flanco de subida en su entrada de reloj. El valor capturado sale por su salida q

Este biestable tiene 2 entradas y 1 salida. Una de las entradas es especial: es el reloj. La otra se denomina entrada de datos. El valor almacenado en biestable es el que se saca por su salida q

Como estamos trabajando con circuitos síncronos, todos los biestables deben estar conectados al reloj del sistema. Por esa razón se denominan Biestables D del sistema, porque funcionan a la velocidad del reloj del sistema. Y por tanto están todo el rato capturando datos. La entrada d se lee a la máxima velocidad (Frecuencia de 12Mhz en el caso de la Alhambra-II)

Lo importante del biestable D es que nos permite tener la noción de presente y futuro. El valor almacenado se saca por su salida en el ciclo actual. Fue capturado en el ciclo anterior. Es decir, es un valor que llegó en el pasado. El valor que llega por la entrada es el siguiente valor. El valor que tendrá el biestable en el futuro, en el siguiente ciclo

Biestable D del sistema en Icestudio

En Icestudio los biestables se encuentran en la colección iceFF. El biestable D del sistema se denomina sys-DFF, por eso lo denotamos como iceFF.sys-DFF

Cronograma

Cuando arranca el circuito, en el ciclo 0, el biestable D tiene el valor 0, por tanto por su salida q sale 0. PERO como por su entrada d se está introduciendo un bit constante a 1, significa que en el siguiente ciclo, el ciclo 1, se captura este 1 y se almacena en el biestable D. Por tanto, a partir del ciclo 1 la salida del circuito es 1, y se enciende el LED

En el resto de ciclos, como por la entrada d siempre llega un 1, se captura siempre este valor y su salida será 1

La señal que se genera tiene la forma de un escalón. Empieza siendo 0 en el ciclo 0, y luego pasa a 1 en el ciclo 1 para permanecer ya con un valor constante. Por eso denominamos a esta señal como un escalón 1: Indicando que se pone a nivel alto a partir del ciclo 1

Este es el primer circuito en el que se genera una señal varible. Hasta ahora todas las que se generaban en el interior de nuestros circuitos eran siempre constantes. Pero en este tenemos una señal variable que está un ciclo a 0 y luego cambia a 1

Circuito STEP1

El circuito abstracto STEP1 es un circuito secuencial que genera por su salida la funcion escalón1, la cual se cambia de 0 a 1 en el ciclo 1

Si se conecta un LED a su salida, se verá que está encendido indefinidamente. En realidad está apagado durante el ciclo 0, un ciclo después de encender el circuito, pero es tan rápido que el ojo humano no lo detecta. Para nosotros este circuito es similar a LEDON-INF

ESTADO de un circuito

Definimos el ESTADO de un circuito en un ciclo dado, como el valor almacenado en TODOS sus biestables. Así, si tenemos un circuito con un único biestable, como el presentado en esta ficha, el estado es de 1 bit. Esta estado puede tener sólo los valores 0 y 1. En el ciclo 0 el estado es 0 y a partir del ciclo 1 el estado es 1

Los cambios de estado sólo se producen cuando llega un flanco de subida, permaneciendo invariable a lo largo del ciclo

Tabla de transiciones

El estado de un circuito cambia con el tiempo. La tabla de transiciones nos indica cuál es el nuevo estado, en función del estado actual y de las entradas

Para el caso del biestable D, la tabla de transiciones se muestra en esta figura:

El biestable D es el circuito secuencial más simplificado, por que si nos fijamos en la tabla, el estado siguiente sólo está determinado por su entrada, y no por el estado actual, por lo que la tabla se puede simplificar

Evolución del estado

El estado de un circuito evoluciona con el tiempo y con los valores de las entradas. Esta evolución también la podemos poner en función de tabla, que lo que llamamos la tabla de estado. En el caso general usaremos la tabla de transiciones, pero para circuitos más simplificados es suficiente con la tabla de estados

Para este circuito de ejemplo la tabla de estado sólo tiene 2 filas. En la primer se indica el estado inicial, que es 0. Al llegar un flanco de reloj, se pasa al ciclo 1 y el estado cambia a 1, permaneciendo en él hasta el infinito

Diagramas de estados

Los circuitos con elementos secuenciales tienen un estado: Es decir, almacenan un número. Como hemos visto, según transcurre el tiempo, este estado va cambiando. Decimos que evoluciona

Los diagramas de estados nos permiten representar gráficamente el estado del circuito, y hacia dónde va a evolucionar en función del tiempo

Diagrama de estados del biestable D del sistema

Vamos a dibujar el diagrama de estados del Biestable D del sistema. Como almacena un bit, sólo puede estar en dos estados: que denominamos el estado 0 y el estado 1. Cada uno está asociado a los valores 0 y 1 respectivamente. Estos estados se representan mediante dos círculos. Están asociados a la salida q del biestable. Si el biestable se encuentra en el estado 0 significa que tiene almacenado el valor 0, y por tanto por su salida q sale 0

Además se añaden unas flechas que denominamos transiciones. Cada flecha representa un flanco de subida en el reloj. Es decir, una transición al siguiente ciclo. En la parte superior de la flecha se indica el valor de la entrada d del biestable que genera esa transición

El diagrama final para el biestable D del sistema se muestra en esta figura:

Su lectura se realiza de la siguiente manera:

  • Si el biestable se encuentra en el estado 0 y por su entrada d hay un 1, al llegar un flanco de subida se produce una transición al siguiente estado 1. Lo que almacena ahora el biestable es el valor 1
  • Si el biestable se encuentra en el estado 1 y llega un 0 por d, se cambia al estado 0. Ahora se almacena un 0
  • Si el biestable está en el estado 0 y llega un 0 por su entrada, en el flanco de reloj permanecerá en ese mismo estado
  • Si el biestable está en el estado 1 y llega un 1 por su entrada, en el flanco de reloj permanecerá en ese mismo estado

Diagrama de estados del circuito ax-sysdff

Particularizando ahora para el circuito de la ficha, obtenemos su diagrama de estados. Nos indica cómo evoluciona el estado según transcurren los ciclos de reloj

Como la entrada d está cableada al valor 1, no es necesario indicarlo en las tansiciones. Las transiciones ahora representan ciclos

La lectura del diagrama es la siguiente

  • Inicialmente el circuito está en el estado 0 (porque el biestable D vale 0 en el ciclo 0)
  • En el siguiente ciclo se transita al estado 1 (porque ahora el biestable almacena 1)
  • En el resto de ciclos el biestable sigue estando en el estado 1 (así hasta el infinito...)

Así, de un golpe de vista se puede comprobar la evolución del circuito, y qué es lo que ocurre en cada ciclo

Concepto de tiempo

Aunque de una manera muy arcada, al introducir un biestable D del sistema ya somos capaces de trabajar con el tiempo. Si nos fijamos en este circuito, que genera la función escalón, en el ciclo 0 tiene el valor 1. En el resto de ciclos tiene el valor 1. Es decir, mirando el valor de este biestable sabemos si estamos en el ciclo 0 ó NO. Si vemos que tiene el valor 1 no podemos precisar en qué ciclo estamos, pero si sabemos que estamos al menos en el ciclo 1. Estaremos en el ciclo 1 ó mayor

Esta idea es MUY POTENTE. Y nos permite crear circuitos más complejos y útiles

Contador de tiempo

Este primer circuito se comporta como un contador. Cuenta sólo de 0 a 1. Nos permite saber si ha transcurrido 1 ciclo desde el comienzo del circuito (desde el Bit-bang!)

Este contador lo podemos considerar como un contador binario, pero también como el primer contador unario. En el caso unario, 0 significa sin marca y 1 es la marca

Retardo de un ciclo

Este circuito nos permite también comprender una propiedad del biestable, que estudiaremos más adelante. Lo que entra por su entrada d es el bit que se sacará en el siguiente instante por su salida. Es un valor que se retrasa un ciclo. Sin bietable el valor saldría en el ciclo 0, pero al pasarlo por el biestable D del sistema, sale por el ciclo 1. Es decir, que se ha retrasado un ciclo

Medición con el analizador lógico

La señal generada por D0 es un escalón en el ciclo 1. PERO, como ya sabemos, el pin está a 1 durante la configuración de la FPGA. Por lo que la señal real que medimos está a 1, luego se pone un ciclo a 0 y luego de nuevo a 1

El biestable está inicialmente a 0 (pero el pin estaba a 1 durante la configuración de la FPGA), por lo tanto, aunque esta señal NO es time0, en el momento del Bit-Bang se produce un flanco de bajada en q. Es el que podemos aprovechar para realizar la captura con el analizador

Este es el resultado:

Tras el BIT-BANG la señal q se pone a 0(y el analizador empieza la captura). Al cabo de un ciclo (que dura 83.3ns), la salida q se vuelve a poner a 1

En el analizador se muestra la temporización, para comprobar que efectivamente la señal qestá a 0 durante un periodo. También se ha añadido un contador para indicar que estamos en el ciclo 0

Recursos

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

Conceptos nuevos

  • Biestable D del sistema. Es un elemento primitivo que almacena 1 bit de información
  • iceFF: Nombre de la colección de Icestudio con Biestables
  • iceFF.sys-dff. Nombre del biestable D del sistema en Icestudio
  • Circuito STEP1: Circuito que genera la función escalón en el ciclo 1
  • Estado de un circuito: Es la cantidad de bits almacenados
  • Evolución del estado: Los diferentes valores que toman los bits almacenados a lo largo del tiempo
  • Diagrama de estado: Representación gráfica de la evolución del estado
  • Tabla de transiciones: Tabla que indica cuál es el siguiente estado en función de las entradas
  • Estado inicial: Valor inicial de los biestables del circuito
  • Este es el primer circuito que genera una señal NO constante
  • Este es el primer circuito que tiene estado
  • Este es el primer circuito que almacena un bit
  • Es el primer circuito que realiza un retraso de 1 ciclo

Enlaces

Autor

Licencia