ddr3 初始化配置流程
系統上電之後,必須先完成ddr3 sdram 的初始化操作,系統才能通路ddr3
sdram。在進行初始化之前需要注意以下幾點:
對ddr3 sdram 進行上電操作時,需要遵循jedec 标準。即先提供vdd,然
後提供vddq,最後提供vref 和vtt。
該初始化過程需要在系統進入normal 模式後進行。
在ddrc 32bit 模式下,假設存儲空間由兩片容量為1gbit,資料總線位寬為16bit 的
ddr3 sdram 構成,ddrc 的初始化步驟如下:
1. 軟體等待200us 以上。
2. 把ddrc_iocfg 寄存器配置為0x467,配置io 的工作模式、比對電阻以及信号驅
動。
3. 根據器件的單片容量配置ddrc_rnkcfg 寄存器為0x122。總線位址映射模式為rb-
c-dw 模式,ap 為a10,列位址寬度為10,行位址寬度為13。
4. 把ddrc_physrst 配置為0x0,把ddrc_cdllcfg,ddrc_qdllcfg0~3 寄存器
配置為0x52,複位ddr phy 和dll。
5. 軟體等待50ns。
6. 把ddrc_physrst 配置為0x1,把ddrc_cdllcfg,ddrc_qdllcfg0~3 寄存器
配置為0x56,撤消ddr phy 和dll 複位。
7. 軟體等待3us 以上。
8. 配置ddrc_timing2 寄存器[taref]為0x000,禁止自動重新整理。
9. 配置ddrc_ctrl 寄存器為0x1,配置ddr3 sdram 退出複位狀态。
10. 軟體等待500us 以上。
11. 把ddrc_srefctrl 寄存器配置為0x0,退出自重新整理狀态。
12. 軟體等待1us 以上。
13. 根據工作頻率和器件要求,配置ddrc_emrs01 寄存器和ddrc_emrs23 寄存器,
以設定ddr 的讀延遲(cas latency),寫延遲(cas write latency),寫恢複延遲(write
recovery),突發長度(burst length),ddr 器件的輸出驅動阻抗和輸入odt 阻抗
等。
cas latency 和必須和ddrc_timing1[cl]設定成同一個值。
cas write latency 和必須和ddrc_timing1[wl]設定成同一個值。
ddrc_emrs01 寄存器對應ddr3 sdram 的模式寄存器mrs 和擴充模式寄存器1
(emrs1)。配置該寄存器時,隻需要ddr3 sdram 器件手冊的模式寄存器的a15-a0(實際有
效位為:a13~a0),不需要配置模式寄存器的最高3 位a18~a16 寄存器選擇位,即bank 位址。
但是,有些ddrn sdram 廠家的bank 位址是:a17~a15。
14. 根據器件的類型和存儲空間配置ddrc_config0 寄存器為0x8000_0610,
ddrc_config1 寄存器為0x785,表示ddrc 為32bit ddr3 sdram 模式。
低功耗配置的上電複位值是關閉的,初始化過程中必須關閉低功耗自動進入功能以及時鐘自動關
閉功能,但在正常使用中,建議使能低功耗的控制,可以降低功耗。
15. 配置存儲空間基位址寄存器ddrc_baseaddr 為0x8000_0000。
16. 根據工作頻率和器件要求配置ddrc_timing0~ddrc_timing3 的值,其中cl 和wl
值必須跟ddrc_emrs01 和ddrc_emrs23 模式寄存器中的配置一緻。
17. 配置ddrc_dtrctrl 寄存器為0x0f00_0503,使能初始化自動訓練模式。
18. 配置ddrc_odtcfg 寄存器ddrc_odtcfg[wodt0]=0x1,
ddrc_odtcfg[rodt0]=0x0。
19. 配置ddrc_phycfg 寄存器0x2。
20. 将ddrc_initctrl 寄存器設定為0x1,啟動初始化過程。
21. 等待ddrc_initctrl 寄存器的值變為0,初始化完成。
----結束
完成以上步驟以後,ddr3 sdram 就可以正常工作。