已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
DDR SDRAM技術(shù)專題DDRSDRAM是“雙倍數(shù)據(jù)速率同步動態(tài)隨機(jī)訪問存儲器”double date rate synchronous dynamic random access memory的縮寫,是一種低成本、高容量的存儲器,在計算機(jī)、消費(fèi)類電子、通信等領(lǐng)域中一些要求高容量存儲空間的場合有著廣泛的應(yīng)用。本技術(shù)專題試圖以從事DDRSDRAM使用及其控制器設(shè)計的電子工程師的角度對DDRSDRAM進(jìn)行較為詳細(xì)的討論。我們希望本技術(shù)專題能夠為廣大電子設(shè)計工程師提供有益的參考。1. DDR SDRAM概述SDRAM是同步動態(tài)隨機(jī)訪問存儲器的縮寫,是一種低成本、高容量的存儲器。它在計算機(jī)、消費(fèi)類電子、通信等領(lǐng)域中一些要求高容量存儲空間的場合有著廣泛的應(yīng)用。傳統(tǒng)的SDRAM采用一種單倍數(shù)據(jù)速率(SDR)的結(jié)構(gòu)執(zhí)行訪問操作,它在每個時鐘周期的上升沿傳輸數(shù)據(jù),因此SDRSDRAM的帶寬等于其時鐘其頻率乘以其數(shù)據(jù)總線寬度 w=f*bus。例如,如果SDRSDRAM的操作頻率為100MHz,其數(shù)據(jù)總線寬度為16位,則其總線帶寬為100MHzx16bit=1600Mbit/S,也就是1.6Gbps。而對帶寬的需求是無休止的!為了增加總線帶寬,如果使用傳統(tǒng)的方法,我們要么增加數(shù)據(jù)總線寬度,要么提高其操作頻率。那么,有沒有可能在既不增加數(shù)據(jù)總線寬度也不提高工作頻率的條件下增加總線帶寬呢?為適應(yīng)這種需求,DDRSDRAM出現(xiàn)了!DDRSDRAM使用一種雙倍數(shù)據(jù)速率的結(jié)構(gòu)來獲得高性能的操作。雙倍數(shù)據(jù)速率結(jié)構(gòu)本質(zhì)上是一種2n預(yù)取結(jié)構(gòu),在輸入/輸出管腳上,每個時鐘周期可以傳輸兩個字。對于一次DDRSDRAM的訪問操作(寫操作、讀操作),在芯片的內(nèi)部,一個時鐘周期執(zhí)行一個位寬為2n的數(shù)據(jù)傳輸,而在DDRSDRAM器件的管腳上則每半個時鐘周期執(zhí)行一次n位的數(shù)據(jù)傳輸。因此,DDRSDRAM的總線帶寬為:工作頻率數(shù)據(jù)總線寬度2可見,在相同的數(shù)據(jù)總線寬度和工作頻率下,DDRSDRAM的總線帶寬比SDRSDRAM的總線帶寬提高了一倍。概括起來,DDRSDRAM具有如下特點(diǎn): 雙倍數(shù)據(jù)速率結(jié)構(gòu),每個時鐘周期完成兩次數(shù)據(jù)傳輸; 雙向的數(shù)據(jù)選通信號(DQS)伴隨數(shù)據(jù)一起傳輸。在接收側(cè),它用來捕獲數(shù)據(jù); 在讀操作過程中,DQS與數(shù)據(jù)沿對齊,在寫操作過程中,DQS與數(shù)據(jù)中央對齊; 差分的時鐘輸入(CK與/CK); DLL將DQ和DQS的躍變與CK的躍變對齊; 在每個CK的上升沿接收命令字;數(shù)據(jù)和數(shù)據(jù)掩碼參考于DQS的上升沿和下降沿; 內(nèi)部的四個BANK可以并發(fā)操作; 寫數(shù)據(jù)時支持?jǐn)?shù)據(jù)掩碼(DM); 支持的突發(fā)長度:2、4、或8; CAS潛伏期:2或2.5,DDR400還包括CL=3 為每一次突發(fā)訪問提供了AUTOPRECHARGE選項; 自動刷新與自刷新模式; 2.5V(SSTL_2兼容)I/O; 對于DDR200、DDR266、DDR333:VDDQ為+2.5V0.2V;對于DDR400:+VDDQ為2.60.1V; 對于DDR200、DDR266、DDR333:VDD為+3.3V0.3V或+2.5V0.2V;對于DDR400:+VDDQ為2.60.1V;2. DDR SDRAM與SDR SDRAM的功能比較在對DDRSDRAM進(jìn)行詳細(xì)描述之前,我們首先對DDRSDRAM與SDRSDRAM的功能作一個簡要的對比。下表列出了它們之間在外部接口上的一些不同之處:SDRSDRAM與DDRSDRAM的內(nèi)部存儲核本質(zhì)上是相同的。它們都具有相同的尋址和命令控制接口;都具有4個BANK的存儲陣列;都具有相同的刷新要求。它們之間基本的不同點(diǎn)在于數(shù)據(jù)接口。SDRSDRAM的數(shù)據(jù)接口是一個系統(tǒng)同步的設(shè)計,它僅僅在時鐘的上升沿捕獲數(shù)據(jù)。它的內(nèi)、外部數(shù)據(jù)總線具有相同的寬度,當(dāng)數(shù)據(jù)穿越I/O緩沖器時被順序地鎖存到內(nèi)部存儲陣列。SDRSDRAM還支持一個DQM信號,它在寫操作過程中作為數(shù)據(jù)掩碼使用;在讀操作過程中作為輸出使能使用。DDRSDRAM的數(shù)據(jù)接口是一個源同步的設(shè)計,數(shù)據(jù)在每個時鐘周期被捕獲兩次,并伴隨一個雙向的數(shù)據(jù)選通信號。DDRSDRAM采用了一種2n預(yù)取結(jié)構(gòu),它的內(nèi)部數(shù)據(jù)總線寬度是外部數(shù)據(jù)總線寬度的兩倍。這就使得內(nèi)部存儲單元以成對的方式向I/O緩沖器傳遞數(shù)據(jù)。DDRSDRAM在讀操作時沒有輸出使能信號,但它支持一個BURSTTERMINATE命令來快速中止正在執(zhí)行的READ命令。在WRITE操作過程中,DM信號被用來屏蔽無效的寫數(shù)據(jù)。DDRSDRAM的命令總線包括時鐘使能、芯片選擇、行地址、列地址、BANK地址、以及寫使能信號。DDRSDRAM采用一對差分時鐘(CK和CK#)進(jìn)行工作,DDRSDRAM的命令信號(地址和控制信號)使用CK的上升沿鎖存。與SDRSDRAM不同,DDRSDRAM采用一個雙向的數(shù)據(jù)選通信號(DQS)伴隨著數(shù)據(jù)一起傳輸。DQS信號在DDRSDRAM的讀訪問操作中由DDRSDRAM輸出并與數(shù)據(jù)總線沿對齊,而在寫訪問操作中由DDRSDRAM控制器輸出,并與數(shù)據(jù)總線中央對齊。DDRSDRAM的輸入數(shù)據(jù)使用DQS的上升沿和下降沿進(jìn)行鎖存,而其輸出數(shù)據(jù)則以DQS的上升沿和下降沿作為參考時鐘。在CK的上升沿和下降沿進(jìn)行鎖存?接下來,我們首先對DDRSDRAM的功能作一個簡要的描述,然后我們會對DDRSDRAM的一些基本概念以及各種操作進(jìn)行詳細(xì)的描述。3. DDR SDRAM功能描述DDRSDRAM是一種高速CMOS動態(tài)隨機(jī)訪問存儲器,它在內(nèi)部被配制成4個BANK的DRAM,外部數(shù)據(jù)具有X4位、X8位、X16位三種寬度。DDRSDRAM具有如下的容量: 64Mb(即67,108,864位):16MX4(4MX4X4banks)、8MX8(2MX8X4banks)、4MX16(1MX16X4banks); 128Mb(即134,217,728位):32MX4(4MX4X4banks)、16MX8(2MX8X4banks)、8MX16(1MX16X4banks); 256Mb(即268,435,456位):64MX4(4MX4X4banks)、32MX8(2MX8X4banks)、16MX16(1MX16X4banks); 512Mb(即536,870,912位):128MX4(4MX4X4banks)、64MX8(2MX8X4banks)、32MX16(1MX16X4banks); 1Gb(即1,073,741,824位):256MX4(4MX4X4banks)、128MX8(2MX8X4banks)、64MX16(1MX16X4banks);DDRSDRAM中每一個BANK中的存儲單元被組織成正方陣列,由若干行和若干列組成,這些存儲單元通過行和列的地址譯碼器來尋址。對于任何一個單元的讀操作,整個行均被讀出,然后重新寫回(刷新)。對于任何一個單元的寫操作,整個行均被讀出,然后改變其中一個單元的值,最后將整個行寫回。DDRSDRAM的功能框圖如下圖所示。DDRSDRAM的接口信號描述如下表所示:對DDRSDRAM不同容量、不同數(shù)據(jù)寬度的尋址信號如下圖所示:DDRSDRAM在上電后必須由一個初始化操作來配置DDRSDRAM的模式寄存器,模式寄存器的設(shè)置決定了DDRSDRAM的工作模式。 為了減少IO引腳的數(shù)量,DDRSDRAM的行地址和列地址復(fù)用相同的地址引腳。因此,在訪問DDRSDRAM的時候,要先由ACTIVE命令來激活需要訪問的BANK、并鎖存行地址(BA0、BA1用來選擇BANK;A0A13用來選擇行),然后才能發(fā)布READ或WRITE命令。對應(yīng)于READ或WRITE命令的地址信號用來選擇突發(fā)訪問的起始列地址。 DDRSDRAM使用雙倍數(shù)據(jù)速率結(jié)構(gòu)來獲得高速操作。雙倍數(shù)據(jù)速率結(jié)構(gòu)本質(zhì)上是一個2n預(yù)取結(jié)構(gòu),在I/O管腳上,它每個時鐘周期傳輸兩個數(shù)據(jù)字,也就是每半個時鐘周期傳輸一個數(shù)據(jù)字。而對應(yīng)DDRSDRAM內(nèi)部的DRAM核,則每個時鐘周期執(zhí)行2n位寬度的數(shù)據(jù)傳輸。在沒有數(shù)據(jù)傳輸?shù)臅r候,DQ、DQS、DM可以處于懸浮態(tài)。對DDRSDRAM的讀訪問和寫訪問都是面向突發(fā)的,訪問操作從一個選定的位置開始,以可編程的順序持續(xù)幾個可編程數(shù)目的位置。 DDRSDRAM的存儲單元由電容組成,我們知道,電容總是趨向于釋放電荷,因此DDRSDRAM還需要周期性的刷新操作,只有這樣才能保證其存儲的數(shù)據(jù)不會丟失。DDRSDRAM的生產(chǎn)廠商規(guī)定,DDRSDRAM的每一行都必須在64ms以內(nèi)刷新一次。 在以后的章節(jié)中,我們會對DDRSDRAM的初始化、模式寄存器定義、DDRSDRAM操作的一些基本概念、命令描述和操作進(jìn)行詳細(xì)的描述。4. DDR SDRAM的初始化DDRSDRAM是一種易失性存儲器器件,也就是說,當(dāng)器件掉電后,存儲在DDRSDRAM中的所有內(nèi)容及其配置信息將會丟失。DDRSDRAM每次上電后,必須按一定的順序來初始化其內(nèi)部狀態(tài)機(jī)并配置用戶定義的操作參數(shù),否則會引起不可預(yù)料的操作結(jié)果。在本節(jié)中,我們會對DDRSDRAM的初始化順序進(jìn)行詳細(xì)描述(有關(guān)模式寄存器的具體含義我們會在下一節(jié)中詳細(xì)描述)。我們首先討論DDRSDAM的上電順序。DDRSDRAM的上電必須滿足下列之一的條件: VDD和VDDQ從同一個電源轉(zhuǎn)換器提供,并且 VTT被限制成1.35V,并且 VREF設(shè)置成VDDQ/2?;蛘撸?VDDQ在VDD之后或與VDD一起提供,并滿足VDDQVDD+0.3V,并且 VTT在VDDQ之后或與VDDQ一起提供,并滿足VTTVDDQ+0.3V,并且 VREF在VDDQ之后或與VDDQ一起提供,并滿足VREFVDDQ+0.3V。上述的兩個條件中,至少有一個必須被滿足。DDRSDRAM每次上電后,必須按下列順序進(jìn)行初始化。1. 將時鐘使能信號(CKE)驅(qū)動成LVCMOS低電平LVCMOS低電平?SSTL_2電平?。CKE是一個SSTL_2電平的輸入信號,但在施加了VDD電源后可以檢測一個LVCMOS低電平。在上電過程中將CKE保持為LVCMOS低電平,能夠阻止DDRSDRAM接收不期望的命令,并能夠保證DQ和DQS輸出在正常操作之前保持為高阻狀態(tài);2. 在為DDRSDRAM提供了穩(wěn)定的電源供應(yīng)并將CKE保持為低后,我們就可以為DDRSDRAM提供一個穩(wěn)定的時鐘;3. 在向DDRSDRAM發(fā)布命令之前,必須等待至少200us;4. 為了初始化DDRSDRAM的內(nèi)部邏輯,將CKE置為SSTL_2邏輯高并在命令總線上發(fā)布一個NOP命令或一個DESELECT命令。注意,此時CKE輸入從LVCMOS輸入轉(zhuǎn)變?yōu)镾STL_2輸入并保持為SSTL_2輸入;5. 發(fā)布一個PRECHARGEALL命令;6. 在至少tRP的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tRP時間后才能發(fā)布其它命令);7. 使用LMR命令編程擴(kuò)展模式寄存器。此時,必須配置DLL(將E0設(shè)置為0以便使能DLL)和I/O驅(qū)動強(qiáng)度(將E1設(shè)置為1提供標(biāo)準(zhǔn)驅(qū)動,或者將E1設(shè)置為0來提供縮減驅(qū)動強(qiáng)度),所有其它的位必須設(shè)置成0;8. 在至少tMRD的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tMRD時間后才能發(fā)布其它命令);9. 使用LMR命令將DDRSDRAM的模式寄存器設(shè)置為期望的操作模式。注意,除了M0到M7之外的所有其它MR位必須被設(shè)置成0。在這一步驟還執(zhí)行一個DLL復(fù)位。只要DLL被復(fù)位,那么需要至少等待200個時鐘周期才能發(fā)布可執(zhí)行命令(例如READ命令);10. 在至少tMRD的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tMRD時間后才能發(fā)布其它命令);11. 發(fā)布一個PRECHARGEALL命令并將A10設(shè)置成邏輯高電平,這一命令將所有BANK置入空閑態(tài);12. 在至少tRP的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tRP時間后才能發(fā)布其它命令);13. 發(fā)布一個AUTOREFRESH命令。注意,作為DDRSDRAM初始化的一部分,必須發(fā)布兩個AUTOREFRESH命令:在本步驟時發(fā)布一個,在第15步時再發(fā)布一個;14. 在至少tRFC的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tRRF時間后才能發(fā)布其它命令);15. 發(fā)布第二個AUTOREFRESH命令;16. 在至少tRFC的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tRRF時間后才能發(fā)布其它命令);17. 發(fā)布一個LMR命令來清除DLL位(將M8設(shè)置為0);18. 在至少tMRD的時間內(nèi)為DDRSDRAM發(fā)布NOP或DESELECT命令(也就是說至少tMRD時間后才能發(fā)布其它命令);至此,DDRSDRAM的初始化過程就結(jié)束了,此后,我們可以發(fā)布任何有效的命令。注意:從第9步的DLL復(fù)位到任何后續(xù)命令之間至少需要200個時鐘周期。上述的初始化過程可以用下面的簡化流程圖表示:DDRSDRAM初始化的時序圖如下圖所示:在上面所描述的初始化操作中,一個很重要的命令就是加載模式寄存器命令,在接下來的一節(jié)中我們會對DDRSRAM的模式寄存器進(jìn)行詳細(xì)的描述。5. DDR SDRAM的模式寄存器在DDRSDRAM的初始化過程中,我們必須配置DDRSDRAM的操作參數(shù)。操作參數(shù)是通過DDRSRAM的兩個內(nèi)部寄存器進(jìn)行配置的,這兩個內(nèi)部寄存器分別為:模式寄存器(ModeRegister,MD)和擴(kuò)展模式寄存器(ExtendedModeRegister,EMR)。在上一節(jié)所提到的LMR(加載模式寄存器)命令就是用來編程這兩個寄存器。在發(fā)布LMR命令的時候需要與DDRSRAM的BANK地址(BA1:0)和行地址(A13:0)配合使用。其中BA1:0用來選擇MR或EMR;A13:0用來提供寫入的配置碼,A13:0的最低有效位對應(yīng)模式寄存器的最低有效位。其時序圖如圖5-1所示:模式寄存器DDRSDRAM模式寄存器的定義如圖5-2所示:模式寄存器用來定義DDRSDAM的特定操作模式,包括突發(fā)長度、突發(fā)類型、CAS時延、以及復(fù)位DLL等。在發(fā)布LMR命令來編程模式寄存器時BA1:0必須設(shè)置為2B00來選擇模式寄存器,所加載的配置參數(shù)會一直保持(M8位除外,它是自清除的)直到模式寄存器被重新編程或DDRSDRAM掉電。模式寄存器只有在所有BANK都處于空閑狀態(tài)并且所有突發(fā)傳輸都已經(jīng)結(jié)束的情況下才能夠被加載,而且在發(fā)布完該命令后必須等待一個特定的時間才能執(zhí)行后續(xù)操作,否則會引起不可預(yù)料的操作結(jié)果。模式寄存器的M8位用來復(fù)位DDRSDRAM內(nèi)部的DLL,當(dāng)改位置位后會復(fù)位DLL,并且它是一個自清除的位,也就是說當(dāng)DLL復(fù)位完成后改位會自動清除成0。模式寄存器的M2:0用來指定突發(fā)長度、M3用來指定突發(fā)類型(順序或交錯的)、M6:4用來指定CAS時延、M13:7用來指定操作模式(M12在256Mb及以上的器件中使用、M13在1Gb容量的器件中使用)。有關(guān)突發(fā)長度、突發(fā)類型、CAS時延的詳細(xì)描述我們將會在下一節(jié)中給出。擴(kuò)展模式寄存器DDRSDRAM擴(kuò)展模式寄存器的定義如圖5-3所示:擴(kuò)展模式寄存器用來控制DDRSDRAMDLL的使能/關(guān)閉以及輸出驅(qū)動強(qiáng)度的選擇。在發(fā)布LMR命令來編程擴(kuò)展模式寄存器時BA1:0必須設(shè)置為2B01來選擇擴(kuò)展模式寄存器,所加載的配置參數(shù)會一直保持直到擴(kuò)展模式寄存器被重新編程或DDRSDRAM掉電。擴(kuò)展模式寄存器只有在所有BANK都處于空閑狀態(tài)并且所有突發(fā)傳輸都已經(jīng)結(jié)束的情況下才能夠被加載,而且在發(fā)布完該命令后必須等待一個特定的時間才能執(zhí)行后續(xù)操作,否則會引起不可預(yù)料的操作結(jié)果。 DLL的使能與關(guān)閉:DLL的使能/關(guān)閉通過E0位來控制。在正常操作模式下,DLL必須被使能。每次DLL被使能后必須緊跟一個DLL的復(fù)位操作(通過編程模式寄存器),并且必須在200個時鐘周期后才能發(fā)布其它可執(zhí)行命令(讀或?qū)懙龋?輸出驅(qū)動強(qiáng)度選擇:DDRSDRAM所有輸出的正常驅(qū)動強(qiáng)度是SSTL_2,某些器件制造商可能會支持一個較弱的驅(qū)動強(qiáng)度來驅(qū)動更輕的負(fù)載或者在點(diǎn)到點(diǎn)環(huán)境中使用。擴(kuò)展模式寄存器的E1位用來選擇驅(qū)動強(qiáng)度,在使用時注意具體器件的數(shù)據(jù)手冊。接下來我們首先對DDRSDRAM使用中的一些基本概念、術(shù)語進(jìn)行詳細(xì)描述。SDRAM操作小結(jié)前幾天在21IC上看到有一個家伙問SDRAM的問題,什么地址線連接啊,操作啊,看完后,只能輕嘆一聲,菜鳥啊,估計SDRAM從來沒使用過,只會使用普通的一些存儲器的家伙?;叵胍幌伦约哼@3年來做過的系統(tǒng),用了各種各樣的存儲器,想想是不是要小結(jié)一下,以至紀(jì)念我的技術(shù)歲月,因為以后打算開始混日子了。1,SDRAM的地址線在我們一般用的什么SRAM啊,PSRAM啊,RAM啊,一般而言都是有多少根地址線,然后可以算出尋址空間,比如有11根地址線,那尋址空間就是2的11次方減1。但是SDRAM是分列地址和行地址的,行、列地址線是復(fù)用的,所以有時候我們看到說尋址空間有多大多大,但是看看地址線怎么就那么幾根啊,呵呵。SDRAM一般還有2根BANK的線,分成4個BANK,在有的處理器的SDRAM控制模塊中,這兩根線可能映射到地址線的某兩根去。一般芯片常按照以下方式寫芯片的配置,比如4Megx4x16,那這個芯片就是256Mbits。其中16指數(shù)據(jù)線是16根,中間一個4是只分4個BANK,每個BANK是4Meg。2,SDRAM的初始化SDRAM上電后使用前必須要經(jīng)過一段初始化操作才可以使用。這個操作過程是標(biāo)準(zhǔn)的過程。這個過程如下A:prechargeB:auto-refreshC:LoadModeRegisterD:NormalRead/Write在上電后輸入初始化命令之前,最少要100us延遲(這個其實很容易滿足,呵呵)。在輸入precharge命令后,因為必須是對所有BANK進(jìn)行Precharge,所以A10這個管腳要設(shè)置成高,因此在Precharge后面要做一個讀的操作,這個操作最主要的是在SDRAM的尋址空間里設(shè)置的地址必須是A10是高的。在輸入Auto-refresh命令后,一般要跟幾句空操作或者讀什么之類的,反正要達(dá)到延遲的目的,以使得SDRAM有時間來完成refresh。之后就是要設(shè)置SDRAM的模式寄存器,這個寄存器里一般設(shè)置了burst長度,CAS,burst類型,操作模式,還有是設(shè)置SDRAM是工作在單個讀寫操作還是burst操作下。而這個寄存器的設(shè)置也是通過地址線來設(shè)置的,所以在發(fā)出LoadModeRegister命令后要做一個操作可是使得在SDRAM的地址線上出線的值就是你要設(shè)置的值。這里很有必要提醒的一下的是,這個操作是8位的操作,切記切記。設(shè)置完模式寄存器后就進(jìn)入正常操作模式。實際上具體的操作要跟選用的處理器的SDRAM控制模塊相結(jié)合來設(shè)置。對于這些初始化命令比較直觀的理解就是拿邏輯分析儀來分析。在這里需要提醒一下CAS這個參數(shù)很重要。還有SDRAM必須要刷新的,因此刷新頻率可以按照手冊算出來的,但是設(shè)置的高一點(diǎn)也是可以的。常常SDRAM都有工作頻率,但是也可以工作在低一點(diǎn)的頻率上,比如PC133的,你工作到100也是可以的,設(shè)置基本不需要修改。3,其他我們有時候看到有的原理圖上數(shù)據(jù)線有倒過來接的,其實這個無所謂的,反過接,寫進(jìn)去的就是反的,但是讀出又反了一下,反反兩次正好沒反。延伸一下到DDR,其實DDR就是SDRAM外面加了一個烏龜殼。因此初始化是一樣的。當(dāng)然DDR一是多了一個把時鐘頻率反相的時鐘,因此有2個相位差180度的時鐘。這兩個一般都是用同一個時鐘源產(chǎn)生,一致性會比較好。還有多了2個DQS,這個也是一個時序要求,一般CPU的控制模塊都有設(shè)置好了。如果你使用的CPU不含有控制模塊,那用FPGA去做一個控制模塊的話,那就要好好研究時序了。在有些處理器的控制模塊中,由于EMI的設(shè)置,地址線映射關(guān)系復(fù)雜,因此推算會比較麻煩,一般如果沒有什么映射的話,還是很容易操作的。DDR SDRAM在嵌入式系統(tǒng)中的應(yīng)用 引言 很多嵌入式系統(tǒng),特別是應(yīng)用于圖像處理與高速數(shù)據(jù)采集等場合的嵌入式系統(tǒng),都需要高速緩存大量的數(shù)據(jù)。DDR(Double Data Rate,雙數(shù)據(jù)速率)SDRAM由于其速度快、容量大,而且價格便宜,因此能夠很好地滿足上述場合對大量數(shù)據(jù)緩存的需求。但DDR SDRAM的接口不能直接與現(xiàn)今的微處理器和DSP的存儲器接口相連,需要在其間插入控制器實現(xiàn)微處理器或DSP對存儲器的控制。 隨著密度與性能的不斷提升,現(xiàn)場可編程門陣列(FPGA)已被廣泛應(yīng)用于各種嵌入式系統(tǒng)中。而且,現(xiàn)在很多的FPGAs都提供了針對DDR SDRAM的接口特性:其輸入輸出引腳都與SSTL電氣特性兼容,內(nèi)部提供了DDR觸發(fā)器、鎖相環(huán)等硬件資源。使用這些特性,可以更加容易地設(shè)計性能可靠的高速DDR SDRAM存儲器控制器。 1 DDR SDRAM 在嵌入式系統(tǒng)中的應(yīng)用圖1是DDR SDRAM在高速信號源系統(tǒng)中的應(yīng)用實例。 在該系統(tǒng)中,由FPGA的完成各模塊之間的接口控制。FPGA接收從前端傳送過來的高速數(shù)字信號,并將其存儲在DDR SDRAM中;DSP通過FPGA讀取DDR中的數(shù)據(jù),處理后再送回到DDR SDRAM,最后由FPGA負(fù)責(zé)將數(shù)據(jù)分兩路輸出。 該系統(tǒng)對存儲器的要求是能夠高速地存儲大量的數(shù)據(jù),DDR SDRAM正好能滿足這一要求,此時,F(xiàn)PGA是否能對DDR SDRAM進(jìn)行有效控制就成為影響系統(tǒng)性能的關(guān)鍵。最后的試驗結(jié)果表明,F(xiàn)PGA是能夠勝任這一任務(wù)的。 2 DDR SDRAM的工作方式 在DDR SDRAM能夠被存取數(shù)據(jù)之前,需要先對其初始化。該初始化流程是預(yù)先定義好的。不正確的操作將導(dǎo)致無法預(yù)料的結(jié)果。初始化的過程中將設(shè)置DDR SDRAM的普通模式寄存器和擴(kuò)展模式寄存器,用來制定DDR SDRAM的工作方式,這些設(shè)置包括突發(fā)長度、突發(fā)類型、CAS潛伏期和工作模式以及擴(kuò)展模式寄存器中的對DDR SDRAM內(nèi)部DLL的使能與輸出驅(qū)動能力的的設(shè)置。模式寄存器可以被再編程,這時需要DDR SDRAM的各個區(qū)(bank)處于空閑狀態(tài),從而改變存儲器的工作模式。如果操作正確,對模式寄存器的再編程不會改變存儲器內(nèi)存儲的數(shù)據(jù)。 初始化完全之后,DDR SDRAM便進(jìn)入正常的工作狀態(tài),此時便可對存儲器進(jìn)行讀寫和刷新。DDR SDRAM在一對差分時鐘(CLK與CLKn;CLK的上升沿與CLKn的下降沿的交點(diǎn)被認(rèn)為是CLK的上升沿)的控制下工作。命令(地址和控制信號)在每個時鐘(CLK)的上升沿被觸發(fā)。隨著數(shù)據(jù)一起傳送的還包括一個雙向的數(shù)據(jù)選通信號,接收方通過該信號來接收數(shù)據(jù)。DQS作為選通信號在讀周期中由DDR SDRAM來產(chǎn)生,寫周期中由存儲器控制器來產(chǎn)生。該選通信號與數(shù)據(jù)相關(guān),其作為類似于一個獨(dú)立的時鐘,因此也需要滿足相應(yīng)的時序要求。讀周期中,DQS與數(shù)據(jù)是邊沿對齊的;寫周期中,DQS與數(shù)據(jù)是中心對齊的。存儲器輸入的數(shù)據(jù)在DQS的兩個沿都觸發(fā),輸出的數(shù)據(jù)也是以DQS的兩個沿作為參考,同時還要以時鐘CLK的兩個沿作為參考。不單單以CK邊沿為參考么?因此,由于接口在時鐘的兩個沿的觸發(fā)下工作。其數(shù)據(jù)寬度(n)是存儲器數(shù)據(jù)寬度(2n)的一半。圖2描述了DDR SDRAM的工作方式。 對DDR SDRAM的讀和寫操作是基于突發(fā)的:從一個選定的地址單元開始,連續(xù)存取設(shè)置好長度的地址單元。該長度就是所謂的突發(fā)長度。DDR SDRAM提供的可編程的讀或?qū)懙耐话l(fā)長度為2,4或8。數(shù)據(jù)的存取以一個激活命令(ACTIVE command,RAS_n low)開始,接著便是讀(CAS_n low)或?qū)懀–AS_n low and WE_n low)命令。與激活命令一起被觸發(fā)的地址位用來選擇將要存取的區(qū)(bank)和頁(或行);與讀或?qū)懨钜黄鹩|發(fā)的地址位用來選擇突發(fā)存取的起始列單元。使用控制器讀取DDR SDRAM的仿真波形示意圖如圖2所示。讀命令被觸發(fā)后,數(shù)據(jù)將在1.53個時鐘周期之后觸發(fā)在數(shù)據(jù)總線上。這個延遲就是所謂的CAS潛伏期(CL, CAS latency),即從DRAM內(nèi)核讀出數(shù)據(jù)到數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上所需要的時間 。CAS潛伏期的大小與SDRAM的速度和存儲器的時鐘頻率有關(guān)。 當(dāng)要存取一個不同行的地址單元時,需要通過一個預(yù)充電(PRECHARGE)操作關(guān)閉當(dāng)前行。自動刷新(AUTOREFRESH)命令用來周期性地刷新DDR SDRAM,以保持其內(nèi)部的數(shù)據(jù)不丟失。 3 DDR SDRAM控制器的設(shè)計 DDR SDRAM控制器的功能就是初始化DDR SDRAM;將DDR SDRAM復(fù)雜的讀寫時序轉(zhuǎn)化為用戶方簡單的讀寫時序,以及將DDR SDRAM接口的雙時鐘沿數(shù)據(jù)轉(zhuǎn)換為用戶方的單時鐘沿數(shù)據(jù),使用戶像操作普通的RAM一樣控制DDR SDRAM;同時,控制器還要產(chǎn)生周期性的刷新命令來維持DDR SDRAM內(nèi)的數(shù)據(jù)而不需要用戶的干預(yù)。 3.1 DDR SDRAM控制器的控制流程 DDR SDRAM提供了多種命令,整個控制狀態(tài)機(jī)非常復(fù)雜。但很多應(yīng)用場合中,并不需要用到所有的命令我們需要實現(xiàn)哪些命令呢?,因此為了簡化設(shè)計,但同時又兼顧盡可能多的應(yīng)用場合,在控制器的設(shè)計中制定了如下幾種功能:DDR SDRAM的初始化、可變長度的突發(fā)讀寫,自動刷新功能,預(yù)充電以及模式寄存器的重置(reload)。圖3是控制器整個狀態(tài)轉(zhuǎn)移圖。 系統(tǒng)上電后,DDR SDRAM處于空閑狀態(tài)(Idle),在對存儲器進(jìn)行讀寫操作之前,需要先對其進(jìn)行初始化。初始化的過程中,將設(shè)置突發(fā)長度,突發(fā)類型,CAS潛伏期等參數(shù)。DDR SDRAM的初始化有一個固定的步驟,錯誤的操作將導(dǎo)致DDR SDRAM進(jìn)入不確定狀態(tài)。在控制器中使用了一個專門的初始化狀態(tài)機(jī)來對DDR SDRAM進(jìn)行初始化。 初始化完之后便可對DDR SDRAM進(jìn)行讀、寫或其他操作。在執(zhí)行讀(寫)命令之前,先要激活(Active)將要讀(寫)的行,之后便可對該行進(jìn)行突發(fā)讀(寫),在控制器的設(shè)計中,所有的讀寫命令都是不帶預(yù)充電的,因此,某一行被激活之后將一直處于激活狀態(tài),直到用戶發(fā)送突發(fā)終止命令,此時控制器將自動產(chǎn)生一個預(yù)充電命令來關(guān)閉當(dāng)前行。這樣,某一行被激活之后用戶便可進(jìn)行連續(xù)的突發(fā)讀(寫)操作,從而節(jié)省了每次突發(fā)讀寫所需要的激活時間,提高了系統(tǒng)的數(shù)據(jù)吞吐率。 控制器同時提供了一個自動刷新(auto refresh)計數(shù)器,每隔一定的時間間隔(即DDR SDRAM的刷新周期,根據(jù)所使用的存儲器而定,可在控制器中設(shè)定),便會產(chǎn)生一個刷新請求,如果此時DDR SDRAM處于空閑狀態(tài),控制器便會發(fā)生一個自動刷新命令來對DDR SDRAM進(jìn)行刷新;如果此時DDR SDRAM正在進(jìn)行讀(寫)操作,控制器將會等到當(dāng)前的讀(寫)操作完全之后再發(fā)送新命令。在刷新過程中,用戶如果有讀(寫)請求,控制器將在當(dāng)前的刷新周期完成之后再響應(yīng)用戶的請求。 正常的操作過程中,當(dāng)DDR SDRAM處于空閑狀態(tài)時,用戶還可以根據(jù)實際的需要來重置存儲器的控制寄存器,重新設(shè)定存儲器的突發(fā)長度、突發(fā)類型、CAS潛伏期等參數(shù)。 3.2 控制器數(shù)據(jù)通道的結(jié)構(gòu) 圖4是DDR SDRAM控制器數(shù)據(jù)通道的結(jié)構(gòu)圖。圖4中完整的顯示了控制器讀和寫數(shù)據(jù)通道上DQ與DQS的結(jié)構(gòu)關(guān)系。前面提到過,Cyclone系列FPGA沒有帶DDR觸發(fā)器的輸入輸出單元什么結(jié)構(gòu)才是DDR觸發(fā)器輸入輸出單元?是不是在時鐘的兩個邊沿都對D觸發(fā)器進(jìn)行觸發(fā)來得到類似的雙倍速率的結(jié)構(gòu)?如圖中所示的兩個D觸發(fā)器,第一個是用clk_90,第二個是用clk,這樣的話,輸入的數(shù)據(jù)對于每一個時鐘來說都只是保持了半個周期,從而達(dá)到一個時鐘周期傳送兩次數(shù)據(jù)的目的?,但完全可以用靠近輸入輸出引腳處的邏輯資源來實現(xiàn)DDR觸發(fā)器,而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版人防工程施工合作合同版B版
- 2025年度企業(yè)健康管理與職工福利合同3篇
- 2024年簡約室內(nèi)裝潢協(xié)議
- 2024年標(biāo)準(zhǔn)企業(yè)車輛租賃合同模板一
- 2024年長途客運(yùn)與貨運(yùn)聯(lián)運(yùn)合同3篇
- 企業(yè)信息安全5篇范例
- 2024年車位買賣與租賃的綜合合同
- 2024薪資保密制度與員工職業(yè)發(fā)展及培訓(xùn)計劃合同3篇
- 榆林職業(yè)技術(shù)學(xué)院《JavaEE編程技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 華南理工大學(xué)《機(jī)器人傳感器及其信息融合技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025寒假散學(xué)典禮(休業(yè)式)上校長精彩講話:以董宇輝的創(chuàng)新、羅振宇的堅持、馬龍的熱愛啟迪未來
- 安徽省示范高中2024-2025學(xué)年高一(上)期末綜合測試物理試卷(含答案)
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 售樓部保安管理培訓(xùn)
- 2024年高壓電工證理論考試題庫(含答案)
- 倉儲培訓(xùn)課件模板
- 2023-2024學(xué)年仁愛版七上期末考試英語(試題)
- 2024年醫(yī)院培訓(xùn)計劃
- GB/T 44914-2024和田玉分級
- 2023年湖南出版中南傳媒招聘筆試真題
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
評論
0/150
提交評論