引言
當(dāng)一個(gè)擁有 DRAM 子系統(tǒng)的設(shè)備啟動(dòng)時(shí),有幾件事需要在 DRAM 進(jìn)入工作狀態(tài)之前完成。下圖是來自JEDEC specification(DDR4 標(biāo)準(zhǔn),jedec.org/standards-doc)的狀態(tài)機(jī),展示出上電之后 DRAM 經(jīng)歷的幾個(gè)狀態(tài)。

圖-1 DDR4 初始化狀態(tài)機(jī)
實(shí)質(zhì)上,完整的初始化過程(Initialization)包括以下 4 個(gè)單獨(dú)的步驟:
上電與初始化 ,Power-up and Initialization
ZQ 校準(zhǔn),ZQ Calibration
Verf DQ 校準(zhǔn),Verf DQ Calibration
讀寫訓(xùn)練,即存儲(chǔ)介質(zhì)訓(xùn)練/初始校準(zhǔn),Read/Write Training
譯注:至此標(biāo)題中的 Initialization,calibration,training 已經(jīng)全部出現(xiàn),接下來的文章中將嘗試讓讀者明白這三個(gè)詞的含義,以及這三個(gè)階段中具體做了哪些事情。
為了能夠更好地理解接下來的幾節(jié)內(nèi)容,這里我們假設(shè)有一個(gè)如下圖中的系統(tǒng):具有單個(gè) DIMM 器件(即只有單個(gè)內(nèi)存條)的 ASIC/FPGA/處理器(譯注:以下稱為主機(jī))。

圖-2 示例系統(tǒng)
初始化 Initialization

圖-3 初始化相關(guān)的狀態(tài)
上電與初始化是由一系列精心設(shè)計(jì)的步驟組成的序列(sequence)。一般來說,在系統(tǒng)上電之后,ASIC/FPGA/處理器中的 DDR 控制器會(huì)被從復(fù)位狀態(tài)中釋放,自動(dòng)執(zhí)行上電與初始化序列。下文中列舉了一個(gè)超簡化的控制器所做的工作,而在 JESD79-49A 的 3.3 節(jié)中有更詳細(xì)并準(zhǔn)確的描述。
給 DRAM 顆粒上電
置低 DRAM 的復(fù)位端口 RESET,并使能 DRAM 的時(shí)鐘使能 CKE
使能并產(chǎn)生時(shí)鐘 CK_t/CK_c
向 DRAM 發(fā)出 MRS 命令,并按照特定的序列讀取/配置 DRAM 的 Mode Register
進(jìn)行 ZQ 校準(zhǔn)(ZQCL)
使 DRAM 進(jìn)入狀態(tài)機(jī)中的 IDLE 狀態(tài),為后續(xù)讀寫做好準(zhǔn)備
在上述一系列流程結(jié)束后,DIMM 內(nèi)存條上的 DRAM 顆粒已經(jīng)了解了其需要工作在哪個(gè)頻率上,以及它的時(shí)序參數(shù)是多少,包括 CAS Latency,CAS Write Latency 等等。(譯注:那么讀者們,DRAM 是具體通過哪一個(gè)步驟了解這些信息的呢?)
ZQ 校準(zhǔn) ZQ Calibration

圖-4 ZQCL
ZQ 校準(zhǔn)的概念與 DDR 數(shù)據(jù)信號(hào)線 DQ 的電路有關(guān)。當(dāng)討論 ZQ 校準(zhǔn)做了什么以及為何而做之前,我們首先需要來看下每個(gè) DQ 管腳之后的電路。請(qǐng)注意,DQ 管腳都是雙向的(bidirectional),負(fù)責(zé)在寫操作時(shí)接收數(shù)據(jù),在讀操作時(shí)發(fā)送數(shù)據(jù)。

圖-5 DQ 校準(zhǔn)模塊
如圖 5 所示,如果你從 DRAM 內(nèi)部的視角來看,每個(gè) DQ 管腳之后的電路都有多個(gè)并聯(lián)的 240 歐姆電阻組成。(譯注:具體地說不上來,但這些電阻用于提高信號(hào)完整性)由于顆粒制造時(shí), CMOS 工藝本身的限制,這些電阻不可能是精確的 240 歐姆。此外,阻值還會(huì)隨著溫度和電壓的改變而改變。所以必須校準(zhǔn)至接近 240 歐姆,用于提高信號(hào)完整性。
為了能夠?qū)@些電阻阻值進(jìn)行精確校準(zhǔn),每個(gè) DRAM 顆粒具有:
專用的 DQ 校準(zhǔn)模塊
一個(gè) ZQ 管腳連接至外部電阻,該電阻阻值為精確的 240 歐姆
這個(gè)外部電阻因?yàn)槠渚_而且不會(huì)隨溫度變化而變化的阻值,被用于參考阻值。在初始化過程中,ZQCL 命令發(fā)出后,DQ 校準(zhǔn)模塊對(duì)每個(gè) DQ 管腳連接的電阻進(jìn)行校準(zhǔn)。
上文是對(duì) ZQ 校準(zhǔn)一個(gè)大概的講解:
DQ 管腳連接的電阻用于提高信號(hào)完整性 ->需要精確的阻值 ->由于制造工藝以及溫度變化的限制,這個(gè)阻值并不精確 ->引入 ZQ 管腳連接的外部電阻和 DQ 校準(zhǔn)模塊,在初始化階段對(duì) DQ 電阻值進(jìn)行校準(zhǔn) ->提高信號(hào)完整性,以支持更高的數(shù)據(jù)速率。
如果你滿意了,可以直接忽略本節(jié)剩余的內(nèi)容,如果沒有,本節(jié)剩余的內(nèi)容將討論更多的細(xì)節(jié),請(qǐng)繼續(xù):
DQ 電路中的240歐姆電阻是Poly Silicon Resistor 類型的,通常來說,它們的阻值會(huì)略大于 240 歐姆。因此,在 DQ 電阻上并聯(lián)了很多 PMOS 管,當(dāng)這些管子開啟時(shí),通過并聯(lián)電阻降低 DQ 電阻的阻值,以接近 240 歐姆。
下圖中放大了某個(gè)電阻的內(nèi)部結(jié)構(gòu),有 5 個(gè) PMOS 管與 DQ 電阻并聯(lián),通過 VOU[0:4] 控制管子的開關(guān),以控制并聯(lián)上來的電阻數(shù)量。

圖-6 DQ driver/receiver 電路,來自 Micron datasheet
連接至 DQ 校準(zhǔn)控制模塊的電路包括一個(gè)由兩個(gè)電阻組成的分壓電路,其中一個(gè)是上面提到的可調(diào)阻值的 poly 電阻,而另一個(gè)則是精準(zhǔn)的 240 歐姆電阻。
當(dāng) ZQCL 命令發(fā)出后,DQ 校準(zhǔn)控制模塊使能,并通過其內(nèi)部邏輯控制 VOH[0:4] 信號(hào)調(diào)整 poly 電阻阻值,直到分壓電路的電壓達(dá)到 VDDQ/2,即兩者均為 240 歐姆。此時(shí) ZQ 校準(zhǔn)結(jié)束,并保存此時(shí)的 VOH 值,復(fù)制到每個(gè) DQ 管腳的電路。

圖-7 DQ 校準(zhǔn)模塊,來自 Micron datasheet
那么問題來了,為什么不在每個(gè) DRAM 出廠時(shí)就將阻值調(diào)整至 240 歐姆呢?而是在每次使用之前(初始化)調(diào)整呢?
這是因?yàn)椴⒙?lián)的電阻網(wǎng)絡(luò)允許用戶在不同的使用條件下對(duì)電阻進(jìn)行調(diào)整,為讀操作調(diào)整驅(qū)動(dòng)強(qiáng)度,為寫操作調(diào)整端接電阻值。此外,不同 PCB 具有不同的阻抗,可調(diào)整的電阻網(wǎng)絡(luò)可針對(duì)每個(gè) PCB 單獨(dú)調(diào)整阻值,以提高信號(hào)完整性,最大化信號(hào)眼圖,允許 DRAM 工作在更高的頻率下。
信號(hào)驅(qū)動(dòng)強(qiáng)度可以通過 mode register MR1[2:1] 控制。端接電阻可以通過 MR1/2/5 中的 RTT_NOM, RTT_WR & RTT_PARK 進(jìn)行調(diào)節(jié)。
DQ 判決電平校準(zhǔn) Verf DQ Calibraton

圖-8 VrefDQ Calibration
DDR4 數(shù)據(jù)線的端接方式(Termination Style)從 CCT(Center Tapped Termination,也稱 SSTL,Series-Stud Terminated Logic)更改為 POD(Pseudo Open Drain)。這是為了提高高速下的信號(hào)完整性,并節(jié)約 IO 功耗。這不是 POD 的首次應(yīng)用,GDDR5 同樣使用 POD。

圖-9 DDR3(SSTL)v.s. DDR4(POD),來自 Micron datasheet
根據(jù)上圖可以發(fā)現(xiàn),在 DDR3 中接收方使用 Vdd/2 作為判決電平,判斷信號(hào)為 0 或者為 1,上圖中 DDR3 的接收實(shí)際上是一個(gè)分壓電路。
但是在 DDR4 中,接收方不再有分壓電路,取而代之的是一個(gè)內(nèi)部參考判決電平,判斷信號(hào)為 0 或者為 1。這個(gè)判決電平稱為 VerfDQ。VerfDQ 可以通過模式寄存器 MR6 進(jìn)行設(shè)定,在 VrefDQ 階段,控制器需要通過嘗試不同的 VerfDQ 值,來設(shè)置一個(gè)能夠正確區(qū)分高低電平的值。
讀寫訓(xùn)練 Read/Write Training
在完成上述步驟后,DRAM 初始化已經(jīng)完成,并處于 IDLE 狀態(tài),但此時(shí)存儲(chǔ)介質(zhì)仍然未處于正確的工作狀態(tài)。在正確讀寫 DRAM 之前,DDR 控制器或者物理層還必須來做一些重要的步驟,稱為讀寫訓(xùn)練,也稱存儲(chǔ)介質(zhì)訓(xùn)練/初始校準(zhǔn)。
運(yùn)行算法,以對(duì)齊 DRAM 的時(shí)鐘信號(hào) CK 與數(shù)據(jù)有效信號(hào) DQS 的邊沿
運(yùn)行算法,確定 DRAM 顆粒的讀寫延遲
將采樣時(shí)刻移動(dòng)至讀取數(shù)據(jù)眼圖的中央
報(bào)告錯(cuò)誤,如果此時(shí)的信號(hào)完整性實(shí)在太差,沒辦法確??煽康淖x寫操作
為什么需要讀寫訓(xùn)練
讓我們一起仔細(xì)地觀察我們的參考系統(tǒng),下圖顯示數(shù)據(jù)與地址/控制信號(hào),在內(nèi)存條與主機(jī)(ASIC/Processor)之間是如何連接的。
數(shù)據(jù)(DQ)以及數(shù)據(jù)有效(DQS)信號(hào)連接至內(nèi)存條的相應(yīng)位置,因?yàn)閮?nèi)存條與主機(jī)上相應(yīng)端口是一一對(duì)應(yīng)的,因此采用星型拓?fù)洹?/p>
時(shí)鐘、命令&地址信號(hào)(CK,CKE,A,WE,CSn)連接至 DIMM 內(nèi)存條時(shí),采用一種稱為 fly-by 的拓?fù)浣Y(jié)構(gòu),如下圖黑線所示。DIMM 上的多個(gè)顆粒(比如下圖中有 8 個(gè))都共享同一組地址/控制信號(hào),采用 fly-by 結(jié)構(gòu)能夠提高信號(hào)完整性與信號(hào)速度。

圖-10 詳細(xì)的參考系統(tǒng)示例
這樣一來,我們從主機(jī)的角度來看,與 DIMM 上不同的顆粒的距離是不同的。而從 DIMM 的角度來看,時(shí)鐘(黑色)與數(shù)據(jù)(綠色)之間的相對(duì)延遲對(duì)于不同顆粒是不同的。訓(xùn)練的目的即消除這兩個(gè)不同對(duì)數(shù)據(jù)讀寫的影響。
DRAM 本身是個(gè)很“呆” 的器件,很多事情都需要 DDR 控制器來完成,為什么這么說呢。
如果你要進(jìn)行寫操作,在初始化期間你需要通過將CAS Write Latency寫入 DRAM 模式寄存器,(CWL 是寫入列地址與數(shù)據(jù)之間的延遲時(shí)間長度),此后 DRAM 將始終使用該時(shí)序參數(shù),不會(huì)變化。DDR 控制器需要負(fù)責(zé)根據(jù)板級(jí)的布線延遲以及 fly-by 結(jié)構(gòu)的路由延遲,調(diào)整數(shù)據(jù)與地址信號(hào)之間的延遲,以保證地址和數(shù)據(jù)信號(hào)到達(dá)每個(gè) DRAM 的相對(duì)延遲滿足 CWL。
舉例而言,如果設(shè)置 CWL 為 9,一旦主機(jī)在發(fā)出列地址后,由于地址到達(dá)各 DRAM 的時(shí)間不同,因此需要以不同的延遲,在各數(shù)據(jù)線上發(fā)送寫數(shù)據(jù),以保證寫數(shù)據(jù)到達(dá) DRAM 的延遲均為 9。
讀操作也需要 DDR 控制器來做類似的工作??紤]到每個(gè) DRAM 顆粒位于 DIMM 的不同位置,距離主機(jī)的距離不同。因此每個(gè) DRAM 顆粒接收到讀命令的時(shí)間不同,因此后續(xù)回應(yīng)的讀數(shù)據(jù)到達(dá)主機(jī)的時(shí)間也不相同。初始化期間,主機(jī)確定各個(gè) DRAM 顆粒的延遲,并以此訓(xùn)練內(nèi)部的電路,使電路能夠在正確的時(shí)刻采樣來自 DRAM 的讀數(shù)據(jù)。
對(duì)于讀寫訓(xùn)練,控制器/PHY 一般提供多種算法。最常見的算法包括:
Write leveling
MPR Pattern Write
Read Centering
Write Centering
以上算法一般由控制器/PHY(譯注:以下統(tǒng)一表示為控制器) 完成,用戶只需要在寄存器中使能/失能相關(guān)算法,并根據(jù)其結(jié)果進(jìn)行相應(yīng)操作。接下來的幾節(jié)將進(jìn)一步探討控制器是如何具體實(shí)現(xiàn)這些算法的。
Write Leveling
DRAM 寫入中最重要的,不能違反的時(shí)序參數(shù)是tDQSS,表示數(shù)據(jù)有效信號(hào) DQS 相對(duì)時(shí)鐘信號(hào) CK 的相對(duì)位置。tDQSS 必須在協(xié)議規(guī)定的 tDQSS(MIN) 和 tDQSS(MAX) 之間。如果 tDQSS 超出規(guī)定的限制,那么可能會(huì)寫入錯(cuò)誤的數(shù)據(jù)。
既然內(nèi)存條上每個(gè) DRAM 顆粒的數(shù)據(jù)有效信號(hào)相對(duì)于時(shí)鐘的延遲都不同,所以控制器必須對(duì)每個(gè) DRAM 顆粒的 tDQSS 進(jìn)行訓(xùn)練,并根據(jù)訓(xùn)練的結(jié)果滿足每個(gè)顆粒不同的延遲需求。
啟用 Write Leveling 時(shí),控制器會(huì)做以下幾項(xiàng)工作:
下圖展示了 Write Leveling 的概念。

圖-11 Write Leveling 示意圖
MPR Pattern Write
MPR(Multi Purpose Register,多用途寄存器)Pattern Write 實(shí)際上并不是一種校準(zhǔn)算法,通常是讀寫對(duì)齊(Read/Write Centering)之前的一個(gè)預(yù)備步驟。
DDR4 DRAM 包括四個(gè) 8 比特可編程寄存器,稱為 MPR,用于 DQ 比特訓(xùn)練(比如 Read/Write Centering)。通過向模式寄存器 MR3[2] 寫 1,進(jìn)入 MPR 訪問模式,在該模式下所以向 DRAM 進(jìn)行的讀寫操作都會(huì)同 MPR 進(jìn)行,而不是真正的存儲(chǔ)介質(zhì)。

Read Centering
Read Centering 的目的是訓(xùn)練控制器的讀采樣電路,在讀數(shù)據(jù)眼圖的中央進(jìn)行采樣,以獲得最穩(wěn)定的采樣結(jié)果。DDR 控制器
Write Centering
與 Read Centering 類似,Write Centering 的目的是設(shè)定每條數(shù)據(jù)信號(hào)線上寫數(shù)據(jù)的發(fā)送延遲,使 DRAM 端能夠根據(jù)對(duì)齊數(shù)據(jù)眼圖的中央的 DQS 采樣數(shù)據(jù)信號(hào) DQ。
在 Write Centering 的過程中,控制器不斷執(zhí)行 寫-讀-延遲變化-比較 (Write-Read-Shift-Compare)的流程
通過上述流程,控制器判斷出正常讀寫數(shù)據(jù)時(shí)能容忍的最大發(fā)送延遲。因此可以推斷出寫數(shù)據(jù)的左右有效邊界,并在 DRAM 端將寫數(shù)據(jù)的中央與 DQS 邊沿對(duì)齊。
周期性校準(zhǔn) Periodic Calibration
交換機(jī)或者路由器等網(wǎng)絡(luò)設(shè)備,運(yùn)行過程中的溫度和電壓可能發(fā)生變化。為了確保信號(hào)完整性,以及讀寫的穩(wěn)定性,一些在初始化階段進(jìn)行訓(xùn)練的參數(shù)必須重新訓(xùn)練更新??刂破?IP 通常會(huì)提供下列兩項(xiàng)周期性校準(zhǔn)流程。
周期性校準(zhǔn)是一項(xiàng)可選的功能,因?yàn)槿绻憧梢源_定你的設(shè)備只會(huì)工作在穩(wěn)定的溫度環(huán)境下,那么初始化時(shí)進(jìn)行的 ZQ 校準(zhǔn)以及讀寫訓(xùn)練就已經(jīng)足夠了
一般來說控制器可以通過設(shè)定一個(gè)計(jì)時(shí)器,來進(jìn)行周期性校準(zhǔn),在計(jì)時(shí)器計(jì)滿中斷發(fā)生后進(jìn)行周期性校準(zhǔn)。
總結(jié)
在 DRAM 投入使用之前,有 4 個(gè)步驟的工作需要完成
在這些步驟完成后,系統(tǒng)正式進(jìn)入 IDLE 狀態(tài),并為后續(xù)的讀寫操作做好準(zhǔn)備。根據(jù)設(shè)備的運(yùn)行環(huán)境,你可能需要使能定期校準(zhǔn)。
原文網(wǎng)址:左下角閱讀原文。
將模式寄存器 MR1 的比特 7 設(shè)為 1,使 DRAM 進(jìn)入 Write Leveling 模式。在該模式中,DRAM 在數(shù)據(jù)有效 DQS 信號(hào)上升沿采樣時(shí)鐘信號(hào) CK,并將采樣值通過數(shù)據(jù)信號(hào) DQ 返回給控制器
控制器發(fā)送一系列 DQS 信號(hào),在 Write Leveling 模式中,DRAM 根據(jù) DQS 信號(hào)采樣 CK 信號(hào),返回采樣值 1 或者 0
控制器接下來
1.觀察 DRAM 返回的 CK 采樣值
2.根據(jù)采樣值增加或者減少 DQS 信號(hào)的延遲
3.繼續(xù)發(fā)送更新延遲的 DQS 信號(hào),繼續(xù)觀察 CK 采樣值
DRAM 在 DQS 信號(hào)有效時(shí),采樣 CK 信號(hào)并返回
重復(fù)步驟 2 至 4,直到控制器檢測(cè)到返回值從 0 變化到 1。此時(shí),DQS 與 CK 上升沿對(duì)齊,控制器鎖定當(dāng)前的 DQS 延遲,當(dāng)前 DRAM 的 Write Leveling 完成
重復(fù)步驟 2 至 5,直到 DIMM 的所有 DRAM 顆粒都完成 Write Leveling
通過向模式寄存器 MR1 的比特 7 寫 0,退出 Write Leveling 模式
使能模式寄存器 MR3 中的 bit 2,進(jìn)入 MPR 訪問模式,從 MPR 而不是 DRAM 存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)
發(fā)起一系列讀請(qǐng)求,此時(shí)返回的是在 MPR Pattern Write 步驟中預(yù)先寫入 MPR 的 pattern。假設(shè) pattern 是交替變化的 1-0-1-0-...
在讀數(shù)據(jù)進(jìn)行過程中,增加或者減少采樣電路相對(duì)于時(shí)鐘的采樣延遲,來確定讀數(shù)據(jù)眼圖的左右邊界。(譯注:即保證讀取數(shù)據(jù)正確,與 pattern 一致時(shí),最小以及最大采樣延遲)
在確定眼圖的左右邊界后,將讀延遲寄存器設(shè)置為眼圖的中央
對(duì)每一條數(shù)據(jù)信號(hào) DQ 重復(fù)上述操作
發(fā)出一系列的寫,讀請(qǐng)求
增加寫數(shù)據(jù)時(shí)的發(fā)送延遲
將讀取的數(shù)據(jù)與發(fā)送數(shù)據(jù)進(jìn)行比較
周期性 ZQ 校準(zhǔn), 也被稱為 ZQCS (ZQ Calibration Short),用于定期校準(zhǔn) 240 歐姆電阻
周期性 Read Centering,重新計(jì)算讀取延遲以及其他相關(guān)的參數(shù)
上電與初始化 ,Power-up and Initialization
ZQ 校準(zhǔn),ZQ Calibration
Verf DQ 校準(zhǔn),Verf DQ Calibration
讀寫訓(xùn)練,即存儲(chǔ)介質(zhì)訓(xùn)練/初始校準(zhǔn),Read/Write Training
-
處理器
+關(guān)注
關(guān)注
68文章
20256瀏覽量
252454 -
DRAM
+關(guān)注
關(guān)注
41文章
2394瀏覽量
189180 -
子系統(tǒng)
+關(guān)注
關(guān)注
0文章
115瀏覽量
13509
原文標(biāo)題:譯文:DDR4 - Initialization, Training and Calibration
文章出處:【微信號(hào):數(shù)字芯片實(shí)驗(yàn)室,微信公眾號(hào):數(shù)字芯片實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
DDR3的MIG(xilinx)無法自動(dòng)初始化和校準(zhǔn)
DDR3初始化問題
6657的DDR3初始化不成功
如何從.mem文件初始化加密的ddr4內(nèi)存模型?
手機(jī)模塊初始化向?qū)?/a>
如何讓KeyStone DDR3接口初始化的詳細(xì)資料概述
8253初始化程序分享_8253應(yīng)用案例
PCIe總線中的鏈路初始化與訓(xùn)練
在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無法初始化的問題如何解決
跳過DDR VIP模型的初始化
DDR VIP模型的無縫快速初始化
GraniStudio:初始化例程
DDR4-初始化、訓(xùn)練和校準(zhǔn)
評(píng)論