MPC5125初始化DDR2 SDRAM那些事兒

來源:互聯網
上載者:User

 

       產品升級將DDR一代的SDRAM換成DDR2代的SDRAM,在核心頻率都為200MHZ的情況下,頻寬可以增加一倍,對於其驅動的分析改寫過程記錄如下:

(1)對於MPC5125 DDR控制的初始化:

       MPC5125 DDR控制器的特點:

       The DRAM controller is a multi-port controller that listens to incoming requests on the four incoming buses and decides on each rising clock edge what command needs to be
sent to the DRAM.

      • Bus 0: the DIU
      • Bus 1: the Power Architecture e300 core
      • Bus 2: NFC nand flash controller
      • Bus 3: DMA, USB, FEC

     因為4條匯流排共同訪問SDRAM控制器,為了使每條匯流排的請求都能得到響應處理,或者某條匯流排的資料量明顯多於另外的匯流排,就要設定一個競爭機制,判斷某一時刻到底處理來自什麼地方的資料。MPC5125有一套複雜的優先順序產生機制。 

       MPC5125 DDR優先順序產生機制:

       在優先順序仲裁器中有兩張表:main look-up table以及alternate look-up table,設定Priority Manager Configuration 1 Register可以選擇查表的方式。

       查表的機制是,在每個通道接受到設定的N個ACK時開始查表,假如處於匯流排上的Bus 0: DIU以及Bus 1: Power architecture e300處理的資訊量最多,需要頻繁的訪問SDRAM,可以設定當產生了32個ACK的時候開始查main look-up table或alternate look-up table,如果此時Bus
0和Bus 1上的ACK都是32個,那麼他們就都屬於最高優先順序即優先順序15,這時再看PRIO15[3:0]中的值是誰大一些,就先運行誰先訪問匯流排。比如Bus0訪問結束後,優先順序變低,因為Bus1仍是最高優先順序,接下來就允許訪問SDRAM控制器。

      對於沒有請求使用SDRAM的匯流排,Priority Manager Configuration 2 Register可以設定其優先順序的變化方式,如果該匯流排根本沒有外設請求,可以設定為自動降低優先順序的方式,如果該匯流排接到了一個不常用但是比較重要的外設,可以自動調高其優先順序,這也是預設的方式。

一下是對MPC5125 優先順序控制器的設定:

writemem.l 0x80009080 0x000777aa //五條匯流排都使用main look-up table,BUS0-1 48個ACK時開始查表,BUS2-4有16ACK時開始查表
writemem.l 0x80009084 0x00000055 //BUS0、BUS2無請求時優先順序自動下降,其他為上升                                           
writemem.l 0x80009088 0x00000000 //Average number of high priority requests to DRAM,不設定競爭機制
writemem.l 0x8000908C 0x11111117//優先順序表
writemem.l 0x800090a0 0x7777777a
writemem.l 0x80009090 0x444eeeee
writemem.l 0x800090a4 0xeeeeeeee
writemem.l 0x80009094 0x44444444
writemem.l 0x800090a8 0x44444444
writemem.l 0x80009098 0x55555555
writemem.l 0x800090ac 0x55555558
writemem.l 0x8000909c 0x11111111
writemem.l 0x800090b0 0x1111117c
writemem.l 0x800090b4 0x33333377
writemem.l 0x800090c8 0x7777eeee
writemem.l 0x800090b8 0x11111111
writemem.l 0x800090cc 0x11111111
writemem.l 0x800090bc 0x11111111
writemem.l 0x800090d0 0x11111111
writemem.l 0x800090c0 0x11111111
writemem.l 0x800090d4 0x11111111
writemem.l 0x800090c4 0x11111111
writemem.l 0x800090d8 0x11111111

可以看出設定main look-up table以及alternate look-up table的時候是很麻煩的,在對外設服務順序沒有特殊要求的時候可以使用預設設定。

(2)對於DDR SDRAM工作方式的設定:

      先看cron MT47H64M16LFCK-3資料手冊定義的各個指令的含義:

      COMMAND:

      NO OPERATION (NOP) NOP指令是一個空操作指令,為了在空閑時間防止意外指令訪問寄存器,並不影響正在啟動並執行操作。 

      PRECHARGE :預充電指令用於對某個bank中的開放的列或對所有開放的bank充電,充電完畢後的bank會進入空閑狀態,當被啟用後可以執行讀寫命令。

     SELF REFRESH:重新整理用於儲存SDRAM中的資料,不需要外部時鐘的情況下可由內部電路完成,有低速和高速模式。

     Mode Register (MR):模式寄存器,可以選擇如突髮長度,操作方式,DLL reset,寫恢複,掉電模式等,由Load Mode command 來設定。

     Extended Mode Register (EMR):拓展寄存器1,主要用於控制DLL使能,驅動強度,ODT,OCD,輸出是使能等。

     Extended Mode Register 2 (EMR2):拓展模式寄存器2,主要用於高溫操作,可以使能高速重新整理模式。

     Extended Mode Register 3 (EMR3):JEDEC規定拓展寄存器,在所選用的MT47H64M16沒有定義,全為0。

    再看MPC5125DDR命令寄存器的含義:

    MPC5125 DRAM Command (DDR_COMMAND) Register (32bit)

    DRAM_COMMAND[23:16]

• DRAM_BA[2:0] = DRAM_COMMAND[18:16]
• DRAM_WEB = DRAM_COMMAND[19]
• DRAM_CAS = DRAM_COMMAND[20]
• DRAM_RAS = DRAM_COMMAND[21]
• DRAM_CS0 = DRAM_COMMAND[22]
• DRAM_CS1 = DRAM_COMMAND[23]

   DRAM_COMMAND[15:0] 可以寫mode register

   在上述指令看出,高16位用於產生時序,低16位用於設定模式寄存器的值。

   參考手冊中的初始化順序寫出對於Micron MT47H64M16LFCK 初始化指令序列:

##############################
# echo Init. Micron MT47H64M16LFCK-3 for 200 MHz
#############################

首先配置工作方式和關鍵時間參數:

# DDR_SYS_CONFIG - CMDmode=1, row_sel=5, bank_sel=4, SelfRefEn=0, (rdly=2, 1/2=0, 1/4=1)=2.75, wdly=2
writemem.l 0x80009000 0xFA804A00

# DDR_TIME_CONFIG0 - refresh=0, cmd=61, bank_pre=46
# writemem.l 0x80009004 0x00003D2E
writemem.l 0x80009004 0x00003c2d

# DDR_TIME_CONFIG1, rfc=26, wr1=7, wrt1=6 ,rrd=2, rc=11, ras=8
writemem.l 0x80009008 0x68EC1168
writemem.l 0x80009008 0x68ec1189

# DDR_TIME_CONFIG2, rcd=3, faw=10, rtw1=4, ccd=2, rtp=2, rp=3, rpa=4
writemem.l 0x8000900c 0x35310864

    對於關鍵時序參數DDR_TIME_CONFIG1以及DDR_TIME_CONFIG2是如何設定的呢?

    其實當SDRAM核心頻率工作在200MHZ的時候,一個CBS刻度為5ns,再根據資料手冊中提供的Electrical Specifications參數根據晶片的不同尾綴可以得到以上設定,此後,進入指令模式,對DDR2 SDRAM進行指令設定

#NOP

writemem.l 0x80009010 0x01380000 

# Precharge All
 writemem.l 0x80009010 0x01100400

# Load Mode to EMR2 to select Self Refresh x1
writemem.l 0x80009010 0x01020000

# Lode Mode to EMR3, Load with all zeros. Does nothing
 writemem.l 0x80009010 0x01030000

# Load Mode to EMR to enable DLL.
 writemem.l 0x80009010 0x01010000

# Load Mode to MR for DLL Reset.
writemem.l 0x80009010 0x01000100

# Precharge All
writemem.l 0x80009010 0x01100400

# Auto Refresh
writemem.l 0x80009010 0x01080000

# Auto Refresh
writemem.l 0x80009010 0x01080000

# Load Mode to MR. DLL Reset=0, WR=3, TM=0, CAS=3, BT=Seq, BL=4
writemem.l 0x80009010 0x01000432

# Load Mode to EMR to enable OCD default. OCD=7
writemem.l 0x80009010 0x01010400  //0x01010380

# Load Mode to EMR to enable OCD exit. OCD=0.
writemem.l 0x80009010 0x01010000

     寫到這裡,開始一直納悶為什麼使能OCD的時候設定EMR的時候是錯誤的,看到下面這段話才知道,micron DDR2chip並不支援OCD功能。

The OFF-CHIP DRIVER function is an optional DDR2 JEDEC feature not supported by Micron and thereby must be set to the default state. Enabling OCD beyond the default settings will alter the I/O drive characteristics and the timing and output I/O specifications
will no longer bevalid (see Initialization (page 86) for proper setting of OCD defaults).

##################
# echo Start MDDRC
##################

# DDR_TIME_CONFIG0, refresh=1560, cmd=61, bank_pre=46
# writemem.l 0x80009004 0x06183D2E
writemem.l 0x80009004 0x06083c2d

# DDR_SYS_CONFIG - CMDmode=0, row_sel=5, bank_sel=4, SelfRefEn=0, (rdly=2, 1/2=0, 1/4=1)=2.75, wdly=2
writemem.l 0x80009000 0xEA804A00

      這樣重新回到資料讀寫入模式,就可以正常對DDR2 SDRAM進行讀寫了。

總結:

     當核心頻率相同時,DDR2 SDARM比DDR SDRAM具有高一倍的頻寬;如果當兩者頻寬相同時,DDR2具有一半的核心時鐘頻率,比DDR 具有更大的時鐘延遲。在設定MPC5125 DDR控制器時根據不同匯流排訪問頻率的不同根據效能均衡設定相應的優先順序,再按照SDRAM晶片手冊上的初始化順序和時間參數使用相應的命令進行設定。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.