Ventaja de habilitación de reloj sobre división de reloj

3

Tengo un diseño FPGA que utiliza diferentes relojes. Hay un reloj de referencia de 100 MHz proporcionado por un oscilador. El reloj de referencia se usa en un DCM (Xilinx FPGA) para generar 3 relojes relacionados, 100 MHz, 50 MHz y 10 MHz (sin desfase). En situaciones como esta, el consejo de los vendedores de herramientas y colegas es usar solo un reloj, el de 100 MHz, y en lugar de los otros, los relojes crean habilitaciones de reloj que solo están activas cada 5º / 10º ciclo de reloj.
¿Cuál es la ventaja de hacer esto? Sí, solo habrá un reloj y el análisis de tiempo será más fácil, pero eso es un problema de la herramienta y no debe dictar decisiones de diseño fundamentales.
Especialmente para un diseño con una alta utilización del dispositivo, puedo ver las ventajas de los relojes divididos, ya que, por ejemplo, El dominio de reloj de 10 MHz tendrá un tiempo mucho más fácil para lograr el cierre de tiempo y "dejará más espacio" para la ubicación y el enrutamiento de la lógica en el dominio de reloj de 100 MHz. Con el reloj permite descuidar esta ventaja.

    
pregunta damage

1 respuesta

6

Hay varias ventajas de esta metodología en las que puedo pensar:

  1. Red de reloj : en primer lugar, solo tienes un reloj en lugar de tres. Esto significa que hay menos competencia para los recursos de enrutamiento del reloj global y local. Por lo general, solo hay una pequeña cantidad de árboles de reloj con poca inclinación, por lo que minimizar los requisitos de uso puede ayudar al enrutamiento.

  2. Restricciones de ALM : en función de la estructura de los ALM / bloques lógicos, es posible que solo pueda sincronizar cada bloque desde un solo reloj, es decir, no puede tener dos registros activados. Dos dominios de reloj diferentes en el mismo bloque. Si este es el caso de su FPGA, entonces usar solo un único dominio de reloj habilitado para reloj podría permitir que la lógica esté más compacta en un diseño que tenga un alto% de bloques utilizados. Un embalaje más apretado puede llevar a una mayor probabilidad de cumplir con el calendario ya que todo está más cerca.

  3. Transferencia de dominio de reloj : otra consideración importante es ir entre los relojes. Si necesita transferir datos entre los dominios de reloj, entonces hay dos opciones.

    Si no tiene ninguna referencia entre los relojes como sería el caso si divide el reloj completo (no sabe qué borde del reloj rápido corresponde al reloj lento), entonces su transferencia debe ser asíncrona que implica el dolor de cabeza adicional de FIFO para datos y cadenas de sincronizador para señales de control.

    Por otra parte, si usa una habilitación de reloj para reducir la velocidad, sabe exactamente cuándo se van a cruzar el reloj lento y el reloj rápido, esto lo sabe al monitorear la señal de habilitación del reloj. Por ejemplo, si desea transferir datos de su / 10 dominio a su / 1 dominio, entonces no necesita FIFO para hacerlo, simplemente dice que la señal de habilitación de reloj también es una señal válida. Debido a que son el mismo reloj, no se necesita transferencia de dominio de reloj.

    Es posible realizar transferencias de dominio desde relojes PLL si puede hacer un seguimiento de los bordes del reloj, por ejemplo, pasar de un / 1 a un / 2 y viceversa es fácil porque puede comparar los relojes rápidos y lentos. directamente para sincronizar. Sin embargo, esto depende de la estructura del FPGA: algunos no permitirán fácilmente que se introduzcan los relojes para buscar tablas como entradas de datos.

  4. Recursos valiosos : en los FPGA más pequeños, los PLL son pocos y distantes entre sí. Por ejemplo, los FPGA Spartan-6 LX9 si recuerdo correctamente, ¡solo tengo dos sitios PLL! Lo ideal es que desee guardarlos para elementos como interfaces externas (LVDS, Memoria, etc.) y no usarlos para la división de reloj general. ¿Por qué usar un PLL valioso para nada más que una división de reloj de enteros cuando es posible hacerlo en la lógica general?

    Además, al usar el reloj habilitado, su división es simplemente un contador que puede implementarse en cualquier lugar del FPGA. Por otro lado, los PLL se encuentran en áreas específicas. Digamos que necesita un reloj local en un lado del chip, pero el único PLL libre está en el otro lado. Debe usar no solo un PLL remoto, sino también un enrutamiento de reloj global valioso para obtener el reloj hasta el otro lado del chip donde se usa localmente. Si, por el contrario, crea un contador para habilitar el reloj, puede colocarse justo al lado de la lógica, lo que reduce el uso de recursos valiosos.

Esas son solo las razones de mi cabeza. Intentaré algunas cosas más, y también agregaré algunos argumentos "por qué PLL es favorable a CE".

En respuesta a tu punto final sobre el tiempo. En la práctica, usar un reloj lento o un reloj rápido habilitado para el reloj no afecta demasiado el enrutamiento. Realmente, sus diseños deben tener todos los registros que utilicen el flanco ascendente de un reloj (o que todos utilicen el flanco descendente) pero no mezclar y combinar (excepto tal vez en los búferes de E / S DDR). Como resultado, ambos relojes aún tienen sus bordes sensibles al mismo tiempo. El reloj rápido tiene n más veces, pero el reloj no está habilitado, por lo que estos se ignoran.

Esto significa que puede decirle a su herramienta de análisis de tiempo que el reloj es multiciclo, es decir, solo uno de los ciclos n es válido, o decirle que es un reloj más lento con un reloj estrecho. ciclo de trabajo. Ambas formas le permiten a la herramienta saber que puede permitir múltiples periodos rápidos de tiempo de configuración y tiempo de espera en sus cálculos (porque los valores de registro no cambiarán cuando el reloj no esté habilitado).

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas