前回はclockの時間をTimeQuestのReportPathで、それ以外の信号の時間をReportTimingで
得ていたがこの方法だとclockの時間が分かり辛かった。
そこで、今回は仮想のclockをcreate_generated_clockで生成して、このclockに対するReportTimingを実行してDRAMへのclock、他の信号のtimingを得た。
下図はDRAM_CLKの値で、これから遅延値は5.126-3.101で2.039nsだった。

また、clock以外の信号で最大遅延経路はDRAM_WEとDRAM_DQ[3]で、最小遅延経路はDRAM_CSだった。

以上の値から計算するのだが、図を書いたり手で計算するのは面倒なので、
そこで、SDRAMのclockの位相を2.0ns早めるようにした。
DE0に付属しているSDRAMの仕様書はIntegrated Circuit Solutionのものだが、
実際に実装されているのはZentelのA3V64S40ETPG6という166MHz品だ。
仕様書はここから入手できる。 http://www.zentel.com.tw/
そこで上記programで160MHzの場合について計算してみた。
holdは余裕がある。setupも仕様1.5nsに対して1.637nsで大丈夫そうだ。

setup/hold関係は一応問題なさそうだ。
160MHz対応にするためにはこの他にtRCDやtRFC等のtimingの見直しも
必要になるが、とりあえずこれらは現状ままとして合成して実機で動かしてみた。


setup/hold関係は一応問題なさそうだ。
160MHz対応にするためにはこの他にtRCDやtRFC等のtimingの見直しも
必要になるが、とりあえずこれらは現状ままとして合成して実機で動かしてみた。

結果は動作した。
以下の動画はDRAMのR/W check programを実行させている様子だ。
また、以下の動画は同じprogramを100MHzで動かしている様子だ。
160MHzと比較してLEDの点滅が遅いのが解る。
という訳でDE0でSDRAMを160MHzで動作させることが出来た。 やったー! \(^_^)/
0 件のコメント:
コメントを投稿