當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]DDR SDRAM在嵌入式系統(tǒng)中的應(yīng)用

  :給出一種通過(guò)FPGA控制將DDR SDRAM應(yīng)用于嵌入式系統(tǒng)的方法。分析DDR SDRAM的工作方式,對(duì)控制囂的控制流程進(jìn)行詳細(xì)介紹,并給出控制流程圖;分析專(zhuān)門(mén)4qN-Ahera公司Cyclone系列FPGA來(lái)實(shí)現(xiàn)存儲(chǔ)囂接口的數(shù)據(jù)通道的結(jié)構(gòu)。最后,給出控制器在Cyclone EPlC6Q240C6中的實(shí)現(xiàn)結(jié)果。

關(guān)鍵詞DDR SDRAM FPGA嵌入式系統(tǒng)

 

 

    很多嵌入式系統(tǒng),特別是應(yīng)用于圖像處理與高速數(shù)據(jù)采集等場(chǎng)合的嵌入式系統(tǒng),都需要高速緩存大量的數(shù)據(jù)。DDR(Double Data Rate,雙數(shù)據(jù)速率)SDRAM由于其速度快、容量大,而且價(jià)格便宜,因此能夠很好地滿足上述場(chǎng)合對(duì)大量數(shù)據(jù)緩存的需求。但DDR SDRAM的接口不能直接與現(xiàn)今的微處理器和DSP的存儲(chǔ)器接口相連,需要在其間插入控制器實(shí)現(xiàn)微處理器或DSP對(duì)存儲(chǔ)器的控制。

   
     
隨看密度與性能的不斷提升,現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)已被廣泛應(yīng)用于各種嵌入式系統(tǒng)中。而且,現(xiàn)在很多的FPGAs都提供了針對(duì)DDR SDRAM的接口特性:其輸入輸出引腳都與SSTLII電氣特性相兼容,內(nèi)部提供了DDR觸發(fā)器、鎖相環(huán)等硬件資源。使用這些特性,可以更加容易地設(shè)計(jì)性能可靠的高速DDR SDRAM存儲(chǔ)器控制器。

 

1 DDR SDRAM在嵌入式系統(tǒng)中的應(yīng)用

1DDR 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正好能滿足這一要求。此時(shí),FPGA是否能對(duì)DDR SDRAM進(jìn)行有效控制就成為影響系統(tǒng)性能的關(guān)鍵。最后的試驗(yàn)結(jié)果表明,FPGA是能夠勝任這一任務(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í)鐘(CLKCLKn;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í)鐘,因此也需要滿足相應(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)度為248。數(shù)據(jù)的存取以一個(gè)激活命令(ACTlVE commandRAS_n low)開(kāi)始,接著便是讀(CAS_n low)或?qū)?/SPAN>(CAS_n low and WE_n low)命令。與激活命令一起被觸發(fā)的地址位用來(lái)選擇將要存取的區(qū)(bank)和頁(yè)(或行)}與讀或?qū)懨钜黄鹩|發(fā)的地址位用來(lái)選擇突發(fā)存取的起始列單元。使用控制器讀取DDR SDRAM的仿真波形示意圖如圖2所示。讀命令被觸發(fā)后,數(shù)據(jù)將在153個(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)的數(shù)據(jù)而不需要用戶(hù)的干預(yù)。


3.1  DDR SDRAM
控制器的控制流程

DDR SDRAM提供了多種命令,整個(gè)控制狀態(tài)機(jī)非常復(fù)雜。但很多應(yīng)用場(chǎng)合中,并不需要用到所有的命令,因此為了簡(jiǎn)化設(shè)計(jì),但同時(shí)又兼顧盡可能多的應(yīng)用場(chǎng)合,在控制器的設(shè)計(jì)中制定了如下幾種功能:DDR SDRAM的初始化,可變長(zhǎng)度的突發(fā)讀寫(xiě),自動(dòng)刷新功能,預(yù)充電以及模式寄存器的重置(reload)。圖3是控制器整個(gè)狀態(tài)轉(zhuǎn)移圖。

系統(tǒng)上電后,DDR SDRAM處于空閑狀態(tài)(Idle),在對(duì)存儲(chǔ)器進(jìn)行讀寫(xiě)操作之前,需要先對(duì)其進(jìn)行初始化。初始化的過(guò)程中,將設(shè)置突發(fā)長(zhǎng)度,突發(fā)類(lèi)型,CAS潛伏期等參數(shù)。DDR SDRAM的初始化有一個(gè)固定的步驟,錯(cuò)誤的操作將導(dǎo)致DDR SDRAM進(jìn)入不確定狀態(tài)。在控制器中使用了一個(gè)專(zhuān)門(mén)的初始化狀態(tài)機(jī)來(lái)對(duì)DDR SDRAM進(jìn)行初始化。


    初始化完之后便可對(duì)
DDR SDRAM進(jìn)行讀、寫(xiě)或其他操作。在執(zhí)行讀(寫(xiě))命令之前,先要激活(Active)將要讀(寫(xiě))的行,之后便可對(duì)該行進(jìn)行突發(fā)讀(寫(xiě))。在控制器的設(shè)計(jì)中,所有的讀寫(xiě)命令都是不帶預(yù)充電的,因此,某一行被激活之后將一直處于激活狀態(tài),直到用戶(hù)發(fā)送突發(fā)終止命令,此時(shí)控制器將自動(dòng)產(chǎn)生一個(gè)預(yù)充電命令來(lái)關(guān)閉當(dāng)前行。這樣,某一行被激活之后用戶(hù)便可進(jìn)行連續(xù)的突發(fā)讀(寫(xiě))操作,從而節(jié)省了每次突發(fā)讀寫(xiě)所需要的激活時(shí)間,提高了系統(tǒng)的數(shù)據(jù)吞吐率。


    控制器同時(shí)提供了一個(gè)自動(dòng)刷新
(auto refresh)計(jì)數(shù)器,每隔一定的時(shí)間間隔(DDR SDRAM的刷新周期,根據(jù)所使用的存儲(chǔ)器而定,可在控制器中設(shè)定),便會(huì)產(chǎn)生一個(gè)刷新請(qǐng)求。如果此時(shí)DlDR SDRAM處于空閑狀態(tài),控制器便會(huì)發(fā)出一個(gè)自動(dòng)刷新命令來(lái)對(duì)DDR SDRAM進(jìn)行刷新;如果此時(shí)DDR SDRAM正在進(jìn)行讀(寫(xiě))操作,控制器將會(huì)等到當(dāng)前的讀(寫(xiě))操作完成之后再發(fā)送刷新命令。在刷新過(guò)程中,用戶(hù)如果有讀(寫(xiě))請(qǐng)求,控制器將在當(dāng)前刷新周期完成之后再響應(yīng)用戶(hù)的請(qǐng)求。


    正常的操作過(guò)程中,當(dāng)
DDR SDRAM處于空閑狀態(tài)時(shí),用戶(hù)還可以根據(jù)實(shí)際的需要來(lái)重置存儲(chǔ)器的控制寄存器,重新設(shè)定存儲(chǔ)器的突發(fā)長(zhǎng)度、突發(fā)類(lèi)型、CAS潛伏期等參數(shù)。


3.2
控制器數(shù)據(jù)通道的結(jié)構(gòu)

4DDR SDRAM控制器數(shù)據(jù)通道的結(jié)構(gòu)圖。

    圖4中完整地顯示了控制器讀和寫(xiě)數(shù)據(jù)通道上DQDQS的結(jié)構(gòu)關(guān)系。前面提到過(guò),Cyclone系列FPGA沒(méi)有帶DDR觸發(fā)器的輸入輸出單元,但完全可以用靠近輸入輸出引腳處的邏輯資源來(lái)實(shí)現(xiàn)DDR觸發(fā)器,而且最后的結(jié)果表明,這種實(shí)現(xiàn)方式可以滿足時(shí)序要求。


    從圖
4中也可以看到,控制器內(nèi)部有兩個(gè)時(shí)鐘,clkclk_90,兩者之間的相位差為90°。圖中將面向存儲(chǔ)器的時(shí)鐘命名為clk。它是clk_90時(shí)鐘的90°相位延遲后的信號(hào)。clk_90作為系統(tǒng)時(shí)鐘來(lái)驅(qū)動(dòng)整個(gè)FPGA,clk時(shí)鐘驅(qū)動(dòng)存儲(chǔ)器接口電路。


3.2.1  DQS
相位延遲電路

在讀周期中,DDR SDRAM輸出的DQDQS信號(hào)是邊沿對(duì)齊的。為了使用DQS作為選通信號(hào)來(lái)捕獲DQDQS信號(hào)需要在FPGA內(nèi)部相對(duì)于DQ信號(hào)作90°的相位延遲。但是這個(gè)延遲不能使用鎖相環(huán)(PLL)來(lái)完成,因?yàn)?/SPAN>DQS信號(hào)不具有時(shí)鐘的特性。因此,需要在DQS和讀數(shù)據(jù)時(shí)鐘之間加一個(gè)延遲鏈(delay chain),如圖4中所示。


    前面提到過(guò),
Cyclone系列FPGA在其DQS輸入引腳上有一個(gè)專(zhuān)用的延遲單元,用來(lái)使DQS相對(duì)于DQ信號(hào)產(chǎn)生一個(gè)90°的相移。因此,可以使用該硬核資源來(lái)完成對(duì)DQS的相移,而不必通過(guò)內(nèi)部的邏輯來(lái)搭建這樣一個(gè)延遲電路。從而可以獲得更好的時(shí)序性能。


3.2.2
再同步

讀周期中,從DDR SDRAM來(lái)的數(shù)據(jù)信號(hào)首先通過(guò)延遲后的DQS鎖存到DDR觸發(fā)器中。為了在FPGA內(nèi)部能夠使用該數(shù)據(jù),還要將其同步到FPGA內(nèi)部的時(shí)鐘域上,這個(gè)過(guò)程稱(chēng)為再同步(resynchronization)。如圖4所示,對(duì)于前一級(jí)DQS延遲后的信號(hào)鎖存的數(shù)據(jù)再通過(guò)clk-90同步之后才送到內(nèi)部數(shù)據(jù)總線上。


    在寫(xiě)周期中,
DQSDQ必須是中心對(duì)齊的(centerahgn)。我們用clk_90時(shí)鐘觸發(fā)的DDR觸發(fā)器產(chǎn)生DQS信號(hào),因此,為了滿足時(shí)序要求,從內(nèi)部來(lái)的數(shù)據(jù)通過(guò)clk_90時(shí)鐘鎖存后再由clk觸發(fā)的DDR觸發(fā)器將其輸出,從而保證DQsDQ是中心對(duì)齊的。

 

4  控制器的實(shí)現(xiàn)

該控制器針對(duì)16位寬512 MbDDR SDRAM設(shè)計(jì),在Altera公司的Quartus II42環(huán)境中采用Cyclone系列的EPlC6Q2410C6來(lái)實(shí)現(xiàn),總共使用了729個(gè)邏輯單元,占FPGA可編程邏輯資源的12%,此外還使用了1個(gè)鎖相環(huán)(PLL)。最后,在Modelsim 58中對(duì)整個(gè)工程進(jìn)行布局一布線后仿真(Post-P1ace&RouteSimulation),采用的模型為Micron公司的512 MbDDR SDRAMMT46V32M16的仿真模型,時(shí)鐘為133 MHz,圖2是控制器讀取DDR SDRAM的時(shí)序仿真波形。

 

5  結(jié) 

本文給出了一種通過(guò)FPGA控制將DDR SDRAM應(yīng)用在嵌入式系統(tǒng)中的方法。設(shè)計(jì)中采用Altera公司性?xún)r(jià)比較高的Cyclone系列FPGA,并充分利用片內(nèi)提供的鎖相環(huán)、DDR觸發(fā)器以及DQS延遲鏈等硬件資源,占用的邏輯資源少。該設(shè)計(jì)可以很容易地移植到Altera公司其他系列的FPGA上,經(jīng)過(guò)適當(dāng)?shù)男薷倪€可以用來(lái)控制64位寬的DIMM型的DDR SDRAM,因此可以很好地應(yīng)用在需求高速度、大容量存儲(chǔ)器的場(chǎng)合中。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉