1. 程式人生 > >DDR工作原理

DDR工作原理

DDR SDRAM全稱為Double Data Rate SDRAM,中文名為“雙倍資料流SDRAM”。DDR SDRAM在原有的SDRAM的基礎上改進而來。也正因為如此,DDR能夠憑藉著轉產成本優勢來打敗昔日的對手RDRAM,成為當今的主流。本文只著重講講DDR的原理和DDR SDRAM相對於傳統SDRAM(又稱SDR SDRAM)的不同。

 

DDR的核心頻率、時鐘頻率和資料傳輸頻率:

核心頻率就是記憶體的工作頻率;DDR1記憶體的核心頻率是和時鐘頻率相同的,到了DDR2和DDR3時才有了時鐘頻率的概念,就是將核心頻率通過倍頻技術得到的一個頻率。資料傳輸頻率就是傳輸資料的頻率。DDR1預讀取是2位,DDR2預讀取是4位,DDR

3預讀取是8位。

DDR1在傳輸資料的時候在時鐘脈衝的上升沿和下降沿都傳輸一次,所以資料傳輸頻率就是核心頻率的2倍。DDR2記憶體將核心頻率倍頻2倍所以時鐘頻率就是核心頻率的2倍了,同樣還是上升邊和下降邊各傳輸一次資料,所以資料傳輸頻率就是核心頻率的4倍。

DDR3記憶體的時鐘頻率是核心頻率的4倍,所以資料傳輸頻率就是核心頻率的8倍了。

1

 

一、DDR的基本原理

有很多文章都在探討DDR的原理,但似乎也不得要領,甚至還帶出一些錯誤的觀點。首先我們看看一張DDR正規的時序圖。

2

從中可以發現它多了兩個訊號: CLK#與DQS,CLK#與正常CLK時鐘相位相反,形成差分時鐘訊號。而資料的傳輸在CLK與CLK#的交叉點進行,可見在CLK的上升與下降沿(此時正好是CLK#的上升沿)都有資料被觸發,從而實現DDR。在此,我們可以說通過差分訊號達到了DDR的目的,甚至講CLK#幫助了第二個資料的觸發,但這只是對錶面現象的簡單描述,從嚴格的定義上講並不能這麼說。之所以能實現DDR,還要從其內部的改進說起。

3

DDR記憶體晶片的內部結構圖

這是一顆128Mbit的記憶體晶片,從圖中可以看出來,白色區域內與SDRAM的結構基本相同,但請注意灰色區域,這是與SDRAM的不同之處。首先就是內部的L-Bank規格。SDRAM中L-Bank 儲存單元的容量與晶片位寬相同,但在DDR SDRAM中並不是這樣,儲存單元的容量是晶片位寬的一倍,所以在此不能再套用講解SDRAM時 “晶片位寬=儲存單元容量” 的公式了。也因此,真正的行、列地址數量也與同規格SDRAM不一樣了。

以本晶片為例,在讀取時,L-Bank在內部時鐘訊號的觸發下一次傳送8bit的資料給讀取鎖存器,再分成兩路4bit資料傳給複用器,由後者將它們合併為一路4bit資料流,然後由傳送器在DQS的控制下在外部時鐘上升與下降沿分兩次傳輸4bit的資料給北橋。這樣,如果時鐘頻率為100MHz,那麼在I/O埠處,由於是上下沿觸發,那麼就是傳輸頻率就是200MHz。

現在大家基本明白DDR SDRAM的工作原理了吧,這種內部儲存單元容量(也可以稱為晶片內部匯流排位寬)=2×晶片位寬(也可稱為晶片I/O匯流排位寬)的設計,就是所謂的兩位預取(2-bit Prefetch),有的公司則貼切的稱之為2-n Prefetch(n代表晶片位寬)。

二、DDR SDRAM與SDRAM的不同

DDR SDRAM與SDRAM的不同主要體現在以下幾個方面。

DDR SDRAM與SDRAM的主要不同對比表

4

5

 

DDR SDRAM與SDRAM一樣,在開機時也要進行MRS,不過由於操作功能的增多,DDR SDRAM在MRS之前還多了一EMRS階段(Extended Mode Register Set,擴充套件模式暫存器設定),這個擴充套件模式暫存器控制著DLL的有效/禁止、輸出驅動強度、QFC 有效/無效等。

6

由於EMRS與MRS的操作方法與SDRAM的MRS大同小異,在此就不再列出具體的模式表了,有興趣的話可檢視相關的DDR記憶體資料。下面我們就著重說說DDR SDRAM的新設計與新功能。

7

1、 差分時鐘

差分時鐘(參見上文“DDR SDRAM讀操作時序圖”)是DDR的一個必要設計,但CK#的作用,並不能理解為第二個觸發時鐘(你可以在講述DDR原理時簡單地這麼比喻),而是起到觸發時鐘校準的作用。由於資料是在CK的上下沿觸發,造成傳輸週期縮短了一半,因此必須要保證傳輸週期的穩定以確保資料的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因為溫度、電阻效能的改變等原因,CK上下沿間距可能發生變化,此時與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK# 則是上升慢下降快)。而由於上下沿觸發的原因,也使CL=1.5和2.5成為可能,並容易實現。與CK反相的CK#保證了觸發時機的準確性

8

2、 資料選取脈衝(DQS)

總結DQS:它是雙向訊號;讀記憶體時,由記憶體產生,DQS的沿和資料的沿對齊;寫入記憶體時,由外部產生,DQS的中間對應資料的沿,即此時DQS的沿對應資料最穩定的中間時刻。

DQS是DDR SDRAM中的重要功能,它的功能主要用來在一個時鐘週期內準確的區分出每個傳輸週期,並便於接收方準確接收資料。每一顆晶片都有一個DQS訊號線,它是雙向的,在寫入時它用來傳送由北橋發來的DQS訊號,讀取時,則由晶片生成DQS向北橋傳送。完全可以說,它就是資料的同步訊號。

在讀取時,DQS與資料訊號同時生成(也是在CK與 CK#的交叉點)。而DDR記憶體中的CL也就是從CAS發出到DQS生成的間隔,資料真正出現在資料I/O總線上相對於DQS觸發的時間間隔被稱為 tAC。注意,這與SDRAM中的tAC的不同。實際上,DQS生成時,晶片內部的預取已經完畢了,tAC是指上文結構圖中灰色部分的資料輸出時間,由於預取的原因,實際的資料傳出可能會提前於DQS發生(資料提前於DQS傳出)。由於是並行傳輸,DDR記憶體對tAC也有一定的要求,對於 DDR266,tAC的允許範圍是±0.75ns,對於DDR333,則是±0.7ns,有關它們的時序圖示見前文,其中CL裡包含了一段DQS的匯入期。

前文已經說了DQS是為了保證接收方的選擇資料, DQS在讀取時與資料同步傳輸,那麼接收時也是以DQS的上下沿為準嗎?不,如果以DQS的上下沿區分資料週期的危險很大。由於晶片有預取的操作,所以輸出時的同步很難控制,只能限制在一定的時間範圍內,資料在各I/O埠的出現時間可能有快有慢,會與DQS有一定的間隔,這也就是為什麼要有一個tAC規定的原因。而在接收方,一切必須保證同步接收,不能有tAC之類的偏差。這樣在寫入時,晶片不再自己生成DQS,而以傳送方傳來的DQS為基準,並相應延後一定的時間,在DQS的中部為資料週期的選取分割點(在讀取時分割點就是上下沿),從這裡分隔開兩個傳輸週期。這樣做的好處是,由於各資料訊號都會有一個邏輯電平保持週期,即使傳送時不同步,在DQS上下沿時都處於保持週期中,此時資料接收觸發的準確性無疑是最高的。在寫入時,以DQS的高/低電平期中部為資料週期分割點,而不是上/下沿,但資料的接收觸發仍為DQS的上/下沿。

9

3、 寫入延遲

在上面的DQS寫入時序圖中,可以發現寫入延遲已經不是0了,在發出寫入命令後,DQS與寫入資料要等一段時間才會送達。這個週期被稱為DQS相對於寫入命令的延遲時間(tDQSS, WRITE Command to the first corresponding rising edge of DQS),對於這個時間大家應該很好理解了。

為什麼要有這樣的延遲設計呢?原因也在於同步,畢竟一個時鐘週期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準備才行。tDQSS是DDR記憶體寫入操作的一個重要引數,太短的話恐怕接受有誤,太長則會造成匯流排空閒。tDQSS最短不能小於0.75個時鐘週期,最長不能超過1.25個時鐘週期。有人可能會說,如果這樣,DQS不就與晶片內的時鐘不同步了嗎?對,正常情況下,tDQSS是一個時鐘週期,但寫入時接受方的時鐘只用來控制命令訊號的同步,而資料的接受則完全依靠DQS進行同步,所以 DQS與時鐘不同步也無所謂。不過,tDQSS產生了一個不利影響——讀後寫操作延遲的增加,如果CL=2.5,還要在tDQSS基礎上加入半個時鐘週期,因為命令都要在CK的上升沿發出。

10

當CL=2.5時,讀後寫的延遲將為tDQSS+0.5個時鐘週期(圖中BL=2)

另外,DDR記憶體的資料真正寫入由於要經過更多步驟的處理,所以寫回時間(tWR)也明顯延長,一般在3個時鐘週期左右,而在DDR-Ⅱ規範中更是將tWR列為模式暫存器的一項,可見它的重要性。

11

4、 突發長度與寫入掩碼

在DDR SDRAM中,突發長度只有2、4、8三種選擇,沒有了隨機存取的操作(突發長度為1)和全頁式突發。這是為什麼呢?因為L-Bank一次就存取兩倍於晶片位寬的資料,所以晶片至少也要進行兩次傳輸才可以,否則內部多出來的資料怎麼處理?而全頁式突發事實證明在PC記憶體中是很難用得上的,所以被取消也不希奇。

但是,突發長度的定義也與SDRAM的不一樣了(見本章節最前那幅DDR簡示圖),它不再指所連續定址的儲存單元數量,而是指連續的傳輸週期數,每次是一個晶片位寬的資料。對於突發寫入,如果其中有不想存入的資料,仍可以運用DM訊號進行遮蔽。DM訊號和資料訊號同時發出,接收方在DQS的上升與下降沿來判斷DM的狀態,如果DM為高電平,那麼之前從DQS 中部選取的資料就被遮蔽了。有人可能會覺得,DM是輸入訊號,意味著晶片不能發出DM訊號給北橋作為遮蔽讀取資料的參考。其實,該讀哪個資料也是由北橋晶片決定的,所以晶片也無需參與北橋的工作,哪個資料是有用的就留給北橋自己去選吧。

5、 延遲鎖定迴路(DLL)

DDR SDRAM對時鐘的精確性有著很高的要求,而DDR SDRAM有兩個時鐘,一個是外部的匯流排時鐘,一個是內部的工作時鐘,在理論上DDR SDRAM這兩個時鐘應該是同步的,但由於種種原因,如溫度、電壓波動而產生延遲使兩者很難同步,更何況時鐘頻率本身也有不穩定的情況(SDRAM也內部時鐘,不過因為它的工作/傳輸頻率較低,所以內外同步問題並不突出)。DDR SDRAM的tAC就是因為內部時鐘與外部時鐘有偏差而引起的,它很可能造成因資料不同步而產生錯誤的惡果。實際上,不同步就是一種正/負延遲,如果延遲不可避免,那麼若是設定一個延遲值,如一個時鐘週期,那麼內外時鐘的上升與下降沿還是同步的。鑑於外部時鐘週期也不會絕對統一,所以需要根據外部時鐘動態修正內部時鐘的延遲來實現與外部時鐘的同步,這就是DLL的任務。

DLL不同於主機板上的PLL,它不涉及頻率與電壓轉換,而是生成一個延遲量給內部時鐘。目前DLL有兩種實現方法,一個是時鐘頻率測量法(CFM,Clock Frequency Measurement),一個是時鐘比較法(CC,Clock Comparator)。

CFM是測量外部時鐘的頻率週期,然後以此週期為延遲值控制內部時鐘,這樣內外時鐘正好就相差了一個時鐘週期,從而實現同步。DLL就這樣反覆測量反覆控制延遲值,使內部時鐘與外部時鐘保持同步。

12

CFM式DLL工作示意圖

CC的方法則是比較內外部時鐘的長短,如果內部時鐘週期短了,就將所少的延遲加到下一個內部時鐘週期裡,然後再與外部時鐘做比較,若是內部時鐘週期長了,就將多出的延遲從下一個內部時鐘中刨除,如此往復,最終使內外時鐘同步。

13

CC式DLL工作示意圖

CFM與CC各有優缺點,CFM的校正速度快,僅用兩個時鐘週期,但容易受到噪音干擾,並且如果測量失誤,則內部的延遲就永遠錯下去了。CC的優點則是更穩定可靠,如果比較失敗,延遲受影響的只是一個數據(而且不會太嚴重),不會涉及到後面的延遲修正,但它的修正時間要比CFM長。DLL功能在DDR SDRAM中可以被禁止,但僅限於除錯與評估操作,正常工作狀態是自動有效的。

14

轉自一些論壇:

 

1.並行匹配主要是考慮到負載過重,屬於訊號完整性的問題;如果介面下就1~2片DDR可以考慮串阻匹配的

2.由於DDR2的電平HSTL電平的,也就是時鐘是偽差分的方式,沒必要按3W做,等長是必要的,最好做VTT

 

理論上3W,指兩線中心間距=3*線到地平面距離

一般的3W原則,採用的是,兩線中心間距=3*線寬

根據JEDEC[1]建議DDR2的最高工作電壓是1.9V,並且建議對於要求記憶體穩定使用的環境絕不能超過此值(例如伺服器或其他任務關鍵裝置)。此外,JEDEC規定記憶體模組必須在受到永久損害前承受2.3V的電壓。

轉自https://www.cnblogs.com/shengansong/archive/2012/09/01/2666213.html