fpga clock muxing

4

Estamos utilizando un fpga con recursos limitados, el IGLOO Nano, por lo que para implementar toda nuestra funcionalidad, necesitamos compartir un FIFO entre dos componentes diferentes de vhdl, que utilizan diferentes relojes.
La funcionalidad es la que se muestra a continuación:

DATA(SCLK) -->|------|              |----------|
              | MUX  |------------->|DATA      |
DATA (CLK) -->|------|              |          |
                                    |   FIFO   |
    SCLK ---->|------|              |          |
              | MUX  |------------->|WCLK      |
    CLK  ---->|------|              |----------|

SCLK = 27MHz y CLK = 13.5MHz no están relacionados.
DATA está sincronizado con SCLK o CLK, dependiendo de lo que esté seleccionado en el MUX.
La herramienta de sintetizador muestra una advertencia: Al analizar una red de reloj cerrada, se han encontrado ambigüedades en las puertas
Mi problema es que los DATOS no están sincronizados correctamente con el FIFO, y la simulación de lugar y ruta de publicación confirma esto. Los DATOS no están alineados correctamente con WCLK, al llegar al puerto de entrada FIFO.
¿Cómo puedo restringir un diseño como el que se muestra arriba, para que los datos siempre estén sincronizados con el WCLK? EDITAR: información adicional, el pin de selección MUX no cambia a menudo.

    
pregunta JakobJ

1 respuesta

4

Te desalentaría para que no intentes MUX los relojes como te muestran. Ya estás viendo que hay problemas al tratar de usar relojes cerrados.

Mis sugerencias -

  1. Encuentre un FPGA más grande que no esté tan limitado por los recursos para su diseño. Hay muchas opciones buenas que son económicas.

  2. Encuentre una manera de combinar sus dominios de reloj en uno solo para que un reloj común pueda manejar todo el diseño.

  3. Particione su diseño para que esté en dos dispositivos separados y cada dispositivo es compatible con un solo dominio de reloj.

respondido por el Michael Karas

Lea otras preguntas en las etiquetas