Dram(4) DDR SDRAMが動き出したかな!


 DDR SDRAMが動き出したようです。
 アルテラ社のCycloneV 3c25 starter Boardに、オリジナルのDDR SDRAMコントローラを実装して100MHzで試しました。スイッチ操作での動作試験ですが書いたデータと同じデータが読み出せました。

●DDR SDRAM動作確認の構成の写真

 動作確認の構成写真です。上からFPGAボードとロジックスコープの全体構成、FPGAボードの拡大、ノイズ対策で短くしたロジックスコープ接続ケーブルです。
 

 


 アルテラ社のCycloneV 3c25 starter Boardに、子基板を追加しました。
 小基板は、データやアドレスを指定する8個のスイッチを実装しています。リード、ライト指令はCycloneV 3c25 starter Board上の押しボタンスイッチを使います。
 子基板の下は、TERASIC社のHSMCコネクタと2.54mmピッチコネクタの変換ボードです。




 ノイズ対策で短くしたロジックスコープ接続ケーブルです。
 2nSサンプル時、上の長いケーブルではノイズが乗って困ったので、短いケーブルを急遽造りました。
 もっと、短くせんとあかんかな! と思いましたが頻繁に乗ってたノイズはなくなりました。




●DDR SDRAM動作確認の構成と制御の流れ

 オリジナルDDR SDRAMコントローラの構成を次に示します。
 CycloneV FPGAのコアロジックを使ってオリジナルDDR SDRAMコントローラを作りました。
 全体の制御は 「Ramシーケンサ」と3つのレジスタでします。しかし、DDRSDRAMのデータ転送は、クロックの立ち上がり、立ち下がりの両エッジを使うので専用のハードウエアを設けてシーケンサと連携して対応します。
 クロックの立ち上がり、立ち下がりの両エッジを使う方法は、PLLで0度、90度、180度、270度の4相のクロックを発生させて対応しています。




 シーケンサのシーケンスを次に示します。
 シーケンサはDDRSDRAMと同じ100MHzで動作して、DDRSDRAMに直接コマンドを送ったり、タイミング合わせをします。短い時間待ちは時間待ちステートを入れて、長い時間待ちはカウンタを使って作ります。例えば、DDRSDRAMのリフレッシュは、82uSの時間を16BitのRefClkCnt を使って作り、シーケンサの判定機能で シーケンサに取り込み連続16回リフレッシュ動作をします。
 シーケンサのシーケンスは、初期化(0x、1x)、アビトレーション(2x)、リフレッシュ(3x)、書込(4x)、読み出し(5x)で構成しています。
 100MHzで動作するシーケンサの設計に当たり考慮した点は、基本的ですがゲートの段数を少なくする事です。




 DDRSDRAMに書き込む場合、シーケンサが発行するWriteコマンドをハードウエアが検出して書込制御シフトレジを動かして、次の一連の書込動作をします。





 DDRSDRAMから読み出す場合、シーケンサが発行するReadコマンドをハードウエアが検出して読出制御シフトレジを動かして、次の一連の読み出し動作をします。





●DDR SDRAM動作確認

 1ページ分の読み出し動作に続いてリフレッシュ動作群が2回見えます。
 リフレッシュ動作群の間隔は81.6uSです。1つのリフレッシュ動作群には、16のリフレッシュ動作をしています。
 DDRSDRAMが要求するリフレッシュは、64mSに8192回です。64mS/8192回*16回は128uSなのでリフレッシュ動作群の間隔は81.6uSより大きいので要求を満足しています。





 ACTコマンドに続いてWriteコマンドが64回続きます。1回の書込で8ワードバースト書込します。この波形では、00h、01hと「00h」スタートで書込動作をしています。




 Read動作が4回見えます。1回のRead動作で8ワード連続でデータを読み出します。
 二つのレシスタに順番に読み出しています。





ホームへ戻る