
当初はリード側を疑って上述のとおり遅延値を振ってみたりしたのだが、問題はライト側にあった。
(つまり、先頭データの書込みが出来ていない) 以下にライトのシミュレーション波形を示す。ここでデータバスにライトデータを出力する期間を正味の4バーストの期間のみとしていた。

これを以下のようにバスをONにするタイミングを早めた。
(間違えてリードの波形を貼っていたので差し替えました。2012/06/06)

その結果正常にリードできるようになった。
STA(静的タイミング解析)の結果ではトライステートコントロールパスの遅延はデータのパスとほぼ同じで問題なさそうにみえたのだが、どうも先頭データのDQSに対するセットアップが確保できていなかったようだ。 実際の信号の波形観測が出来ればいいのだが800MHzの信号を観測できる測定器など個人が持ってる訳ないので、推測するしかない。
合成も問題ない。
現状のSystem Architectureは以下のとおり。

以下はリードライトチェックプログラムを実行している様子だ。64Kワード(256KB)ブロック単位でライト&リードチェックを行っている。

ということでDDR2-800で動作できた。 やったー \(^_^)/
うっれすぃー かあちゃん、おれ、やったよ。。。 ちょっと大袈裟か。
とはいえ、現状はローカルI/F側が64bit/200MHzとなっており、zumi32 (自作CPU)は精々100数十MHz程度でしかタイミングがMetしないので、CPUも含んだ回路にする場合は現状では周波数が高すぎて合成できない(タイミングがMetしない)可能性があるので、128bit/100MHz版も作ろうと思う。
0 件のコメント:
コメントを投稿