2013年6月3日月曜日

LatticeECP3用DDR3 SDRAMCの作成 4

リードアクセスのバグはDQSBUFDのREADストローブのタイミングが原因だった。
ここは何か引っかかりそうだなと思っていたら、やはりそうなってしまった。

以下はバグありの場合の波形で、READストローブのLのタイミングがDQSの前半しか重なっていない。そのため、DATAVALIDがSCLKの1サイクル期間しか1になっていない。
リードは8バーストで行っているので2サイクル期間1になるのが期待する動作だ。


以下は修正後の波形だ。


DQSIはDDR3 SDRAMからドライブされる外部入力信号なので、DDR3 SDRAMの出力遅延やFPGAの入力バッファの伝搬遅延時間が重なり、FPGA内部クロックに対して遅れる。これに対して、READはFPGA内部信号なのでDQSI程は遅延しないが、この両者のタイミングが重なっていないとDATAVALIDが正しく生成されない。その上、READストローブはSCLK駆動信号なのでタイミング調整をしたとしてもその粒度は粗くなる。ということで、やはり、このREAD信号の部分は少々厄介だと感じているがどうか?? 一度合成しSTA(タイミング解析)をして実遅延を調べ、それを加味した状態でシミュレーションしたほうがいいかも知れないな。


0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

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