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