DDR(三)DDR工作时序与原理
DDR SDRAM 全稱為 Double Data Rate SDRAM,中文名為“雙倍數(shù)據(jù)流 SDRAM”。DDR SDRAM 在原有的 SDRAM的基礎(chǔ)上改進(jìn)而來。下圖是DDR和SDRAM的數(shù)據(jù)傳輸對比圖
圖上可以清楚的看到,DDR SDRAM可在一個時鐘周期內(nèi)傳送兩次數(shù)據(jù),上升沿傳一次,下降沿傳一次。
1.DDR的基本原理
先來看一張DDR讀操作時序圖
從中可以發(fā)現(xiàn)它多了兩個信號:CLK#與DQS,CLK#與正常 CLK 時鐘相位相反,形成差分時鐘信號。而數(shù)據(jù)的傳輸在 CLK 與 CLK#的交叉點進(jìn)行,可見在 CLK 的上升與下降沿(此時正好是 CLK#的上升沿)都有數(shù)據(jù)被觸發(fā),從而實現(xiàn)雙倍數(shù)據(jù)傳輸,也就是DDR。下面來看DDR的內(nèi)部結(jié)構(gòu)圖的SDRAM有什么不同。
這也是一顆 128Mbit 的內(nèi)存芯片,標(biāo)稱規(guī)格為 32×4bit,右邊紅框區(qū)域就是DDR不同的地方:首先就是內(nèi)部的L-Bank 規(guī)格。SDRAM 中L-Bank 存儲單元的容量與芯片位寬相同,但在DDR SDRAM?中并不是這樣,存儲單元的容量是芯片位寬的一倍,所以在此不能再套用講解 SDRAM時“芯片位寬=存儲單元容量”的公式了。也因此,真正的行、列地址數(shù)量也與同規(guī)格 SDRAM 不一樣了。?
以本芯片為例,在讀取時,L-Bank 在內(nèi)部時鐘信號的觸發(fā)下一次傳送 8bit 的數(shù)據(jù)給讀取鎖存器,再分成兩路 4bit 數(shù)據(jù)傳給復(fù)用器,由后者將它們合并為一路 4bit 數(shù)據(jù)流,然后由發(fā)送器在 DQS?的控制下在外部時鐘上升與下降沿分兩次傳輸 4bit 的數(shù)據(jù)給北橋的內(nèi)存控制器(在ARM和現(xiàn)在的CPU中,內(nèi)存控制器是集成在CPU中的,現(xiàn)在的PC機中北橋已無內(nèi)存控制器)。這樣,如果時鐘頻率為 100MHz,那么在 I/O 端口處,由于是上下沿觸發(fā),那么就是傳輸頻率就是 200MHz。
現(xiàn)在大家基本明白 DDR SDRAM 的工作原理了吧,這種內(nèi)部存儲單元容量(也可以稱為芯片內(nèi)部總線位寬)=2×芯片位寬(也可稱為芯片 I/O 總線位寬)的設(shè)計,就是所謂的兩位預(yù)取(2-bit?Prefetch)。??
?
2.DDR與SDRAM的異同
DDR SDRAM 與 SDRAM 一樣,在開機時也要進(jìn)行 MRS(ModeRegister Set,模式寄存器的設(shè)置),不過由于操作功能的增多,DDR SDRAM 在 MRS?之前還多了一 EMRS 階段(Extended Mode Register Set,擴展模式寄存器設(shè)置),這個擴展模式寄存器控制著 DLL 的有效/禁止、輸出驅(qū)動強度、QFC 有效/無效等。
?
3.差分時鐘
CK#的作用,并不能理解為第二個觸發(fā)時鐘,而是起到觸發(fā)時鐘校準(zhǔn)的作用。
由于數(shù)據(jù)是在 CK 的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩(wěn)定以確保數(shù)據(jù)的正確傳輸,這就要求 CK 的上下沿間距要有精確的控制。但因為溫度、電阻性能的改變等原因,CK 上下沿間距可能發(fā)生變化,此時與其反相的 CK#就起到糾正的作用(CK 上升快下降慢,CK#則是上升慢下降快)。而由于上下沿觸發(fā)的原因,也使 CL=1.5 和 2.5 成為可能,并容易實現(xiàn)。
4.數(shù)據(jù)選取脈沖(DQS)
DQS 是 DDR SDRAM 中的重要功能,它的功能主要用來在一個時鐘周期內(nèi)準(zhǔn)確的區(qū)分出每個傳輸周期,并便于接收方準(zhǔn)確接收數(shù)據(jù)。每一顆芯片都有一個 DQS 信號線,它是雙向的,在寫入時它用來傳送由內(nèi)存控制器發(fā)來的 DQS 信號,讀取時,則由DDR芯片生成 DQS 向內(nèi)存控制器發(fā)送。完全可以說,它就是數(shù)據(jù)的同步信號。?
?
在讀取時,DQS 與數(shù)據(jù)信號同時生成(也是在 CK 與 CK#的交叉點)。而 DDR 內(nèi)存中的 CL 也就是從 CAS 發(fā)出到 DQS 生成的間隔,數(shù)據(jù)真正出現(xiàn)在數(shù)據(jù) I/O 總線上相對于 DQS 觸發(fā)的時間間隔被稱為tAC。實際上,DQS 生成時,芯片內(nèi)部的預(yù)取已經(jīng)完畢了,tAC 是指上文結(jié)構(gòu)圖中灰色部分的數(shù)據(jù)輸出時間,由于預(yù)取的原因,實際的數(shù)據(jù)傳出可能會提前于 DQS 發(fā)生(數(shù)據(jù)提前于 DQS 傳出)。
DQS 在讀取時與數(shù)據(jù)同步傳輸,那么接收時也是以 DQS 的上下沿為準(zhǔn)嗎?不,如果以 DQS 的上下沿區(qū)分?jǐn)?shù)據(jù)周期的危險很大。由于芯片有預(yù)取的操作,所以輸出時的同步很難控制,只能限制在一定的時間范圍內(nèi),數(shù)據(jù)在各 I/O 端口的出現(xiàn)時間可能有快有慢,會與 DQS 有一定的間隔,這也就是為什么要有一個 tAC 規(guī)定的原因(DDR中的tAC是在DQS觸發(fā)和數(shù)據(jù)真正出現(xiàn)在I/O總線上的間隔時間)。而在接收方,一切必須保證同步接收,不能有 tAC 之類的偏差。這樣在寫入時,芯片不再自己生成 DQS,而以發(fā)送方傳來的 DQS 為基準(zhǔn),并相應(yīng)延后一定的時間,在 DQS 的中部為數(shù)據(jù)周期的選取分割點(在讀取時分割點就是上下沿),從這里分隔開兩個傳輸周期。這樣做的好處是,由于各數(shù)據(jù)信號都會有一個邏輯電平保持周期,即使發(fā)送時不同步,在 DQS 上下沿時都處于保持周期中,此時數(shù)據(jù)接收觸發(fā)的準(zhǔn)確性無疑是最高的。??
在寫入時,以 DQS 的高/低電平期中部為數(shù)據(jù)周期分割點,而不是上/下沿,但數(shù)據(jù)的接收觸發(fā)仍為 DQS 的上/下沿。
?
5.寫入延遲?
在上面的 DQS 寫入時序圖中,可以發(fā)現(xiàn)寫入延遲已經(jīng)不是0了,在發(fā)出寫入命令后,DQS與寫入數(shù)據(jù)要等一段時間才會送達(dá)。這個周期被稱為?DQS 相對于寫入命令的延遲時間(tDQSS, WRITE?Command to the first corresponding rising edge of DQS)。?
? ? 為什么要有這樣的延遲設(shè)計呢?原因也在于同步,畢竟一個時鐘周期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準(zhǔn)備才行。tDQSS?是 DDR 內(nèi)存寫入操作的一個重要參數(shù),太短的話恐怕接受有誤,太長則會造成總線空閑。tDQSS 最短不能小于 0.75 個時鐘周期,最長不能超過 1.25?個時鐘周期。
? ? 正常情況下,tDQSS?是一個時鐘周期,但寫入時接受方的時鐘只用來控制命令信號的同步,而數(shù)據(jù)的接受則完全依靠 DQS 進(jìn)行同步,所以 DQS 與時鐘不同步也無所謂。不過,tDQSS產(chǎn)生了一個不利影響— — 讀后寫操作延遲的增加,如果 CL=2.5,還要在 tDQSS 基礎(chǔ)上加入半個時鐘周期,因為命令都要在 CK 的上升沿發(fā)出。下圖中,當(dāng) CL=2.5 時,讀后寫的延遲將為 tDQSS+0.5 個時鐘周期(圖中 BL=2)。?
另外,DDR 內(nèi)存的數(shù)據(jù)真正寫入由于要經(jīng)過更多步驟的處理,所以寫回時間(tWR)也明顯延長,一般在3個時鐘周期左右,而在 DDR-Ⅱ規(guī)范中更是將 tWR 列為模式寄存器的一項,可見它的重要性。?
6.突發(fā)長度
在 DDR SDRAM 中,突發(fā)長度只有 2、4、8 三種選擇,沒有了隨機存取的操作(突發(fā)長度為 1)和全頁式突發(fā)。這是為什么呢?因為 L-Bank一次就存取兩倍于芯片位寬的數(shù)據(jù),所以芯片至少也要進(jìn)行兩次傳輸才可以,否則內(nèi)部多出來的數(shù)據(jù)怎么處理?但是,突發(fā)長度的定義也與 SDRAM 的不一樣了,它不再指所連續(xù)尋址的存儲單元數(shù)量,而是指連續(xù)的傳輸周期數(shù),每次是一個芯片位寬的數(shù)據(jù)。
7.延遲鎖定回路(DLL)?
DDR SDRAM 對時鐘的精確性有著很高的要求,而 DDR SDRAM 有兩個時鐘,一個是外部的總線時鐘,一個是內(nèi)部的工作時鐘,在理論上 DDR SDRAM 這兩個時鐘應(yīng)該是同步的,但由于種種原因,如溫度、電壓波動而產(chǎn)生延遲使兩者很難同步,更何況時鐘頻率本身也有不穩(wěn)定的情況(SDRAM 也有內(nèi)部時鐘,不過因為它的工作/傳輸頻率較低,所以內(nèi)外同步問題并不突出)。
DDR SDRAM 的 tAC 就是因為內(nèi)部時鐘與外部時鐘有偏差而引起的,它很可能造成因數(shù)據(jù)不同步而產(chǎn)生錯誤的惡果。實際上,不同步就是一種正/負(fù)延遲,如果延遲不可避免,那么若是設(shè)定一個延遲值,如一個時鐘周期,那么內(nèi)外時鐘的上升與下降沿還是同步的。鑒于外部時鐘周期也不會絕對統(tǒng)一,所以需要根據(jù)外部時鐘動態(tài)修正內(nèi)部時鐘的延遲來實現(xiàn)與外部時鐘的同步,這就是 DLL 的任務(wù)。
DLL 不同于主板上的 PLL,它不涉及頻率與電壓轉(zhuǎn)換,而是生成一個延遲量給內(nèi)部時鐘。目前 DLL 有兩種實現(xiàn)方法,一個是時鐘頻率測量法(CFM,Clock Frequency Measurement),一個是時鐘比較法(CC,Clock Comparator)。
CFM?是測量外部時鐘的頻率周期,然后以此周期為延遲值控制內(nèi)部時鐘,這樣內(nèi)外時鐘正好就相差了一個時鐘周期,從而實現(xiàn)同步。DLL 就這樣反復(fù)測量反復(fù)控制延遲值,使內(nèi)部時鐘與外部時鐘保持同步。
CC的方法則是比較內(nèi)外部時鐘的長短,如果內(nèi)部時鐘周期短了,就將所少的延遲加到下一個內(nèi)部時鐘周期里,然后再與外部時鐘做比較,若是內(nèi)部時鐘周期長了,就將多出的延遲從下一個內(nèi)部時鐘中刨除,如此往復(fù),最終使內(nèi)外時鐘同步。
CFM 式 DLL 工作示意圖?
CC 式 DLL 工作示意圖??
CFM 與 CC 各有優(yōu)缺點,CFM 的校正速度快,僅用兩個時鐘周期,但容易受到噪音干擾,并且如果測量失誤,則內(nèi)部的延遲就永遠(yuǎn)錯下去了。CC 的優(yōu)點則是更穩(wěn)定可靠,如果比較失敗,延遲受影響的只是一個數(shù)據(jù)(而且不會太嚴(yán)重),不會涉及到后面的延遲修正,但它的修正時間要比 CFM 長。DLL 功能在 DDR SDRAM 中可以被禁止,但僅限于除錯與評估操作,正常工作狀態(tài)是自動有效的。?
總結(jié)
以上是生活随笔為你收集整理的DDR(三)DDR工作时序与原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: joekoe
- 下一篇: SQLZOO练习题(1)