Trabajar con el reloj Spartan-6 LX9

1

Soy un principiante en diseño digital y estoy aprendiendo cosas usando "Advanced Digital Design with the Verilog HDL" junto con una placa Spartan-6 LX9 de Xilinx. Hasta ahora he logrado parpadear algunos leds en el tablero comenzando con un ejemplo del sitio web de Xilinx. El código se puede encontrar aquí . Sin embargo, no pude entender completamente parte del ejemplo de DCM. Según tengo entendido, este es un módulo específico del proveedor que se utiliza para cambiar la fase del reloj, etc. Básicamente, es un módulo que ajusta la entrada del reloj en bruto. No pude encontrar una documentación para ese módulo para mi placa LX9, y la más cercana que encontré es para Spartan-3A ( aquí ). Así que tengo algunas preguntas:

  • ¿Existe alguna documentación que sea genérica o que cubra la placa Spartan-6 LX9?
  • ¿Es absolutamente necesario usar este módulo en este ejemplo? ¿Es posible hacer lo mismo fácilmente sin usar ese módulo?
  • ¿Cómo suele la gente hacer cosas específicas del vendedor, como el reloj? Por ejemplo, si uno quiere apuntar tanto a los FPGA de Altera como a los de Xilinx. ¿Cuál es el proceso para lograrlo? ¿Es similar a los typedefs normales de preprocesadores C, etc.?

También, ¿por qué ahora está permitido mover assign LED[3:0] = led_count[26:23]; dentro del bloque always @ ? ¿Es porque el LED no es una variable de registro? ¿Y con qué frecuencia se ejecuta esa "línea de código"? En el libro que estoy leyendo, todo suele ir en el ámbito always @ (pero no funcionan con puertos de salida específicos).

Muchas gracias por tu ayuda.

    
pregunta

1 respuesta

2
  1. ¿Existe alguna documentación que sea genérica o que cubra la placa Spartan-6 LX9?

    El DCM está completamente contenido dentro del chip FPGA. Así que no importa qué tabla tengas. La documentación se basará en el chip que tengas.

    Para la familia Spartan-6, consulte Spartan 6 Clocking Resources Guía del usuario

  2. ¿Es absolutamente necesario usar este módulo en este ejemplo? ¿Es posible hacer lo mismo fácilmente sin utilizar ese módulo?

    Si solo está parpadeando los LED, probablemente no necesite usar el DCM. Probablemente lo usaron porque es un bloque muy complicado y específicamente querían proporcionar un ejemplo de uso del DCM sin mucho más en la lógica compleja para confundir las cosas.

  3. ¿Cómo suelen hacer las personas las cosas específicas de los proveedores, como el reloj? Por ejemplo, si uno quiere apuntar tanto a los FPGA de Altera como a los de Xilinx. ¿Cuál es el proceso para lograrlo? ¿Es similar a los typedefs normales de preprocesadores C, etc.?

    Desafortunadamente, los núcleos duros complejos como la administración del reloj es una de las áreas donde no hay mucha compatibilidad entre los proveedores. Es probable que tenga que realizar cambios significativos en el código si desea un diseño que use estas características que sea portátil entre dos familias de dispositivos, ya sean del mismo proveedor o de proveedores diferentes.

    Si puede simplificar su interfaz de modo que solo tenga un reloj de entrada proveniente de fuera de chip y una serie de relojes derivados que se distribuyen al resto de su lógica, la solución más limpia es probablemente presionar a todos los proveedores - código específico en un solo módulo que puede instanciar en su código de nivel superior. Luego, puede usar un módulo de "administración de reloj" diferente según el dispositivo al que se dirija.

    Si desea hacer algo como cambiar dinámicamente la relación de fase entre varios relojes, o cambiar entre varias opciones de frecuencia de reloj de referencia, probablemente no tenga más remedio que codificar partes sustanciales de lógica para diferentes dispositivos de destino.

    Recuerde que además del código de Verilog, probablemente también habrá muchas restricciones que deben definirse, y éstas también deberán ser diferentes para diferentes dispositivos.

respondido por el The Photon

Lea otras preguntas en las etiquetas