ここは何か引っかかりそうだなと思っていたら、やはりそうなってしまった。
以下はバグありの場合の波形で、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 件のコメント:
コメントを投稿