タイミング解析とCDC

非同期FIFOでは相手のポインタを同期化して使うので、見えるポインタの値が2〜3サイクル古くなる。この遅れがfull/emptyの判定に与える影響として正しいものはどれか。

  1. Afullやemptyの解除が遅れるだけで、あふれや空読みは起きない
  2. Bfullの判定が遅れるので、書き込みすぎてデータがあふれることがある
  3. Cemptyの判定が遅れるので、空のFIFOから読み出してしまうことがある
答えと解説を見る

正解:A. fullやemptyの解除が遅れるだけで、あふれや空読みは起きない

書き込み側が見る読み出しポインタは古い値なので、実際より読み出しが進んでいないように見え、FIFOは実際より多く詰まっていると判断されます。つまりfullは本当に満杯になったときには必ず出ていて、空きができてからの解除が少し遅れるだけです。読み出し側のemptyも同じで、新しく書かれたデータが見えるのが遅れるだけです。どちらも安全側(悲観的)に働くのでデータは壊れませんが、その遅れの分、性能を保つために深さに余裕を持たせます。

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

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

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

タイミング解析とCDCのほかの問題

  1. 書き込み側 100 MHz、読み出し側 80 MHz の非同期FIFOで、書き込み側は100語のバーストを毎サイクル1語ずつ書き込み、読み出し側は毎サイクル1語ずつ読み出す。バーストの間には十分な休みがある。あふれないために必要な最小の深さはいくらか(同期化による遅れは無視する)。
  2. 書き込み側は 200 MHz で毎サイクル1語ずつ、120語のバーストを書き込む。読み出し側は 150 MHz のクロックで、3サイクルのうち2サイクルだけ1語ずつ読み出す。あふれないために必要な最小の深さはいくらか(同期化による遅れは無視する)。
  3. 書き込み側 250 MHz、読み出し側 200 MHz で、どちらも毎サイクル1語ずつ転送する。64語のバーストを受けるFIFOに計算上必要な最小の深さはいくらか(同期化による遅れは無視し、端数は切り上げる)。
  4. アクティブLowの外部リセットから、「非同期にアサートし、同期してデアサートする」内部リセットを作るリセット同期化回路の構成として正しいものはどれか。
  5. 同じ送り側のドメインから来た2本の制御信号を、それぞれ別の2段同期化回路で受け、受け側でANDをとって使う設計の問題点として正しいものはどれか。