FIFOで不具合が出た場合、どのような事が起きるか見てみましょう
カメラを作るにあたって次の様な絵を表示したいと思いました
この絵は、カメラを作る過程で何度も使ってきた絵で、今でも良く使います
ピクセルが順番に並んでいる事を確認する最初の画像になります
メモリが極めて少ない環境でもささっと用意できるので重宝します
さて、そんな画像を目標にFPGAを構築して、最初に目にしたのは
次の様な画像でした
実際にどんな絵だったかは残っていませんが、パソコンでシミュレーションしました
理想と現実のギャップに心が折れます
「やっぱ俺にはカメラの開発なんて無理なんだ」っていじける心を押さえて
順番に問題点を解決していきました
ここで最初のグレースケールバーが活躍します
あのグレースケールバーは、1ピクセル8ビットのデータが0,1,2,3.....254,255,0と順番に並んでいるので、その連続性が途切れた所、例えば123,0,125等の様になっていたら
そこが不具合の原因である事が分かります
悩んだ末、まずはカメラのデータの信号をオシロスコープで見てみます
オシロスコープで見る限り、データの信号は正しくでているようでした
どういう事かと言うと、一定の周期で信号がパルスを出しているので
上の絵のようなランダム性はない様でした
カメラの信号が正しく出ていて、終着点ではずれていると言う事は、
その途中で絵が崩れていると言う事です、ここではFIFOとPCIバスがその中継点になるのですが、PCIバスは、データが崩れた場合、PCが直ぐにハングアップしてしまいます。それにPCIバスのデータのやりとりは、ここにくるまでに何度もやりました。
と、言う事で、今回は初めて触るFIFOをじっくり見ていく事になりました