ddr的控制方法和原理


  在了解了sdram的構成原理之后,我們來針對某一款ddr芯片來看看其的內部結構和操作方法,首先來針對一款ddr的芯片看看其硬件的組成的結構。現在以K4T1G084QQ這顆DDR2的芯片為例,此芯片采用的是設計為16MBit×8BANK×8I/Os,共128MByte

管腳功能 管腳名稱 類型 描述
時鍾信號 CK/nCK input 系統時鍾差分輸入引腳,所有的地址和控制信號在CK的上升沿或者nCK的下降沿采樣,輸出數據在CK或者nCK的電平發生變化時被采樣
時鍾使能信號 CKE input 內部時鍾使能信號,高電平有效,當系統處於掉電、掛機等狀態時關閉SDRAM
片選信號 nCS input 使能或者禁止所有的引腳,當該引腳為高電平時,所有命令失效
內部核心終結電阻信號 ODT input 設置為高電平時使能終端電阻匹配
讀寫信號 nWE input 低電平表示寫,高電平表示讀操作
行地址信號 nRAS input 行地址信號
列地址信號 nCAS input 列地址信號
輸入數據控制信號 DM input 當向SDRAM寫入數據時來控制數據的輸入,在高電平時被采樣,如果有不想存入的數據,可以運用此引腳信號來屏蔽
bank選擇控制信號 BA0-BA2 input 這三個引腳決定SDRAM中哪一個Bank被選中激活
數據信號 DQ[0:7] input/output 雙向數據輸入輸出引腳
數據輸入/輸出 控制位 DQS/nDQS input/output 在數據讀模式下控制數據輸出
在數據寫模式下禁止寫數據
電源信號 VDD/VDDQ/VDDL/VREF input 控制電源
地信號 Vss/Vssq/Vssl input 地信號

  對於計算機系統,我們不可能是一個bit一個bit的訪問,一般而言,32 bit的CPU可能是按照Byte(8個bit)、short int(16個bit)或者int(32個bit)進行數據訪問。基於這樣的概念,對於K4T1G084QQ這顆chip,輸出數據總線的寬度是8bit,如果要使用一個32bit的系統,那么可以采用4片連接的組成一個32位的數據,第1片的8位數據引腳連接至CPU的Xm1DATA0-Xm1DATA7;第2片的8位數據引腳連接至CPU的Xm1DATA8-Xm1DATA15;第3片的8位數據引腳連接至CPU的Xm1DATA16-Xm1DATA23;第4片的8位數據引腳連接至CPU的Xm1DATA24-Xm1DATA31,其命令和控制線采用公用的方式即可。

  對於一款ddr,我們需要知道通過什么樣的方式來控制完成我們需要,我們來看看ddr的狀態,ddr的工作就是在這幾個狀態之間切換

  在芯片上電后,芯片處於idle階段,上圖是需要進入各個階段的時候,應該需要進行那些基本的操作,對於ddr使用比較頻繁的幾個基本命令訪問方式如下

1. 自我刷新模式:當系統進入低功耗模式,只需要發送一條 SRF指令,主要用於休眠模式低功耗狀態下的數據保存,比較常見的應用是STR(Suspend to RAM,休眠掛起於內存)。就進入了該模式,此時不再依靠系統時鍾工作,而是根據內部的時鍾進行刷新操作。期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式並進入正常操作狀態

2. 刷新模式:儲體中電容的數據有效是有時間限制的,所以為了保證數據的不丟失,所以要對ddr進行定時的刷新,SDRAM內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由於刷新是針對一行中的所有存儲體進行。

3. MRS模式(mode register set):模式寄存器中的數據控制着 DDR2 SDRAM的操作模式.它控制着 CAS 延遲, 突發長度, 突發順序, 測試模式, DLL復位, WR等各種選項,支持着 DDR2 SDRAM 的各種應用. 模式寄存器的默認值沒有被定義, 所以上電之后必須按規定的時序規范來設定模式寄存器的值。

4. EMRS 擴展模式寄存器(1) 存儲着激活或禁止DLL的控制信息, 輸出驅動強度, ODT 值的選擇 和附加延遲等信息

5. 讀/寫操作:對 DDR2 SDRAM的訪問是基於突發模式的; 讀寫時,選定一個起始地址,並按照事先編程設定的突發長度(4或8)和突發順序來依次讀寫.訪問操作開始
一個激活命令, 后面緊跟的就是讀或者寫命令。和激活命令同步送達的地址位包含了所要存取的簇和行 (BA0, BA1 選定簇; A0-A13 選定行). 和讀或寫命令
同步送達的地址位包含了突發存取的起始列地址 ,並決定是否發布自動預充電命令。

其操作指令如下圖

 

那么我們怎么去實現一個ddr的驅動呢?下載一份ddr的spec來看看,一頭霧水,基本沒有可以配置地方,除了一些硬件管腳,電壓參數之外,全部是一些關於timing的參數設定,那么對於這塊全部落在ddr controller的身上,即ddr controller一方面要完成指令的操作,同時肩負着ddr timing的各個參數設定,同時這些參數時刻關系着我們程序的穩定性,那么對於ddr控制器,對於軟件重點的就是配置這些參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM