time0 - Obijuan/Icestudio-Digital GitHub Wiki

Circuito 028-time0

⬅️ Prev Navegar por los circuitos Next ➡️

Contenido

Ficha: Principio time0

Descargas

Descripción

En este circuito se genera la señal time0, y la utilizamos para realizar una medición en los primeros ciclos del reloj, empezando desde el ciclo 0. Para medir cualquier circuito con el analizador lógico necesitamos una señal de referencia que indique cuándo comenzar la captura. La que vamos a utilizar es time0, que indica el momento exacto en el que la señal de reloj nace. Es nuestro origen de tiempo (t=0)

La señal time0 nos indica cuándo comienza el tiempo (t=0), y está expresada en lógica negativa. Es decir, que cuando vale 1 NO está activa (la FPGA está todavía en estado de configuración) y cuando se pone a 0 es que la FPGA está en funcionamiento. Esta señal sale por el pin D0. Por el pin D1 se saca la señal de reloj, para medirla y comprobar que efectivamente ese es el instante en el que nace. A este nacimiento lo denominamos Bit-Bang (En alusión al Big-Bag, momento de nuestro universo donde nació todo, incluso el propio tiempo)

Siempre que necesitemos tomar mediciones con el analizador lógico comenzando en el ciclo 0, tendremos que utilizar la señal time0

Configuración de la FPGA

Para comprender mejor el origen del tiempo dentro de la FPGA necesitamos primero entender el proceso de configuración. Al alimentar la placa, el reloj del sistema arranca. Pero el circuito de la FPGA todavía no. Este circuito en realidad se encuentra descrito por su bitstream, que está almacenado en la Memoria flash

Los pines de la FPGA, en este momento, están en estado de alta impedancia. Es decir, están desconectados. Pero si los leemos externamente veremos que están a estado 1

La FPGA tiene un circuito controlador interno que lo primero que hace es acceder a la memoria Flash y cargar el bitstream en la propia FPGA, para configurarla. Para hacer esto usa el reloj del sistema, que es externo a la FPGA. Este circuito genera una señal interna, que hemos denominado RUN. Cuando está en modo configuración, RUN es 0 y los pines se configuran como se ha indicado

En esta figura se muestran todos los elementos, cuando estamos en el estado de configuración

Durante el proceso de configuración, los pines de la FPGAs han permanecido en alta impendacia. Esto es, que se leen a 1 con el analizador.

En el momento exacto en el que finaliza la configuración, el reloj del sistema se conecta al pin de entrada clk de la FPGA, por lo que comienza el tiempo en su interior (¡Bit-bang!). También, en ese mismo momento, el resto de pines dejan de estar en alta impedancia y se comportan de manera acorde a su configuración (como entradas o como salidas). Nuestro circuito emerge dentro del a FPGA y empieza a funcionar. La señal RUN está ahora a 1, y los pines se han configurado acorde a este valor

En esta figura se muestra la FPGA ya configurada, con el circuito de esta lámina

Por D0 sale la señal time0 y por D1 clk

La señal time0

¿Cómo podemos saber cuándo ha terminado el proceso de configuración de la FPGA y nuestro circuito está arrancado? Lo que hacemos es generar la señal time0, que simplemente es una señal que conectamos a la constante bit-0. De esta manera, durante la configuración, esta señal, que sale por uno de los pines, está a 1. Recordemos que todos los pines están a 1 durante la configuración. PERO en el momento exacto en el que se terminal esta configuración time0 pasa a valor 0

Por tanto, es este flanco de bajada el que nos indica el instante exacto en el que el circuito arranca. Es decir, que utilizaremos el flanco de bajada de time0 para determinar el arranque del sistema. Y será también en ese instante cuando indicaremos al analizador lógico que comience la captura de datos

Siempre que tengamos que medir el tiempo desde el ciclo 0, es necesario generar la señal time0 como se indica en este circuito

El Principio time0

En esta lámina se describe el principio time0 que afirma:

Para realizar una medición con el analizador lógico comenzando desde el ciclo 0, tenemos que generar la señal time0 conectándola al valor constante ´0´. El flanco de baja de ´time0´ es el que indica cuándo empezar la captura

Cronograma

En el cronograma de la lámina se muestran los valores de ambas sañales: time0 y clk. En rojo se destaca la zona donde la FPGA NO ESTÁ CONFIGURADA, y por tanto ambas señales son constantes y de valor 1. A partir del bit-bang la señal time0 se mantiene con valor constante a 0 y el reloj empieza a funcionar

Etiquetas reducidas

Dado que la señal de reloj se usa mucho, solemos usar una etiqueta. En Icestudio las etiquetas ocupan un tamaño relativamente grande

Sin embargo, en los esquemas presentados en las láminas nos puede interesar reducir el tamaño de las etiquetas para mejorar la legibilidad, y sobre todo, tener más espacio disponible para dibujar circuitos más complejos

Por ello utilizaremos etiquetas reducidas, que se dibujan con un tamaño menor, aunque en Icestudio se muestran con su tamaño completo

Midiendo el nacimiento de la señal de reloj

Para comprobar que efectivamente en el bit-bang nace la señal de reloj, y que se trata del ciclo 0, vamos a realizar una medición con el analizador lógico. Por un lado necesitamos la señal time0 para conocer el momento exacto en el que el analizador comenzará a capturar datos

Por otro lado aplicamos el circuito clk para obtener por D1 la señal de reloj. Necesitamos por tanto 3 cables de conexión entre la placa Alhambra-II y el analizador lógico:

  • GND: Señal de masa
  • time0: Señal de arranque. Se saca en la FPGAj por D0 y se conecta al canal 0 del analizador
  • clk: Señal de reloj. Se saca por D1 y se conecta al canal 1 el analizador

Este es el escenario:

No sólo nos interesa ver lo que ocurre a partir de ciclo 0 (instante t=0), sino lo que ocurre un poco antes para comprobar que efectivamente antes del bit-bang NO HAY SEÑAL DE RELOJ dentro de la FPGA, y que su pin D0, como representante del resto de pines, está a 1

Esto lo hacemos configurando el pre-trigger captura ratio con un valor del 10%. Significa que antes del disparo, que se produce en el flanco de bajada de time0, se capturan un 10% del total de muestra. Como lo tenemos configurado para capturar 100 muestras, en total se capturan 10 muestras antes del disparo, y luego 100 tras el disparo. Esto nos permite observar lo que ha ocurrido unos instantes antes de la activación de time0

Para realizar la captura configuramos la frecuencia de muestreo a 24Mhz (El doble de la frecuencia del reloj de la Alhambra), y tomamos 100 muestras. Hay que configurar la señal time0 para que la captura comience en su flanco de bajada

Para realizar la captura pinchamos en RUN en el PulseView y luego en el botón de reset de la Alhambra-II. El analizador realiza la captura, y este es el resultado. Hemos añadido un decodificador que muestra el número de ciclos. Es el decodificador counter, que cuenta los flancos de reloj de la señal de reloj

Este es el resultado de la captura

Comprobamos cómo efectivamente, inicialmente tanto la señal time0 como clk están a 1. En cuanto se ha terminado la inicialización, time0 se pone a 0 y la señal de reloj se pone a oscilar, comenzando el ciclo 0

Circuito MEASURE2

Este es el nombre asignado a un circuito abstracto en el que medimos al menos 2 señales. Típicamente las señales a medir serán time0, que es necesaria para empezar la captura en el instante t=0, y la señal de reloj, `clk, que nos permite saber en qué ciclo estamos

Recursos

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

Conceptos nuevos

  • Bit-Bang: Momento en el que el sistema áparece, y el tiempo empieza a contar (t=0)
  • Señal time0: Señal que indica el origen temporal en el flanco de bajada
  • Principio time0: Para realizar una medición con el analizador lógico comenzando desde el ciclo 0, tenemos que generar la señal time0 conectándola al valor constante ´0´. El flanco de baja de ´time0´ es el que indica cuándo empezar la captura
  • Etiquetas reducidas: Las etiquetas mostradas en los esquemas de las láminas se muestra con un tamaño menor al real, para que los circuitos sean más legibles y se puedan hacer otros más complejos
  • Circuito MEASURE2: Circuito para realizar mediciones de 2 señales. Se generan las señales time0 y clk típicamente

Enlaces

Autor

Licencia