FC2カウンター FPGAの部屋 DQの最適な遅延値を測定するDDR2 SDRAMコントローラのインプリメント
FC2ブログ

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

FPGAの部屋

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

DQの最適な遅延値を測定するDDR2 SDRAMコントローラのインプリメント

とりあえず、詳細なシミュレーションは後に回して、DQの最適な遅延値を測定するDDR2 SDRAMコントローラをインプリメントしてやってみた。その結果は動作しなかった。そこでChipscopeを入れて観察してみた。このインプリメントではプリミティブをたくさん使用している。ODDRやIDDRというDDRレジスタはIOブロックに入っているので、Chipscopeに配線する物理的パスが存在しない。Chipscopeは便利なツールだが、物理的パスがないところは波形を観測できない。ということで、1つ前のパスを観測することになる。それが下の図の信号だ。
DDR2_SDRAM_auto_adjw_2_080524.png

これはDDR2のライト動作をキャプチャした図だ。もうすでに遅延を測定して、遅延をあわせた後だ。16進で"5555 5555"と"AAAA AAAA"を書き込んでいる。
rasb_node_1d, casb_node_1d, web_node_1dは、それぞれRAS, CAS, WEの1クロック手前の信号。bank_addr_ndoe_1d, ddr_addr_node_1d もそうだ。
wrdata_3dとwrdata_4d_half は出力用のODDRに入る前のデータ(4ビット分)。dq_rise_1dとdq_fall_1d は入力用IDDRの出力(4ビット分)。ps1, p2, ps3は何かというと、初期化時に、データを書いておいて、次にIDELAYを変化させながらデータをリードしていく。最初は受かったデータは誤っているが、あるところで正しいデータになるはずである。それの遅延値をps1にロードする。その後、遅延値を増やしていくと、またデータが誤るようになるかもしれない。その値をps2とする。ps1とps2の中間の遅延値が一番良い遅延値となる。それをps3とする。
ps1, ps2, ps3が3Dとなっていて、これではおかしい。
さらに、これでは、良くわからないのでシミュレーションではどうなっているかのデータと比較してみた。シミュレーションのタイミングチャートが下の図だ。
DDR2_SDRAM_auto_adjw_1_080524.png

wrdata_3dに"A"が出るまでの時間を測定してみると、Chipscope、シミュレーションともに3クロックで一致している。
次にライトをしてから、そのデータがdq_rise_1dとdq_fall_1d に現れるまでの時間を計測するとChipscopeが6クロックで、シミュレーションが5クロックだった。
DDR2_SDRAM_auto_adjw_4_080524.png

DDR2_SDRAM_auto_adjw_3_080524.png

やはり、インプリメントの方が予定よりも信号が遅れすぎているのかもしれない。
今度は、リードの波形を示しておこうと思う。
DDR2_SDRAM_auto_adjr_6_080524.png

DDR2_SDRAM_auto_adjr_5_080524.png

リードをしてから、そのデータがdq_rise_1dとdq_fall_1d に現れるまでの時間を計測するとChipscopeが8クロックで、シミュレーションが7クロックだった。これまた1クロック合わない。たぶん、これは実機の受けているデータがおかしいのだと思う。
これはおかしいということで、初期化時の様子を見てみることにした。
リセットはSuzakuのパワーオンリセットのみだったので、リセットSWをつけないと初期化時の様子は見れないので、つけることにした。

しかし、パソコンの能力が足りない。Chipscopeを入れてインプリメントするのに長い長い時間がかかる。間に漫画が読める。パソコンのリプレースを真剣に考えなくちゃ。。。
  1. 2008年05月25日 09:53 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:3

コメント

おはようございます。
シミュレータの側に問題があるのかもしれません。もしよろしければソースをお送りください。解析してみます。
  1. 2008/05/26(月) 08:16:07 |
  2. URL |
  3. たっく #-
  4. [ 編集 ]

たっくさん、こんにちは。

実機の方は、よい遅延値が見つからずに、1クロック分フルに遅延が入っている状態ですので、1クロック分遅れて見えるんだと思います。
昨日、一日これをやっていましたが、他におかしいところもわかったので、もう少し、原因を追究してみます。
どうしても原因がつかめない時にはソースをお送りしますので、よろしくお願いします。
  1. 2008/05/26(月) 09:25:27 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

了解です。その際は、合成後のSDFバックアノテートファイルもあると助かります。
  1. 2008/05/26(月) 14:08:53 |
  2. URL |
  3. たっく #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/797-3e7fd179
この記事にトラックバックする(FC2ブログユーザー)