はじめに
EMIF (External Memory Interface) の IP では SDRAM の内部抵抗 (ODT : On Die Termination) の設定が必要です。
設定は "Mem I/O" タブにある "Memory I/O Settings" にて以下の3項目が設定できます。
- Output drive strength Settings
- Dynamic ODT (Rtt_WR) value
- ODT Rtt nominal value
【図 1】”Mem I/O" タブにある3つの設定項目画面
ODT の最適値は基板シミュレーションの結果から設定しますが、インテルの EMIF Toolkit の機能を使用する事により、実機確認にて基板の最適な ODT 値を確認できます。
この記事では実基板において最適な ODT の値を確認する方法と、その値を IP に反映させる手順を紹介します。
- 対象デバイス:インテル® Arria® 10 FPGA
- 対象メモリー・トポロジー:DDR4、DDR3
※本記事は EMIF Toolkit を使用するため、実際に FPGA で EMIF IP が動作する基板が必要です
EMIF Toolkit による最適な ODT 値の取得
SDRAM の 最適な ODT 値を取得するためには、対象とする基板にて EMIF Toolkit が動作する事が必要です。まず対象基板で、EMIF Toolkit が動作するか準備してください。
EMIF Toolkit の具体的な接続手順は以下の資料を参照ください
参考資料:
「FPGA の EMIF デザイン & デバッグ・ガイドライン」
- https://www.macnica.co.jp/business/semiconductor/articles/intel/129749/
-
“デザイン&デバッグ・ガイドライン(Rev.3.2)/Arria® 10 版”
- Appendix : EMIF ToolKit の使い方
EMIF Toolkit の準備ができたら、Tasks ウィンドウにある "Calibrate Termination" をクリックして、ODT に対するキャリブレーションを実行します。
【図 2】Tasks ウィンドウにある "Calibrate Termination"
取得した最適な ODT 値を EMIF IP に反映
"Calibrate Termination" が終了すると、"Calibrate Termination Report" から以下の3項目の結果が表示されます。
【図 3】取得した On-Die Termination
【図 4】取得した Dynamic On-Die Termination
【図 5】取得した Output Drive Strength
各結果の Margin が一番大きい設定 (上記赤枠) が、最適な ODT の値です。
この最適な ODT 値を、再度 EMIF IP に反映して再コンパイルしてみましょう。
【図 6】測定時の IP 上の設定値と変更する値
メモ:
EMIF IP 設定画面の "Memory I/O Settings" の設定名と、"Calibrate Termination Report" の表示名が違いますので、以下の表に表示の違いを記載します。
Memory I/O Settings | Calibrate Termination Report |
Output drive strength setting | Output Drive Strength |
Dynamic ODT (Rtt_WR) value | Dynamic On-Die Termination |
ODT Rtt nominal value | On-Die Termination |
【表 1】 "Memory I/O Settings" と"Calibrate Termination Report" の表示対比表
ODT 値を変更した結果
ODT 値を変更、再コンパイルを行い、再度 FPGA に書き込みました。
その後、EMIF Toolkit を立ち上げ、再度 "Calibrate Termination" を実行します。
"Calibrate Termination Report" では以下のような結果になりました。
【図 7】最適な値になった On-Die Termination
【図 8】最適な値になった Dynamic On-Die Termination
【図 9】最適な値になった Output Drive Strength
最適な ODT 値を設定することで、いずれの設定も最大の Margin を確保ができました。
【図 10】ODT 値の変更により最大 Margin が確保
おわりに
この記事では実基板において最適な ODT の値を確認する方法と、その値を IP に反映させる手順を紹介しました。
最適な ODT 値を EMIF IP に設定することにより、対象となる基板に対して適切な ODT が設定されますので、試されてはいかがでしょうか。
注記:
Margin の値は Calibrate Termination した時点の条件(温度・電圧など)における結果のため、実行のたびに Margin 値が変わる可能性があります。