DDRSDRAM在嵌入式系統(tǒng)中的應(yīng)用方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言 很多嵌入式系統(tǒng),特別是應(yīng)用于圖像處理與高速數(shù)據(jù)采集等場(chǎng)合的嵌入式系統(tǒng),都需要高速緩存大量的數(shù)據(jù)。DDR(Double Data Rate,雙數(shù)據(jù)速率)SDRAM由于其速度快、容量大,而且價(jià)格便宜,因此能夠很好地滿(mǎn)足上述場(chǎng)合對(duì)大量數(shù)據(jù)緩存的需求。但DDR SDRAM的接口不能直接與現(xiàn)今的微處理器和DSP的存儲(chǔ)器接口相連,需要在其間插入控制器實(shí)現(xiàn)微處理器或DSP對(duì)存儲(chǔ)器的控制?! ‰S看密度與性能的不斷提升,現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)已被廣泛應(yīng)用于各種嵌入 式系統(tǒng)中。而且,現(xiàn)在很多的FPGAs都提供了針對(duì)DDR SDRAM的接口特性:其輸入輸出引腳都與SSTL一II電氣特性相兼容,內(nèi)部提供了DDR觸發(fā)器、鎖相環(huán)等硬件資源。使用這些特性,可以更加容易地設(shè)計(jì)性能可靠的高速DDR SDRAM存儲(chǔ)器控制器?!? DDR SDRAM在嵌入式系統(tǒng)中的應(yīng)用 圖1是DDR SDRAM在高速信號(hào)源系統(tǒng)中的應(yīng)用實(shí)例。 在該系統(tǒng)中,由FPGA完成各模塊之間的接口控制。FPGA接收從前端傳送過(guò)來(lái)的高速數(shù)字信號(hào),并將其存儲(chǔ)在DDR SDRAM中;13SP通過(guò)FPGA讀取DDR中的數(shù)據(jù).處理后再送回到DDR SDRAM,最后由FPGA負(fù)責(zé)將數(shù)據(jù)分兩路輸出。
該系統(tǒng)對(duì)存儲(chǔ)器的要求是能夠高速地存儲(chǔ)大量的數(shù)據(jù),DDR SDRAM正好能滿(mǎn)足這一要求。此時(shí),F(xiàn)PGA是否能對(duì)DDR SDRAM進(jìn)行有效控制就成為影響系統(tǒng)性能的關(guān)鍵。最后的試驗(yàn)結(jié)果表明,F(xiàn)PGA是能夠勝任這一任務(wù)的。 2 DDR SDRAM的工作方式 在DDR SDRAM能夠被存取數(shù)據(jù)之前,需要先對(duì)其初始化。該初始化流程是預(yù)先定義好的,不正確的操作將導(dǎo)致無(wú)法預(yù)料的結(jié)果。初始化的過(guò)程中將設(shè)置DDRSDRAM的普通模式寄存器和擴(kuò)展模式寄存器,用來(lái)制定DDR SDRAM的工作方式。這些設(shè)置包括突發(fā)長(zhǎng)度、突發(fā)類(lèi)型、CAS潛伏期和工作模式以及擴(kuò)展模式寄存器中的對(duì)DDR SDRAM內(nèi)部DLL的使能與輸出驅(qū)動(dòng)能力的設(shè)置。模式寄存器可以被再編程,這時(shí)需要DDRSDRAM的各個(gè)區(qū)(bank)處于空閑狀態(tài),從而改變存儲(chǔ)器的工作模式。如果操作正確,對(duì)模式寄存器的再編程不會(huì)改變存儲(chǔ)器內(nèi)存儲(chǔ)的數(shù)據(jù)。 初始化完成之后,DDR SDRAM便進(jìn)入正常的工作狀態(tài),此時(shí)便可對(duì)存儲(chǔ)器進(jìn)行讀寫(xiě)和刷新。DDR SDRAM在一對(duì)差分時(shí)鐘(CLK與CLKn;CLK的上升沿與CLKn的下降沿的交點(diǎn)被認(rèn)為是CLK的上升沿)的控制下工作。命令(地址和控制信號(hào))在每個(gè)時(shí)鐘(CLK)的上升沿被觸發(fā)。隨著數(shù)據(jù)一起傳送的還包括一個(gè)雙向的數(shù)據(jù)選通信號(hào),接收方通過(guò)該信號(hào)來(lái)接收數(shù)據(jù)。DQS作為選通信號(hào)在讀周期中由DDR SDRAM來(lái)產(chǎn)生,在寫(xiě)周期中由存儲(chǔ)器控制器來(lái)產(chǎn)生。該選通信號(hào)與數(shù)據(jù)相關(guān),其作用類(lèi)似于一個(gè)獨(dú)立的時(shí)鐘,因此也需要滿(mǎn)足相應(yīng)的時(shí)序要求。讀周期中,DQS與數(shù)據(jù)是邊沿對(duì)齊的;寫(xiě)周期中,DQS與數(shù)據(jù)是中心對(duì)齊的。存儲(chǔ)器輸入的數(shù)據(jù)在DQS的兩個(gè)沿都觸發(fā).輸出的數(shù)據(jù)也是以DQS的兩個(gè)沿作為參考,同時(shí)還要以時(shí)鐘CLK的兩個(gè)沿作為參考。因此,由于接口在時(shí)鐘的兩個(gè)沿的觸發(fā)下工作,其數(shù)據(jù)寬度(n)是存儲(chǔ)器數(shù)據(jù)寬度(2n)的一半。圖2描述了DDR SDRAM的工作方式?! ?duì)DDR SDRAM的讀和寫(xiě)操作是基于突發(fā)的:從一個(gè)選定的地址單元開(kāi)始,連續(xù)存取設(shè)置好長(zhǎng)度的地址單元。該長(zhǎng)度就是所謂的突發(fā)長(zhǎng)度。DDR SDRAM提供的可編程的讀或?qū)懙耐话l(fā)長(zhǎng)度為2,4或8。數(shù)據(jù)的存取以一個(gè)激活命令(ACTlVE command,RAS_n low)開(kāi)始,接著便是讀(CAS_n low)或?qū)?CAS_n low and WE_n low)命令。與激活命令一起被觸發(fā)的地址位用來(lái)選擇將要存取的區(qū)(bank)和頁(yè)(或行)}與讀或?qū)懨钜黄鹩|發(fā)的地址位用來(lái)選擇突發(fā)存取的起始列單元。使用控制器讀取DDR SDRAM的仿真波形示意圖如圖2所示。讀命令被觸發(fā)后,數(shù)據(jù)將在1.5~3個(gè)時(shí)鐘周期之后出現(xiàn)在數(shù)據(jù)總線上。這個(gè)延遲就是所謂的CAS潛伏期(CAS latency),即從DRAM內(nèi)核讀出數(shù)據(jù)到數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上所需要的時(shí)間。CAS潛伏期的大小與SDRAM的速度和存儲(chǔ)器的時(shí)鐘頻率有關(guān)。
當(dāng)要存取一個(gè)不同行的地址單元時(shí),需要通過(guò)一個(gè)預(yù)充電(PRECHARGE)操作關(guān)閉當(dāng)前行。自動(dòng)刷新(AUTO-REFRESH)命令用來(lái)周期性地刷新DDRSDRAM,以保持其內(nèi)部的數(shù)據(jù)不丟失。
3 DDR SDRAM控制器的設(shè)計(jì) DDR SDRAM控制器的功能就是初始化DDRSDRAM;將DDR SDRAM復(fù)雜的讀寫(xiě)時(shí)序轉(zhuǎn)化為用戶(hù)方簡(jiǎn)單的讀寫(xiě)時(shí)序,以及將DDR SDRAM接口的雙時(shí)鐘沿?cái)?shù)據(jù)轉(zhuǎn)換為用戶(hù)方的單時(shí)鐘沿?cái)?shù)據(jù),使用戶(hù)像操作普通的RAM一樣控制DDR SDRAM;同時(shí),控制器還要產(chǎn)生周期性的刷新命令來(lái)維持DDR SDRAM內(nèi)的