Analyse temporelle et CDC

Dans une FIFO asynchrone, le pointeur de l'autre côté est utilisé après synchronisation, si bien que la valeur visible a 2 à 3 cycles de retard. Quel est l'effet correct de ce retard sur la détection de full/empty ?

  1. ALa levée de full ou d'empty est seulement retardée ; il ne se produit ni débordement ni lecture à vide
  2. BLa détection de full étant retardée, on peut écrire de trop et faire déborder les données
  3. CLa détection d'empty étant retardée, on peut lire une FIFO vide
Afficher la réponse et l'explication

Réponse : A. La levée de full ou d'empty est seulement retardée ; il ne se produit ni débordement ni lecture à vide

Le pointeur de lecture vu par le côté écriture est une valeur ancienne : la lecture semble moins avancée qu'en réalité, et la FIFO est jugée plus remplie qu'elle ne l'est. Autrement dit, full est toujours activé quand la FIFO est réellement pleine, et seule sa levée après libération de place est un peu retardée. Il en va de même pour empty côté lecture : les données nouvellement écrites deviennent simplement visibles avec retard. Les deux effets jouent dans le sens de la sécurité (pessimiste), donc les données ne sont pas corrompues, mais on prévoit une marge de profondeur pour compenser ce retard et préserver les performances.

Structure d'une FIFO asynchrone Côté écriture (wclk) Côté lecture (rclk) RAM double port 2 horloges distinctes Données à écrire Pointeur écriture Codage Gray Données lues Pointeur lecture Codage Gray Sync. 2 FF Détection empty Sync. 2 FF Détection full Pointeurs en code Gray En code Gray, un seul bit change à chaque pas
Structure d'une FIFO asynchrone · Voir dans les schémas
S'entraîner sur ce thème Retour au thème

Autres questions sur Analyse temporelle et CDC

  1. Dans une FIFO asynchrone dont le côté écriture est à 100 MHz et le côté lecture à 80 MHz, le côté écriture écrit des rafales de 100 mots à raison d'un mot par cycle, et le côté lecture lit un mot par cycle. Il y a suffisamment de temps de repos entre les rafales. Quelle est la profondeur minimale nécessaire pour éviter tout débordement (le retard dû à la synchronisation est ignoré) ?
  2. Le côté écriture écrit, à 200 MHz, des rafales de 120 mots à raison d'un mot par cycle. Le côté lecture, avec une horloge de 150 MHz, ne lit un mot que pendant 2 cycles sur 3. Quelle est la profondeur minimale nécessaire pour éviter tout débordement (le retard dû à la synchronisation est ignoré) ?
  3. Le côté écriture est à 250 MHz et le côté lecture à 200 MHz, et tous deux transfèrent un mot par cycle. Quelle est la profondeur minimale théoriquement nécessaire pour une FIFO recevant des rafales de 64 mots (le retard dû à la synchronisation est ignoré, et les fractions sont arrondies à l'entier supérieur) ?
  4. Quelle est la structure correcte d'un synchroniseur de reset qui génère, à partir d'un reset externe actif à l'état bas, un reset interne « à assertion asynchrone et désassertion synchrone » ?
  5. Deux signaux de contrôle issus du même domaine émetteur sont reçus chacun par un synchroniseur à 2 étages distinct, puis combinés par un AND côté récepteur. Quel est le problème correct de cette conception ?