非同期FIFOとは

ひどうきふぁいふぉ

書き込みと読み出しを別々のクロックで行うFIFOで、クロックドメインの間でマルチビットのデータを渡すのに使う。ポインタをグレイコードに変換して相手のドメインに同期化し、満杯(full)と空(empty)を判定する。ポインタはアドレスより1ビット多くして周回を区別する。

「非同期FIFO」は、2分野の11問の練習問題に出てきます(タイミング解析とCDC, LSI設計フロー・EDAなど)。

非同期FIFOの構成 書き込み側(wclk) 読み出し側(rclk) デュアルポートRAM 2つのクロックで読み書き 書き込みデータ 書き込みポインタ グレイコード化 読み出しデータ 読み出しポインタ グレイコード化 2段同期化 emptyの判定 2段同期化 fullの判定 グレイコードのポインタ グレイコードなら1つ進むときに変わるのは1ビットだけ
非同期FIFOの構成 · 図解集で見る

この用語の分野: タイミング解析とCDC

非同期FIFOの練習問題に挑戦

非同期FIFOで、書き込みポインタと読み出しポインタをグレイコードに変換してから相手のドメインに同期化する理由として正しいものはどれか。

  1. Aグレイコードにするとビット数が半分になり、同期化回路が少なくて済むから
  2. B1つ進むごとに1ビットだけが変わるので、変化の途中で取り込んでも、進む前か後の正しい値になるから
  3. Cグレイコードの信号はメタステーブルにならないので、同期化が不要になるから
答えと解説を見る

正解:B. 1つ進むごとに1ビットだけが変わるので、変化の途中で取り込んでも、進む前か後の正しい値になるから

バイナリのポインタは、例えば 0111 から 1000 のように複数のビットが同時に変わるので、各ビットを別々に同期化すると、まったく関係のない値を受け取ることがあります。グレイコードなら1回の増加で変わるのは1ビットだけなので、そのビットがメタステーブルになって新旧どちらに決まっても、結果は進む前か進んだ後の値になります。少し古い値を見るだけなので、FIFOが壊れることはありません。ビット数は変わらず、メタステーブル自体も起こりうるので同期化回路は必要です。

深さ16語の非同期FIFOで、書き込みポインタと読み出しポインタをアドレスより1ビット多い5ビットにする理由として正しいものはどれか。

  1. A16語のアドレスを表すのに、5ビットが必要だから
  2. Bポインタが一致したとき、同じ周回なら空、1周の差なら満杯と区別できるようにするため
  3. C余分なビットをパリティとして使い、ポインタの誤りを検出するため
答えと解説を見る

正解:B. ポインタが一致したとき、同じ周回なら空、1周の差なら満杯と区別できるようにするため

16語のアドレスは4ビットで表せますが、4ビットのポインタだけでは、読み出しと書き込みのアドレスが一致したときに、全部読み終えた空の状態なのか、1周分書いて追いついた満杯の状態なのかを区別できません。5ビット目を周回を表すビットとして加えると、バイナリで比べた場合、5ビットすべてが一致すれば空、最上位ビットだけが違えば満杯と判定できます。グレイコードのポインタでは、満杯の判定の比べ方が少し変わります。パリティとして使うわけではありません。

解説の中の「非同期FIFO」

「非同期FIFO」が出てくる問題(11問)

  1. 非同期FIFOで、書き込みポインタと読み出しポインタをグレイコードに変換してから相手のドメインに同期化する理由として正しいものはどれか。
  2. 深さ16語の非同期FIFOで、書き込みポインタと読み出しポインタをアドレスより1ビット多い5ビットにする理由として正しいものはどれか。
  3. 5ビットのグレイコードのポインタを使う深さ16語の非同期FIFOで、書き込み側で満杯(full)を判定する条件として正しいものはどれか。
  4. 非同期FIFOでは相手のポインタを同期化して使うので、見えるポインタの値が2〜3サイクル古くなる。この遅れがfull/emptyの判定に与える影響として正しいものはどれか。
  5. 書き込み側 100 MHz、読み出し側 80 MHz の非同期FIFOで、書き込み側は100語のバーストを毎サイクル1語ずつ書き込み、読み出し側は毎サイクル1語ずつ読み出す。バーストの間には十分な休みがある。あふれないために必要な最小の深さはいくらか(同期化による遅れは無視する)。
  6. 非同期FIFOのグレイコードのポインタを相手のドメインに渡す経路を、非同期だからといって制約なし(フォールスパス)にすると問題になりうる理由として正しいものはどれか。
  7. 異なるクロックで動く回路どうしの間で信号を受け渡す部分に、同期化の回路が正しく入っているかを専用のツールで確認する検証を何と呼ぶか。
  8. 4ビットのデータの各ビットに、それぞれ2段の同期化回路を付けて別のクロックドメインに渡した。データが 0111 から 1000 に変わるときに起こりうる問題として正しいものはどれか。
  9. マルチビットのデータを、別のクロックドメインに安全に渡す方法として正しいものはどれか。
  10. トグル同期でパルスを速いクロックドメインから遅いクロックドメインへ渡すときの制約として正しいものはどれか。
  11. ハンドシェイクによるクロックドメイン間のデータ転送の欠点として正しいものはどれか。

タイミング解析とCDCの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

グレイコード クロックドメイン メタステーブル 同期化回路 ハンドシェイク フォールスパス 配置配線 フリップフロップ トグル同期 SDC

用語集の一覧へ