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.