2011年1月18日火曜日

実機DEBUG8

cifを改造してoneshotで動作するようにした。具体的にはUART経由でtrigger用registerに1を書き込むと、直後の1 frameのみをDDR2に取り込む。

←が取り込んだ画像だ。画像のズレは最初から起きている訳ではなく、徐々に起きていることが判った。また、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倍になった。

2 件のコメント:

  1. おめでとうございます。240MHzですか?DDR2-480ですね?凄いです。私の現在動作しているのはDDR2-250だから約倍のスピードですね。完全にXilinxのMIGを超えていますね。
    私のDDR2コントローラーも8データほどずれちゃうんです。何処でズレているかわかりませんが?とりあえず、8オフセットすれば正常なので、原因究明せずに使っています。

    返信削除
  2. marseeさんコメント有り難うございます。
    はい、DDR2-480です。
    marseeさんのコントローラでもデータずれが起きてるんですね。
    どこかデータ転送のタイミングが合っていないところがあるのかも知れませんね。
    今回のコントローラももう少し記述を整理して公開するつもりです。
    よかったら、見てみて下さい。

    返信削除

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...