今天分享DDR相關(guān)知識(shí)。
什么是DDR
DDR是Double Data Rate的縮寫,即“雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器”。DDR是一種技術(shù),中國大陸工程師習(xí)慣用DDR稱呼用了DDR技術(shù)的SDRAM,而在中國臺(tái)灣以及歐美,工程師習(xí)慣用DRAM來稱呼。
DDR的核心要義是在一個(gè)時(shí)鐘周期內(nèi),上升沿和下降沿都做一次數(shù)據(jù)采樣,這樣400MHz的主頻可以實(shí)現(xiàn)800Mbps的數(shù)據(jù)傳輸速率。
每一代DDR的基本區(qū)別
(可點(diǎn)擊圖片放大查看)
關(guān)鍵技術(shù)解釋
1、VTT
VTT為DDR的地址線,控制線等信號(hào)提供上拉電源,上拉電阻是50Ω左右。VTT=1/2VDDQ,并且VTT要跟隨VDDQ,因此需要專用的電源同時(shí)提供VDDQ和VTT。例如芯片TPS51206DSQT,LP2996。用專門的電源芯片,還有一個(gè)重要的原因,在Fly-by的拓?fù)渲?,VTT提供電流,增強(qiáng)DDR信號(hào)線的驅(qū)動(dòng)能力。
DDR的接收器是一個(gè)比較器,其中一端是VREF,另一端是信號(hào),例如地址線A2在有VTT上拉的時(shí)候,A2的信號(hào)在0和1.8V間跳動(dòng),當(dāng)A2電壓高于VTT時(shí),電流流向VTT。當(dāng)A2低于VTT時(shí),VTT流向DDR。因此VTT需要有提供電流和吸收電流的能力,一般的開關(guān)電源不能作為VTT的提供者。此外,VTT電源相當(dāng)于DDR接收器信號(hào)輸入端的直流偏執(zhí),且這個(gè)偏執(zhí)等于VREF,因此VTT的噪聲要越小越好,否則當(dāng)A2的狀態(tài)為高阻態(tài)時(shí),DDR接收器的比較器容易產(chǎn)生誤觸發(fā)。
上文說過,VTT相當(dāng)于DDR接收器的直流偏執(zhí),其實(shí)如果沒有VTT,這個(gè)直流偏執(zhí)也存在,它在芯片的內(nèi)部,提供電流的能力很弱。如果只有1個(gè)或2個(gè)DDR芯片,走Fly-by拓?fù)洌敲床恍枰獠康腣TT上拉。如果有2個(gè)以上的DDR芯片,則一定需要VTT上拉。
2、Prefetch
Prefetch字面意思就是預(yù)存取,每一代的DDR預(yù)存取大小不同,詳見第2章中表格。以DDR3為例,它的Prefetch=8n,相當(dāng)于DDR的每一個(gè)IO都有一個(gè)寬度為8的buffer,從IO進(jìn)來8個(gè)數(shù)據(jù)后,在第8個(gè)數(shù)據(jù)進(jìn)來后,才把這8個(gè)數(shù)據(jù)一次性的寫入DDR內(nèi)部的存儲(chǔ)單元。下圖是一個(gè)形象的解釋,同時(shí)我們關(guān)注一下幾個(gè)速率。DDR3的時(shí)鐘是800MHz,Data Rate是1600Mbps,由于這個(gè)Buffer的存在,DDR內(nèi)部的時(shí)鐘只需要200MHz就可以了(注意DDR內(nèi)部不是雙比特翻轉(zhuǎn)采樣)。
我們來做一個(gè)頻率對(duì)照表,如下:
DDR內(nèi)部的最小存儲(chǔ)單元(1bit)是一個(gè)晶體管+一個(gè)電容,電容會(huì)放電,需要不斷的“刷新”(充電)才能保持正常的工作狀態(tài),由于電容充放電需要時(shí)間,DDR內(nèi)部的頻率受限于此,很難提高,目前技術(shù)一般在100~200MHz。因此需要用Prefetch技術(shù)來提內(nèi)部數(shù)據(jù)高吞吐率(其實(shí)就是串并轉(zhuǎn)換原理)。Prefetch位寬的提高,是DDR2,3,4非常顯著的變化。
第一段提到,對(duì)于DDR3,在第8個(gè)數(shù)據(jù)進(jìn)來后,F(xiàn)IFO滿了,然后才把這8個(gè)數(shù)據(jù)一次性的寫入DDR內(nèi)部的存儲(chǔ)單元,那么必須要求DDR的內(nèi)部時(shí)鐘和外部時(shí)鐘有一定的約束關(guān)系,F(xiàn)IFO滿的時(shí)候一定是以DQS下降沿采樣結(jié)束的,數(shù)據(jù)手冊(cè)中對(duì)DQS的下降沿與clk有一個(gè)建立時(shí)間和保持時(shí)間的約束要求的目的原來是這樣。
3、SSTL
SSTL(Stub Series Terminated Logic)接口標(biāo)準(zhǔn)也是JEDEC所認(rèn)可的標(biāo)準(zhǔn)之一。該標(biāo)準(zhǔn)專門針對(duì)高速內(nèi)存(特別是SDRAM)接口。SSTL規(guī)定了開關(guān)特點(diǎn)和特殊的端接方案。
SSTL標(biāo)準(zhǔn)規(guī)定了IC供電,IO的DC和AC輸入輸出門限,差分信號(hào)門限,Vref電壓等。SSTL_3是3.3V標(biāo)準(zhǔn),SSTL_2是2.5V標(biāo)準(zhǔn),SSTL_18是1.8V標(biāo)準(zhǔn),SSTL_15是1.5V。
SSTL最大的特點(diǎn)是需要終端匹配電阻,也叫終端終結(jié)電阻,上拉到VTT(1/2VDDQ)。這個(gè)短接電阻最大的作用是為了信號(hào)完整性,特別是在1拖多的Fly-by走線拓?fù)湎?,還能增強(qiáng)驅(qū)動(dòng)能力。
4、Bank
以下圖為例,一個(gè)Bank中包含若干個(gè)Array,Array相當(dāng)于一個(gè)表單,選中“行地址”和“列地址”后,表單中的一個(gè)單元格就被選中,這個(gè)單元格就是一個(gè)bit。Bank中的所有Array的行地址是連在一起的,列地址也是。那么選中“行地址”和“列地址”后,將一起選中所有Array的bit。有多少個(gè)array,就有多少個(gè)bit被選中。以DDR3為例,Data線寬度是32,prefetch是8,那么Array就有32x8=256.內(nèi)部一次操作會(huì)選中256bit的數(shù)據(jù)。
Bank數(shù)量越多,需要的Bank選擇線越多,DDR3有8個(gè)bank,需要3個(gè)BA信號(hào)BA0~2。BA,行地址,列地址共同組成了存儲(chǔ)單元的訪問地址,缺一不可。
5、DDR的容量計(jì)算
下圖是DDR3 1Gb的尋址配置,以其中128Mbx8為例說明,其中x8表示IO數(shù)據(jù)(DQ)位寬度。
我的理解是,這個(gè)page size更像是邏輯上的一個(gè)頁,并不是一個(gè)bank中,一行的所有bit,因?yàn)橐恍械乃衎it要考慮prefetch寬度。
上表是JESD-3D中的表格,Row Address和Column Address都是真實(shí)需要尋址的地址,其他用途的地址比如A10,A12或者A11等并沒有計(jì)算在內(nèi)。在計(jì)算時(shí),不要因?yàn)橛蠥13,就認(rèn)為Column Address就是A0~A13。
6、Burst
Burst字面意思是突發(fā),DDR的訪問都是以突發(fā)的方式連續(xù)訪問同一行的相鄰幾個(gè)單元。進(jìn)行Brust時(shí),需要有幾個(gè)參數(shù):
Burst Length:一次突發(fā)訪問幾個(gè)列地址。
Read/Write: 是讀還是寫
Starting Column:從哪一列開始Burst
Burst:突發(fā)的順序。
下圖是DDR3中突發(fā)類型和順序,Burst是通過A12/BC#選擇的。但對(duì)于DDR,DDR2和DDR4,不一定就是通過A12/BC#,詳見PIN定義章節(jié)。
7、DDR的tRDC,CL,tAC
在實(shí)際工作中,Bank地址與相應(yīng)的行地址是同時(shí)發(fā)出的,此時(shí)這個(gè)命令稱之為“行激活”(Row Active)。在此之后,將發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫),這兩個(gè)命令也是同時(shí)發(fā)出的,所以一般都會(huì)以“讀/寫命令”來表示列尋址。
根據(jù)相關(guān)的標(biāo)準(zhǔn),從行有效到讀/寫命令發(fā)出之間的間隔被定義為tRCD,即RAS to CAS Delay(RAS至CAS延遲,RAS就是行地址選通脈沖,CAS就是列地址選通脈沖),我們可以理解為行選通周期。tRCD是DDR的一個(gè)重要時(shí)序參數(shù),廣義的tRCD以時(shí)鐘周期(tCK,Clock Time)數(shù)為單位,比如tRCD=3,就代表延遲周期為兩個(gè)時(shí)鐘周期,具體到確切的時(shí)間,則要根據(jù)時(shí)鐘頻率而定,DDR3-800,tRCD=3,代表30ns的延遲。
接下來,相關(guān)的列地址被選中之后,將會(huì)觸發(fā)數(shù)據(jù)傳輸,但從存儲(chǔ)單元中輸出到真正出現(xiàn)在內(nèi)存芯片的 I/O 接口之間還需要一定的時(shí)間(數(shù)據(jù)觸發(fā)本身就有延遲,而且還需要進(jìn)行信號(hào)放大),這段時(shí)間就是非常著名的 CL(CAS Latency,列地址脈沖選通潛伏期)。CL 的數(shù)值與 tRCD 一樣,以時(shí)鐘周期數(shù)表示。如 DDR3-800,時(shí)鐘頻率為 100MHz,時(shí)鐘周期為 10ns,如果 CL=2 就意味著 20ns 的潛伏期。不過CL只是針對(duì)讀取操作。
由于芯片體積的原因,存儲(chǔ)單元中的電容容量很小,所以信號(hào)要經(jīng)過放大來保證其有效的識(shí)別性,這個(gè)放大/驅(qū)動(dòng)工作由S-AMP負(fù)責(zé),一個(gè)存儲(chǔ)體對(duì)應(yīng)一個(gè)S- AMP通道。但它要有一個(gè)準(zhǔn)備時(shí)間才能保證信號(hào)的發(fā)送強(qiáng)度(事前還要進(jìn)行電壓比較以進(jìn)行邏輯電平的判斷),因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個(gè)時(shí)鐘上升沿開始,數(shù)據(jù)即已傳向S-AMP,也就是說此時(shí)數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過一定的驅(qū)動(dòng)時(shí)間最終傳向數(shù)據(jù)I/O總線進(jìn)行輸出,這段時(shí)間我們稱之為 tAC(Access Time from CLK,時(shí)鐘觸發(fā)后的訪問時(shí)間)。
目前內(nèi)存的讀寫基本都是連續(xù)的,因?yàn)榕cCPU交換的數(shù)據(jù)量以一個(gè)Cache Line(即CPU內(nèi)Cache的存儲(chǔ)單位)的容量為準(zhǔn),一般為64字節(jié)。而現(xiàn)有的Rank位寬為8字節(jié)(64bit),那么就要一次連續(xù)傳輸8次,這就涉及到我們也經(jīng)常能遇到的突發(fā)傳輸?shù)母拍睢M话l(fā)(Burst)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞?,連續(xù)傳輸?shù)闹芷跀?shù)就是突發(fā)長度(Burst Lengths,簡稱BL)。
在進(jìn)行突發(fā)傳輸時(shí),只要指定起始列地址與突發(fā)長度,內(nèi)存就會(huì)依次地自動(dòng)對(duì)后面相應(yīng)數(shù)量的存儲(chǔ)單元進(jìn)行讀/寫操作而不再需要控制器連續(xù)地提供列地址。這樣,除了第一筆數(shù)據(jù)的傳輸需要若干個(gè)周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個(gè)數(shù)據(jù)只需一個(gè)周期的即可獲得。
突發(fā)連續(xù)讀取模式:只要指定起始列地址與突發(fā)長度,后續(xù)的尋址與數(shù)據(jù)的讀取自動(dòng)進(jìn)行,而只要控制好兩段突發(fā)讀取命令的間隔周期(與BL相同)即可做到連續(xù)的突發(fā)傳輸。
談到了突發(fā)長度時(shí)。如果BL=4,那么也就是說一次就傳送4×64bit的數(shù)據(jù)。但是,如果其中的第二筆數(shù)據(jù)是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數(shù)據(jù),人們采用了數(shù)據(jù)掩碼(Data I/O Mask,簡稱DQM)技術(shù)。通過DQM,內(nèi)存可以控制I/O端口取消哪些輸出或輸入的數(shù)據(jù)。這里需要強(qiáng)調(diào)的是,在讀取時(shí),被屏蔽的數(shù)據(jù)仍然會(huì)從存儲(chǔ)體傳出,只是在“掩碼邏輯單元”處被屏蔽。DQM由北橋控制,為了精確屏蔽一個(gè)P-Bank位寬中的每個(gè)字節(jié),每個(gè)DIMM有8個(gè)DQM 信號(hào)線,每個(gè)信號(hào)針對(duì)一個(gè)字節(jié)。這樣,對(duì)于4bit位寬芯片,兩個(gè)芯片共用一個(gè)DQM信號(hào)線,對(duì)于8bit位寬芯片,一個(gè)芯片占用一個(gè)DQM信號(hào),而對(duì)于 16bit位寬芯片,則需要兩個(gè)DQM引腳。
在數(shù)據(jù)讀取完之后,為了騰出讀出放大器以供同一Bank內(nèi)其他行的尋址并傳輸數(shù)據(jù),內(nèi)存芯片將進(jìn)行預(yù)充電的操作來關(guān)閉當(dāng)前工作行。還是以上面那個(gè)Bank示意圖為例。當(dāng)前尋址的存儲(chǔ)單元是B1、R2、C6。如果接下來的尋址命令是B1、R2、C4,則不用預(yù)充電,因?yàn)樽x出放大器正在為這一行服務(wù)。但如果地址命令是B1、R4、C4,由于是同一Bank的不同行,那么就必須要先把R2關(guān)閉,才能對(duì)R4尋址。從開始關(guān)閉現(xiàn)有的工作行,到可以打開新的工作行之間的間隔就是tRP(Row Precharge command Period,行預(yù)充電有效周期),單位也是時(shí)鐘周期數(shù)。
8、ODT
ODT是內(nèi)建核心的終結(jié)電阻,它的功能是讓一些信號(hào)在終結(jié)電阻處消耗完,防止這些信號(hào)在電路上形成反射。換句話說就是在片內(nèi)設(shè)置合適的上下拉電阻,以獲得更好的信號(hào)完整性。被ODT校準(zhǔn)的信號(hào)包括:
DQ, DQS, DQS# and DM for x4 configuration
DQ, DQS, DQS#, DM, TDQS and TDQS# for X8 configuration
DQU, DQL, DQSU, DQSU#, DQSL, DQSL#, DMU and DML for X16 configuration
當(dāng)一個(gè)CPU掛了很多個(gè)DDR芯片的時(shí)候,他們是共用控制線,地址線的,走線肯定要分叉,如果沒有中端匹配電阻,肯定會(huì)產(chǎn)生信號(hào)完整性問題。那么如果只有一個(gè)DDR芯片的時(shí)候,需不需要呢?正常情況下,走線很短,有符合規(guī)則,是不需要的。
下圖是DDR中的IO上下拉電阻,RON是DDR的輸出結(jié)構(gòu)的上下拉電阻,RTT是DDR輸入結(jié)構(gòu)的上下拉電阻。這兩個(gè)電阻的阻值都是可調(diào)的。
下圖是RON的調(diào)節(jié),注意這不是ODT的任務(wù),調(diào)節(jié)是通過寄存器實(shí)現(xiàn)。
下圖是RTT的調(diào)節(jié),是ODT要做的事情,而且RTT的檔位要多,也是通過寄存器調(diào)節(jié)的。
注意,DDR3的PIN定義上有一個(gè)引腳是ODT,如果ODT=0,DRAM Termination State功能關(guān)閉;ODT=1,DRAM Termination State的功能參考寄存器設(shè)置。如下是一個(gè)真值表。因?yàn)镈RAM Termination State非常耗電,所以不用的時(shí)候最好不要打開。
9、DDR3的ZQ
ZQ信號(hào)在DDR3時(shí)代開始引入,要求在ZQ引腳放置一個(gè)240Ω±1%的高精度電阻到地,注意必須是高精度。而且這個(gè)電阻是必須的,不能省略的。進(jìn)行ODT時(shí),是以這個(gè)引腳上的阻值為參考來進(jìn)行校準(zhǔn)的。
校準(zhǔn)需要調(diào)整內(nèi)部電阻,以獲得更好的信號(hào)完整性,但是內(nèi)部電阻隨著溫度會(huì)有些細(xì)微的變化,為了將這個(gè)變化糾正回來,就需要一個(gè)外部的精確電阻作為參考。詳細(xì)來講,就是為RTT和RON提供參考電阻。
10、OCD
OCD 是在 DDR-II 開始加入的新功能,而且這個(gè)功能是可選的,有的資料上面又叫離線驅(qū)動(dòng)調(diào)整。OCD的主要作用在于調(diào)整 I/O 接口端的電壓,來補(bǔ)償上拉與下拉電阻值, 從而調(diào)整DQS 與 DQ 之間的同步確保信號(hào)的完整與可靠性。調(diào)校期間,分別測(cè)試 DQS 高電平和 DQ高電平,以及 DQS 低電平和 DQ 高電平的同步情況。
如果不滿足要求,則通過設(shè)定突發(fā)長度的地址線來傳送上拉 / 下拉電阻等級(jí)(加一檔或減一檔),直到測(cè)試合格才退出OCD操作,通過OCD操作來減少 DQ 、 DQS的傾斜從而提高信號(hào)的完整性及控制電壓來提高信號(hào)品質(zhì)。由于在一般情況下對(duì)應(yīng)用環(huán)境穩(wěn)定程度要求并不太高,只要存在差分DQS時(shí)就基本可以保證同步的準(zhǔn)確性, 而且OCD的調(diào)整對(duì)其他操作也有一定影響, 因此OCD功能在普通臺(tái)式機(jī)上并沒有什么作用,其優(yōu)點(diǎn)主要體現(xiàn)在對(duì)數(shù)據(jù)完整性非常敏感的服務(wù)器等高端產(chǎn)品領(lǐng)域。
DDR3的PIN定義
下面是三星K4B4G0446Q/K4B4G0846Q的PIN定義,每一個(gè)都有很詳細(xì)的解釋。
以x8的配置為例,如下是其Ball Map。
一對(duì)時(shí)鐘線CK和CKn
數(shù)據(jù)線DQ0~DQ7共8位
一對(duì)差分對(duì)DQS和DQSn
地址線A0~A15,其中,A10和A12有特殊用途
行選中信號(hào)RASn
列選中信號(hào)CASn
寫使能Wen
片選CSn
Bank選擇BA0~2
一個(gè)Reset信號(hào),是DDR3新增的一項(xiàng)重要功能,并為此專門準(zhǔn)備了一個(gè)引腳。這一引腳將使DDR3的初始化處理變得簡單。當(dāng)Reset命令有效時(shí),DDR3 內(nèi)存將停止所有的操作,并切換至最少量活動(dòng)的狀態(tài),以節(jié)約電力。在Reset期間,DDR3內(nèi)存將關(guān)閉內(nèi)在的大部分功能,所有數(shù)據(jù)接收與發(fā)送器都將關(guān)閉,且所有內(nèi)部的程序裝置將復(fù)位,DLL(延遲鎖相環(huán)路)與時(shí)鐘電路將停止工作,甚至不理睬數(shù)據(jù)總線上的任何動(dòng)靜。這樣一來,該功能將使DDR3達(dá)到最節(jié)省電力的目的。
ZQ和ODT PIN上文已經(jīng)說明。
DDR的走線規(guī)則
DDR的信號(hào)線需要分組:
數(shù)據(jù)線一組(DQ,DQS,DQM),誤差控制在20mil以內(nèi);
控制線一組(Address,控制線,時(shí)鐘),以時(shí)鐘為中心,誤差控制在100mil以內(nèi)。
今天分享DDR相關(guān)知識(shí)。
什么是DDR
DDR是Double Data Rate的縮寫,即“雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器”。DDR是一種技術(shù),中國大陸工程師習(xí)慣用DDR稱呼用了DDR技術(shù)的SDRAM,而在中國臺(tái)灣以及歐美,工程師習(xí)慣用DRAM來稱呼。
DDR的核心要義是在一個(gè)時(shí)鐘周期內(nèi),上升沿和下降沿都做一次數(shù)據(jù)采樣,這樣400MHz的主頻可以實(shí)現(xiàn)800Mbps的數(shù)據(jù)傳輸速率。
每一代DDR的基本區(qū)別
(可點(diǎn)擊圖片放大查看)
關(guān)鍵技術(shù)解釋
1、VTT
VTT為DDR的地址線,控制線等信號(hào)提供上拉電源,上拉電阻是50Ω左右。VTT=1/2VDDQ,并且VTT要跟隨VDDQ,因此需要專用的電源同時(shí)提供VDDQ和VTT。例如芯片TPS51206DSQT,LP2996。用專門的電源芯片,還有一個(gè)重要的原因,在Fly-by的拓?fù)渲?,VTT提供電流,增強(qiáng)DDR信號(hào)線的驅(qū)動(dòng)能力。
DDR的接收器是一個(gè)比較器,其中一端是VREF,另一端是信號(hào),例如地址線A2在有VTT上拉的時(shí)候,A2的信號(hào)在0和1.8V間跳動(dòng),當(dāng)A2電壓高于VTT時(shí),電流流向VTT。當(dāng)A2低于VTT時(shí),VTT流向DDR。因此VTT需要有提供電流和吸收電流的能力,一般的開關(guān)電源不能作為VTT的提供者。此外,VTT電源相當(dāng)于DDR接收器信號(hào)輸入端的直流偏執(zhí),且這個(gè)偏執(zhí)等于VREF,因此VTT的噪聲要越小越好,否則當(dāng)A2的狀態(tài)為高阻態(tài)時(shí),DDR接收器的比較器容易產(chǎn)生誤觸發(fā)。
上文說過,VTT相當(dāng)于DDR接收器的直流偏執(zhí),其實(shí)如果沒有VTT,這個(gè)直流偏執(zhí)也存在,它在芯片的內(nèi)部,提供電流的能力很弱。如果只有1個(gè)或2個(gè)DDR芯片,走Fly-by拓?fù)?,那么不需要外部的VTT上拉。如果有2個(gè)以上的DDR芯片,則一定需要VTT上拉。
2、Prefetch
Prefetch字面意思就是預(yù)存取,每一代的DDR預(yù)存取大小不同,詳見第2章中表格。以DDR3為例,它的Prefetch=8n,相當(dāng)于DDR的每一個(gè)IO都有一個(gè)寬度為8的buffer,從IO進(jìn)來8個(gè)數(shù)據(jù)后,在第8個(gè)數(shù)據(jù)進(jìn)來后,才把這8個(gè)數(shù)據(jù)一次性的寫入DDR內(nèi)部的存儲(chǔ)單元。下圖是一個(gè)形象的解釋,同時(shí)我們關(guān)注一下幾個(gè)速率。DDR3的時(shí)鐘是800MHz,Data Rate是1600Mbps,由于這個(gè)Buffer的存在,DDR內(nèi)部的時(shí)鐘只需要200MHz就可以了(注意DDR內(nèi)部不是雙比特翻轉(zhuǎn)采樣)。
我們來做一個(gè)頻率對(duì)照表,如下:
DDR內(nèi)部的最小存儲(chǔ)單元(1bit)是一個(gè)晶體管+一個(gè)電容,電容會(huì)放電,需要不斷的“刷新”(充電)才能保持正常的工作狀態(tài),由于電容充放電需要時(shí)間,DDR內(nèi)部的頻率受限于此,很難提高,目前技術(shù)一般在100~200MHz。因此需要用Prefetch技術(shù)來提內(nèi)部數(shù)據(jù)高吞吐率(其實(shí)就是串并轉(zhuǎn)換原理)。Prefetch位寬的提高,是DDR2,3,4非常顯著的變化。
第一段提到,對(duì)于DDR3,在第8個(gè)數(shù)據(jù)進(jìn)來后,F(xiàn)IFO滿了,然后才把這8個(gè)數(shù)據(jù)一次性的寫入DDR內(nèi)部的存儲(chǔ)單元,那么必須要求DDR的內(nèi)部時(shí)鐘和外部時(shí)鐘有一定的約束關(guān)系,F(xiàn)IFO滿的時(shí)候一定是以DQS下降沿采樣結(jié)束的,數(shù)據(jù)手冊(cè)中對(duì)DQS的下降沿與clk有一個(gè)建立時(shí)間和保持時(shí)間的約束要求的目的原來是這樣。
3、SSTL
SSTL(Stub Series Terminated Logic)接口標(biāo)準(zhǔn)也是JEDEC所認(rèn)可的標(biāo)準(zhǔn)之一。該標(biāo)準(zhǔn)專門針對(duì)高速內(nèi)存(特別是SDRAM)接口。SSTL規(guī)定了開關(guān)特點(diǎn)和特殊的端接方案。
SSTL標(biāo)準(zhǔn)規(guī)定了IC供電,IO的DC和AC輸入輸出門限,差分信號(hào)門限,Vref電壓等。SSTL_3是3.3V標(biāo)準(zhǔn),SSTL_2是2.5V標(biāo)準(zhǔn),SSTL_18是1.8V標(biāo)準(zhǔn),SSTL_15是1.5V。
SSTL最大的特點(diǎn)是需要終端匹配電阻,也叫終端終結(jié)電阻,上拉到VTT(1/2VDDQ)。這個(gè)短接電阻最大的作用是為了信號(hào)完整性,特別是在1拖多的Fly-by走線拓?fù)湎?,還能增強(qiáng)驅(qū)動(dòng)能力。
4、Bank
以下圖為例,一個(gè)Bank中包含若干個(gè)Array,Array相當(dāng)于一個(gè)表單,選中“行地址”和“列地址”后,表單中的一個(gè)單元格就被選中,這個(gè)單元格就是一個(gè)bit。Bank中的所有Array的行地址是連在一起的,列地址也是。那么選中“行地址”和“列地址”后,將一起選中所有Array的bit。有多少個(gè)array,就有多少個(gè)bit被選中。以DDR3為例,Data線寬度是32,prefetch是8,那么Array就有32x8=256.內(nèi)部一次操作會(huì)選中256bit的數(shù)據(jù)。
Bank數(shù)量越多,需要的Bank選擇線越多,DDR3有8個(gè)bank,需要3個(gè)BA信號(hào)BA0~2。BA,行地址,列地址共同組成了存儲(chǔ)單元的訪問地址,缺一不可。
5、DDR的容量計(jì)算
下圖是DDR3 1Gb的尋址配置,以其中128Mbx8為例說明,其中x8表示IO數(shù)據(jù)(DQ)位寬度。
我的理解是,這個(gè)page size更像是邏輯上的一個(gè)頁,并不是一個(gè)bank中,一行的所有bit,因?yàn)橐恍械乃衎it要考慮prefetch寬度。
上表是JESD-3D中的表格,Row Address和Column Address都是真實(shí)需要尋址的地址,其他用途的地址比如A10,A12或者A11等并沒有計(jì)算在內(nèi)。在計(jì)算時(shí),不要因?yàn)橛蠥13,就認(rèn)為Column Address就是A0~A13。
6、Burst
Burst字面意思是突發(fā),DDR的訪問都是以突發(fā)的方式連續(xù)訪問同一行的相鄰幾個(gè)單元。進(jìn)行Brust時(shí),需要有幾個(gè)參數(shù):
Burst Length:一次突發(fā)訪問幾個(gè)列地址。
Read/Write: 是讀還是寫
Starting Column:從哪一列開始Burst
Burst:突發(fā)的順序。
下圖是DDR3中突發(fā)類型和順序,Burst是通過A12/BC#選擇的。但對(duì)于DDR,DDR2和DDR4,不一定就是通過A12/BC#,詳見PIN定義章節(jié)。
7、DDR的tRDC,CL,tAC
在實(shí)際工作中,Bank地址與相應(yīng)的行地址是同時(shí)發(fā)出的,此時(shí)這個(gè)命令稱之為“行激活”(Row Active)。在此之后,將發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫),這兩個(gè)命令也是同時(shí)發(fā)出的,所以一般都會(huì)以“讀/寫命令”來表示列尋址。
根據(jù)相關(guān)的標(biāo)準(zhǔn),從行有效到讀/寫命令發(fā)出之間的間隔被定義為tRCD,即RAS to CAS Delay(RAS至CAS延遲,RAS就是行地址選通脈沖,CAS就是列地址選通脈沖),我們可以理解為行選通周期。tRCD是DDR的一個(gè)重要時(shí)序參數(shù),廣義的tRCD以時(shí)鐘周期(tCK,Clock Time)數(shù)為單位,比如tRCD=3,就代表延遲周期為兩個(gè)時(shí)鐘周期,具體到確切的時(shí)間,則要根據(jù)時(shí)鐘頻率而定,DDR3-800,tRCD=3,代表30ns的延遲。
接下來,相關(guān)的列地址被選中之后,將會(huì)觸發(fā)數(shù)據(jù)傳輸,但從存儲(chǔ)單元中輸出到真正出現(xiàn)在內(nèi)存芯片的 I/O 接口之間還需要一定的時(shí)間(數(shù)據(jù)觸發(fā)本身就有延遲,而且還需要進(jìn)行信號(hào)放大),這段時(shí)間就是非常著名的 CL(CAS Latency,列地址脈沖選通潛伏期)。CL 的數(shù)值與 tRCD 一樣,以時(shí)鐘周期數(shù)表示。如 DDR3-800,時(shí)鐘頻率為 100MHz,時(shí)鐘周期為 10ns,如果 CL=2 就意味著 20ns 的潛伏期。不過CL只是針對(duì)讀取操作。
由于芯片體積的原因,存儲(chǔ)單元中的電容容量很小,所以信號(hào)要經(jīng)過放大來保證其有效的識(shí)別性,這個(gè)放大/驅(qū)動(dòng)工作由S-AMP負(fù)責(zé),一個(gè)存儲(chǔ)體對(duì)應(yīng)一個(gè)S- AMP通道。但它要有一個(gè)準(zhǔn)備時(shí)間才能保證信號(hào)的發(fā)送強(qiáng)度(事前還要進(jìn)行電壓比較以進(jìn)行邏輯電平的判斷),因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個(gè)時(shí)鐘上升沿開始,數(shù)據(jù)即已傳向S-AMP,也就是說此時(shí)數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過一定的驅(qū)動(dòng)時(shí)間最終傳向數(shù)據(jù)I/O總線進(jìn)行輸出,這段時(shí)間我們稱之為 tAC(Access Time from CLK,時(shí)鐘觸發(fā)后的訪問時(shí)間)。
目前內(nèi)存的讀寫基本都是連續(xù)的,因?yàn)榕cCPU交換的數(shù)據(jù)量以一個(gè)Cache Line(即CPU內(nèi)Cache的存儲(chǔ)單位)的容量為準(zhǔn),一般為64字節(jié)。而現(xiàn)有的Rank位寬為8字節(jié)(64bit),那么就要一次連續(xù)傳輸8次,這就涉及到我們也經(jīng)常能遇到的突發(fā)傳輸?shù)母拍?。突發(fā)(Burst)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞剑B續(xù)傳輸?shù)闹芷跀?shù)就是突發(fā)長度(Burst Lengths,簡稱BL)。
在進(jìn)行突發(fā)傳輸時(shí),只要指定起始列地址與突發(fā)長度,內(nèi)存就會(huì)依次地自動(dòng)對(duì)后面相應(yīng)數(shù)量的存儲(chǔ)單元進(jìn)行讀/寫操作而不再需要控制器連續(xù)地提供列地址。這樣,除了第一筆數(shù)據(jù)的傳輸需要若干個(gè)周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個(gè)數(shù)據(jù)只需一個(gè)周期的即可獲得。
突發(fā)連續(xù)讀取模式:只要指定起始列地址與突發(fā)長度,后續(xù)的尋址與數(shù)據(jù)的讀取自動(dòng)進(jìn)行,而只要控制好兩段突發(fā)讀取命令的間隔周期(與BL相同)即可做到連續(xù)的突發(fā)傳輸。
談到了突發(fā)長度時(shí)。如果BL=4,那么也就是說一次就傳送4×64bit的數(shù)據(jù)。但是,如果其中的第二筆數(shù)據(jù)是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數(shù)據(jù),人們采用了數(shù)據(jù)掩碼(Data I/O Mask,簡稱DQM)技術(shù)。通過DQM,內(nèi)存可以控制I/O端口取消哪些輸出或輸入的數(shù)據(jù)。這里需要強(qiáng)調(diào)的是,在讀取時(shí),被屏蔽的數(shù)據(jù)仍然會(huì)從存儲(chǔ)體傳出,只是在“掩碼邏輯單元”處被屏蔽。DQM由北橋控制,為了精確屏蔽一個(gè)P-Bank位寬中的每個(gè)字節(jié),每個(gè)DIMM有8個(gè)DQM 信號(hào)線,每個(gè)信號(hào)針對(duì)一個(gè)字節(jié)。這樣,對(duì)于4bit位寬芯片,兩個(gè)芯片共用一個(gè)DQM信號(hào)線,對(duì)于8bit位寬芯片,一個(gè)芯片占用一個(gè)DQM信號(hào),而對(duì)于 16bit位寬芯片,則需要兩個(gè)DQM引腳。
在數(shù)據(jù)讀取完之后,為了騰出讀出放大器以供同一Bank內(nèi)其他行的尋址并傳輸數(shù)據(jù),內(nèi)存芯片將進(jìn)行預(yù)充電的操作來關(guān)閉當(dāng)前工作行。還是以上面那個(gè)Bank示意圖為例。當(dāng)前尋址的存儲(chǔ)單元是B1、R2、C6。如果接下來的尋址命令是B1、R2、C4,則不用預(yù)充電,因?yàn)樽x出放大器正在為這一行服務(wù)。但如果地址命令是B1、R4、C4,由于是同一Bank的不同行,那么就必須要先把R2關(guān)閉,才能對(duì)R4尋址。從開始關(guān)閉現(xiàn)有的工作行,到可以打開新的工作行之間的間隔就是tRP(Row Precharge command Period,行預(yù)充電有效周期),單位也是時(shí)鐘周期數(shù)。
8、ODT
ODT是內(nèi)建核心的終結(jié)電阻,它的功能是讓一些信號(hào)在終結(jié)電阻處消耗完,防止這些信號(hào)在電路上形成反射。換句話說就是在片內(nèi)設(shè)置合適的上下拉電阻,以獲得更好的信號(hào)完整性。被ODT校準(zhǔn)的信號(hào)包括:
DQ, DQS, DQS# and DM for x4 configuration
DQ, DQS, DQS#, DM, TDQS and TDQS# for X8 configuration
DQU, DQL, DQSU, DQSU#, DQSL, DQSL#, DMU and DML for X16 configuration
當(dāng)一個(gè)CPU掛了很多個(gè)DDR芯片的時(shí)候,他們是共用控制線,地址線的,走線肯定要分叉,如果沒有中端匹配電阻,肯定會(huì)產(chǎn)生信號(hào)完整性問題。那么如果只有一個(gè)DDR芯片的時(shí)候,需不需要呢?正常情況下,走線很短,有符合規(guī)則,是不需要的。
下圖是DDR中的IO上下拉電阻,RON是DDR的輸出結(jié)構(gòu)的上下拉電阻,RTT是DDR輸入結(jié)構(gòu)的上下拉電阻。這兩個(gè)電阻的阻值都是可調(diào)的。
下圖是RON的調(diào)節(jié),注意這不是ODT的任務(wù),調(diào)節(jié)是通過寄存器實(shí)現(xiàn)。
下圖是RTT的調(diào)節(jié),是ODT要做的事情,而且RTT的檔位要多,也是通過寄存器調(diào)節(jié)的。
注意,DDR3的PIN定義上有一個(gè)引腳是ODT,如果ODT=0,DRAM Termination State功能關(guān)閉;ODT=1,DRAM Termination State的功能參考寄存器設(shè)置。如下是一個(gè)真值表。因?yàn)镈RAM Termination State非常耗電,所以不用的時(shí)候最好不要打開。
9、DDR3的ZQ
ZQ信號(hào)在DDR3時(shí)代開始引入,要求在ZQ引腳放置一個(gè)240Ω±1%的高精度電阻到地,注意必須是高精度。而且這個(gè)電阻是必須的,不能省略的。進(jìn)行ODT時(shí),是以這個(gè)引腳上的阻值為參考來進(jìn)行校準(zhǔn)的。
校準(zhǔn)需要調(diào)整內(nèi)部電阻,以獲得更好的信號(hào)完整性,但是內(nèi)部電阻隨著溫度會(huì)有些細(xì)微的變化,為了將這個(gè)變化糾正回來,就需要一個(gè)外部的精確電阻作為參考。詳細(xì)來講,就是為RTT和RON提供參考電阻。
10、OCD
OCD 是在 DDR-II 開始加入的新功能,而且這個(gè)功能是可選的,有的資料上面又叫離線驅(qū)動(dòng)調(diào)整。OCD的主要作用在于調(diào)整 I/O 接口端的電壓,來補(bǔ)償上拉與下拉電阻值, 從而調(diào)整DQS 與 DQ 之間的同步確保信號(hào)的完整與可靠性。調(diào)校期間,分別測(cè)試 DQS 高電平和 DQ高電平,以及 DQS 低電平和 DQ 高電平的同步情況。
如果不滿足要求,則通過設(shè)定突發(fā)長度的地址線來傳送上拉 / 下拉電阻等級(jí)(加一檔或減一檔),直到測(cè)試合格才退出OCD操作,通過OCD操作來減少 DQ 、 DQS的傾斜從而提高信號(hào)的完整性及控制電壓來提高信號(hào)品質(zhì)。由于在一般情況下對(duì)應(yīng)用環(huán)境穩(wěn)定程度要求并不太高,只要存在差分DQS時(shí)就基本可以保證同步的準(zhǔn)確性, 而且OCD的調(diào)整對(duì)其他操作也有一定影響, 因此OCD功能在普通臺(tái)式機(jī)上并沒有什么作用,其優(yōu)點(diǎn)主要體現(xiàn)在對(duì)數(shù)據(jù)完整性非常敏感的服務(wù)器等高端產(chǎn)品領(lǐng)域。
DDR3的PIN定義
下面是三星K4B4G0446Q/K4B4G0846Q的PIN定義,每一個(gè)都有很詳細(xì)的解釋。
以x8的配置為例,如下是其Ball Map。
一對(duì)時(shí)鐘線CK和CKn
數(shù)據(jù)線DQ0~DQ7共8位
一對(duì)差分對(duì)DQS和DQSn
地址線A0~A15,其中,A10和A12有特殊用途
行選中信號(hào)RASn
列選中信號(hào)CASn
寫使能Wen
片選CSn
Bank選擇BA0~2
一個(gè)Reset信號(hào),是DDR3新增的一項(xiàng)重要功能,并為此專門準(zhǔn)備了一個(gè)引腳。這一引腳將使DDR3的初始化處理變得簡單。當(dāng)Reset命令有效時(shí),DDR3 內(nèi)存將停止所有的操作,并切換至最少量活動(dòng)的狀態(tài),以節(jié)約電力。在Reset期間,DDR3內(nèi)存將關(guān)閉內(nèi)在的大部分功能,所有數(shù)據(jù)接收與發(fā)送器都將關(guān)閉,且所有內(nèi)部的程序裝置將復(fù)位,DLL(延遲鎖相環(huán)路)與時(shí)鐘電路將停止工作,甚至不理睬數(shù)據(jù)總線上的任何動(dòng)靜。這樣一來,該功能將使DDR3達(dá)到最節(jié)省電力的目的。
ZQ和ODT PIN上文已經(jīng)說明。
DDR的走線規(guī)則
DDR的信號(hào)線需要分組:
數(shù)據(jù)線一組(DQ,DQS,DQM),誤差控制在20mil以內(nèi);
控制線一組(Address,控制線,時(shí)鐘),以時(shí)鐘為中心,誤差控制在100mil以內(nèi)。
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1891瀏覽量
64601 -
比較器
+關(guān)注
關(guān)注
14文章
1651瀏覽量
107217 -
DDR
+關(guān)注
關(guān)注
11文章
712瀏覽量
65340
原文標(biāo)題:DDR、DDR2、DDR3、DDR4、LPDDR的區(qū)別
文章出處:【微信號(hào):gh_a6560e9c41d7,微信公眾號(hào):硬件筆記本】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論