如何玩轉(zhuǎn)DDR?要先從這五大關(guān)鍵技術(shù)下手
首先小編就幾個(gè)關(guān)鍵技術(shù)再給大家介紹一下。
差分時(shí)鐘技術(shù)
差分時(shí)鐘是DDR的一個(gè)重要且必要的設(shè)計(jì),但大家對(duì)CK#(CKN)的作用認(rèn)識(shí)很少,很多人理解為第二個(gè)觸發(fā)時(shí)鐘,其實(shí)它的真實(shí)作用是起到觸發(fā)時(shí)鐘校準(zhǔn)的作用。
由于數(shù)據(jù)是在CK的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩(wěn)定以確保數(shù)據(jù)的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因?yàn)闇囟?、電阻性能的改變等原因,CK上下沿間距可能發(fā)生變化,此時(shí)與其反相的CK#(CKN)就起到糾正的作用(CK上升快下降慢,CK#則是上升慢下降快),如下圖一所示。
圖一 差分時(shí)鐘示意圖
數(shù)據(jù)選取脈沖(DQS)
就像時(shí)鐘信號(hào)一樣,DQS也是DDR中的重要功能,它的功能主要用來(lái)在一個(gè)時(shí)鐘周期內(nèi)準(zhǔn)確的區(qū)分出每個(gè)傳輸周期,并便于接收方準(zhǔn)確接收數(shù)據(jù)。每一顆8bit DRAM芯片都有一個(gè)DQS信號(hào)線,它是雙向的,在寫(xiě)入時(shí)它用來(lái)傳送由主控芯片發(fā)來(lái)的DQS信號(hào),讀取時(shí),則由DRAM芯片生成DQS向主控發(fā)送。完全可以說(shuō),它就是數(shù)據(jù)的同步信號(hào)。
在讀取時(shí),DQS與數(shù)據(jù)信號(hào)同時(shí)生成(也是在CK與CK#的交叉點(diǎn))。而DDR內(nèi)存中的CL也就是從CAS發(fā)出到DQS生成的間隔,數(shù)據(jù)真正出現(xiàn)在數(shù)據(jù)I/O總線上相對(duì)于DQS觸發(fā)的時(shí)間間隔被稱為tAC。實(shí)際上,DQS生成時(shí),芯片內(nèi)部的預(yù)取已經(jīng)完畢了,由于預(yù)取的原因,實(shí)際的數(shù)據(jù)傳出可能會(huì)提前于DQS發(fā)生(數(shù)據(jù)提前于DQS傳出)。由于是并行傳輸,DDR內(nèi)存對(duì)tAC也有一定的要求,對(duì)于DDR266,tAC的允許范圍是±0.75ns,對(duì)于DDR333,則是±0.7ns,其中CL里包含了一段DQS的導(dǎo)入期。
DQS 在讀取時(shí)與數(shù)據(jù)同步傳輸,那么接收時(shí)也是以DQS的上下沿為準(zhǔn)嗎?不,如果以DQS的上下沿區(qū)分?jǐn)?shù)據(jù)周期的危險(xiǎn)很大。由于芯片有預(yù)取的操作,所以輸出時(shí)的同步很難控制,只能限制在一定的時(shí)間范圍內(nèi),數(shù)據(jù)在各I/O端口的出現(xiàn)時(shí)間可能有快有慢,會(huì)與DQS有一定的間隔,這也就是為什么要有一個(gè)tAC規(guī)定的原因。而在接收方,一切必須保證同步接收,不能有tAC之類的偏差。這樣在寫(xiě)入時(shí),DRAM芯片不再自己生成DQS,而以發(fā)送方傳來(lái)的DQS為基準(zhǔn),并相應(yīng)延后一定的時(shí)間,在DQS的中部為數(shù)據(jù)周期的選取分割點(diǎn)(在讀取時(shí)分割點(diǎn)就是上下沿),從這里分隔開(kāi)兩個(gè)傳輸周期。這樣做的好處是,由于各數(shù)據(jù)信號(hào)都會(huì)有一個(gè)邏輯電平保持周期,即使發(fā)送時(shí)不同步,在DQS上下沿時(shí)都處于保持周期中,此時(shí)數(shù)據(jù)接收觸發(fā)的準(zhǔn)確性無(wú)疑是最高的,如下圖二所示。
圖二 數(shù)據(jù)時(shí)序
數(shù)據(jù)掩碼技術(shù)(DQM)
不是DDR所特有的,但對(duì)于DDR來(lái)說(shuō)也是比較重要的技術(shù),所以一并介紹下。
為了屏蔽不需要的數(shù)據(jù),人們采用了數(shù)據(jù)掩碼(Data I/O Mask,簡(jiǎn)稱DQM)技術(shù)。通過(guò)DQM,內(nèi)存可以控制I/O端口取消哪些輸出或輸入的數(shù)據(jù)。這里需要強(qiáng)調(diào)的是,在讀取時(shí),被屏蔽的數(shù)據(jù)仍然會(huì)從存儲(chǔ)體傳出,只是在“掩碼邏輯單元”處被屏蔽。
DQM由主控芯片控制,為了精確屏蔽一個(gè)P-Bank位寬中的每個(gè)字節(jié),每個(gè)64bit位寬的數(shù)據(jù)中有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引腳。SDRAM 官方規(guī)定,在讀取時(shí)DQM發(fā)出兩個(gè)時(shí)鐘周期后生效,而在寫(xiě)入時(shí),DQM與寫(xiě)入命令一樣是立即生效,如下圖三和四分別顯示讀取和寫(xiě)入時(shí)突發(fā)周期的第二筆數(shù)據(jù)被取消。
圖三 讀取時(shí)數(shù)據(jù)掩碼操作
圖四 寫(xiě)入時(shí)數(shù)據(jù)掩碼操作
所以DQM信號(hào)的作用就是對(duì)于突發(fā)寫(xiě)入,如果其中有不想存入的數(shù)據(jù),就可以運(yùn)用DQM信號(hào)進(jìn)行屏蔽。DQM信號(hào)和數(shù)據(jù)信號(hào)同時(shí)發(fā)出,接收方在DQS的上升與下降沿來(lái)判斷DQM的狀態(tài),如果DQM為高電平,那么之前從DQS中部選取的數(shù)據(jù)就被屏蔽了。
有人可能會(huì)覺(jué)得,DQM是輸入信號(hào),意味著DRAM芯片不能發(fā)出DQM信號(hào)給主控芯片作為屏蔽讀取數(shù)據(jù)的參考。其實(shí),該讀哪個(gè)數(shù)據(jù)也是由主控芯片決定的,所以DRAM芯片也無(wú)需參與主控芯片的工作,哪個(gè)數(shù)據(jù)是有用的就留給主控芯片自己去選擇。
好了,前面介紹了DQS的功能,那么我們?cè)跍y(cè)試時(shí)根據(jù)DQS和DQ的波形是如何區(qū)分?jǐn)?shù)據(jù)的讀寫(xiě)操作的?
在DDRx里面經(jīng)常會(huì)被一些縮寫(xiě)誤擾,如OCD、OCT和ODT,我想有同樣困擾的大有人在,現(xiàn)在筆者來(lái)介紹一下大家的這些困擾吧。
片外驅(qū)動(dòng)調(diào)校OCD(Off-Chip Driver)
OCD是在DDR-II開(kāi)始加入的新功能,而且這個(gè)功能是可選的,有的資料上面又叫離線驅(qū)動(dòng)調(diào)整。OCD的主要作用在于調(diào)整I/O接口端的電壓,來(lái)補(bǔ)償上拉與下拉電阻值,從而調(diào)整DQS與DQ之間的同步確保信號(hào)的完整與可靠性。調(diào)校期間,分別測(cè)試DQS高電平和DQ高電平,以及DQS低電平和DQ高電平的同步情況。如果不滿足要求,則通過(guò)設(shè)定突發(fā)長(zhǎng)度的地址線來(lái)傳送上拉/下拉電阻等級(jí)(加一檔或減一檔),直到測(cè)試合格才退出OCD操作,通過(guò)OCD操作來(lái)減少DQ、DQS的傾斜從而提高信號(hào)的完整性及控制電壓來(lái)提高信號(hào)品質(zhì)。具體調(diào)校如下圖五所示。
圖五 OCD
不過(guò),由于在一般情況下對(duì)應(yīng)用環(huán)境穩(wěn)定程度要求并不太高,只要存在差分DQS時(shí)就基本可以保證同步的準(zhǔn)確性,而且OCD 的調(diào)整對(duì)其他操作也有一定影響,因此OCD功能在普通臺(tái)式機(jī)上并沒(méi)有什么作用,其優(yōu)點(diǎn)主要體現(xiàn)在對(duì)數(shù)據(jù)完整性非常敏感的服務(wù)器等高端產(chǎn)品領(lǐng)域。
ODT(On-Die Termination,片內(nèi)終結(jié))
ODT也是DDR2相對(duì)于DDR1的關(guān)鍵技術(shù)突破,所謂的終結(jié)(端接),就是讓信號(hào)被電路的終端吸收掉,而不會(huì)在電路上形成反射,造成對(duì)后面信號(hào)的影響。顧名思義,ODT就是將端接電阻移植到了芯片內(nèi)部,主板上不再有端接電路。在進(jìn)入DDR時(shí)代,DDR內(nèi)存對(duì)工作環(huán)境提出更高的要求,如果先前發(fā)出的信號(hào)不能被電路終端完全吸收掉而在電路上形成反射現(xiàn)象,就會(huì)對(duì)后面信號(hào)的影響造成運(yùn)算出錯(cuò)。因此目前支持DDR主板都是通過(guò)采用終結(jié)電阻來(lái)解決這個(gè)問(wèn)題。由于每根數(shù)據(jù)線至少需要一個(gè)終結(jié)電阻,這意味著每塊DDR主板需要大量的終結(jié)電阻,這也無(wú)形中增加了主板的生產(chǎn)成本,而且由于不同的內(nèi)存模組對(duì)終結(jié)電阻的要求不可能完全一樣,也造成了所謂的“內(nèi)存兼容性問(wèn)題”。 而在DDR-II中加入了ODT功能,當(dāng)在DRAM模組工作時(shí)把終結(jié)電阻器關(guān)掉,而對(duì)于不工作的DRAM模組則進(jìn)行終結(jié)操作,起到減少信號(hào)反射的作用,如下圖六所示。
圖六 ODT端接示意圖
ODT的功能與禁止由主控芯片控制,在開(kāi)機(jī)進(jìn)行EMRS時(shí)進(jìn)行設(shè)置,ODT所終結(jié)的信號(hào)包括DQS、DQS#、DQ、DM等。這樣可以產(chǎn)生更干凈的信號(hào)品質(zhì),從而產(chǎn)生更高的內(nèi)存時(shí)鐘頻率速度。而將終結(jié)電阻設(shè)計(jì)在內(nèi)存芯片之上還可以簡(jiǎn)化主板的設(shè)計(jì),降低了主板的成本,而且終結(jié)電阻器可以和內(nèi)存顆粒的“特性”相符,從而減少內(nèi)存與主板的兼容問(wèn)題的出現(xiàn)。
重置(Reset)
重置是DDR3新增的一項(xiàng)重要功能,并為此專門(mén)準(zhǔn)備了一個(gè)引腳。這一引腳將使DDR3的初始化處理變得簡(jiǎn)單。當(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)靜。這樣一來(lái),該功能將使DDR3達(dá)到最節(jié)省電力的目的,新增的引腳如下圖七所示。
圖七 Reset及ZQ引腳
ZQ校準(zhǔn)
如上圖七所示,ZQ也是一個(gè)新增的引腳,在這個(gè)引腳上接有一個(gè)240歐姆的低公差參考電阻。這個(gè)引腳通過(guò)一個(gè)命令集,通過(guò)片上校準(zhǔn)引擎(ODCE,On-Die Calibration Engine)來(lái)自動(dòng)校驗(yàn)數(shù)據(jù)輸出驅(qū)動(dòng)器導(dǎo)通電阻與ODT的終結(jié)電阻值。當(dāng)系統(tǒng)發(fā)出這一指令之后,將用相應(yīng)的時(shí)鐘周期(在加電與初始化之后用512個(gè)時(shí)鐘周期,在退出自刷新操作后用256時(shí)鐘周期、在其他情況下用64個(gè)時(shí)鐘周期)對(duì)導(dǎo)通電阻和ODT電阻進(jìn)行重新校準(zhǔn)。
VREFCA & VREFDQ
對(duì)于內(nèi)存系統(tǒng)工作非常重要的參考電壓信號(hào)VREF,在DDR3系統(tǒng)中將VREF分為兩個(gè)信號(hào)。一個(gè)是為命令與地址信號(hào)服務(wù)的VREFCA,另一個(gè)是為數(shù)據(jù)總線服務(wù)的VREFDQ,它將有效的提高系統(tǒng)數(shù)據(jù)總線的信噪等級(jí),如下圖八所示。
圖八 VREFCA & VREFDQ
現(xiàn)在來(lái)說(shuō)說(shuō)DDR3和DDR4最關(guān)鍵的一些技術(shù),write leveling以及DBI功能。
Write leveling功能與Fly_by拓?fù)?/p>
Write leveling功能和Fly_by拓?fù)涿懿豢煞?。Fly_by拓?fù)渲饕獞?yīng)用于時(shí)鐘、地址、命令和控制信號(hào),該拓?fù)淇梢杂行У臏p少stub的數(shù)量和他們的長(zhǎng)度,但是卻會(huì)導(dǎo)致時(shí)鐘和Strobe信號(hào)在每個(gè)芯片上的飛行時(shí)間偏移,這使得控制器(FPGA或者CPU)很難保持tDQSS、tDSS 和tDSH這些參數(shù)滿足時(shí)序規(guī)格。因此write leveling應(yīng)運(yùn)而生,這也是為什么在DDR3里面使用fly_by結(jié)構(gòu)后數(shù)據(jù)組可以不用和時(shí)鐘信號(hào)去繞等長(zhǎng)的原因,數(shù)據(jù)信號(hào)組與組之間也不用去繞等長(zhǎng),而在DDR2里面數(shù)據(jù)組還是需要和時(shí)鐘有較寬松的等長(zhǎng)要求的。DDR3控制器調(diào)用Write leveling功能時(shí),需要DDR3 SDRAM顆粒的反饋來(lái)調(diào)整DQS與CK之間的相位關(guān)系,具體方式如下圖九所示。
圖九 Write leveling
Write leveling 是一個(gè)完全自動(dòng)的過(guò)程。控制器(CPU或FPGA)不停的發(fā)送不同時(shí)延的DQS 信號(hào),DDR3 SDRAM 顆粒在DQS-DQS#的上升沿采樣CK 的狀態(tài),并通過(guò)DQ 線反饋給DDR3 控制器。控制器端反復(fù)的調(diào)整DQS-DQS#的延時(shí),直到控制器端檢測(cè)到DQ 線上0 到1 的跳變(說(shuō)明tDQSS參數(shù)得到了滿足),控制器就鎖住此時(shí)的延時(shí)值,此時(shí)便完成了一個(gè)Write leveling過(guò)程;同時(shí)在Leveling 過(guò)程中,DQS-DQS#從控制器端輸出,所以在DDR3 SDRAM 側(cè)必須進(jìn)行端接;同理,DQ 線由DDR3 SDRAM顆粒側(cè)輸出,在控制器端必須進(jìn)行端接;
需要注意的是,并不是所有的DDR3控制器都支持write leveling功能,所以也意味著不能使用Fly_by拓?fù)浣Y(jié)構(gòu),通常這樣的主控芯片會(huì)有類似以下的描述:
DBI功能與POD電平
DBI的全稱是Data Bus Inversion數(shù)據(jù)總線反轉(zhuǎn)/倒置,它與POD電平密不可分,它們也是DDR4區(qū)別于DDR3的主要技術(shù)突破。
POD電平的全稱是Pseudo Open-Drain 偽漏極開(kāi)路,其與DDR3對(duì)比簡(jiǎn)單的示例電路如下圖十所示。
圖十 POD示意電路
從中可以看到,當(dāng)驅(qū)動(dòng)端的上拉電路導(dǎo)通,電路處于高電平時(shí)(也即傳輸?shù)氖?ldquo;1”),此時(shí)兩端電勢(shì)差均等,相當(dāng)于回路上沒(méi)有電流流過(guò),但數(shù)據(jù)“1”還是照樣被傳輸,這樣的設(shè)計(jì)減少了功率消耗。
正是由于POD電平的這一特性,DDR4設(shè)計(jì)了DBI功能。當(dāng)一個(gè)字節(jié)里的“0”比特位多于“1”時(shí),可以使能DBI,將整個(gè)字節(jié)的“0”和“1”反轉(zhuǎn),這樣“1”比“0”多,相比原(反轉(zhuǎn)前)傳輸信號(hào)更省功耗,如下表一所示。
表一 DBI示例
以上就是DDRx的一些主要的關(guān)鍵技術(shù)介紹,可以用如下表二所示來(lái)總結(jié)下DDRx的特性對(duì)比。
表二 DDRx SDRAM特性對(duì)比
更多有關(guān)DDR技術(shù)文章,歡迎訪問(wèn)與非網(wǎng)DDR專區(qū)