FC2カウンター FPGAの部屋 2008年01月06日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DDR2 SDRAM(Micron MTH16M16-37E)の初期化について

Suzaku-V用DDR2 SDRAMコントローラを作るにあたって、DDR2 SDRAM(Micron MTH16M16-37E)の初期化手順をまとめておこうと思う。
最初の電源ONからの手順の一番最初はSuzaku-Vの方でやってくれていると信じる。(パワーONリセットもあることだし。。。)

1.電源とクロックが安定した(リセットが解除されてから)200us後で、CKEを1にしてNOPまたはDESECTコマンドを入れる
2.400us待って全バンク・プリチャージコマンドを入れる
3.EMR(2)レジスタに値をセット(オール0)
4.EMR(3)レジスタに値をセット(オール0)
5.EMRレジスタに値をセット(DLLをイネーブル)。
 Output Enable, RDQS Disable, DQS# Enable, OCD = "000", RTT = 75Ω, Posted CAS = 0 (Posted CASは使用しない), Output Drive Strength = Full Strength, DLL Enable
  値は 0_0000_0000_0100
6.MRレジスタに値をセット(DLLをリセット)。
  PD Mode = Fast Exit, Write Recovery = 3 (オート・プリチャージコマンドは使用しない), DLL Rest = Yes, TM = Normal, CAS# Latency = 3, Burst Type = Sequential, Burst Length = 4
  値は 0_0011_0011_0010
7.全バンク・プリチャージ・コマンドを発行。
8.リフレッシュ・コマンドを2回発行。
9.MRレジスタに値をセット(DLLリセットなし)。
  PD Mode = Fast Exit, Write Recovery = 3 (オート・プリチャージコマンドは使用しない), DLL Rest = No, TM = Normal, CAS# Latency = 3, Burst Type = Sequential, Burst Length = 4
  値は 0_0010_0011_0010
10.EMRレジスタに値をセット(OCD Default)
   Output Enable, RDQS Disable, DQS# Enable, OCD = "111", RTT = 75&;, Posted CAS = 0 (Posted CASは使用しない), Output Drive Strength = Full Strength, DLL Enable
   値は 0_0011_1000_0100
11.EMRレジスタに値をセット(OCD exit)
   Output Enable, RDQS Disable, DQS# Enable, OCD = "000", RTT = 75&;, Posted CAS = 0 (Posted CASは使用しない), Output Drive Strength = Full Strength, DLL Enable
   値は 0_0000_0000_0100

6.でMRレジスタに値をセット(DLLをリセット)してから200クロックしてから正常の操作ができるようになるそうである。
このようにDDR2はDDRよりも面倒だ。

2008/01/18 追記:
MRレジスタに値をセットするところで値を2から3に変更。理由は”DDR2 SDRAMコントローラのシミュレーション時のバグ”を参照。
  1. 2008年01月06日 16:58 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0