<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DDR4-初始化、訓練和校準

數字芯片實驗室 ? 來源:數字芯片實驗室 ? 2023-07-03 11:48 ? 次閱讀

引言

當一個擁有 DRAM 子系統的設備啟動時,有幾件事需要在 DRAM 進入工作狀態之前完成。下圖是來自JEDEC specification(DDR4 標準,jedec.org/standards-doc)的狀態機,展示出上電之后 DRAM 經歷的幾個狀態。

2be95ef0-18f2-11ee-962d-dac502259ad0.jpg

圖-1 DDR4 初始化狀態機

實質上,完整的初始化過程(Initialization)包括以下 4 個單獨的步驟:

上電與初始化 ,Power-up and Initialization

ZQ 校準,ZQ Calibration

Verf DQ 校準,Verf DQ Calibration

讀寫訓練,即存儲介質訓練/初始校準,Read/Write Training

譯注:至此標題中的 Initialization,calibration,training 已經全部出現,接下來的文章中將嘗試讓讀者明白這三個詞的含義,以及這三個階段中具體做了哪些事情。

為了能夠更好地理解接下來的幾節內容,這里我們假設有一個如下圖中的系統:具有單個 DIMM 器件(即只有單個內存條)的 ASIC/FPGA/處理器(譯注:以下稱為主機)。

2c04cd7a-18f2-11ee-962d-dac502259ad0.jpg

圖-2 示例系統

初始化 Initialization

2c16c282-18f2-11ee-962d-dac502259ad0.png

圖-3 初始化相關的狀態

上電與初始化是由一系列精心設計的步驟組成的序列(sequence)。一般來說,在系統上電之后,ASIC/FPGA/處理器中的 DDR 控制器會被從復位狀態中釋放,自動執行上電與初始化序列。下文中列舉了一個超簡化的控制器所做的工作,而在 JESD79-49A 的 3.3 節中有更詳細并準確的描述。

給 DRAM 顆粒上電

置低 DRAM 的復位端口 RESET,并使能 DRAM 的時鐘使能 CKE

使能并產生時鐘 CK_t/CK_c

向 DRAM 發出 MRS 命令,并按照特定的序列讀取/配置 DRAM 的 Mode Register

進行 ZQ 校準(ZQCL)

使 DRAM 進入狀態機中的 IDLE 狀態,為后續讀寫做好準備

在上述一系列流程結束后,DIMM 內存條上的 DRAM 顆粒已經了解了其需要工作在哪個頻率上,以及它的時序參數是多少,包括 CAS Latency,CAS Write Latency 等等。(譯注:那么讀者們,DRAM 是具體通過哪一個步驟了解這些信息的呢?)

ZQ 校準 ZQ Calibration

2c2730c2-18f2-11ee-962d-dac502259ad0.png

圖-4 ZQCL

ZQ 校準的概念與 DDR 數據信號線 DQ 的電路有關。當討論 ZQ 校準做了什么以及為何而做之前,我們首先需要來看下每個 DQ 管腳之后的電路。請注意,DQ 管腳都是雙向的(bidirectional),負責在寫操作時接收數據,在讀操作時發送數據。

2c32d3e6-18f2-11ee-962d-dac502259ad0.jpg

圖-5 DQ 校準模塊

如圖 5 所示,如果你從 DRAM 內部的視角來看,每個 DQ 管腳之后的電路都有多個并聯的 240 歐姆電阻組成。(譯注:具體地說不上來,但這些電阻用于提高信號完整性)由于顆粒制造時, CMOS 工藝本身的限制,這些電阻不可能是精確的 240 歐姆。此外,阻值還會隨著溫度和電壓的改變而改變。所以必須校準至接近 240 歐姆,用于提高信號完整性。

為了能夠對這些電阻阻值進行精確校準,每個 DRAM 顆粒具有:

專用的 DQ 校準模塊

一個 ZQ 管腳連接至外部電阻,該電阻阻值為精確的 240 歐姆

這個外部電阻因為其精確而且不會隨溫度變化而變化的阻值,被用于參考阻值。在初始化過程中,ZQCL 命令發出后,DQ 校準模塊對每個 DQ 管腳連接的電阻進行校準。

上文是對 ZQ 校準一個大概的講解:

DQ 管腳連接的電阻用于提高信號完整性 ->需要精確的阻值 ->由于制造工藝以及溫度變化的限制,這個阻值并不精確 ->引入 ZQ 管腳連接的外部電阻和 DQ 校準模塊,在初始化階段對 DQ 電阻值進行校準 ->提高信號完整性,以支持更高的數據速率。

如果你滿意了,可以直接忽略本節剩余的內容,如果沒有,本節剩余的內容將討論更多的細節,請繼續:

DQ 電路中的240歐姆電阻是Poly Silicon Resistor 類型的,通常來說,它們的阻值會略大于 240 歐姆。因此,在 DQ 電阻上并聯了很多 PMOS 管,當這些管子開啟時,通過并聯電阻降低 DQ 電阻的阻值,以接近 240 歐姆。

下圖中放大了某個電阻的內部結構,有 5 個 PMOS 管與 DQ 電阻并聯,通過 VOU[0:4] 控制管子的開關,以控制并聯上來的電阻數量。

2c4aabe2-18f2-11ee-962d-dac502259ad0.jpg

圖-6 DQ driver/receiver 電路,來自 Micron datasheet

連接至 DQ 校準控制模塊的電路包括一個由兩個電阻組成的分壓電路,其中一個是上面提到的可調阻值的 poly 電阻,而另一個則是精準的 240 歐姆電阻。

當 ZQCL 命令發出后,DQ 校準控制模塊使能,并通過其內部邏輯控制 VOH[0:4] 信號調整 poly 電阻阻值,直到分壓電路的電壓達到 VDDQ/2,即兩者均為 240 歐姆。此時 ZQ 校準結束,并保存此時的 VOH 值,復制到每個 DQ 管腳的電路。

2c69254a-18f2-11ee-962d-dac502259ad0.jpg

圖-7 DQ 校準模塊,來自 Micron datasheet

那么問題來了,為什么不在每個 DRAM 出廠時就將阻值調整至 240 歐姆呢?而是在每次使用之前(初始化)調整呢?

這是因為并聯的電阻網絡允許用戶在不同的使用條件下對電阻進行調整,為讀操作調整驅動強度,為寫操作調整端接電阻值。此外,不同 PCB 具有不同的阻抗,可調整的電阻網絡可針對每個 PCB 單獨調整阻值,以提高信號完整性,最大化信號眼圖,允許 DRAM 工作在更高的頻率下。

信號驅動強度可以通過 mode register MR1[2:1] 控制。端接電阻可以通過 MR1/2/5 中的 RTT_NOM, RTT_WR & RTT_PARK 進行調節。

DQ 判決電平校準 Verf DQ Calibraton

2c7d7efa-18f2-11ee-962d-dac502259ad0.png

圖-8 VrefDQ Calibration

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

2c902bc2-18f2-11ee-962d-dac502259ad0.jpg

圖-9 DDR3(SSTL)v.s. DDR4(POD),來自 Micron datasheet

根據上圖可以發現,在 DDR3 中接收方使用 Vdd/2 作為判決電平,判斷信號為 0 或者為 1,上圖中 DDR3 的接收實際上是一個分壓電路。

但是在 DDR4 中,接收方不再有分壓電路,取而代之的是一個內部參考判決電平,判斷信號為 0 或者為 1。這個判決電平稱為 VerfDQ。VerfDQ 可以通過模式寄存器 MR6 進行設定,在 VrefDQ 階段,控制器需要通過嘗試不同的 VerfDQ 值,來設置一個能夠正確區分高低電平的值。

讀寫訓練 Read/Write Training

在完成上述步驟后,DRAM 初始化已經完成,并處于 IDLE 狀態,但此時存儲介質仍然未處于正確的工作狀態。在正確讀寫 DRAM 之前,DDR 控制器或者物理層還必須來做一些重要的步驟,稱為讀寫訓練,也稱存儲介質訓練/初始校準。

運行算法,以對齊 DRAM 的時鐘信號 CK 與數據有效信號 DQS 的邊沿

運行算法,確定 DRAM 顆粒的讀寫延遲

將采樣時刻移動至讀取數據眼圖的中央

報告錯誤,如果此時的信號完整性實在太差,沒辦法確??煽康淖x寫操作

為什么需要讀寫訓練

讓我們一起仔細地觀察我們的參考系統,下圖顯示數據與地址/控制信號,在內存條與主機(ASIC/Processor)之間是如何連接的。

數據(DQ)以及數據有效(DQS)信號連接至內存條的相應位置,因為內存條與主機上相應端口是一一對應的,因此采用星型拓撲。

時鐘、命令&地址信號(CK,CKE,A,WE,CSn)連接至 DIMM 內存條時,采用一種稱為 fly-by 的拓撲結構,如下圖黑線所示。DIMM 上的多個顆粒(比如下圖中有 8 個)都共享同一組地址/控制信號,采用 fly-by 結構能夠提高信號完整性與信號速度。

2ca8e860-18f2-11ee-962d-dac502259ad0.jpg

圖-10 詳細的參考系統示例

這樣一來,我們從主機的角度來看,與 DIMM 上不同的顆粒的距離是不同的。而從 DIMM 的角度來看,時鐘(黑色)與數據(綠色)之間的相對延遲對于不同顆粒是不同的。訓練的目的即消除這兩個不同對數據讀寫的影響。

DRAM 本身是個很“呆” 的器件,很多事情都需要 DDR 控制器來完成,為什么這么說呢。

如果你要進行寫操作,在初始化期間你需要通過將CAS Write Latency寫入 DRAM 模式寄存器,(CWL 是寫入列地址與數據之間的延遲時間長度),此后 DRAM 將始終使用該時序參數,不會變化。DDR 控制器需要負責根據板級的布線延遲以及 fly-by 結構的路由延遲,調整數據與地址信號之間的延遲,以保證地址和數據信號到達每個 DRAM 的相對延遲滿足 CWL。

舉例而言,如果設置 CWL 為 9,一旦主機在發出列地址后,由于地址到達各 DRAM 的時間不同,因此需要以不同的延遲,在各數據線上發送寫數據,以保證寫數據到達 DRAM 的延遲均為 9。

讀操作也需要 DDR 控制器來做類似的工作??紤]到每個 DRAM 顆粒位于 DIMM 的不同位置,距離主機的距離不同。因此每個 DRAM 顆粒接收到讀命令的時間不同,因此后續回應的讀數據到達主機的時間也不相同。初始化期間,主機確定各個 DRAM 顆粒的延遲,并以此訓練內部的電路,使電路能夠在正確的時刻采樣來自 DRAM 的讀數據。

對于讀寫訓練,控制器/PHY 一般提供多種算法。最常見的算法包括:

Write leveling

MPR Pattern Write

Read Centering

Write Centering

以上算法一般由控制器/PHY(譯注:以下統一表示為控制器) 完成,用戶只需要在寄存器中使能/失能相關算法,并根據其結果進行相應操作。接下來的幾節將進一步探討控制器是如何具體實現這些算法的。

Write Leveling

DRAM 寫入中最重要的,不能違反的時序參數是tDQSS,表示數據有效信號 DQS 相對時鐘信號 CK 的相對位置。tDQSS 必須在協議規定的 tDQSS(MIN) 和 tDQSS(MAX) 之間。如果 tDQSS 超出規定的限制,那么可能會寫入錯誤的數據。

既然內存條上每個 DRAM 顆粒的數據有效信號相對于時鐘的延遲都不同,所以控制器必須對每個 DRAM 顆粒的 tDQSS 進行訓練,并根據訓練的結果滿足每個顆粒不同的延遲需求。

啟用 Write Leveling 時,控制器會做以下幾項工作:

下圖展示了 Write Leveling 的概念。

2cbde148-18f2-11ee-962d-dac502259ad0.jpg

圖-11 Write Leveling 示意圖

MPR Pattern Write

MPR(Multi Purpose Register,多用途寄存器)Pattern Write 實際上并不是一種校準算法,通常是讀寫對齊(Read/Write Centering)之前的一個預備步驟。

DDR4 DRAM 包括四個 8 比特可編程寄存器,稱為 MPR,用于 DQ 比特訓練(比如 Read/Write Centering)。通過向模式寄存器 MR3[2] 寫 1,進入 MPR 訪問模式,在該模式下所以向 DRAM 進行的讀寫操作都會同 MPR 進行,而不是真正的存儲介質。

2cdd1f9a-18f2-11ee-962d-dac502259ad0.jpg

Read Centering

Read Centering 的目的是訓練控制器的讀采樣電路,在讀數據眼圖的中央進行采樣,以獲得最穩定的采樣結果。DDR 控制器

Write Centering

與 Read Centering 類似,Write Centering 的目的是設定每條數據信號線上寫數據的發送延遲,使 DRAM 端能夠根據對齊數據眼圖的中央的 DQS 采樣數據信號 DQ。

在 Write Centering 的過程中,控制器不斷執行 寫-讀-延遲變化-比較 (Write-Read-Shift-Compare)的流程

通過上述流程,控制器判斷出正常讀寫數據時能容忍的最大發送延遲。因此可以推斷出寫數據的左右有效邊界,并在 DRAM 端將寫數據的中央與 DQS 邊沿對齊。

周期性校準 Periodic Calibration

交換機或者路由器等網絡設備,運行過程中的溫度和電壓可能發生變化。為了確保信號完整性,以及讀寫的穩定性,一些在初始化階段進行訓練的參數必須重新訓練更新??刂破?IP 通常會提供下列兩項周期性校準流程。

周期性校準是一項可選的功能,因為如果你可以確定你的設備只會工作在穩定的溫度環境下,那么初始化時進行的 ZQ 校準以及讀寫訓練就已經足夠了

一般來說控制器可以通過設定一個計時器,來進行周期性校準,在計時器計滿中斷發生后進行周期性校準。

總結

在 DRAM 投入使用之前,有 4 個步驟的工作需要完成

在這些步驟完成后,系統正式進入 IDLE 狀態,并為后續的讀寫操作做好準備。根據設備的運行環境,你可能需要使能定期校準。

原文網址:左下角閱讀原文。

將模式寄存器 MR1 的比特 7 設為 1,使 DRAM 進入 Write Leveling 模式。在該模式中,DRAM 在數據有效 DQS 信號上升沿采樣時鐘信號 CK,并將采樣值通過數據信號 DQ 返回給控制器

控制器發送一系列 DQS 信號,在 Write Leveling 模式中,DRAM 根據 DQS 信號采樣 CK 信號,返回采樣值 1 或者 0

控制器接下來

1.觀察 DRAM 返回的 CK 采樣值

2.根據采樣值增加或者減少 DQS 信號的延遲

3.繼續發送更新延遲的 DQS 信號,繼續觀察 CK 采樣值

DRAM 在 DQS 信號有效時,采樣 CK 信號并返回

重復步驟 2 至 4,直到控制器檢測到返回值從 0 變化到 1。此時,DQS 與 CK 上升沿對齊,控制器鎖定當前的 DQS 延遲,當前 DRAM 的 Write Leveling 完成

重復步驟 2 至 5,直到 DIMM 的所有 DRAM 顆粒都完成 Write Leveling

通過向模式寄存器 MR1 的比特 7 寫 0,退出 Write Leveling 模式

使能模式寄存器 MR3 中的 bit 2,進入 MPR 訪問模式,從 MPR 而不是 DRAM 存儲介質中讀取數據

發起一系列讀請求,此時返回的是在 MPR Pattern Write 步驟中預先寫入 MPR 的 pattern。假設 pattern 是交替變化的 1-0-1-0-...

在讀數據進行過程中,增加或者減少采樣電路相對于時鐘的采樣延遲,來確定讀數據眼圖的左右邊界。(譯注:即保證讀取數據正確,與 pattern 一致時,最小以及最大采樣延遲)

在確定眼圖的左右邊界后,將讀延遲寄存器設置為眼圖的中央

對每一條數據信號 DQ 重復上述操作

發出一系列的寫,讀請求

增加寫數據時的發送延遲

將讀取的數據與發送數據進行比較

周期性 ZQ 校準, 也被稱為 ZQCS (ZQ Calibration Short),用于定期校準 240 歐姆電阻

周期性 Read Centering,重新計算讀取延遲以及其他相關的參數

上電與初始化 ,Power-up and Initialization

ZQ 校準,ZQ Calibration

Verf DQ 校準,Verf DQ Calibration

讀寫訓練,即存儲介質訓練/初始校準,Read/Write Training

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    18275

    瀏覽量

    222157
  • DRAM
    +關注

    關注

    40

    文章

    2177

    瀏覽量

    182017
  • 子系統
    +關注

    關注

    0

    文章

    100

    瀏覽量

    12264

原文標題:譯文:DDR4 - Initialization, Training and Calibration

文章出處:【微信號:數字芯片實驗室,微信公眾號:數字芯片實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DDR3的MIG(xilinx)無法自動初始化校準

    ,而且phy側的ddr接口信號一直沒有變化說明壓根沒進行初始化校準操作。ddr model和wire delay模塊保留,問題出在哪兒呢?
    發表于 11-15 15:48

    請問CCS調試中GEL和uboot 誰的DDR初始化有效?GEL的初始化是不是長期有效,uboot到底執行初始化了嗎?

    本帖最后由 一只耳朵怪 于 2018-5-25 14:51 編輯 我用CCS5調試uboot因為啟動板子時加載了GEL之后才load了uboot原本以為DDR初始化用最近的uboot設置
    發表于 05-25 02:19

    DDR3初始化問題

    成800MHz的時候DDR出現錯誤,我在程序和表格中都對頻率做了修改。 對于DDR3的初始化和配置還是了解的不夠,還望有人能夠指教一下。
    發表于 06-21 12:48

    C6678 boot過程中DDR3初始化問題

    通常調試時用gel文件進行初始化就夠了,但如果想把代碼放在DDR3中運行,這樣的話,boot時就需要先對DDR3初始化代碼才能正常運行,找了下boot talbe 中有關于SDRAM的
    發表于 06-21 06:38

    CCSv5,C66xx新建工程gel初始化DDR

    使用CCSv5.4,C6670,MCSDK,需要在debug load時初始化DDR,使用官方EVM板及自己的測試板,問題:1.使用EVM板,新建工程,工程中不建立sy***ios的 .cfg
    發表于 01-03 11:31

    6657的DDR3初始化不成功

    最近我在調試自制6657板子的DDR3初始化,發現一個很奇怪的現象,百思不得其解,我分別用GEL和KEYSTONE DDR3 INIT 在6657EVM開發板上做DDR3
    發表于 01-08 10:19

    如何從.mem文件初始化加密的ddr4內存模型?

    大家好,有誰知道如何從.mem文件初始化加密的ddr4內存模型?在參考fromxapp1180項目時,發現使用以下命令初始化ddr3內存: $ readmemh( “
    發表于 05-11 09:17

    端口初始化初始化中斷

    目錄PA9(TX),PA10(RX)1、端口初始化2、初始化外設3、初始化中斷4、使能中斷5、使能外設5、發送數據PA9(TX),PA10(RX)1、端口
    發表于 08-16 06:54

    DDR初始化后的LX2160ARDB DDR內存訪問總是失敗怎么處理?

    通過 JTAG 手動初始化 DDR 控制器后,我試圖訪問 DDR 內存區域,但它總是失敗據我了解,必須使用信任區地址空間控制器映射區域,因此我嘗試執行 lsdk2012 中的 u-boot 所做
    發表于 03-29 07:58

    AD7124-4每次初始化校準后測得的同一信號有一二十毫伏偏差是為什么?

    為什么AD7124-4每次初始化,自校準后測得的同一信號有一二十毫伏偏差?
    發表于 12-07 07:10

    如何讓KeyStone DDR3接口初始化的詳細資料概述

    只要遵循適當的步驟,對KeyStone DSPs的DDR3 DRAM控制器的初始化是直接的。然而,如果省略了某些步驟,或者如果以錯誤的順序執行一些序列敏感的步驟,DDR3操作將是不可預測的。
    發表于 04-28 11:09 ?9次下載
    如何讓KeyStone <b class='flag-5'>DDR</b>3接口<b class='flag-5'>初始化</b>的詳細資料概述

    PCIe總線中的鏈路初始化訓練

    前面的文章中介紹過,PCIe收發的都是差分信號,有的時候Link兩端的設備的對應信號的極性可能是相反的。因此,PCIe Spec允許在鏈路訓練初始化的時候,對其進行調整,如下圖所示。和通道位置翻轉
    的頭像 發表于 06-05 09:06 ?1.1w次閱讀
    PCIe總線中的鏈路<b class='flag-5'>初始化</b>與<b class='flag-5'>訓練</b>

    神經網絡如何正確初始化?

    初始化訓練深度神經網絡的收斂性有重要影響。
    的頭像 發表于 05-17 16:32 ?7766次閱讀
    神經網絡如何正確<b class='flag-5'>初始化</b>?

    跳過DDR VIP模型的初始化

    使用 Synopsys 內存 VIP 的 Skip 初始化功能可確保模型處于空閑狀態,從而繞過重置過程的要求。在該狀態下,VIP 已準備好接受 REF、MRS 和 ACT 等命令。允許的命令如圖
    的頭像 發表于 05-26 18:02 ?1084次閱讀
    跳過<b class='flag-5'>DDR</b> VIP模型的<b class='flag-5'>初始化</b>

    DDR VIP模型的無縫快速初始化

    DDR 驗證是任何 SoC 中最關鍵和最復雜的任務之一,因為它涉及位于 DUT 內部的控制器和位于板載 DUT 外部的外部 DDR 存儲器。在這里,我們將討論 DDR VIP 模型的快速初始化
    的頭像 發表于 05-29 09:10 ?875次閱讀
    <b class='flag-5'>DDR</b> VIP模型的無縫快速<b class='flag-5'>初始化</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>