はじめに
EMIF (External Memory Interface) IP ではレイテンシー (CL : CAS レイテンシー、CWL : CAS Write レイテンシー) の設定を行います。
このレイテンシー設定は DDR メモリー (SDRAM) のスピードグレードを表すスピードビン (Speed Bin) から正しく読み取り、設定する必要があります。
メモリーのデータシートには、スピードビン毎にレイテンシーを含むタイミングの値が記載されています。その値を正しく EMIF IP に設定しないと、データのビット化けなど予期せぬ誤動作を招く可能性があります。
この記事では主にレイテンシー設定を、スピードビンからレイテンシーの読み取り方、EMIF IP の設定箇所、そして注意点や FAQ (よくある質問) に関して解説します。
DDR メモリーのデータシートからの読み取り方法
まずは正しいレイテンシーの読み取り方を紹介します。以下の手順となります。
- 使用する DDRx SDRAM のデータシートを入手します
- 該当するスピードグレードが掲載されている “Speed Bin” の表を選びます
- 該当のスピードグレード(およびデバイスのリビジョン)のカラムを選びます (①)
- 例: DDR3-1333G
- 使用するメモリークロック周波数から、クロック周期 tCK(avg) を求めて、表の min-max の範囲に含まれる箇所を探します(複数該当する場合があります)(②)
- 例: 333.333MHz の場合、tCK(avg)=3.0 (ns) なので、(min, max) = (2.5, 3.3) が2か所該当
- “Reserved” の場合は使用できません
- ”Option(al)” として条件が注記されている場合は、条件に合う場合に使用可能です
- 表でその行の左端の “Parameter” カラムに示されている条件が、可能な設定になります (③)
- CL, CWL の値を読み取ります (例: CL=5, CWL=5 または CL=6, CWL=5 のどちらかを採用)
- DDR2 の場合、CWL は個別に定義されないので CL の値だけ読み取れば十分です
(注意点)
- クロック周期 (tCK) の max 値に不等号 “<” (等号なし) が使われている場合、その数値丁度の場合は該当しないと判断してください
- 上記の例ではメモリークロック 400MHz, tCK=2.5(ns) の場合も、例で示した 333. ..MHz, tCK=3.0(ns) の場合と同じ条件 (CL=5, CWL=5 または CL=6, CWL=5) という判断になります
(CL=7, CWL=6 は < 2.5 と tCK=2.5 を含んでいませんので採用外となります)
- 上記の例ではメモリークロック 400MHz, tCK=2.5(ns) の場合も、例で示した 333. ..MHz, tCK=3.0(ns) の場合と同じ条件 (CL=5, CWL=5 または CL=6, CWL=5) という判断になります
- DDR4 の場合、Read DBI の off/on によって可能な CAS Latency の値が異なりますので、条件として読み取ります
EMIF IP の設定箇所
求めた CL と CWL を EMIF IP に設定します。設定は以下の画面で変更が可能です。
IP Toolbench GUI の場合
-
- Memory Parameters タブ -> Memory Initialization Options カテゴリーに設定箇所があります
- 設定箇所: [CL] Memory CAS latency setting
[CWL] Memory write CAS latency setting
Platform Designer GUI の場合
-
- Memory タブ -> Latency and Burst カテゴリーに設定箇所があります
- 設定箇所: [CL] Memory CAS latency setting
[CWL] Memory write CAS latency setting
FAQ (よくある質問)
Q. 仕様が変更となりメモリーのクロック周波数を変更しました。何か注意点はありますか?
A. メモリークロック周波数を変更した場合は、CAS レイテンシー、CAS Write レイテンシーの値が適切で無くなる可能性があります。必ずメモリークロック周波数に合わせた設定をして下さい。
Q. インテル® Arria®10 FPGA DDR4 EMIF IP を使用するボードの一部で稀にデータエラーになります。下記設定に問題ありますか?
メモリー動作周波数 1066.667MHz, Read DBI OFF, Cas Latency [CL] = 18, Cas Write Latency [CWL] = 16
A. 動作周波数(周期 tCK)と、Read DBI on/off, CL, CWL の値はメモリーのデータシートの Speed Bin に記載のある正しい値を設定してください。
(上記設定は、ご使用の SDRAM のデータシートを確認したところ、サポートされない組み合わせになっています。)
Q. 最初は周波数 1200 MHz で設計しましたが、変更で周波数を下げた時に下記理由で変更不要と思いました。誤りでしょうか?
(a) クロック周波数を下げるのでタイミングは緩和される方向で、特に他の値は変更しなくて良い
(b) 1066.667MHz 対応の値(例: CL=16, CWL=14) から CL, CWL を増やすので問題ない
(c) DDR4 の規格書 (JESD-79A Nov./2013) では 1066.667MHz の場合は tCK < 0.938 の条件で 1200 MHz と同じ
A. 誤りです。メモリーベンダーのデータシートで Speed Bin の表を確認して設定してください。
表に記載のない組み合わせは、タイミング的に Setup 時間の条件が緩和される場合でも適切ではありません。
ベンダーのデータシートでは tCK < 0.937 と書かれているケースもありますのでご確認ください。
まとめ
この記事では スピードビンからレイテンシーの読み取り方、EMIF IP の設定箇所を解説しました。また注意点やよくある質問もまとめました。正しい CAS レイテンシー、CAS Write レイテンシーを設定して確実に動作する設計を行いましょう。