Salida de reloj inestable Spartan 6 DCM

2

Recursos de cronometraje de Spartan 6. El enlace aquí se refiere a los recursos de cronometraje de spartan-6 FPGA. Estoy utilizando la primitiva DCM-CLKGEN descrita en el enlace, para generar un reloj de 8x basado en un reloj de entrada. Funciona bien siempre que el reloj de entrada sea estable.

Pero ahora muevo el reloj de entrada a cada 90 us en un 5%. Veo que aunque el DCM no pierde el bloqueo, toma mucho tiempo (15 a 20) cambiar la frecuencia de salida después de cambiar la frecuencia de entrada. Esto es para mí indeseable. ¿Alguna sugerencia?

Esta pregunta se publicó en el foro de xilinx y la sugerencia fue restablecer el DCM cada vez que pierde el bloqueo. Pero el problema es que el DCM no está perdiendo el bloqueo

Además, esto se publicó anteriormente en stackoverflow y ahora se ha vuelto a publicar aquí.

    
pregunta Sai Gautam

3 respuestas

1

Soy nuevo en los FPGA, pero no creo que esta sea la forma de hacerlo. Por lo que sé, la frecuencia del reloj principal no debe cambiar. Si desea utilizar una parte de FPGA como un bloque lógico asíncrono, intente implementar el divisor de reloj usted mismo alternando el reloj más lento en el proceso de borde ascendente del reloj más rápido. Por lo tanto,

architecture
signal mainDiv2: sdt_logic;
signal mainDiv4: sdt_logic;
signal mainDiv8: sdt_logic;
begin
proc1: process(mainCLK)
begin
  if rising_edge(mainCLK) then mainDiv2 = not mainDiv2;
  end if;
end process proc1;

proc2: process(mainDiv2)
begin
  if rising_edge(mainDiv2) then mainDiv4 = not mainDiv4;
  end if;
end process proc2;

proc3: process(mainDiv4)
begin
  if rising_edge(mainDiv4) then mainDiv8 = not mainDiv8;
  end if;
end process proc3;

No tengo idea de si esto funcionará. Debería explorar más sobre cómo implementar un FPGA para su aplicación en particular en lugar de tratar de arreglar algo con lo que podría estar equivocado. Déjame saber cómo va.

    
respondido por el Nazar
1

El DCM está optimizado para proporcionar un reloj estable a la estructura lógica. No está diseñado para tratar con una frecuencia de entrada modulada. En la página 59 de la hoja de datos de características de conmutación y CC de Spartan 6 / p>

  

Esta pregunta se publicó en el foro de xilinx y la sugerencia fue restablecer el DCM cada vez que pierde el bloqueo. Pero el problema es que el DCM no está perdiendo el bloqueo

¿Puede restablecer el DCM cada vez que cambia la frecuencia de entrada? Tenga en cuenta que después de reiniciar el DCM, es probable que todavía nos lleve muchos a recuperar el bloqueo.

    
respondido por el The Photon
1

Los PLL y DLL en chip de un FPGA están diseñados específicamente para proporcionar relojes estables y de bajo jitter a la lógica interna, incluso si la referencia externa no es tan buena. Como tal, el ancho de banda del bucle se hace lo más estrecho posible para una máxima atenuación de fluctuación de fase, dentro de las restricciones de una implementación en chip. NO están diseñados para ser ágiles en frecuencia de la forma en que intenta usarlos.

Si solo necesita dividir un reloj de entrada por 8, no debería usar un DCM en absoluto. Todo lo que necesita es un simple contador implementado en el tejido.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas