FC2カウンター FPGAの部屋 2008年05月17日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DQの最適な遅延値を測定するDDR2 SDRAMコントローラの問題点の解決

”DQの最適な遅延値を測定するDDR2 SDRAMコントローラの問題点”で予定した動作周波数(200MHz) で動作しないという問題点があったが解決できたようだ。
以前の問題は0度のクロックと、180度のクロックを2つ使っていたので、それぞれのクロックを使用するFFをつなぐパスがクリティカルパスになってしまったということだった。つまり、200MHzなので5nsに収まっていれば良いところ、2.5nsにパスの遅延を収めなければならなくなっていた。
そこで、ほとんどの動作クロックを0度クロックにすることにした。ステートマシンなども0度クロックに変更した。180度のクロックを使うところも最後の最後だけ180度クロックで受けるようにした。その結果、だいぶタイミングに余裕ができたようだ。
変更の結果、タイミング変わってしまったので、タイミングを変更する必要が出てきた。だいぶ、DDR2 SDRAMコントローラもできてから長いので、タイミングを忘れてしまった。良い方法がないか探していたところMIXIで、アドバイスをもらって、今までのDDR2 SDRAMコントローラと修正したDDR2 SDRAMコントローラを2つインスタンシエーションして比較してみることにした。
比較の結果タイミングが思い出されてきて修正できるようになってきた。修正の結果、まともに動作するようになって来た。
DDR2_improve_1_080517.png

ISE10.1.01でインプリメントしてみたところ、問題なくインプリメントできたようだ。
DDR2_improve_2_080517.png

これで、ちょっとしたアサーションを組み込んで試してみるのと、以前のテストベンチでハードにテストをしてみたいと思っている。

2008/05/18 追加: アサーションを組み込んでみたらバグがわかった。バグを修正して、これでOKかな?とISEでインプリしたら、動作周波数が取れない。
見てみると、バンクやROWアドレスが同一かどうか比較している回路から直接信号をもらっているので、組み合わせ回路が大きくなってしまった。これではだめなので、FF出力から引っ張ってきた。本当は組み合わせがいいのだが動作周波数が取れないので、仕方がない。これで1クロック分だけバンクとROWアドレスが合っているのに、もう一度プリチャージ、ACTコマンドを入れる可能性が出てしまったが、こっちのほうが動作周波数的には圧倒的にいいので、こっちにすることにした。
  1. 2008年05月17日 18:46 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0