Skip to content

unary‐n‐timer

Juan Gonzalez-Gomez edited this page Dec 9, 2025 · 45 revisions

Circuito 055-unary-n-timer

⬅️ Prev Navegar por los circuitos Next ➡️

Contenido

Ficha: Temporizador unario de N ciclos

Descargas

Descripción

Este circuito es un esquema de circuito que describe cómo construir un temporizador unario capaz de medir un tiempo de N ciclos. Transcurrido ese tiempo, el temporizador activa su señal MAX. Esto nos permite saber con total precisión cuándo han transcurrido los N ciclos tras el arranque del sistema en el ciclo 0 (el Bit-bang)

Su estructura es la misma que la del Circuito unary-n, pero se descartan las salidas de todos los biestables salvo la del situado en la derecha. Así, este circuito tiene en realidad una única salida (MAX), que indica cuándo han transcurrido los N ciclos

Evolución del estado

El estado del circuito es el mismo que el de unary-n. Está formado por N biestables conectados en serie. El 1 entra por la izquierda en el ciclo 1, y sale por la derecha en el ciclo N

Diagrama de estados

El diagrama de estados es el miso que el de unary-n

Cronograma

El cronograma sólo incluye una señal, la correspondiente a la salida del temporizador: MAX. Se activa una vez que han transcurrido los N ciclos

Midiendo el tiempo

La señal MAX tarda un tiempo D en activarse desde que se enciende el circuito. Este tiempo, medido en ciclos es N. Pero si lo medimos en tiempo, la duración D en segundos es de:

$$D = N.T = \frac{N}{F_{sys}}$$

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 $F_{sys}$

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 temporizador unario de N biestables

Caso de estudio: temporizador unario de 12 Biestables

Vamos a estudiar el caso particular de un temporizador unario de 12 biestables D del sistema. Como tiene 12 biestables, nos permite contar hasta el ciclo 12. Aplicando la fórmula anterior, podemos calcular la duración de esta señal. Como se está utilizando la placa Alhambra-II, sabemos que $F_{sys}=12Mhz$, y al tener 12 biestables, $N=12$

Sustituyendo en la fórmula tenemos que:

$$D = \frac{N}{F_{sys}} = \frac{12}{12Mhz} = \frac{1}{10^6} = 10^{-6} = {1µs}$$

Este circuito empieza a contar en el ciclo 0 y el LED0 se enciende con la señal MAX, cuando han transcurrido exactamente 1µs (un micro-segundo)

Para implementar este circuito hay que conectar 12 biestables del sistema en serie. Por la izquierda se conecta un 1 constante, para realizar la cuenta en unario. La señal MAX se toma del biestable de la derecha

Esta conexión de 12 biestables se puede implementar de múltiples maneras, utilizando sólo biestables del sistema o bien registros de desplazamiento concatenados

Como ejemplo vamos a mostrar 4 implementaciones, pero habría muchas más:

Implementación sólo con biestables del sistema

Se conectan los 12 biestables en serie, dispuestos en 3 filas. Las filas se conectan entre ellas mediante etiquetas. La salida del biestable de la derecha (B0) se muestra en el LED

Implementación con registros de desplazamiento de 2 bits

En esta implementación se utilizan 6 registros de desplazamiento de 2 bits (02-sreg-sr-basic) concatenados

Implementación con registros de desplazamiento de 3 bits

En esta implementación se utilizan 4 registros de desplazamiento de 3 bits (03-sreg-sr-basic) concatenados

Implementación con registros de desplazamiento de 4 bits

En esta implementación se utilizan 3 registros de desplazamiento de 4 bits (04-sreg-sr-basic) concatenados

Mediciones con el analizador lógico

Todas las implementaciones son equivalentes. En este pantallazo se muestran las mediciones para la primera implementación

Comprobamos que efectivamente el temporizador se activa transcurrido 1µs

Limitaciones en el tiempo medido

¿Cuál es el tiempo máximo que podemos medir? Dado que es un temporizador unario de $N_{max}$ ciclos, necesitamos $N_{max}$ biestables (+1 adicional). Sabiendo que en total tenemos 7680 celdas lógicas en la placa Alhambra-II, llegamos a la conclusión de que como mucho podríamos contar hasta 7680 ciclos (sería uno menos, pero lo redondeamos)

Si esto lo pasamos a tiempo (calculando $$D_{max}$$), tenemos que el tiempo máximo que se puede medir es:

$$D_{max} = \frac{N_{max}}{F_{sys}} = \frac{7680}{12Mhz} = 640x10^{-6} = 640µs$$

¡¡Sólo podemos medir un tiempo igual a 640µs (aprox.)!!

Recursos

En cada celda lógica hay un biestable D. Por tanto para implementar un temporizador unario de N biestables necesitamos al menos N celdas lógicas. Debido a la inclusión de la constante 1, necesitamos un bloque adicional, porque lo que, de manera general (y aproximada) el número celdas lógicas utilizadas por un temporizador unario de N marcas es de N+1

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

Conceptos nuevos

  • Temporizador unario de N ciclos. Es el primer temporizador que nos permite medir tiempo, hasta un máximo de 640µs (en la placa Alhambra-II)

Enlaces

Autor

Licencia

Clone this wiki locally