APPLICATION NOTE

本資料は MCM JAP AN が 英文アプリケーション・ノートの理解補助のために参考資料として作成
した も の です 。本 資 料 に 記 載 され て いる 内 容 は 、今 後 、予 告 無 く 変 更 する ことが あ り ま す 。量 産 設
計の際には、メーカーの最新資料等をご参照ください。
APPLICATION NOTE
AT91SAM ARM-based Embedded MPU
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices
1.
適用範囲
SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35 はマルチポート DDR2 コントローラ
ー を 内 蔵 してい ます 。こ のコ ントロー ラ ー は 32-bit DDR2-SDRAM, 32-bit LPDDR1SDRAM, 32-bit LPDDR2-SDRAM をサポートしています。これらのメモリーを本アプリケー
ション・ノートでは SDRAM と記載します。
SAMA5D3x はバスのインピーダンス整合を行い、信号整合性を改善するパッド較正機能を
組込んでいます。これはオーバー・シュートや電磁妨害の減少、I/O の消費電力の減少およ
びデータ信号線に必要な直列抵抗の使用抑制をもたらします。
本ドキュメントの目的は開発者の外部メモリーを使用したシステム設計を補助することです。
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
2.
マルチポート DDR2 コントローラー概要
マルチポート DDR コントローラー(MPDDRC)は、外付け 32 ビット SDRAM デバイスへのインターフェースを用意することでメモ
リーに関するチップの性能を拡張します。ページ数は 2048 から 16384 の範囲をサポートし、コラム数は 256 から 4096 までサ
ポートします。32 ビットのデータ幅の上でワード(32bit)アクセス、ハーフ・ワード(16bit)アクセス、バイト(8bit)アクセスをサポート
します。
MPDDR コントローラーは 4 ポート・アーキテクチャーのおかげで 4 か所にバースト長の読出し、書込みを行います。各バンク内
のアクティブなロウ(行)を追跡し続け、このようにして SDRAM の性能を最大化します。たとえば、アプリケーションはあるバンク
内におかれ、データはその他のバンクにおかれることが許されます。したがって、性能を最適化するために、同一のバンク内の
異なる行にアクセスしないようお勧めします。
MPDDRC は CAS の遅延時間として 2, 3, 4, 5, 6 をサポートし、周波数によって読出しアクセスを最適化します。
セルフ・リフレッシュ、パワー・ダウン、ディープ・パワーダウン・モード機能は SDRAM デバイスの消費電力を最小化させます。
MPDDR コントローラーの I/O は VDDIODDR から電源供給されます。DDR2-SDRAM と LPDDR1-SDRAM について、
VDDIODDR は公称 1.8V に設定され、LPDDR2-SDRAM については、VDDIODDR は公称 1.2V に設定されます。
DDR のチップ・セレクトによりアドレス 0x2000 0000 からアドレス 0x4000 0000 の 512M バイトの SRAM にアクセスできます。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
2
3.
マルチポート DDR2 コントローラーの信号定義
MPDDR コントローラーは 4 バンクと 8 バンクの SDRAM デバイスを管理します。 コントローラーによって生成される信号は以
下に定義されます。
Table 3-1.
SDRAM コントローラー信号
ここで:
DDR_D0 - DDR_D31 は SDRAM コントローラーのデータ・ラインであり、マイコン上の[DDR_D31:DDR_D0]にそれぞれ結線
されています。
DDR_A0 - DDR_A13 は SDRAM コントローラーのアドレス・ラインであり、マイコン上の[DDR_A13:DDR_A0]にそれぞれ結線
されています。
DDR_CK - DDR_CKN は差動クロック信号であり、SDRAM デバイスに供給されます。ほかのすべての信号はこの信号を基準
にしています。
DDR_CKE は DDR デバイスへの禁止信号として動作します。DDR_CKE は DDR2 アクセス(読出し、書込み、プリチャージ)が
有効な間ハイに固定されます。この信号はデバイスがパワー・ダウン・モードに入るとき、あるいはセルフ・リフレッシュ・モードに
入るときにローになります。セルフ・リフレッシュ・コマンドはコントローラーより発行されます(DDR2 コントローラーのセルフ・リフ
レッシュ・モードを参照ください)。
DDR_CS: チップ・セレクト(DDR_CS)がローのとき、コマンド入力は有効です。この信号がハイの時は、コマンドは無視されます
が動作は継続します。
DDR_RAS - DDR_CAS, DDR_WE: 行アドレス・ストローブ(DDR_RAS)と列アドレス・ストローブ(DDR_CAS)は対応するアド
レスがバス上に存在することを示すためにアサートされます。クロック(DDR_CK)の立上りあるいはクロック N(DDR_CKN)の立
下りにおける書込みイネーブル(DDR_WE)とチップ・セレクト(DDR_CS)の組合せによって、DDR2 の操作が決定されます。
DDR_DQM[0..3]: データは DDR_DQM[3..0]によって 32 ビットでアクセスします。DDR_DQM[3..0]はバス上の DDR2 データ
の最上位から最下位のマスク・ビットにそれぞれ対応します。
DDR_DQS[0..3]: データ・ストローブです。データは DDR_DQS のエッジでサンプルされます。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
3
DDR_DQSN[0..3]: LPDDR2-SDRAM のためのネガティブ・データ・ストローブです。DQSN は DDR2 メモリーのために
DDR_VREF に必ず接続してください。
DDR_BA[0..2]はコマンド入力時にアドレスのためのバンクを選択します。読出し/書込みあるいはプリチャージは DDR_BA0,
DDR_BA1, DDR_BA2 によって選択されたバンクに適用されます。
DDR_VREF は DDR2 メモリーの入力バッファーとして用いられるだけでなく、DDR2 コントローラーが論理レベルを決めるのに
も使用されます。VREF は電源電圧の 1/2 となるように指定され、1.5kΩ, 1%精度の抵抗 2 個で構成される抵抗分割を使って
生成されます。
DDR_CALP, DDR_CALN は I/O を較正するために使用されます。詳細は較正の章を参照ください。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
4
4.
SAMA5D3x への SDRAM 接続
SAMA5D3x マイクロプロセッサーは DDR チップ・セレクト領域(0x2000 000 で始まるメモリー領域)上で 32 ビット DDR2 デバイ
スをサポートします。このメモリー領域は 512M バイトの空間を持ちます。
MPDDR コントローラーを定義するユーザー・インターフェースはアドレス 0xFFFF EA00 の上にマッピングされています。
各メモリー・デバイスは電源配線上に効果的なフィルター機能を実現するために十分なデカップリング・コンデンサーを必ず使用
してください。
4.1
2 個の 16 ビット DDR2-SDRAM を使用した 32 ビットの実装
4.1.1
ハードウェア構成
4.1.2
ソフトウェア構成
DDR2 の初期化手順は 12 ページの 9.1 項”DDR2-SDRAM の初期化”に記載しています。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
5
4.2
DDR2 VREF 信号に関する注意事項
インターフェース電圧の半分、すなわち 0.9V である DDR_VREF の電圧は 2 個の 1.5kΩ, 1%精度の抵抗分割により 1.8V か
ら作られます。
DDR_VREF は大電流出力である必要はありませんが最低限のインピーダンスでできる限りノイズのない状態を保つことが重
要です。DDR2 メモリーでは DQSN[3:0]を DDR_VREF に必ず接続してください。
4.3
2 個の 16 ビット LPDDR2-SDRAM を使用した 32 ビットの実装
4.3.1
ハードウェア構成
4.3.2
ソフトウェア構成
DDR2 の初期化手順は 13 ページの 9.2 項”LPDDR2-SDRAM の初期化”に記載しています。
4.4
LPDDR2 VREF 信号に関する注意事項
インターフェース電圧の半分、すなわち 0.6V である DDR_VREF の電圧は 2 個の 1.5kΩ, 1%精度の抵抗分割により 1.2V か
ら作られます。
DDR_VREF は大電流出力ではありませんが最低限のインピーダンスで、できる限りノイズのない状態を保つことが重要です。
ノイズを低減するために LPDDR2-SDRAM では VREFCA と VREFDQ の 2 つの VREF が必要です。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
6
5.
SDRAM 信号配線に関する注意事項
重要な高速信号は SDRAM に関連しています。以下に示すのは DDR_CK/DDR_CKN の目標周波数を 166MHz とす
る SAMA5D3x 製品で SDRAM インターフェースを設計する際の一般的なガイドラインです:

一番初めに、SDRAM デバイスをできる限りプロセッサーの近くに配置してください。長い配線は信号の伝搬時間を増大
させます。



SDRAM クロックと制御信号配線をできる限り短く保ってください。

メモリー・デバイスのために十分なデカップリング方式を使用する。低 ESR の 0.01uF と並列に 0.1uF のデカップリング・
コンデンサーの使用を推奨します。グランド・バウンスの最小化と高周波ノイズを除去するために追加の 0.001uF のデカ
ップリング・コンデンサーの使用を推奨します。
SDRAM アドレスとデータ配線をできる限り短く保ってください。
166MHz での適切な SDRAM 動作のために、バスのインピーダンスの同化が必要です。パッド較正機能のおかげでこ
れが実現できます。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
7
6.
LPDDR2-SDRAM の電源立上げと電源立下げに関する注意事項
6.1
電源立上げ手順
LPDDR2-SDRAM デバイスの電源立上げには特別な手順が必要です。この手順は必須です。指定以外の電源立上げと初期
化は予期せぬ動作を引き起こします。
詳細およびタイミングに関しては LPDDR2-SDRAM データシートを参照してください。
6.2
電源立下げ手順
LPDDR2-SDRAM デバイスの電源立下げには特別な手順が必要です。この手順は必須です。指定以外の電源立下げは結果
として制御不能な電源立下げとなります。
VDDIODDR 電源不良はシステム・レベル(IRQ または FIQ)で処理されなければなりません。この事象が起きた時に、LPDDR2
電源オフ手順は VDDIODDR 電源がオフするまえに、LPDDR2_PWOFF ビット(MPDDRC レジスターのビット 3)を使用して実
行されます。
制御なしの電源オフ手順は LPDDR2-SDRAM 製品寿命のなかで 400 回までしか許容されていません。
全ての詳細とタイミングは LPDDR2-SDRAM のデータシートを参照してください。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
8
7.
較正に関する注意事項
SAMA5D3x はパッド較正機能を内蔵しており、それは信号の整合性を改善するためバス・インピーダンス整合を行いま
す。これは以下のことにつながります:



オーバー・シュートの削減と電磁気の改善。
I/O の消費電力削減。
データ配線の直列抵抗必要性の圧縮。
7.1
DDR2-SDRAM または LPDDR1-SDRAM の較正
7.1.1
ハードウェア
DDR2 あるいは LPDDR1 の較正は DDR_CALP から GND の、そして DDR_CALN から VDDIODDR の間に 200Ωの抵抗
を接続する必要があります。
7.1.2
ソフトウェア
DDR2 あるいは LPDDR1 のソフトウェア較正は次の手順でただ一度だけ行えばよいです:


ボードのインピーダンスに応じて、MPDDRC_IO_CALIBR レジスターの RDIV フィールドを設定。
以下の計算式を参考に TZQIO を計算
TZQIO = (DDRCLK* 20ns) + 1


7.2
7.2.1
MPDDRC_IO_CALIBR の TZQIO 時間を計算。
ハイ・スピード・レジスター(0xFFFFEA24)の 5 番目のビットを設定して較正を有効化。
LPDDR2-SDRAM の較正
ハードウェア
LPDDR2 の較正は DDR_CALP から GND の、そして DDR_CALN から VDDIODDR の間に 240Ωの抵抗を接続する必要
があります。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
9
7.2.2
ソフトウェア
LPDDR2 のソフトウェア較正は次の手順でただ一度だけ行えばよいです:


ボードのインピーダンスに応じて、MPDDRC_IO_CALIBR レジスターの RDIV フィールドを設定。
以下の計算式を参考に TZQIO を計算
TZQIO = (DDRCLK* 20ns) + 1



MPDDRC_IO_CALIBR の TZQIO 時間を計算。
LPDDR2-SDRAM データシートに照らして、LPDDR2_TM_CAL の ZQCS フィールドによって短較正時間をプログラム。
プロセス・電圧・温度(PVT)にわたって較正パルスを計算。PVT はリフレッシュ・レート、温度と電圧の予想される変化、そ
して LPDDR2-SDRAM データシートで定義された温度と電圧の感度に依存しています。以下の計算式を参照ください:
ZQCorrection/ ((TSens x Tdriftrate) + (VSens x Vdriftrate))

LPDDR2_CAL_MR4 レジスターの COUNT_CAL フィールドの値を設定。
たとえば、TSens=0.75%/°C, VSens=0.2%/mV, Tdriftrate=1°C/sec, driftrate=15mV/sec とすると、ZQCS コマンドの
間隔は次のように計算されます:
1.5 / ((0.75 x 1) + (0.2 x 15)) = 0.4 sec
この LPDDR2-SDRAM デバイスは 0.4 秒毎に較正が要求されます。
値は REFRESH コマンド間の平均時間、tREF に依存してロードされます。
リフレッシュ間隔時間が 7.8us の LPDDR2-SDRAM の場合は、較正タイマー・カウント・ビットの値は次のようにプログラ
-6
ムされます: (0.4/7.8 x 10 ) = 0xC852
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
10
8.
DDR2 電磁両立性(EMC)の改善
8.1
同時スイッチング
同時スイッチングはデバイスの動作レベルにおける EMI の最悪の原因です。SAMA5D3x はパッド較正機能を組込んでおり、こ
の機能は、信号の適合性を改善し、電流の量を減らして電力消費を減らすバス・インピーダンスの適合化を実行します。
8.2
オーバー・シュート
オーバー・シュートは電流量が過大なときに発生します。SAMA5D3x はパッド較正機能を組込んでおり、この機能は、信号の適
合性を改善し、オーバー・シュートを減らすバス・インピーダンスの適合化を実行します。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
11
9.
MPDDR コントローラーの設定
9.1
DDR2-SDRAM の初期化
初期化手順はソフトウェアによって生成されます。DDR2-SDRAM デバイスは以下の手順に従って初期化されます:
(レジスターの記述に関しては、SAMA5D3x データシートの DDR2-SDRAM 初期化の章をご覧ください)
(初期化の例については、”付記”をご覧ください)
1.
メモリー・デバイス・レジスターにメモリー・デバイス・タイプをプログラム
2.
タイミング・レジスター((TRC, TRAS などの)非同期タイミング)と設定レジスター(行、列、バンクの数、CAS 待ち時間、出力
ドライブの強さ)に DDR2-SDRAM デバイス機能をプログラム
3.
NOP コマンドが DDR2-SDRAM に発行されます。モード・レジスターに NOP コマンドをプログラム。アプリケーションはモ
ード・レジスターの MODE を 1 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込アクセス
を実行する必要がある。これで、DDR2-SDRAM デバイスをドライブするクロックが有効になります。
最低 200us の休止が任意の信号切替えに先行してもたらされます。
4.
NOP コマンドが DDR2-SDRAM に発行されます。モード・レジスターに NOP コマンドをプログラム。アプリケーションはモ
ード・レジスターの MODE を 1 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込アクセス
を実行する必要がある。これで、CKE がハイ・レベルになります。
5.
全てのバンクのプリチャージ・コマンドが DDR2-SDRAM に発行されます。モード・レジスターに全てのバンクのプリチャー
ジ・コマンドをプログラム。アプリケーションはモード・レジスターの MODE を 2 に設定し、このコマンドを認識するように任
意の DDR2-SDRAM アドレスへの書込アクセスを実行する必要がある。
6.
拡張モード・レジスター設定(EMRS2)サイクルが一般温度動作か高温動作かを選ぶために発行されます。アプリケーショ
ンはモード・レジスターの MODE を 5 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込
アクセスを実行する必要がある。書込みアドレスは BA[1]が 1 に設定、BA[0]が 0 に設定されるように選ばれなければなら
ない。
7.
拡張モード・レジスター設定(EMRS3)サイクルが全てのレジスターを 0 に設定するために発行されます。アプリケーション
はモード・レジスターの MODE を 5 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込アク
セスを実行する必要がある。書込みアドレスは BA[1]が 1 に設定、BA[0]が 1 に設定されるように選ばれなければならない。
8.
拡張モード・レジスター設定(EMRS1)サイクルが DLL を有効にするために発行されます。アプリケーションはモード・レジ
スターの MODE を 5 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込アクセスを実行す
る必要がある。書込みアドレスは BA[1]と、BA[0]が 0 に設定されるように選ばれなければならない。
9.
DLL をロックするためにはさらに 200 サイクルのクロックが必要です。
10. 設定レジスターに DLL フィールドがハイになるようにプログラム。(DLL リセットを有効)
11. モード・レジスター設定(MRS)サイクルが DLL をリセットするために発行されます。アプリケーションはモード・レジスターの
MODE を 3 に設定し、このコマンドを認識するように任意の DDR2-SDRAM アドレスへの書込アクセスを実行する必要が
ある。書込みアドレスは BA[1:0]ビットが 0 に設定されるように選ばれなければならない。たとえば、SDRAM 書込みアクセ
スはアドレス 0x20000000 になされなければならない。
12. 全てのバンクのプリチャージ・コマンドが DDR2-SDRAM に発行されます。モード・レジスターに全てのバンクのプリチャー
ジ・コマンドをプログラム。アプリケーションはモード・レジスターの MODE を 2 に設定し、このコマンドを認識するように任
意の DDR2-SDRAM アドレスへの書込アクセスを実行する必要がある。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
12
13. 2 回の自動リフレッシュ(CBR)サイクルがもたらされます。モード・レジスターに自動リフレッシュ・コマンド(CBR)をプログラ
ム。アプリケーションはモード・レジスターの MODE を 4 に設定し、このコマンドを認識するように任意の DDR2-SDRAM
の場所に 2 度の書込アクセスを実行する必要がある。
14. 設定レジスターに DLL フィールドがローになるようにプログラム。(DLL リセットを無効)
15. モード・レジスター設定(MRS)サイクルが DDR2-SDRAM デバイスのパラメータをプログラムするために発行されます。そ
のパラメータとは、具体的には、CAS の待ち時間、バースト長、そして DLL リセットを無効にすることです。アプリケーショ
ンはモード・レジスターの MODE を 3 に設定し、このコマンドを認識するように任意の DDR2-SDRAM への書込アクセス
を実行する必要がある。書込みアドレスは BA[1:0]ビットが 0 に設定されるように選ばれなければならない。たとえば、16
ビット 128-MB SDRAM(12 行、9 桁、4 バンク)のバンク・アドレスの場合、SDRAM の書込みアクセスはアドレス
0x20000000 になされなければならない。
16. 設定レジスターに OCD フィールドがハイになるようにプログラム。(OCD 較正 既定値)
17. 拡張モード・レジスター設定(EMRS1)サイクルが OCD を既定値にするために発行されます。アプリケーションはモード・レ
ジスターの MODE を 5 に設定し、このコマンドを認識するように DDR2-SDRAM への書込アクセスを実行する必要があ
る。書込みアドレスは BA[1]が 0 に設定、BA[0]が 1 に設定されるように選ばれなければならない。
18. 設定レジスターに OCD フィールドがローになるようにプログラム。(OCD 較正モード 終了)
19. 拡張モード・レジスター設定(EMRS1)サイクルが OCD 終了を有効にするために発行されます。アプリケーションはモード・
レジスターの MODE を 5 に設定し、このコマンドを認識するように DDR2-SDRAM への書込アクセスを実行する必要があ
る。書込みアドレスは BA[1]が 1 に設定、BA[0]が 1 に設定されるように選ばれなければならない。
20. 通常モード・コマンドが用意される。モード・レジスターに通常モードをプログラム。このコマンドを認識するように任意の
DDR2-SDRAM アドレスへの書込アクセスを実行。
21. 任意の DDR2-SDRAM アドレスへの書込アクセスを実行。
22. リフレッシュ・タイマー・レジスターのカウント・フィールドにリフレッシュ・レートを書込む。(リフレッシュ・レート=リフレッシュ・
サイクル間の遅延時間). DDR2-SDRAM デバイスは 15.625us 毎あるいは 7.81us 毎にリフレッシュする必要があります。
133MHz の周波数における、リフレッシュ・カウントは(15.625x133)=2079、すなわち 0x081F か(7.81x133)=1039、すな
わち 0x040F のどちらかです。
初期化後は、DDR2-SDRAM デバイスは完全に機能します。
9.2
LPDDR2-SDRAM の初期化
初期化手順はソフトウェアによって生成されます。低電力(LP)DDR2-SDRAM デバイスは以下の手順に従って初期化されま
す:
1.
メモリー・デバイス・レジスターにメモリー・デバイス・タイプをプログラム
2.
タイミング・レジスター((TRC, TRAS などの)非同期タイミング)と設定レジスター(行、列、バンクの数、CAS 待ち時間、出力
ドライブの強さ)に LPDDR2-SDRAM デバイス機能をプログラム
3.
NOP コマンドが LPDDR2-SDRAM に発行されます。モード・レジスターに NOP コマンドをプログラム。アプリケーションは
モード・レジスターの MODE(MPDDRC コマンド・モード)を 1 に設定する必要がある。このコマンドを認識するように任意
の LPDDR2-SDRAM への書込アクセスを実行する。これで、LPDDR2-SDRAM デバイスをドライブするクロックが有効に
なります。
最低 100us の休止が任意の信号切替えに先行して観察されるはずです。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
13
4.
NOP コマンドが LPDDR2-SDRAM に発行されます。モード・レジスターに NOP コマンドをプログラム。アプリケーションは
モード・レジスターの MODE を 1 に設定する必要がある。このコマンドを認識するように任意の LPDDR2-SDRAM アドレ
スへの書込アクセスを実行する。これで、CKE がハイ・レベルになります。
最低でも 200us の休止がリセット・コマンドの前に満たされなければならない。
5.
リセット・コマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE(MPDDRC コマンド・モード)フィール
ドと MRS(LPDDR2 選択モード・レジスター)フィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジス
ターの MODE を 7 に設定、MRS を 63 に設定する必要がある。このコマンドを認識するように任意の LPDDR2-SDRAM
アドレスへの書込アクセスを実行。これで、リセット・コマンドが発行されました。
最低でも 1us の休止がいかなるコマンドの前でも満たされなければならない。
6.
モード・レジスター読出しコマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE フィールドと MRS フ
ィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジスターの MODE を 7 に設定、MRS を 0 に設定
する必要がある。このコマンドを認識するように任意の LPDDR2-SDRAM アドレスへの書込アクセスを実行。これで、モー
ド・レジスター読出しコマンドが発行されました。
最低でも 10us の休止がいかなるコマンドの前でも満たされなければならない。
7.
較正コマンドが LPDDR2-SDRAM に発行されます。設定レジスターに較正の型をプログラム、すなわち ZQ フィールドに
RESET の値をプログラム。モード・レジスターにおいては、MODE フィールドに LPDDR2_CMD の値をプロクラム、そして
MRS フィールドもプログラム;アプリケーションは MODE を 7 に設定、MRS を 10 に設定する必要がある。このコマンドを
認識するように任意の LPDDR2-SDRAM アドレスへの書込アクセスを実行。これで、ZQ 較正コマンドが発行されました。
設定レジスターに較正の型をプログラム、すなわち ZQ フィールドに SHORT の値をプログラム。
8.
モード・レジスター書込みコマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE フィールドと MRS フ
ィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジスターの MODE を 7 に設定、MRS を 1 に設定
する必要がある。モード・レジスター書込みコマンド・サイクルが、特定のバースト長で、LPDDR2-SDRAM のパラメータを
プログラムするために発行される。このコマンドを認識するように任意の LPDDR2-SDRAM アドレスへの書込アクセスを
実行。これで、モード・レジスター書込みコマンドが発行されました。
9.
モード・レジスター書込みコマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE フィールドと MRS フ
ィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジスターの MODE を 7 に設定、MRS を 2 に設定
する必要がある。モード・レジスター書込みコマンド・サイクルが、特定の CAS 待ち時間で、LPDDR2-SDRAM のパラメー
タをプログラムするために発行される。このコマンドを認識するように任意の LPDDR2-SDRAM アドレスへの書込アクセス
を実行。これで、モード・レジスター書込みコマンドが発行されました。
10. モード・レジスター書込みコマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE フィールドと MRS フ
ィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジスターの MODE を 7 に設定、MRS を 3 に設定
する必要がある。モード・レジスター書込みコマンド・サイクルが、特定のドライブの強さとスリュー・レート長で、LPDDR2SDRAM のパラメータをプログラムするために発行される。このコマンドを認識するように任意の LPDDR2-SDRAM アドレ
スへの書込アクセスを実行。これで、モード・レジスター書込みコマンドが発行されました。
11. モード・レジスター書込みコマンドが LPDDR2-SDRAM に発行されます。モード・レジスターの MODE フィールドと MRS フ
ィールドに LPDDR2_CMD をプログラム。アプリケーションはモード・レジスターの MODE を 7 に設定、MRS を 19 に設定
する必要がある。モード・レジスター書込みコマンド・サイクルが、特定の部分配列自己リフレッシュ(PASR)で、LPDDR2SDRAM のパラメータをプログラムするために発行される。このコマンドを認識するように任意の LPDDR2-SDRAM アドレ
スへの書込アクセスを実行。これで、モード・レジスター書込みコマンドが発行されました。
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
14
12. リフレッシュ・タイマー・レジスター(リフレッシュ・レート=リフレッシュ・サイクル間の遅延時間)のカウント・フィールドにリフレ
ッシュ・レートを書込む。LPDDR2-SDRAM デバイスは 7.81us 毎にリフレッシュする必要があります。133MHz の周波数
における、リフレッシュ・タイマー・カウント・レジスターは (7.81x133)=1039、すなわち 0x040F に設定されねばならない。。
初期化後は、LPDDR2-SDRAM デバイスは完全に機能します。
9.3
マイクロン MT47H128M16
マイクロン社、MT47H128M16 は 256MB のデバイスで、133MHz 動作時に 3 の CAS 待ち時間をもち、32Mbit x 16 x 8 バン
クに配列されています。これらのデバイスは SAMA5D3x-CM(評価用 CPU ボード)に搭載されています。
以下の表は DDR2-SDRAM データシートの抜粋で遅延時間を ns 単位で表しています。その対応しているサイクル数は
133MHz の時のものであり、528MHz のプロセッサー・クロックと 132MHz のシステム・クロックで動作しているシステムに対応
した値をプログラムすることのできる分野に適応しています。
528
GCLK
0x20ac3f01
0x00000202
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
15
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
16
10.
付記
ここに、12 ページの 9.1 項”DDR2-SDRAM の初期化”で紹介された様々な手順に関連している DDR2 初期化コードの
一例を示します:
//*---------------------------------------------------------------------------//* \fn ddram_init
//* \brief Initialization of the DDR Controller
//*---------------------------------------------------------------------------int ddram_init(unsigned int ddram_controller_address, unsigned int ddram_address, struct
SDdramConfig *ddram_config)
{
volatile unsigned int i;
unsigned int cr = 0;
// Initialization Step 1: Program the memory device type
// Configure the DDR controller
write_ddramc(ddram_controller_address, HMPDDRC_MDR, ddram_config->ddramc_mdr);
// Program the DDR Controller
write_ddramc(ddram_controller_address, HMPDDRC_CR, ddram_config->ddramc_cr);
// Initialization Step 2: assume timings for 7.5 ns min clock period
write_ddramc(ddram_controller_address, HMPDDRC_T0PR, ddram_config->ddramc_t0pr);
// pSDDRC->HMPDDRC_T1PR
write_ddramc(ddram_controller_address, HMPDDRC_T1PR, ddram_config->ddramc_t1pr);
// pSDDRC->HMPDDRC_T2PR
write_ddramc(ddram_controller_address, HMPDDRC_T2PR, ddram_config->ddramc_t2pr);
// Initialization Step 3: NOP command -> allow to enable clk
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_NOP_CMD);
*((unsigned volatile int*) ddram_address) = 0;
// Initialization Step 3 (must wait 200 μs) (6 core cycles per iteration,
// core is at 528 MHz: min 17,733 loops)
for (i = 0; i < 17800; i++) {
asm(" nop");
}
// Initialization Step 4: A NOP command is issued to the DDR2-SDRAM
// NOP command -> allow to enable cke
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_NOP_CMD);
*((unsigned volatile int*) ddram_address) = 0;
// wait 400 ns min
for (i = 0; i < 250; i++) {
asm(" nop");
}
// Initialization Step 5: Set All Bank Precharge
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_PRCGALL_CMD);
*((unsigned volatile int*) ddram_address) = 0;
// wait 400 ns min
for (i = 0; i < 250; i++) {
asm(" nop");
}
// Initialization Step 6: Set EMR operation (EMRS2)
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*((unsigned int *)(ddram_address + 0x4000000)) = 0;
// wait 2 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
17
// Initialization Step 7: Set EMR operation (EMRS3)
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*((unsigned int *)(ddram_address + 0x6000000)) = 0;
// wait 2 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Initialization Step 8: Set EMR operation (EMRS1)
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*((unsigned int *)(ddram_address + 0x2000000)) = 0;
// wait 200 cycles min
for (i = 0; i < 10000; i++) {
asm(" nop");
}
// Initialization Step 9: enable DLL reset
cr = read_ddramc(ddram_controller_address, HMPDDRC_CR);
write_ddramc(ddram_controller_address, HMPDDRC_CR, cr | AT91C_DDRC2_DLL_RESET_ENABLED);
// Initialization Step 10: reset DLL
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// wait 2 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Initialization Step 11: Set All Bank Precharge
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_PRCGALL_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// wait 400 ns min
for (i = 0; i < 250; i++) {
asm(" nop");
}
// Initialization Step 12: Two auto-refresh (CBR) cycles are provided. Program the auto
refresh
// command (CBR) into the Mode Register.
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_RFSH_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// wait 10 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Set 2nd CBR
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_RFSH_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// wait 10 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Initialization Step 13: Program DLL field into the Configuration Register to low
// (Disable DLL reset).
cr = read_ddramc(ddram_controller_address, HMPDDRC_CR);
write_ddramc(ddram_controller_address, HMPDDRC_CR, cr & (~AT91C_DDRC2_DLL_RESET_ENABLED));
// Initialization Step 14: A Mode Register set (MRS) cycle is issued to program the
// parameters of the DDR2-SDRAM devices.
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_LMR_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// Initialization Step 15: Program OCD field into the Configuration Register to high
// (OCD calibration default).
cr = read_ddramc(ddram_controller_address, HMPDDRC_CR);
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
18
write_ddramc(ddram_controller_address, HMPDDRC_CR, cr | AT91C_DDRC2_OCD_DEFAULT);
// Initialization Step 16: An Extended Mode Register set (EMRS1) cycle is issued to OCD
// default value.
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*(((unsigned int*) (ddram_address + 0x2000000))) = 0;
// wait 2 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Initialization Step 17: Program OCD field into the Configuration Register to low (OCD
// calibration mode exit).
cr = read_ddramc(ddram_controller_address, HMPDDRC_CR);
write_ddramc(ddram_controller_address, HMPDDRC_CR, cr & (~AT91C_DDRC2_OCD_EXIT));
// Initialization Step 18: An Extended Mode Register set (EMRS1) cycle is issued to enable
// OCD exit.
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_EXT_LMR_CMD);
*(((unsigned int*) (ddram_address + 0x6000000))) = 0;
// wait 2 cycles min
for (i = 0; i < 100; i++) {
asm(" nop");
}
// Initialization Step 19, 20: A mode Normal command is provided. Program the Normal mode
// into Mode Register.
write_ddramc(ddram_controller_address, HMPDDRC_MR, AT91C_DDRC2_MODE_NORMAL_CMD);
*(((unsigned volatile int*) ddram_address)) = 0;
// Initialization Step 21: Write the refresh rate into the count field in the Refresh
// Timer Register.
// Set Refresh timer
write_ddramc(ddram_controller_address, HMPDDRC_RTR, ddram_config->ddramc_rtr);
// OK, now we are ready to work on the DDRSDR
// wait for the end of calibration
for (i = 0; i < 500; i++) {
asm(" nop");
}
return 0;
}
Implementation of DDR2 and LP-DDR2 on SAMA5D3x Devices[APPLICATION NOTE]
11172A-ATARM10-Feb-15_MCMJ-2
日本語版資料
19
Atmel Corporation
Atmel Asia Limited
Atmel Munich GmbH
Atmel Japan G.K.
1600 Technology Drive
Unit 01-5 & 16, 19F
Business Campus
16F Shin-Osaki Kangyo Bldg.
San Jose, CA 95110
BEA Tower, Millennium City 5
Parkring 4
1-6-4 Osaki, Shinagawa-ku
USA
418 Kwun Tong Road
D-85748 Garching b. Munich
Tokyo 141-0032
Tel: (+1)(408) 441-0311
Kwun Tong, Kowloon
GERMANY
JAPAN
Fax: (+1)(408) 487-2600
HONG KONG
Tel: (+49) 89-31970-0
Tel: (+81)(3) 6417-0300
www.atmel.com
Tel: (+852) 2245-6100
Fax: (+49) 89-3194621
Fax: (+81)(3) 6417-0370
Fax: (+852) 2722-1369
© 2013 Atmel Corporation. All rights reserved. / Rev.: 11172A-ATARM10-Feb-15
Atmel®, Atmel logo and combinations thereof, Enabling Unlimited Possibilities®, and others are registered trademarks or trademarks of Atmel Corporation or its
subsidiaries. ARM®, ARMPowered® logo, Cortex™ are registered trademarks or trademarks of ARM Ltd.Other terms and product names may be trademarks of
others.
Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this
document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES
NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS AND PROFITS, BUSINESS INTERRUPTION, OR LOSS OF
INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no
representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and products descriptions at any time
without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in,
automotive applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.