インテル® FPGA に DDR3 SDRAM メモリ・コントローラを実装して、Example Design を用いたシミュレーションや動作確認までの流れをやさしく解説します。このページでは Cyclone® Vデバイスが実装されている Beryll Cyclone V GX ベーシックボード(Beryll ボード) を使用して説明しますが、UniPHY ベースの DDR3 SDRAM コントローラをサポートしている Stratix®  シリーズや Arria®  シリーズでも、基本的なフローは同じです。

<アジェンダ>

  1. Cyclone® V デバイスの DDR3 SDRAM サポート状況の確認
  2. DDR3 SDRAM コントローラ with UniPHY の生成
  3. ファンクション・シミュレーションの実行
  4. Example Design のコンパイル
  5. Beryll ボードを使用して動作確認
  6. まとめ

1. Cyclone® V デバイスの DDR3 SDRAM サポート状況の確認

DDR3 SDRAM インタフェースのサポート状況は、『インテル® FPGA に外部メモリ・コントローラを実装!(準備編)』でも紹介している通り、外部メモリ・インタフェース・スペック・エスティメータ で確認することができます。

外部メモリ・インタフェース・スペック・エスティメータに条件を入れていきます。今回の検証で使用する Beryll Cyclone V GX ベーシックボード(Beryll ボード) に実装されている Cyclone® V デバイス(型番:5CGXFC4C6F27C7N)やメモリ、ボードの仕様など「検索条件と項目を決定」ボタンをクリックして、下記条件を入れてみます。

  • ファミリ:Cyclone® V GX
  • 温度範囲 & スピード・グレード:コマーシャル温度範囲 (C)、-7
  • インタフェースの種類:ソフト、ハード
  • メモリ規格:DDR3
  • メモリ・トポロジー & ランク:コンポーネント、1 チップ・セレクト


検索結果は、以下の通りとなりました。ちなみに、型番の後半部分の C7 が、温度範囲 & スピード・グレードを表しています。

Article header beryll ddr3 fig2 1  1

この検索結果から、Beryll ボードで確認できるのは、

  • ハード・メモリ・コントローラ(HMC)だと、最大周波数は 400 MHz (800 Mbps) まで
  • ソフト・メモリ・コントローラ(SMC)だと、最大周波数は 303 MHz (606 Mbps) まで


ということになります。従って、今回は

  • ハード・メモリ・コントローラ(HMC)で、メモリ・インタフェースの周波数は 400 MHz (800 Mbps)


で動かしてみたいと思います。

それでは、インテル® Quartus® Prime 開発ソフトウェアを使用して、実際にコントローラを生成してみましょう!

<使用するツール>

  • Quartus® Prime 開発ソフトウェア v16.0:Standard Edition または Lite Edition
    • Standard Edition:有償ライセンス必要
    • Lite Edition:ライセンス不要
  • ModelSim®  - Intel® FPGA Edition 10.4d (Quartus® Prime 16.0)
    • ModelSim®  - Intel® FPGA Edition:有償ライセンス必要
    • ModelSim®  - Intel® FPGA Starter Edition:ライセンス不要


ツールのインストールは済んでいますか?

インストールが済んでいない方は、インテル® FPGA のサイト(ダウンロード)から入手できます。

2. DDR3 SDRAM コントローラ with UniPHY の生成

まずは、メモリ・コントローラを生成してみましょう!

Quartus® Prime 開発ソフトウェアを起動して、IP Catalog の検索バーに DDR3 と入力して、DDR3 SDRAM Controller with UniPHY を検索します。

Article header beryll ddr3 fig3 1  1

コントローラ関連の様々なファイルを生成するディレクトリとコントローラの名前を設定する画面が現れます。生成する言語(Verilog または VHDL)も選択して OK をクリックします。この時、パスやファイル名に全角文字や半角スペースは避けましょう!今回は、コントローラを ddr3 という名前にします。

Article header beryll ddr3 fig3 2  1

すると、コントローラの設定画面が表示されます。必要な設定をしていきましょう!

まずは、HMC を有効に設定します。

Article header beryll ddr3 fig3 3  1

以降、必要な設定をしていきますが、今回は Beryll ボードで動作確認する上で必要最小限の設定しか行いません。それ以外は、デフォルトのままとします。

詳細は、EMIF ハンドブック を参照してください。

PHY Settings タブ

今回はリファレンス・クロックに 50 MHz のクロックを使用します。PHY Settings タブは、以下の設定を行ってください。

  • Speed Grade:7
  • Memory clock frequency:400.0 MHz
  • PLL reference clock frequency:50.0 MHz
  • Rate on Avalon-MM interface:Full
Article header beryll ddr3 fig3 4  1

Memory Parameters タブ

Beryll ボードに実装されている DDR3 SDRAM は、Micron の MT41J64M16 が 2個です。このメモリは 1個当たり 16-bit 幅なので、合計で 32-bit 幅となります。

右側の Preset for ... から、実装されているメモリを探します。ここには代表的なメモリが予めリスト化されていて、細かいパラメータも設定済みです。今回は運よく、実装されているメモリがありましたので、選択して Apply をクリックします。そうすると、メモリの構成やパラメータなどが反映されます。もし使用したいメモリがリストにない場合は、構成などが似ているメモリを選択してパラメータをデータシートを見ながら編集し、名前を付けて保存すると、次からは簡単に呼び出せます。

Article header beryll ddr3 fig3 5  1

Beryll ボード上で Cyclone V デバイスとメモリ間はデータが 32-bit 幅で接続されているので、今回の検証も 32-bit 幅で行ってみようと思います。

今回は、以下の設定のみ Memory Parameters タブ内の設定をします。

  • Total interface width:32
Article header beryll ddr3 fig3 6  4

Memory Timing タブ

先ほど Memory Parameters タブでメモリ情報を反映させたので、設定はそのままにします。

Board Settings タブ

今回は、デフォルトのままとします。

Controller Settings タブ

今回は、デフォルトのままとします。

Diagnostics タブ

今回は、Auto-calibration mode のみ設定します。この設定はシミュレーションのみ有効で、実機動作には影響しません。

DDR3 SDRAM インタフェースは、電源オン後すぐにリード/ライトできる訳ではなく、初めにイニシャライズやキャリブレーションなどが行われます。詳しい説明はここでは省略しますが、これらのステップを踏まないとリード/ライトなどのアクセスができません。

このキャリブレーションをシミュレーションではスキップさせることができます。もちろん、フルでキャリブレーションの動きをシミュレーションで確認することもできますが、構成によっては相当な時間が掛かるので、覚悟が必要です。このキャリブレーションの省略度合を設定するのが、Auto-calibration mode です。

  • Skip calibration:キャリブレーションをスキップ
  • Quick calibration:キャリブレーションを一部だけ実行
  • Full calibration:キャリブレーションを省略することなく実行
Article header beryll ddr3 fig3 7  1

コントローラの生成

Finish をクリックして、コントローラを生成させます。この時、下図のように Generate Example Design にチェックを入れて Generate をクリックすると、シミュレーションや実機動作が簡単に行える環境(Example Design)も同時に生成してくれます。

Article header beryll ddr3 fig3 8  1

コントローラの生成は、数分程度掛かります。生成が終わったら、Exit をクリックします。

続きは、『インテル® FPGA で DDR3 動作!(実践編)[2/2]』をご覧ください。

メーカの情報

外部メモリ・インタフェース (インテルのサイト)

おすすめ記事/資料はこちら

FPGA の EMIF デザイン & デバッグ・ガイドライン
インテル® FPGA に外部メモリ・コントローラを実装!
インテル® FPGA の開発フロー/トップページ

おすすめ FAQ はこちら

FPGA 用 IP 関連の FAQ
インテル® FPGA 関連の FAQ