-
Notifications
You must be signed in to change notification settings - Fork 0
unary‐n‐timer
| ⬅️ Prev | Navegar por los circuitos | Next ➡️ |
|---|
- Ficha: Temporizador unario de N ciclos
- Descargas
- Descripción
- Evolución del estado
- Diagrama de estados
- Cronograma
- Midiendo el tiempo
- Caso de estudio: Temporizador unario de 12 biestables
- Limitaciones en el tiempo medido
- Recursos
- Conceptos nuevos
- Enlaces
- Autor
- Licencia
- Circuito Icestudio: Caso de estudio: unary-12-timer.ice
- Ficha circuito: (SVG) (PDF) (PNG)
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
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
El diagrama de estados es el miso que el de unary-n
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
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:
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
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
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
Sustituyendo en la fórmula tenemos que:
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:
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

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

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

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

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
¿Cuál es el tiempo máximo que podemos medir? Dado que es un temporizador unario de
Si esto lo pasamos a tiempo (calculando
¡¡Sólo podemos medir un tiempo igual a 640µs (aprox.)!!
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 |
- 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)
- 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
- Juan González-Gómez (Obijuan)
- shift
- shift-reg2
- sreg-02-sys-sr-basic🟡
- sreg-concat-left
- sreg-concat-right
- concat-sysdff-sreg2
- concat-sreg2-sysdff
- sreg-03-sys-sr-basic🟡
- concat-sreg2-sreg2
- sreg-04-sys-sr-basic🟡
- unary-ii🔵
- unary-iii
- unary-n🔴
- unary-ii-timer
- unary-ii-timer-bmax
- unary-iii-timer
- sreg-unary-ii-timer
- sreg-unary-iii-timer
- unary-n-timer
- sreg-unary-n-timer
- unary-ii-wait🔵
- unary-ii-wait2🔵
- unary-ii-wait2-simp
- unary-ii-rst
- unary-iii-rst
- unary-mod3🔵
- unary-mod4
- unary-modn
- unary-mod2🔵
- unary-prescaler1:2
- unary-prescaler1:2-ini
- unary-prescaler1:3
- unary-prescaler1:4
- unary-prescaler1:n
- heart-prescaler1:2🟡
🚧 TODO 🚧
- 🟡: Nuevo bloque introducido
- 🔵: Circuito importante
- 🔴: Presentación de limitaciones y retos a superar