←が取り込んだ画像だ。画像のズレは最初から起きている訳ではなく、徐々に起きていることが判った。また、640x480の領域からははみ出していないので、addressの異常ではなくてやはりdataのfifo側の制御に問題があることが伺える。何かのきっかけでfifoの読み出しが途切れてfifoにdataが残り、それが次の書込み時に読み出されるため画像がずれていっているように思える。mpif (multi port i/f)とDRAMCのdata fifo、command fifo (address系)との間はhandshakeはややこしくなっており、想定出来ていないtimingで辻褄が合わなくなっていたようだ。そこでこの部分をsimpleな回路に変更した。具体的には read/writeに関わらずdata fifoにもcommand fifoにもqueueingを行い、readの場合はdata fifoのdataを読み捨てるようにした。
その結果、ずれは無くなった。
連続取り込みに戻しても問題無し。
やったー!! \(^o^)/
ばんざ~い!!
あがぃ、ぷからっさー
苦節1ヶ月、途中断念しようかと思ったことも何回かあったけど、諦めないでよかった。
もちろんtimingは全てMetしている。
配置制約は特にかけていない。
Timing系も周波数と非同期部のTIG制約位だ。
回路規模はdata bus幅が128bitになった関係で、以前の133MHz版よりも増大してしまった。Number of occupied Slicesで比較すると1.6倍だ。BRAMの使用数は3から12と4倍になった。
おめでとうございます。240MHzですか?DDR2-480ですね?凄いです。私の現在動作しているのはDDR2-250だから約倍のスピードですね。完全にXilinxのMIGを超えていますね。
返信削除私のDDR2コントローラーも8データほどずれちゃうんです。何処でズレているかわかりませんが?とりあえず、8オフセットすれば正常なので、原因究明せずに使っています。
marseeさんコメント有り難うございます。
返信削除はい、DDR2-480です。
marseeさんのコントローラでもデータずれが起きてるんですね。
どこかデータ転送のタイミングが合っていないところがあるのかも知れませんね。
今回のコントローラももう少し記述を整理して公開するつもりです。
よかったら、見てみて下さい。