Questions d'entretien courantes sur la conception de circuits intégrés / FPGA: calcul de la profondeur FIFO

Common Ic Design Fpga Interview Questions



Vous pouvez voir l'original Calcul de la profondeur FIFO Cet article.

La clé est le calcul de la profondeur FIFO:
Données dans une période de temps prédéterminée égale à la transmission reçue, où l'écriture en lecture rapide est lente, la rafale de données d'écriture en rafale en soustrayant les données lues en période de rafale, un besoin de données de mise en mémoire tampon supplémentaires vers le bas, de sorte que la réception finit par rester libre le temps peut facilement lire les données supplémentaires.



Regardons quelques exemples.



cas 1:
  • fA> fB sans cycles d'inactivité en écriture et en lecture.
  • Fréquence d'écriture = fA = 80 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Il n'y a pas de cycles inactifs à la fois en lecture et en écriture, ce qui signifie que tous les éléments de la rafale seront écrits et lus dans des cycles d'horloge consécutifs.

Calculé (l'écriture du titre et la lecture des données en supposant la même largeur de bits):



  • Le transfert total de données 120
  • Toutes les données écrites dans le FIFO ont besoin de temps 120/80MHavec=1500ns 120/80 M H z = 1500 n s
  • Les données dans la période de temps (1500ns) peuvent être lues à partir de la FIFO est 1500nscinquanteMHavec=75 1500 n s ∗ 50 M H z = 75
  • Données redondantes 120-75=Quatre cinq 120 - 75 = 45
  • Par conséquent, une profondeur minimale de FIFO 45
cas2
  • A> fB avec un délai de cycle clk entre deux lectures successives et
    écrit.

Cette situation est le même cas1

cas3
  • fA> fB avec des cycles inactifs en écriture et en lecture.
  • Fréquence d'écriture = fA = 80 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Le nombre de cycles inactifs entre deux écritures successives est = 1.
  • Le nombre de cycles d'inactivité entre deux lectures successives est = 3.

Calcul

  • La fréquence de l'horloge d'écriture équivaut à FDANS=FÀ/deux=40MHavec f W = f A / 2 = 40 M H z
  • La fréquence d'horloge de lecture équivaut à FR=FB/4=12,5MHavec f R = f B / 4 = 12,5 M H z
  • Profondeur minimale 120-120/FDANSFR=83 120 à 120 / f W ∗ f R = 83
cas4
  • fA> fB avec des rapports cycliques donnés pour wr_enb et rd_enb.
  • Fréquence d'écriture = fA = 80 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Cycle de service de wr_enb (autorisation d'écriture) = 50% = & frac12.
  • Cycle de service de wr_enb (autorisation d'écriture) = 25% = & frac14.

Et cas3 pareil, juste une manière différente de décrire le problème



cas5
  • FA
  • Fréquence d'écriture = fA = 30 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Il n'y a pas de cycles inactifs à la fois en lecture et en écriture, ce qui signifie que tous les éléments de la rafale seront écrits et lus dans des cycles d'horloge consécutifs.

Ce cas de profondeur d'écriture fifo lecture lente assez vite pour 1.

cas6
  • FA
  • Fréquence d'écriture = fA = 30 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Le nombre de cycles inactifs entre deux écritures successives est = 1.
  • Le nombre de cycles d'inactivité entre deux lectures successives est = 3.

Ce cas semble être une vitesse de lecture lente en écriture, mais parce qu'il y a des pistes de cycle de ralenti

  • La fréquence de l'horloge d'écriture équivaut à FDANS=FÀ/deux=quinzeMHavec f W = f A / 2 = 15 M H z
  • La fréquence d'horloge de lecture équivaut à FR=FB/4=12,5MHavec f R = f B / 4 = 12,5 M H z
  • Profondeur minimale 120-120/FDANSFR=vingt 120 à 120 / f W ∗ f R = 20
cas7
  • fA = fB sans cycles inactifs à la fois en écriture et en lecture (c'est-à-dire que le délai entre deux écritures et lectures consécutives est d'un cycle d'horloge).
  • Fréquence d'écriture = fA = fB = 30 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Il n'y a pas de cycles inactifs à la fois en lecture et en écriture, ce qui signifie que tous les éléments de la rafale seront écrits et lus dans des cycles d'horloge consécutifs.

Ce cas pas de fifo, et si clka clkb déphasage, peut être utilisé ou deux dff fifo à une profondeur de 1.

cas8
  • fA = fB avec des cycles d'inactivité à la fois en écriture et en lecture (les cycles de travail de wr_enb et rd_enb peuvent également être donnés dans ce type de questions).
  • Fréquence d'écriture = fA = 50 MHz.
  • Fréquence de lecture = fB = 50 MHz.
  • Burst Length = Nombre d'éléments de données à transférer = 120.
  • Le nombre de cycles inactifs entre deux écritures successives est = 1.
  • Le nombre de cycles d'inactivité entre deux lectures successives est = 3.

Également considéré comme une fréquence d'horloge équivalente sur la ligne.

cas9
  • Écriture de données = 80 DATA / 100 Clock (randomisation de 20 données)
  • Données sortantes = 8 DATA / 10 Clock.
  • Taille de rafale = 160

Il peut y avoir les situations suivantes et le nombre de rafales finies dans chaque cas 160 cycles requis

Considérez le pire des cas: 4160 cycles terminent les données de rafale 160, 160 dans cette quinzaine de cycles d'horloge de lecture loin de 160/dix8=128 160/10 ∗ 8 = 128Données, le fifo de profondeur est 160-128 = 32

cas10
  • Fréquence (clk A) = fréquence (clk B) / 4
  • Période (en_B) = période (clk_A) * 100
  • Cycle de service (en_B) = 25%

Supposons que clkb = 100 MHz, le clka = 25 MHz, la situation semble être une lecture lente et rapide, sans fifo.

Mais parce que la troisième condition en_B le rapport cyclique n'est que d'un quart de cycle, c'est-à-dire que pendant cette rafale seulement un quart du temps où les données sont lues à partir du fifo, dans cette période de temps est 1/4 plus rapide en écriture en lecture lente, fifo n'a pas besoin de mettre en cache les données. Les 3/4 de cycle restants ne font qu'écrire, pas lire, donc une profondeur de fifo pour pouvoir mettre en cache les données sous ces 3/4 cycles écrits.

La deuxième condition peut être vue à partir de la rafale de données 100, le temps total de la rafale 100/25MHavec=4000ns 100/25 M H z = 4000 n s, 3/4 cycle est de 3000ns, donc la profondeur de fifo 3000ns25MHavec=75 3000 n s ∗ 25 M H z = 75