Ce comportement est causé par les caractéristiques matérielles du MLAB. La sortie d’un MLAB est toujours mise à jour lorsqu’une opération d’écriture se produit et que l’adresse d’écriture est égale à l’adresse de lecture. Lorsque vous écrivez au dernier emplacement disponible dans une mégafunction SCFIFO basée sur MLAB, l’indicateur complet est indiqué et les nouvelles données sont stockées et se propagent à la sortie. Le débit SCFIFO affiche les données correctes le cycle après une demande de lecture. Ce comportement (comme le montre la Figure 1 ci-dessous) se produit pendant les tests de la carte ou lors d’une simulation avec la netlist de conception SCFIFO. Ce comportement ne se produit pas lors d’une simulation de modèle fonctionnel SCFIFO.
Ce comportement ne se produit pas pour les mégafunctions SCFIFO implémentées dans d’autres types de blocs mémoire (M512, M4K, M9K, M144K, M20K et M-RAM). Pour une mégafunction SCFIFO implémentée dans l’un de ces types de blocs mémoire, lorsque vous écrivez au dernier emplacement disponible dans la mégafunction SCFIFO, l’indicateur complet est indiqué et les nouvelles données sont stockées, mais la sortie ne changera pas. Les mises à jour de sortie ne sont effectuées que lorsque la demande en lecture est revendiquée.
Les mégafunctions SCFIFO générées avec les versions 7.0 et ultérieures du logiciel Quartus® II avec les paramètres suivants dans le plug-in MegaWizard™ sont affectées :
- Le mode FIFO synchrone normal est sélectionné pour l’option d’accès en lecture
- MLAB est sélectionné pour le type de bloc mémoire
- Aucune (plus petite zone) n’est sélectionnée pour l’option des registres de sortie
Pour éviter ce comportement, effectuez l’une des modifications suivantes à votre mégafunction SCFIFO :
- Changez l’option du registre de sortie du non (plus petite zone) à Oui (meilleure vitesse). Notez que la latence de sortie de la mégafunction SCFIFO est la même dans les deux modes
- Sélectionnez un type de bloc mémoire différent
Dans les prochaines versions du logiciel Quartus® II, le plug-in MEGAWizard SCFIFO est prévu pour désactiver l’option de type de bloc mémoire MLAB lors de la sélection des options FIFO synchrones normales et non (plus petite zone).
La Figure 1 montre la forme d’ondes d’une mégafunction SCFIFO basée sur MLAB. La demande de lecture dans le cycle 9 produit des données valides à la sortie du cycle 10. Même sans une demande de lecture supplémentaire, la demande d’écriture dans le cycle 12 entraîne la mise à jour de la sortie vers de nouvelles données dans le cycle 14. La prochaine demande de lecture dans le cycle 15 produit à nouveau des données valides à la sortie du cycle 16.
Figure 1. Forme d’ondes SCFIFO basée sur MLAB