一般的なIC設計/ FPGAインタビューの質問:FIFO深度計算
Common Ic Design Fpga Interview Questions
あなたはオリジナルを見ることができます FIFO深度の計算 この記事。
重要なのはFIFO深度の計算です。
受信した送信に等しい所定の期間のデータ。高速の読み取り/書き込みが遅い場合、バースト書き込みデータはバースト期間に読み取られたデータを差し引くことによってバーストし、追加のバッファリングデータが必要になるため、受信側は残りの空き容量が残ります。時間は余分なデータを快適に読み取ることができます。
いくつかの例を見てみましょう。
ケース1:
- fA> fBで、書き込みと読み取りの両方にアイドルサイクルはありません。
- 書き込み周波数= fA = 80MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- 読み取りと書き込みの両方にアイドルサイクルはありません。つまり、バースト内のすべてのアイテムが連続したクロックサイクルで書き込まれ、読み取られます。
計算済み(同じビット幅を想定したタイトルの書き込みおよび読み取りデータ):
- 総データ転送120
- FIFOに書き込まれるすべてのデータには時間が必要です 120/80MHと=1500ns 120/80 M H z = 1500 n s
- 一定期間(1500ns)以内のデータをFIFOから読み取ることができます。 1500ns∗50MHと=75 1500 n s ∗ 50 M H z = 75
- 冗長データ 120-75=フォーファイブ 120-75 = 45
- したがって、FIFO45の最小深度
case2
- 2つの連続する読み取りとの間に1clkサイクルの遅延がある> fB
書き込みます。
この状況は同じです1
case3
- fA> fBで、書き込みと読み取りの両方にアイドルサイクルがあります。
- 書き込み周波数= fA = 80MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- 2つの連続する書き込み間のアイドルサイクル数は= 1です。
- 2つの連続する読み取り間のアイドルサイクル数は= 3です。
計算
- 書き込みクロック周波数は fに=fに/二=40MHと f W = f A / 2 = 40 M H z
- 読み取りクロック周波数は、 fR=fB/4=12.5MHと f R = f B / 4 = 12.5 M H z
- 最小深度 120-120/fに∗fR=83 120 − 120 / f W ∗ f R = 83
case4
- fA> fB、wr_enbおよびrd_enbにデューティサイクルが指定されています。
- 書き込み周波数= fA = 80MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- wr_enbのデューティサイクル(書き込みイネーブル)= 50%=&frac12。
- wr_enbのデューティサイクル(書き込みイネーブル)= 25%=&frac14。
そしてcase3は同じですが、問題を説明する方法が異なります
case5
- fA
- 書き込み周波数= fA = 30MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- 読み取りと書き込みの両方にアイドルサイクルはありません。つまり、バースト内のすべてのアイテムが連続したクロックサイクルで書き込まれ、読み取られます。
この書き込み深度の場合、FIFOは1に十分な速度で読み取りが遅くなります。
case6
- fA
- 書き込み周波数= fA = 30MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- 2つの連続する書き込み間のアイドルサイクル数は= 1です。
- 2つの連続する読み取り間のアイドルサイクル数は= 3です。
このケースは書き込み速度が遅いように見えますが、アイドルサイクルリードがあるためです
- 書き込みクロック周波数は fに=fに/二=15MHと f W = f A / 2 = 15 M H z
- 読み取りクロック周波数は、 fR=fB/4=12.5MHと f R = f B / 4 = 12.5 M H z
- 最小深度 120-120/fに∗fR=20 120 − 120 / f W ∗ f R = 20
case7
- fA = fBで、書き込みと読み取りの両方にアイドルサイクルはありません(つまり、2つの連続する書き込みと読み取りの間の遅延は1クロックサイクルです)。
- 書き込み周波数= fA = fB = 30MHz。
- バースト長=転送されるデータ項目の数= 120。
- 読み取りと書き込みの両方にアイドルサイクルはありません。つまり、バースト内のすべてのアイテムが連続したクロックサイクルで書き込まれ、読み取られます。
この場合、fifoは使用せず、clka clkb位相差がある場合は、深さ1まで2 dfffifoを使用できます。
case8
- fA = fBで、書き込みと読み取りの両方にアイドルサイクルがあります(これらのタイプの質問では、wr_enbとrd_enbのデューティサイクルも指定できます)。
- 書き込み周波数= fA = 50MHz。
- 読み取り周波数= fB = 50MHz。
- バースト長=転送されるデータ項目の数= 120。
- 2つの連続する書き込み間のアイドルサイクル数は= 1です。
- 2つの連続する読み取り間のアイドルサイクル数は= 3です。
また、回線上の同等のクロック周波数と見なされます。
case9
- データの書き込み= 80データ/ 100クロック(20データのランダム化)
- 送信データ= 8 DATA / 10クロック。
- バーストサイズ= 160
次の状況が発生する可能性があり、いずれの場合も160サイクルが必要です。
最悪の場合を考えてみましょう4,160サイクルは、このFIFO読み取りクロックサイクルでバーストデータ160、160を終了します。 160/10∗8=128 160/10 ∗ 8 = 128データ、深さfifoは160-128 = 32です
case10
- 頻度(clk A)=頻度(clk B)/ 4
- 期間(en_B)=期間(clk_A)* 100
- デューティサイクル(en_B)= 25%
clkb = 100MHz、clka = 25MHzと仮定すると、状況は、FIFOなしで、読み取り/書き込みが遅いように見えます。
ただし、3番目の条件en_Bのデューティサイクルはサイクルの4分の1であるため、つまり、このバースト中にデータがFIFOから読み取られる時間は4分の1であるため、この期間内では書き込みが1/4速くなり、読み取りが遅くなります。 fifoはデータをキャッシュする必要はありません。残りの3/4サイクルは読み取りではなく書き込みのみであるため、この3/4サイクルでデータをキャッシュできるようにFIFOの深さが書き込まれます。
2番目の条件は、バーストの合計時間であるデータバースト100から確認できます。 100/25MHと=4000ns 100/25 M H z = 4000 n s、3/4サイクルは3000nsなので、FIFOの深さ 3000ns∗25MHと=75 3000 n s ∗ 25 M H z = 75