【接口时序】8、DDR3驱动原理与FPGA实现(一、DDR的基本原理)
一、 軟件平臺與硬件平臺
軟件平臺:
1、操作系統:Windows-8.1
2、開發套件:無
3、仿真工具:無
硬件平臺:
1、 FPGA型號:無
2、 DDR3型號:無
二、 存儲器的分類
存儲器一般來說可以分為內部存儲器(內存),外部存儲器(外存),緩沖存儲器(緩存)以及閃存這幾個大類。內存也稱為主存儲器,位于系統主機板上,可以同CPU直接進行信息交換。其主要特點是:運行速度快,容量小。外存也稱為輔助存儲器,不能與CPU之間直接進行信息交換。其主要特點是:存取速度相對內存要慢得多,存儲容量大。內存與外存本質區別是,一個是內部運行提供緩存和處理的功能,也可以理解為協同處理的通道;而外存主要是針對儲存文件、圖片、視頻、文字等信息的載體,也可以理解為儲存空間。緩存就是數據交換的緩沖區(稱作Cache),當某一硬件要讀取數據時,會首先從緩存中查找需要的數據,如果找到了則直接執行,找不到的話則從內存中找。由于緩存的運行速度比內存快得多,故緩存的作用就是幫助硬件更快地運行。閃存(Flash Memory)是一種長壽命的非易失性(在斷電情況下仍能保持所存儲的數據信息)的存儲器,數據刪除不是以單個的字節為單位而是以固定的區塊為單位(注意:NOR Flash 為字節存儲。),區塊大小一般為256KB到20MB。閃存是電子可擦除只讀存儲器(EEPROM)的變種,閃存與EEPROM不同的是,EEPROM能在字節水平上進行刪除和重寫而不是整個芯片擦寫,而閃存的大部分芯片需要塊擦除。由于其斷電時仍能保存數據,閃存通常被用來保存設置信息,如在電腦的BIOS(基本程序)、PDA(個人數字助理)、數碼相機中保存資料等。存儲器的詳細分類如下圖所示:
?
?
其中內存有多種不同的形式分別如下:
RAM(Random Access Memory) 隨機存儲器。存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關的存儲器。這種存儲器在斷電時將丟失其存儲內容,故主要用于存儲短時間使用的程序。 按照存儲信息的不同,隨機存儲器又分為靜態隨機存儲器(Static RAM,SRAM)和動態隨機存儲器(Dynamic RAM,DRAM)。靜態隨機存儲器SRAM(Static RAM)不需要刷新電路即能保存它內部存儲的數據。除此以外,還有一種隨機存儲器SSRAM(Synchronous SRAM)即同步靜態隨機存取存儲器。同步是指Memory工作需要同步時鐘,內部的命令的發送與數據的傳輸都以它為基準;隨機是指數據不是線性依次存儲,而是由指定地址進行數據讀寫。對于SSRAM的所有訪問都在時鐘的上升/下降沿啟動。地址、數據輸入和其它控制信號均于時鐘信號相關。這一點與異步SRAM不同,異步SRAM的訪問獨立于時鐘,數據輸入和輸出都由地址的變化控制。 動態隨機存儲器DRAM(Dynamic RAM)則每隔一段時間,要刷新充電一次,否則內部的數據即會消失。綜上所述,SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,且功耗較大。所以在主板上SRAM存儲器要占用一部分面積。SRAM的速率高、性能好,它常應用于CPU與主存之間的高速緩存以及CPU內部的L1/L2或外部的L2高速緩存。
有一種動態隨機存儲器SDRAM(Synchronous DRAM)即同步動態隨機存取存儲器。同步是指 Memory工作需要同步時鐘,內部的命令的發送與數據的傳輸都以它為基準;動態是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫,DDR,DDR2以及DDR3就屬于SDRAM的一類。SDRAM從發展到現在已經經歷了五代,分別是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM,第五代,DDR4 SDRAM。第一代SDRAM采用單端(Single-Ended)時鐘信號,第二代、第三代與第四代由于工作頻率比較快,所以采用可降低干擾的差分時鐘信號作為同步時鐘。SDR SDRAM的時鐘頻率就是數據存儲的頻率,第一代內存用時鐘頻率命名,如PC100,PC133則表明時鐘信號為100MHz或133MHz,數據讀寫速率也為100MHz或133MHz。之后的第二,三,四代DDR(Double Data Rate)內存則采用數據讀寫速率作為命名標準,并且在前面加上一個數字表示其DDR代數的符號,PC= DDR,PC2=DDR2,PC3=DDR3。如PC-2700是DDR-333,其工作頻率是333/2=166MHz,2700表示帶寬為2.7GB/s。DDR的讀寫頻率從DDR-200到DDR-400,DDR2從DDR2-400到DDR2-800,DDR3從DDR3-800到DDR3-1600。DDR各種規格與傳輸標準如下表所示:
| DDR規格 | 傳輸標準 | 核心頻率 | 傳輸速率 | 數據傳輸帶寬 |
| DDR200 | PC1600 | 100MHz | 200MT/s | 1600MB/s |
| DDR266 | PC2100 | 133MHz | 266MT/s | 2100MB/s |
| DDR333 | PC2700 | 166MHz | 333MT/s | 2700MB/s |
| DDR400 | PC3200 | 200MHz | 400MT/s | 3200MB/s |
| DDR433 | PC3500 | 216MHz | 433MT/s | 3500MB/s |
| DDR533 | PC4300 | 266MHz | 533MT/s | 4300MB/s |
傳輸速率的單位是MT/s(Mega Transfer Per Second),即每秒傳輸的百萬次數,由于DDR一次傳輸64-bit,相當于8個字節(Byte),所以數據傳輸帶寬為傳輸速率乘以8。上表中的核心頻率指的是DDR芯片內部進行邏輯處理的時鐘頻率;傳輸速率的頻率叫做傳輸頻率或者等效頻率,為了方便起見,后文同一稱為等效頻率,等效頻率在數值上與傳輸速率相等,最后還有一個時鐘頻率是DDR芯片時鐘引腳的頻率,它稱作DDR的工作頻率。這三個頻率的關系如下:
工作頻率=等效頻率/2。因為DDR是利用時鐘的上升沿與下降沿均傳輸數據,所以DDR芯片的工作頻率(時鐘引腳的頻率)為等效頻率(傳輸頻率)的一半
核心頻率=等效頻率/DDR的預取數。對于DDR來說,預取數為2;對于DDR2來說,預取數為4;對于DDR3來說,預取數為8。
標準的DDR SDRAM分為DDR 200,DDR 266,DDR 333以及DDR 400,其標準工作頻率分別100MHz,133MHz,166MHz和200MHz,對應的內存傳輸帶寬分別為1.6GB/s,2.12GB/s,2.66GB/s和3.2GB/s,非標準的(某些廠家生產的超頻內存)還有DDR 433,DDR 500等等。值得特別注意的是,初學者常被DDR 266,PC 2100等字眼搞混淆,在這里要說明一下,DDR 266與PC 2100其實就是一回事,只是表述方法不同罷了。DDR 266是指的該內存的傳輸速率(實際工作頻率為133MHz,由于一個周期的上升沿與下降沿均可以用來傳輸數據,所以等效于266MHz 的SDRAM),而PC 2100則是指其內存傳輸帶寬(2100MB/s)。同理,PC 1600就是DDR 200,PC 2700就是DDR-333,PC 3200就是DDR 400。
DDR2以及DDR3可以看作是DDR技術標準的一種升級和擴展:DDR的核心頻率與工作頻率(這里的時鐘頻率指的是DDR芯片的時鐘管腳)相等,但數據頻率為時鐘頻率的兩倍,也就是說在一個時鐘周期內必須傳輸兩次數據。而DDR2采用“4 bit Prefetch(4位預取)”機制,核心頻率為傳輸頻率的1/4,這樣即使核心頻率還為200MHz,DDR2內存的數據傳輸頻率也能達到800MHz,也就是所謂的DDR2-800。DDR3采用“8 bit Prefetch(8位預取)”機制,這樣DRAM的核心頻率只有傳輸頻率的1/8,所以DDR3-800的核心頻率只有100MHz,如果核心頻率為200MHz,DDR3內存的數據頻率能達到1600MHz,數據傳輸頻率為DDR2的兩倍。
三、 DDR3介紹
DDR3 SDRAM(Double-Data-Rate ??Synchronous Dynamic Random Access Memory)是應用在計算機及電子產品領域的一種高帶寬并行數據總線,它屬于上文提到的SDRAM類。DDR3 在 DDR2的基礎上繼承發展而來,其數據傳輸速度為 DDR2 的兩倍。同時,DDR3 標準可以使單顆內存芯片的容量更為擴大,達到 512Mb 至 8Gb,從而使采用 DDR3 芯片的內存條容量擴大到最高 16GB。此外,DDR3 的工作電壓降低為 1.5V,比采用 1.8V 的 DDR2省電 30%左右。說到底,這些指標上的提升在技術上最大的支撐來自于芯片制造工藝的提升,90nm 甚至更先進的 45nm 制造工藝使得同樣功能的 MOS 管可以制造的更小,從而帶來更快、更密、更省電的技術提升。DDR3 現今是并行 SDRAM 家族中速度最快的成熟標準,JEDEC 標準規定的 DDR3 最高速度可達 1600MT/s(注,1MT/s 即為每秒鐘一百萬次傳輸)。 不僅如此, 內存廠商還可以生產速度高于 JEDEC 標準的 DDR3 產品,如速度為2000MT/s 的 DDR3 產品,甚至有報道稱其最高速度可高達 2500MT/s。
DDR3相較于DDR2而言主要有如下幾個特點:
1.突發長度(Burst Length,BL):由于DDR3的預取為8bit,所以突發傳輸周期(Burst Length,BL)也固定為8,而對于DDR2和早期的DDR架構系統,BL=4也是常用的,DDR3為此增加了一個4bit Burst Chop(突發突變)模式,即由一個BL=4的讀取操作加上一個BL=4的寫入操作來合成一個BL=8的數據突發傳輸,屆時可通過A12地址線來控制這一突發模式。而且需要指出的是,任何突發中斷操作都將在DDR3內存中予以禁止,且不予支持,取而代之的是更靈活的突發傳輸控制(如4bit順序突發)。
2.尋址時序(Timing):就像DDR2從DDR轉變而來后延遲周期數增加一樣,DDR3的CL周期也將比DDR2有所提高。DDR2的CL范圍一般在2~5之間,而DDR3則在5~11之間,且附加延遲(AL)的設計也有所變化。DDR2時AL的范圍是0~4,而DDR3時AL有三種選項,分別是0、CL-1和CL-2。另外,DDR3還新增加了一個時序參數-寫入延遲(CWD),這一參數將根據具體的工作頻率而定。
3.DDR3新增的重置(Reset)功能:重置是DDR3新增的一項重要功能,并為此專門準備了一個引腳。DRAM業界很早以前就要求增加這一功能,如今終于在DDR3上實現了。這一引腳將使DDR3的初始化處理變得簡單。當Reset命令有效時,DDR3內存將停止所有操作,并切換至最少量活動狀態,以節約電力。 在Reset期間,DDR3內存將關閉內在的大部分功能,所有數據接收與發送器都將關閉,所有內部的程序裝置將復位,DLL(延遲鎖相環路)與時鐘電路將停止工作,而且不理睬數據總線上的任何動靜。這樣一來,將使DDR3達到最節省電力的目的。
4.DDR3新增ZQ校準功能:ZQ也是一個新增的腳,在這個引腳上接有一個240歐姆的低公差參考電阻。這個引腳通過一個命令集,通過片上校準引擎(On-Die Calibration Engine,ODCE)來自動校驗數據輸出驅動器導通電阻與ODT的終結電阻值。當系統發出這一指令后,將用相應的時鐘周期(在加電與初始化之后用512個時鐘周期,在退出自刷新操作后用256個時鐘周期、在其他情況下用64個時鐘周期)對導通電阻和ODT電阻進行重新校準。
5.參考電壓分成兩個:在DDR3系統中,對于內存系統工作非常重要的參考電壓信號VREF將分為兩個信號,即為命令與地址信號服務的VREFCA和為數據總線服務的VREFDQ,這將有效地提高系統數據總線的信噪等級。
6.點對點連接(Point-to-Point,P2P):這是為了提高系統性能而進行的重要改動,也是DDR3與DDR2的一個關鍵區別。在DDR3系統中,一個內存控制器只與一個內存通道打交道,而且這個內存通道只能有一個插槽,因此,內存控制器與DDR3內存模組之間是點對點(P2P)的關系(單物理Bank的模組),或者是點對雙點(Point-to-two-Point,P22P)的關系(雙物理Bank的模組),從而大大地減輕了地址/命令/控制與數據總線的負載。而在內存模組方面,與DDR2的類別相類似,也有標準DIMM(臺式PC)、SO-DIMM/Micro-DIMM(筆記本電腦)、FB-DIMM2(服務器)之分,其中第二代FB-DIMM將采用規格更高的AMB2(高級內存緩沖器)。 面向64位構架的DDR3顯然在頻率和速度上擁有更多的優勢,此外,由于DDR3所采用的根據溫度自動自刷新、局部自刷新等其它一些功能,在功耗方面DDR3也要出色得多,因此,它可能首先受到移動設備的歡迎,就像最先迎接DDR2內存的不是臺式機而是服務器一樣。在CPU外頻提升最迅速的PC臺式機領域,DDR3未來也是一片光明。Intel所推出的新芯片-熊湖(Bear Lake),其將支持DDR3規格,而AMD也預計同時在K9平臺上支持DDR2及DDR3兩種規格。
7.邏輯Bank數量:DDR2 SDRAM中有4Bank和8Bank的設計,目的就是為了應對未來大容量芯片的需求。而DDR3很可能將從2Gb容量起步,因此起始的邏輯Bank就是8個,另外還為未來的16個邏輯Bank做好了準備。
8.封裝(Packages):DDR3由于新增了一些功能,所以在引腳方面會有所增加,8bit芯片采用78球FBGA封裝,16bit芯片采用96球FBGA封裝,而DDR2則有60/68/84球FBGA封裝三種規格。并且DDR3必須是綠色封裝,不能含有任何有害物質。
9.降低功耗:DDR3內存在達到高帶寬的同時,其功耗反而可以降低,其核心工作電壓從DDR2的1.8V降至1.5V,相關數據預測DDR3將比現時DDR2節省30%的功耗,當然發熱量我們也不需要擔心。就帶寬和功耗之間作個平衡,對比現有的DDR2-800產品,DDR3-800、1066及1333的功耗比分別為0.72X、0.83X及0.95X,不但內存帶寬大幅提升,功耗表現也比上代更好
內存技術從SDR,DDR,DDR2,DDR3一路發展而來,傳輸速度以指數遞增,除了晶圓制造工藝的提升因素之外,還因為采用了Double?Data?Rate以及Prefetch兩項技術。實際上,無論是SDR還是DDR或DDR2、DDR3,內存芯片內部的核心時鐘頻率基本上是保持一致的,都是100MHz到200MHz(某些廠商生產的超頻內存除外)。DDR即Double?Data?Rate技術使數據傳輸速度較SDR提升了一倍。如下圖所示, SDR僅在時鐘的上升沿傳輸數據,而DDR在時鐘信號上、下沿同時傳輸數據。例如同為133MHz時鐘,DDR卻可以達到266Mb/s的數傳速度
Double?Data?Rate技術使數據外傳速度提升了一倍,而芯片內部數據數據傳輸速度的提升則是通過Prefetch技術實現的。所謂Prefetch簡單的說就是在一個內核時鐘周期同時尋址多個存儲單元并將這些數據以并行的方式統一傳輸到IO?Buffer中,之后以更高的外傳速度將IO?Buffer中的數據傳輸出去。這個更高的速度在DDR中就是通過Double?Data?Rate實現的,也正因為如此,DDR芯片時鐘管腳的時鐘頻率與芯片內部的核心頻率是一致的。如下圖所示為DDR的Prefetch過程中,在16位的內存芯片中一次將2個16bit數據從內核傳輸到外部MUX單元,之后分別在Clock信號的上、下沿分兩次將這2?x?16bit數據傳輸給北橋或其他內存控制器,整個過程經歷的時間恰好為一個內核時鐘周期。
?
發展到DDR2,芯片內核每次Prefetch? 4倍的數據至IO Buffer中,為了進一步提高外傳速度,芯片的內核時鐘與外部接口時鐘(即DDR芯片的Clock管腳時鐘)不再是同一時鐘,外部Clock時鐘頻率變為內核時鐘的2倍。同理,DDR3每次Prefetch?8倍的數據,其芯片Clock頻率為內核頻率的4倍,即JEDEC標準(JESD79-3)規定的400MHz至800MHz,再加上在Clock信號上、下跳變沿同時傳輸數據,DDR3的數據傳輸速率便達到了800MT/s到1600MT/s。具體到內存條速度,我們以PC3-12800為例,其采用的DDR3-1600(上一小節已經提到過,PC3-12800和DDR3-1600其實是同一意思,只不過PC3-12800指的是DDR的傳輸帶寬為12800MB/s,而DDR3-1600指的是傳輸頻率為1600MHz)芯片核心頻率為200MHz,經過Prefetch后在800MHz Clock信號工作頻率的雙邊沿(Double?Data?Rate)作用下,使芯片的數據傳輸速率為1600?MT/s,內存條每次傳輸64比特或者說8字節數據,1600x8便得到12800MB/s的峰值比特率。
下表列出了JEDEC標準(JESD79-3)規定的DDR3芯片以及內存條相關參數。需要說明的是,如前所述,并不是所有的內存產品都完全遵從JEDEC標準,有些廠家會生產速度更高速的DDR3芯片,一般情況下這些芯片是從芯片檢測流程中篩選出來的頻率動態范圍更大的芯片,或者是可加壓超頻工作的芯片。
| 名稱 | 核心頻率 | 核心時鐘周期 | Clock管腳時鐘頻率 | 數據傳輸速率 | 對應內存條名稱 | 內存條峰值比特率 |
| DDR3-800 | 100MHz | 10ns | 400MHz | 800MT/s | PC3-6400 | 6400MB/s |
| DDR3-1066 | 133MHz | 7.5ns | 533MHz | 1066MT/s | PC3-8500 | 8533MB/s |
| DDR3-1333 | 166MHz | 6ns | 667MHz | 1333MT/s | PC3-10600 | 10667MB/s |
| DDR3-1600 | 200MHz | 5ns | 800MHz | 1600MT/s | PC3-12800 | 12800MB/s |
注意:Clock管腳時鐘頻率就是上一小節提到的DDR的工作頻率
最后,在了解了DDR的上面基礎知識的前提下,下表列出了不同DDR芯片的相關特性:
| SDRAM器件比較 | |||
| 條目 | DDR3 SDRAM | DDR2 SDRAM | DDR SDRAM |
| Clock管腳時鐘頻率(工作頻率) | 400/533/667/800 MHz | 200/266/333/400 MHz | 100/133/166/200 MHz |
| 數據傳輸速率 | 800/1066/1333/1600 MT/s | 400/533/667/800 MT/s | 200/266/333/400 MT/s |
| 預取(Prefetch)位寬 | 8-bit | 4-bit | 2-bit |
| 輸入時鐘類型 | 差分時鐘 | 差分時鐘 | 差分時鐘 |
| 突發長度(Burst Length) | 8, 4(突發突變) | 4,8 | 2,4,8 |
| 數據選通信號類型 | 差分數據選通 | 差分數據選通 | 單端數據選通 |
| 電源電壓 | 1.5V | 1.8V | 2.5V |
| 數據電平標準 | SSTL_15 | SSTL_18 | SSTL_2 |
| CAS Latency(CL) | 5,6,7,8,9時鐘 | 3,4,5時鐘 | 2,2.5,3時鐘 |
| 片內終端電阻(ODT) | 支持 | 支持 | 不支持 |
| 芯片封裝 | FBGA | FBGA | TSOP(II)/FBGA/LQFP |
?
四、 DDR3的工作原理
DDR3的內部是一個存儲陣列,將數據“填”進去,你可以它想象成一張表格,如下圖所示。和表格的檢索原理一樣,先指定一個行(Row),再指定一個列(Column),我們就可以準確地找到所需要的單元格,這就是內存芯片尋址的基本原理。對于內存,這個單元格可稱為存儲單元,那么這個表格(存儲陣列)就是邏輯 Bank(Logical Bank,下面簡稱Bank,與之對應的還有一種叫做物理BANK)。
?
| BANK編號(B) | 列地址(C) | ||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
| ? ? 行 地 址 (R) | 0 | ? | ? | ? | ? | ? | ? | ? | ? |
| 1 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 2 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 3 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 4 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 5 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 6 | ? | ? | ? | ? | ? | ? | ? | ? | |
| 7 | ? | ? | ? | ? | ? | ? | ? | ? | |
?
DDR3內部的BANK可以看做是一個NxN的一個陣列,B代表Bank編號,C代表列地址編號,R代表行地址編號。如果尋址命令是B1、R2、C6,就能確定地址是圖中紅格的位置。
目前DDR3內存芯片基本上都是8個Bank設計,也就是說一共有8個這樣的“表格”。尋址的流程也就是先指定Bank地址,再指定行地址,然后指定列地址最終的確尋址單元。
對DDR3系統而言,還存在物理Bank的概念,這是對內存子系統的一個相關術語,并不針對內存芯片。內存為了保證CPU正常工作,必須一次傳輸完CPU 在一個傳輸周期內所需要的數據。而CPU在一個傳輸周期能接受的數據容量就是CPU數據總線的位寬,單位是bit(位)。控制內存與CPU之間數據交換的北橋芯片也因此將內存總線的數據位寬等同于CPU數據總線的位寬,這個位寬就稱為物理Bank(Physical Bank,有的資料稱之為Rank)的位寬。目前這個位寬基本為64bit。
在實際工作中,邏輯Bank地址與相應的行地址是同時發出的,此時這個命令稱之為“行激活”(Row Active)。在此之后,將發送列地址尋址命令與具體的操作命令(是讀還是寫),這兩個命令也是同時發出的,所以一般都會以“讀/寫命令”來表示列尋址。根據相關的標準,從行有效到讀/寫命令發出之間的間隔被定義為tRCD,即RAS to CAS Delay(RAS至CAS延遲,RAS就是行地址選通脈沖,CAS就是列地址選通脈沖),我們可以理解為行選通周期。tRCD是DDR的一個重要時序參數,廣義的tRCD以核心時鐘周期(tCK,Clock Time)數為單位,比如tRCD=3,就代表延遲周期為兩個時鐘周期,具體到確切的時間,則要根據時鐘頻率而定。以DDR3-800為例,通過上一節的學習可知,DDR3-800的數據傳輸頻率(等效頻率)為800MHz,由于DDR3的預取(Prefetch)位寬為8位,所以核心頻率為100MHz(800MHz/8),核心時鐘的周期為10ns,如果tRCD=3,則表示延時為30ns。
?
上圖是tRCD=3的時序圖,NOP=Not Operation,表示無操作,灰色區域表示Don’t Care。
接下來,相關的列地址被選中以后,將會觸發數據傳輸,但從存儲單元中輸出到真正出現在內存芯片的I/O接口之間還需要一定的時間(數據觸發本身就有延時,而且還需要進行信號放大),這段時間就是列地址脈沖選通潛伏期(CAS Latency,CL),CL的數值與tRCD一樣,以時鐘周期數表示。比如DDR3-800的有效頻率(傳輸數據頻率)為800MHz,由于DDR3的預取數為8,所以核心頻率為100MHz,核心周期為10ns,如果CL=2,那么就意味著列地址脈沖選通潛伏期為20ns。CL只針對讀取操作有效。
由于芯片體積的原因,存儲單元中的電容容量很小,所以信號要經過放大來保證其有效的識別性,這個放大/驅動工作由Sense Amplifier負責,一個存儲體對應一個Sense Amplifier通道。但它要有一個準備時間才能保證信號的發送強度(事前還要進行電壓比較以進行邏輯電平的判斷),因此從數據I/O總線上有數據到數據輸出之前的一個時鐘上升沿開始,數據即已傳向Sense Amplifier,也就是說此時數據已經被觸發,經過一定的驅動時間最終傳向數據I/O總線進行輸出,這段時間我們稱之為tAC(Access Time from CLK,時鐘觸發后的訪問時間)。
Sense Amplifier在DDR結構中扮演的角色如下所示
?
tAC和CAS的示意圖如下圖所示
?
目前內存的讀寫基本都是連續的,因為與CPU交換的數據量以一個Cache Line(即CPU內Cache的存儲單位)的容量為準,一般為64字節。而現有的Rank位寬為8字節(64bit),那么就要一次連續傳輸8次,這就涉及到我們也經常能遇到的突發傳輸的概念。突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(Burst Lengths,簡稱BL)。
在進行突發傳輸時,只要指定起始列地址與突發長度,內存就會依次地自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址。這樣,除了第一組數據的傳輸需要若干個周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個數據只需一個周期的即可獲得。下圖是CAS=2,BL=4時的時序圖
?
突發連續讀取模式:只要指定起始列地址與突發長度,后續的尋址與數據的讀取自動進行,而只要控制好兩段突發讀取命令的間隔周期(與BL相同)即可做到連續的突發傳輸。
談到了突發長度時。如果BL=4,那么也就是說一次就傳送4×64bit的數據。但是,如果其中的第二組數據是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數據,人們采用了數據掩碼(Data I/O Mask,簡稱DQM)技術。通過DQM,內存可以控制I/O端口取消哪些輸出或輸入的數據。這里需要強調的是,在讀取時,被屏蔽的數據仍然會從存儲體傳出,只是在“掩碼邏輯單元”處被屏蔽。DQM由北橋控制,為了精確屏蔽一個P-Bank位寬中的每個字節,每個DIMM有8個DQM 信號線,每個信號針對一個字節。這樣,對于4bit位寬芯片,兩個芯片共用一個DQM信號線,對于8bit位寬芯片,一個芯片占用一個DQM信號,而對于 16bit位寬芯片,則需要兩個DQM引腳。
在數據讀取完之后,為了騰出讀出放大器以供同一Bank內其他行的尋址并傳輸數據,內存芯片將進行預充電的操作來關閉當前工作行。還是以上面那個Bank示意圖為例。當前尋址的存儲單元是B1、R2、C6。如果接下來的尋址命令是B1、R2、C4,則不用預充電,因為讀出放大器正在為這一行服務。但如果地址命令是B1、R4、C4,由于是同一Bank的不同行,那么就必須要先把R2關閉,才能對R4尋址。從開始關閉現有的工作行,到可以打開新的工作行之間的間隔就是tRP(Row Precharge command Period,行預充電有效周期),單位也是時鐘周期數。
整個充電的步驟如下圖所示
?
在不同Bank間讀寫也是這樣,先把原來數據寫回,再激活新的Bank/Row。
數據選取脈沖(DQS)
DQS 是DDR中的重要功能,它的功能主要用來在一個時鐘周期內準確的區分出每個傳輸周期,并便于接收方準確接收數據。每一顆芯片都有一個DQS信號線,它是雙向的,在寫入時它用來傳送由北橋發來的DQS信號,讀取時,則由芯片生成DQS向北橋發送。完全可以說,它就是數據的同步信號。
在讀取時,DQS與數據信號同時生成(也是在CK與CK#的交叉點)。而DDR內存中的CL也就是從CAS發出到DQS生成的間隔,DQS生成時,芯片內部的預取已經完畢了,由于預取的原因,實際的數據傳出可能會提前于DQS發生(數據提前于DQS傳出)。由于是并行傳輸,DDR內存對tAC也有一定的要求,對于DDR266,tAC的允許范圍是±0.75ns,對于DDR333,則是±0.7ns,有關它們的時序圖示見前文,其中CL里包含了一段DQS 的導入期。
DQS 在讀取時與數據同步傳輸,那么接收時也是以DQS的上下沿為準嗎?不,如果以DQS的上下沿區分數據周期的危險很大。由于芯片有預取的操作,所以輸出時的同步很難控制,只能限制在一定的時間范圍內,數據在各I/O端口的出現時間可能有快有慢,會與DQS有一定的間隔,這也就是為什么要有一個tAC規定的原因。而在接收方,一切必須保證同步接收,不能有tAC之類的偏差。這樣在寫入時,芯片不再自己生成DQS,而以發送方傳來的DQS為基準,并相應延后一定的時間,在DQS的中部為數據周期的選取分割點(在讀取時分割點就是上下沿),從這里分隔開兩個傳輸周期。這樣做的好處是,由于各數據信號都會有一個邏輯電平保持周期,即使發送時不同步,在DQS上下沿時都處于保持周期中,此時數據接收觸發的準確性無疑是最高的。
DDR的寫時序的時序圖如下圖所示
?
DDR的讀時序的時序圖如下圖所示
?
由上面的時序圖可知,在寫時序中,有效數據DQ的正中間正好對應DQS的跳邊沿,而在讀時序中,有效數據的正中間對應著DQS信號的正中間。
最后在簡單說一說DDR中采用的ODT(On-Die Termination)技術。
ODT(On-Die Termination),是從DDR2 SDRAM時代開始新增的功能。其允許用戶通過讀寫DDR2/3內部的MR1寄存器,來控制DDR3 SDRAM中各個信號內部終端電阻的連接或者斷開。在DDR3 SDRAM中,ODT功能主要應用于:
1、DQ, DQS, DQS# and DM for X4 configuration
2、DQ, DQS, DQS#, DM, TDQS and TDQS# for X8 configuration
3、DQU, DQL, DQSU, DQSU#, DQSL, DQSL#, DMU and DML for X16 configuration
ODT(On-Die Termination)技術的目的是通過使DDR SDRAM控制器能夠獨立的打開或者關斷DDR內部的終端電阻來提高存儲器通道的信號完整性,在DLL關閉模式,ODT功能被禁用。
一個DDR通道,通常會掛接多個Rank,這些Rank的數據線、地址線等等都是共用;數據信號也就依次傳遞到每個Rank,到達線路末端的時候,波形會有反射,從而影響到原始信號;因此需要加上終端電阻,吸收余波。之前的DDR,終端電阻做在板子上,但是因為種種原因,效果不是太好,到了DDR2,把終端電阻做到了DDR顆粒內部,也就稱為On Die Termination,Die上的終端電阻,Die是硅片的意思,這里也就是DDR顆粒。
ODT技術具體的內部結構圖如下:
?
等效結構如下圖所示
?
ODT終端電阻的電阻值RTT可通過模式寄存器MR1的A9,A6,A2來進行設置,設置的真值表為:
?
總的來說,ODT技術有以下三個優點:
1、去掉了主板上的終結電阻器等電器元件,這樣會大大降低主板的制造成本,并且也使主板的設計更加簡潔。
2、由于ODT技術可以迅速的開啟和關閉空閑的內存芯片,在很大程度上減少了內存閑置時的功率消耗。
3、芯片內部終結電阻也要比主板的終端電阻具有更好的信號完整性。這也使得進一步提高DDR2內存的工作頻率成為可能。
五、 總結
本文大致介紹了DDR3的一些基本信息,總結下來主要有以下幾個關鍵信息是值得關注的。
1、DDR核心頻率,工作頻率以及有效頻率的關系
2、DDR采用的預取(Prefetch)技術
3、DDR的Burst Length(BL)的概念
4、DDR對一行操作完畢以后如果下一次的操作在不同的行,那么需要有一個預充電(Precharge)的過程
5、數據掩碼(DQM)技術的作用是用來屏蔽不想接收的數據
6、數據選通信號(DQS)與有效數據的關系
7、ODT(On-Die Termination)技術可以提高DDR信號完整性
六、 參考資料
1、ODT技術:https://blog.csdn.net/weixin_38233274/article/details/81016870
2、DDR3原理:http://www.360doc.com/content/17/0628/10/43885509_667136417.shtml
3、DDR3原理:https://wenku.baidu.com/view/95574828d1f34693dbef3e39.html
4、DDR3原理:https://wenku.baidu.com/view/0b1b0c795fbfc77da369b1b1.html
5、DDR芯片原理:http://blog.chinaunix.net/uid-20671208-id-4470548.html
6、DDR傳輸速率:https://wenku.baidu.com/view/342ed68f360cba1aa811dabf.html
7、DDR三個頻率關系:https://www.cnblogs.com/shengansong/archive/2012/09/01/2666213.html
8、DDR3三個頻率關系:https://electronics.stackexchange.com/questions/134555/why-all-ddrs-ddr-ddr2-ddr3-internal-clock-sets-to-20
?
?
?歡迎關注我的微信公眾號:FPGA之禪
轉載于:https://www.cnblogs.com/liujinggang/p/9782796.html
總結
以上是生活随笔為你收集整理的【接口时序】8、DDR3驱动原理与FPGA实现(一、DDR的基本原理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2028)vue之电商管理系统
- 下一篇: 网络通信基础知识(1)