« あけましておめでとうございます | トップページ | Spartan3E+DDR2メモリで400Mbps »

2009.01.03

Spartan3E+DDR2メモリの動作確認

今日は、PCI Express基板
Np1025
にのっているDDR2メモリの動作確認を行いました。

Ddr2

以前、Virtex4用に作ったDDR2メモリコントローラがあるので、これを改良してSpartan3E対応にしようと思ったら、意外とハマり箇所がありました。

まず、DDR2メモリからデータを受信するタイミングは意外と難しいことです。
本当ならばDQSを使ってソースシンクロナスの要領で受信するのがよいのでしょうが、それは面倒です。
そこで、FPGAが受信するタイミングを決めうちにします。しかし、DDRなので、FPGA内部の2倍の速度で動いているから裏クロックで決めうち、ということができません。
幸いなことにSpartan3Eの入力ピンは「入力ディレイ」というのを持っているので、これを活用します。入力ディレイ(IFD版)の遅延時間は0~6の数値で指定できるのですが、この遅延時間はかなりいいかげんです。遅延時間を微調整するようなことは難しそうでした。しかし、入力ディレイを使わないと、DDR2が送信してくるデータを適切なタイミングで受け取れません。250MHz動作の場合、幸いなことに、IFD_DELAY_VALUE = 1でぴったりのタイミングでした。

また、DDR2メモリへの書き込みデータを出力する際には、FPGAが出力するDQS信号はデータからを少し遅らせたタイミングで出力しなければなりません。しかし、Spartan3Eの出力パッドには遅延セルがなく、また90°クロックとか270°クロックを使って微妙なタイミングを作るのも面倒なので、FPGAのクロックをDCMに通して数ns遅らせて出力するようにしました。
DQSに送信するストローブ信号は、DCMの位相シフトで作れば簡単なようです。

以上のことによって、Spartan3EからDDR2メモリへアクセスできるようになりました。
書き込んだデータが正しく読み出せるかなどを試しています。
Ddr2

この基板のDDRメモリは、当初250MHzの速度で動作させることを考えていましたが、400MHzまでいくことができました。ディレイをうまく調整すれば、400MHz以上でもいけるのではないかと思います。
500MHzまでいければ、PCI Expressに対する完全なFIFOが作れるはずですのでいずれ挑戦してみたいです。

さて、この基板には、PCI Express、DDR2メモリ、SPIメモリ、PCI Express External Cablingなどが乗っていて、ようやく全ての構成要素の動作確認ができました。
そろそろ販売に向けて動き出そうと思います。

このPCI Express評価基板は今月末に出荷開始予定です。
XILINXとXIO1100の組み合わせの基板はあまり他でも見かけません。

このPCI Express評価基板に、評価用IPコアと、MITOUJTAG Pro特別版(この基板でのみ使用可能なバージョン)、サンプルデバイスドライバ、サンプルアプリケーションプログラムをつけて、●万円を切る価格で出したいと思っています。

ご希望やご意見などございましたらメールにてどしどしお寄せください。
皆様、どうぞよろしくお願いします。

|

« あけましておめでとうございます | トップページ | Spartan3E+DDR2メモリで400Mbps »

コメント

おめでとうございます。Spartan3EでDDR2-400がうまく動作するんですね。すごいです。しかもFPGA内部クロックでリードデータを受けているのですか?
このDDR2コントローラはバースト転送でもデータをミスなくライト・リードできますか?

投稿: marsee | 2009.01.05 11:11

あけましておめでとうございます。

>しかもFPGA内部クロックでリードデータを受けているのですか?
>このDDR2コントローラはバースト転送でもデータをミスなくライト・リードできますか?

はい。内部クロックでリードデータを受けています。

もちろん、バーストでもミスなくリード・ライトできます。

DDR2でのバースト転送は最高でも8ワード単位なので、切れ目なく次から次へとバースト転送を発行することで、32Mバイトの長いバースト転送を行っています。

投稿: なひたふ | 2009.01.05 13:29

コメントを書く



(ウェブ上には掲載しません)




« あけましておめでとうございます | トップページ | Spartan3E+DDR2メモリで400Mbps »