PLL alhambra

220 views
Skip to first unread message

txa...@gmail.com

unread,
Jun 18, 2018, 2:36:47 PM6/18/18
to FPGAwars: explorando el lado libre
Hola a todos,
Soy nuevo en esto de las FPGA (he hecho algún proyecto casero pero poco) y especialmente con la alhambra.
He visto que se puede "ralentizar" el reloj de la alhambra con los preescaler, pero me gustaría aumentar la frecuencia, la idea sería tener un bloque con una entrada que sería la señal de reloj de la placa de 12 MHZ y en ese bloque programar una salida de reloj de por ejemplo 36 MHZ o lo que sea, no sé cual sería el limite máximo de frecuencia.

Espero que me podáis entender a que me refiero y me podáis ayudar con algún ejemplo sencillo.

Un saludo y muchas gracias.

Zigor

Juan José Luna Espinosa

unread,
Jun 18, 2018, 3:54:10 PM6/18/18
to fpga-wars-explora...@googlegroups.com
Puedes poner un bloque PLL en el bloque principal verilog. Lo instancias así:

SB_PLL40_CORE #(
        .FEEDBACK_PATH("PHASE_AND_DELAY"),
        .DELAY_ADJUSTMENT_MODE_FEEDBACK("FIXED"),
        .DELAY_ADJUSTMENT_MODE_RELATIVE("FIXED"),
        .PLLOUT_SELECT("SHIFTREG_0deg"),
        .SHIFTREG_DIV_MODE(1'b0),
        .FDA_FEEDBACK(4'b0000),
        .FDA_RELATIVE(4'b0000),
        .DIVR(4'b0000),
        .DIVF(7'd1), // frecuency multiplier = 1 + 1 = 2; 2 * 12 = 24 MHz
        .DIVQ(3'd3),
        .FILTER_RANGE(3'b001),
    ) pll1 (
        .REFERENCECLK   (CLK),       // clk entrada
        .PLLOUTGLOBAL   (outClk),  // clock salida
        .BYPASS         (1'b0),      // ?
        .RESETB         (1'b1)       // Reset se puede controlar, activo con 0
        //.LOCK (LOCK )              // lock es de salida e indica si el pll esta funcionando (frequency locked)
    );

La señal CLK son los 12 MHz.

La señal outClk es el reloj que obtienes multiplicado.

En .RESETB le puedes meter una señal de activacion ( 1 activar PLL, 0 desactivar) Pero tarda un tiempo en activarse.

Donde pone
// frecuency multiplier = 1 + 1 = 2; 2 * 12 = 24 MHz
Seleccionas el multiplicador de frecuencia: outClk = ( 1 + x ) * CLK
No recuerd el valor maximo de X (.DIVF)

Saludos





--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/2c7d8863-415e-4b16-b81f-d69e878b8351%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juanma Rico

unread,
Jun 19, 2018, 2:35:34 AM6/19/18
to FPGAwars: explorando el lado libre
Buenas Zigor,

Tal y como dice Juan José tienes que usar la primitiva del PLL (Phase-Locked Loop), que trae la icezum Alhambra... puedes encontrar un ejemplo en la generación de la señal de reloj en los proyectos que se han hecho para la VGA en el grupo.

Para calcular la frecuencia puedes usar el progrma icepll de las icestorm-tools. En este enlace puedes ver como se utiliza y como está implementado en el fichero "vga_controller.v"

Y en este otro hilo donde yo descubrí su uso y se explica un poco como utilizarlo.

Saludos
Juan Manuel Rico

Jose Pico

unread,
Jun 19, 2018, 3:31:56 AM6/19/18
to FPGAwars: explorando el lado libre
Interesante!
Gracias

txa...@gmail.com

unread,
Jun 19, 2018, 3:26:08 PM6/19/18
to FPGAwars: explorando el lado libre
Muchísimas gracias a todos, a ver si saco un rato y me pongo con ello.

Un saludo.

xto...@gmail.com

unread,
Mar 16, 2019, 4:11:48 PM3/16/19
to FPGAwars: explorando el lado libre
Disculpar mi ignorancia, pero es que me estoy apasionando con esto...
Quisiera saber ¿Esto como se puede realizar con el ICESTUDIO? (si es que se puede hacer)

Estoy viendo el curso que has creado dentro de FPGAs libres, y de ven los divisores de frecuencia ¿pero como obtener un multiplicador?
Quizás no he llegado al punto de saber como se realiza, pero buscando a mayores tampoco lo he encontrado.

Tenga o no respuesta, GRACIAS y mis felicitaciones por abrirme este mundo..

Carlos García

unread,
Mar 17, 2019, 6:29:40 AM3/17/19
to FPGA-WARS: explorando el lado libre
Hola! Lo de los multiplicadores de frecuencia es muy interesante.

Efectivamente con las puertas lógicas se puede conseguir un divisor de frecuencia, pero no un multiplicador.

Los multiplicadores necesitan hardware adicional. Se basan, a grandes rasgos, en un oscilador variable propio. Es un módulo analógico especial cuya frecuencia se puede ajustar pero no es preciso por sí solo.

Lo que llaman PLL es la forma de ajustar ese oscilador variable de forma muy precisa. PLL es Phase Locked Loop, in sistema que permite sincronizar dos relojes de distinta frecuencia para obtener precisión.

Entonces por simplificar, el módulo PLL coge la frecuencia "pura" del cristal oscilador externo, y ajusta el oscilador interno para generar una frecuencia superior basada en el primero. Lo hace con un oscilador interno "malo" pero tiene precisión gracias a que conoce una frecuencia pura del oscilador externo "bueno".

Saludos,
Carlos

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

xto...@gmail.com

unread,
Mar 25, 2019, 6:13:33 PM3/25/19
to FPGAwars: explorando el lado libre
Hola Carlos y a todos aquellos que les pueda interesar...

Es esclarecedor esto que dices.... quiza´s tu contestación viene de la parte que no he dado la información necesaria, el hardware creo que dispongo del mismo, tengo ahora mismo 2 Alambra II, las cuales cuentan claro está con su cristal oscilador para su funcionamiento, supongo que de esta forma y viendo la información respecto al proyecto siguiente : https://groups.google.com/forum/#!msg/fpga-wars-explorando-el-lado-libre/ILwpeJ2Qu_Y/kF0EFafeAwAJ se pueden crear dentro de la propia FPGA dicho multiplicador de frecuencia, (corrigeme si me equivoco), y de echo lo que me gustaría es poder crear un proyecto que tengo en mente con el icestudio por si se decide apliarse posteriormente.

Lo más complicdo creo que sería precisamente esto del multiplicdor de frecuencia, el resto sería una UART configurada en BAUDC como máximo (recordando las diferentes velocidades de la UART -> 1:1200, 2:2400, 3:4800, 4:9600, 5:19200, 6:38400, 7:57600, 8:115200, 9:230400, A:460800, B:921600, C:1382400).

Esto es para cargar los valores de un registro de  contadores (que se puede hacer fácilmente con registros y divisores de frecuencia) y que cotrolen  unos dispositivos por medio de un puerto i2c a una velocidad de unos 6.553.600 bps (64 elementos, 25Hz de refresco, 4096 divisiones "es para hacer algo parecido a un pwm con un hv507" http://ww1.microchip.com/downloads/en/DeviceDoc/20005845A.pdf  )

Bueno... no se que decir, ahora mismo me encuentro saturado, así que mi idea es si ¿sabes de alguien que pudiera realizar dicho programa?, claro sería que pagando. En tal caso escribir a xto...@gmail.com para solicitar más información o indicar cuanto se cobraría por su realización.

GRACIAS.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages