はじめに
忘れがちなので自分用+備忘録としてまとめます。
VivadoでFIFO(First In First Out)を使った回路を組んでいるとき、
「なぜか想定通りにデータが流れない」という現象に遭遇しました。
原因はシンプルで、FIFOのReset処理。
ついResetを1クロックだけ入れればOKと思いがちなのですが、これでは正しく初期化されないケースがあります。
結論
FIFOのリセットは
1クロックでは不十分で、複数クロック保持する必要があります。
自分の環境では、4クロック分Resetを入れることで安定しました。
※FIFO IPやクロック条件により必要クロック数は変わる可能性があります。
注意ポイント
- FIFO IPの仕様によって必要クロック数は異なる可能性あり
- wr_clk / rd_clk のどちら基準かも意識する必要あり
学び
「とりあえず1クロック」は信用しない。