Repository navigation
unary‐prescaler1:n
| ⬅️ Prev | Navegar por los circuitos | Next ➡️ |
|---|
- Ficha: Divisor del reloj del sistema entre n
- Descargas
- Descripción
- Prescaler 1:N
- Principio del prescaler unario
- Frecuencias generadas en la Alhambra-II
- Árbol de relojes
- Señal periódica
- Fase inicial
- Evolución del estado
- Diagrama de estado
- Cronograma
- Ciclo de trabajo
- Recursos
- Caso de estudio: N=6
- Caso de estudio: N=12
- Caso de estudio: N=120
- Caso de estudio: N=1200
- Resultado
- Conceptos nuevos
- Enlaces
- Autor
- Licencia
- Circuitos: (unary-prescaler1_6.ice) (unary-prescaler1_12.ice) (unary-prescaler1_120.ice) (unary-prescaler1_1200.ice)
- Ficha circuito: (SVG) (PDF) (PNG)
Este circuito muestra el esquema de un prescaler unario 1:n. Se puede ver como la generalización del circuito unary-mod4
El prescaler unario 1:n genera una señal de salida cuya frecuencia está dada por la ecuación:
Para generar esta señal se utiliza un contador unario módulo n. El circuito de este prescaler es similar a unary-modn, pero quedándose sólo con la salida del bit de la derecha
Definimos un prescaler 1:N como un circuito que genera a su salida una señal con frecuencia igual
Este circuito se implementa a partir de un contador unario módulo N (Circuito: unary-modn)
En esta tabla se resumen sus características:
| PROPIEDAD | VALOR |
|---|---|
| Implementación: | Contador unario módulo N |
| Periodo: | N ciclos |
| Estado: | N-1 biestables |
| Ciclo de trabajo: | 1/N |
| Fase inicial: | i*360/N, con i ∈ [0, N-1] |
- Para implementar un prescaler unario 1:N hay que utilizar un contador unario módulo N, y tomar como salida la del biestable de la derecha
Con este prescaler genérico, ya somos capaces de generar muchas señales de temporización, cuyas frecuencias dependen del valor N:
Para el caso de la placa Alhambra-II, sabemos que
NO son infinitas señales, porque N tiene un valor máximo, que depende del número de bistables totales (que son N-1). Así que, el valor máximo de N está determinado por los recursos internos de la placa Alhambra-II
Aproximadamente el número todal de biestables que podemos poner son de 7680, así que, aproximadamente, N es 7680. El valor de N va desde 2 hasta 7680
En esta tabla se muestran algunas de las frecuencias que se pueden obtener
| Divisor (N) | Prescaler | Frecuencia | Descripción |
|---|---|---|---|
| 1 | 1:1 | 12Mhz | Fsys: Reloj del sistema |
| 2 | 1:2 | 6Mhz | |
| 3 | 1:3 | 4Mhz | |
| 4 | 1:4 | 3Mhz | |
| 6 | 1:6 | 2Mhz | |
| 12 | 1:12 | 1Mhz | |
| 120 | 1:120 | 100Khz | |
| 600 | 1:600 | 20Khz | Comienzo del rango audible |
| 1200 | 1:1200 | 10Khz | Audible |
| 7680 | 1:7680 | 1.5Khz (aprox) | Audible. Frecuencia mínima |
A partir de N=600, ya se obtiene una señal periódica de frecuencia 20Khz. Esta señal se encuentra dentro del rango audible. Es muy aguda, pero los humanos lo podemos percibir. Si esta señal se envía a un zumbador, seremos capaces de escuhar el pitido, aunque muy muy bajito, porque el ciclo de trabajo sería 1/600 = 1.7% aprox. Estamos enviando muy poca potencia
Para N=1200 obtenemos una señal de 10Khz, que también es audible. Esta ya no está en el límite: la escuchará cualquier humano sano
El valor máximo para N es de 7680 aproximadamente, lo que nos da una frecuencia mínima de 1.5Khz. Es decir, que con estos prescalers unarios la señal de menor frecuencia que podemos obtener es de 1.5KHz
Esto nos deja sin responder a la pregunta que teníamos abierta: ¿Cómo generar una señal de 1Hz?. Con los prescaler unarios necesitaríamos una FPGA muchísimo más grande. Pero podemos intuir que aunque estos prescaleers son muy sencillos, necesitamos una implementación más potente. Todavía nos queda un largo recorrido hasta llegar a ellos...
Mediante los prescalers 1:n ya somos capaces de obtener señales de muchas frecuencias. Sin embargo, los prescalers unarios son todavía muy limitados. Requieren de muchos recursos (biestables) para obtener señales de baja frecuencia (como ya hemos visto). Por ello, en la práctica, como mucho los usamos para obtener hasta señales de 1Mhz (en la placa Alhambra-II). Este sería un árbol realista:
En los casos de estudio veremos cómo generar señales de 1Mhz, 100Khz y 10Khz, pero sólo como un ejemplo de implementación
Un prescaler unario 1:N genera una señal periódica normalizada de periodo N. El oscilador asociado lo dividimos en N sectores, lo que nos da un incremento de fase mínimo:
La función digital la definimos así:
La señal cambia de ciclo en las fases:
En esta figura se muestra la representación gráfica:
El oscilador puede comenzar en los valores 000...0, 100...0, 110...0 ... 111...1, que se corresponden con las fases iniciales
Esta es la evolución del estado del circuito, en función de la fase inicial del oscilador
El diagrama de estados es el mismo que unary-modn. La diferencia está en el valor inicial, que determina el punto de arranque y por tanto el valor de la señal en el instante inicial. En la figura se muestra el diagrama para la fase inicial de 0
Este es el cronograma de la señal cuando tiene una fase inicial de 0
El ciclo de trabajo de todas las señales es el mismo: 1/N, con independencia de la fase inicial
| Recurso | Cantidad | Máximo | Descripcioin |
|---|---|---|---|
| LC | N+1 | 7680 | Celdas lógicas |
| IO | N+1 | 256 | Bloques de E/S |
Construcción de un prescaler unario 1:6
| PROPIEDAD | VALOR |
|---|---|
| Implementación | Contador unario módulo 6 |
| Periodo | 6 ciclos |
| Estado | 5 biestables |
| Ciclo de trabajo | 1/6 = 16.6% |
| Incremento de fase | 360/6 = 60⁰ |
Esta es la implementación en Icestudio

Medición de la señal de salida. Se comprueba que es de 2Mhz

Construcción de un prescaler unario 1:12
| PROPIEDAD | VALOR |
|---|---|
| Implementación | Contador unario módulo 12 |
| Periodo | 12 ciclos |
| Estado | 11 biestables |
| Ciclo de trabajo | 1/12 = 8.3% |
| Incremento de fase | 360/12 = 30⁰ |
Esta es la implementación en Icestudio. Se han encapsulado los bloques con la puerta AND y sysdff en sus propios bloques: SYSDFF-AND6 y SYSDFF-AND4

En total hay 11 biestables, de los cuales 10 están en los bloques sysdff-and, y uno aislado con la puerta NOT a su salida
Así es como está implementado el bloque sysdff-and6:

Estos bloques son LOCALES para estos ejemplos. NO ESTÁN INCLUIDOS en ninguna colección estándar. Los usamos para hacer más sencilla la implementación en Icestudio, y poder escalar más fácilmente
Medición de la señal de salida. Se comprueba que es de 1Mhz

Construcción de un prescaler unario 1:120
| PROPIEDAD | VALOR |
|---|---|
| Implementación | Contador unario módulo 120 |
| Periodo | 120 ciclos |
| Estado | 119 biestables |
| Ciclo de trabajo | 1/120 = 0.8% |
| Incremento de fase | 360/120 = 3⁰ |
Esta es la implementación en Icestudio. Se utilizan los bloques SYSDFF-AND12 y SYSDFF-AND10 para tener 119 Biestables, que son los que necesitamos para tener módulo N=120
- Número de biestables: 9 * 12 + 10 + 1 = 119

Así es como está implementado el bloque sysdff-and12:

Medición de la señal de salida. Se comprueba que es de 100Khz

Construcción de un prescaler unario 1:1200
| PROPIEDAD | VALOR |
|---|---|
| Implementación | Contador unario módulo 1200 |
| Periodo | 1200 ciclos |
| Estado | 1199 biestables |
| Ciclo de trabajo | 1/1200 = 0.08% |
| Incremento de fase | 360/1200 = 0.3⁰ |
Esta es la implementación en Icestudio. Se utilizan los bloques SYSDFF-AND120 y SYSDFF-AND118 para tener 1199 Biestables, que son los que necesitamos para tener módulo N=1200
- Número de biestables: 9 * 120 + 118 + 1 = 1199

Así es como está implementado el bloque sysdff-and120:

Medición de la señal de salida. Se comprueba que es de 10Khz

Para todos los valores de N, se enciende el LED D7, pero con una intensidad que disminuye con N
- Señal periódica normalizada: Señal periódica que emite pulsos que son tics: tienen una anchura igual al periodo de reloj
- Principio del prescaler unario: Para implementar un prescaler unario 1:N hay que utilizar un contador unario módulo N, y tomar como salida la del biestable de la derecha
- iceGates: Colección de Icestudio con puertas lógicas
- 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🟡
- 1hot-ii🔵
- 1hot-iii
- 1hot-n
- 1hot-ii-timer
- 1hot-iii-timer
- zero-sreg-1hot-iii-timer
- tic0🟡
- tic0-sreg-1hot-iii-timer
- 1hot-n-timer
- 1hot-mod2🚧
🚧 TODO 🚧
- 🟡: Nuevo bloque introducido
- 🔵: Circuito importante
- 🔴: Presentación de limitaciones y retos a superar