基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)_第1頁(yè)
基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)_第2頁(yè)
基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)_第3頁(yè)
基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)_第4頁(yè)
基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)0 引言隨著電子技術(shù)在工業(yè)、醫(yī)療、商業(yè)等領(lǐng)域的發(fā)展,人們對(duì)數(shù)據(jù)傳輸率的要求越來(lái)越高,傳統(tǒng)的單片機(jī)早已不能滿(mǎn)足這種高速數(shù)據(jù)傳輸?shù)囊?。與此同時(shí),可編程的邏輯器件FPGA/CPLD以其強(qiáng)大的功能,開(kāi)發(fā)過(guò)程投資小、周期短,可反復(fù)編程修改,開(kāi)發(fā)工具智能化等特點(diǎn),成為當(dāng)今硬件設(shè)計(jì)的潮流;相比而言,F(xiàn)PGA即現(xiàn)場(chǎng)可編程門(mén)陣列,它的集成度高,可完成極其復(fù)雜的時(shí)序與組合邏輯電路功能,更適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域1。SDRAM即:同步動(dòng)態(tài)隨即存儲(chǔ)器,與傳統(tǒng)的DRAM有很大區(qū)別。它可以與系統(tǒng)總線(xiàn)以同頻率工作,用同一個(gè)CPU時(shí)鐘周期即可完成數(shù)據(jù)的訪(fǎng)問(wèn)和刷新

2、,進(jìn)而大大的提高了數(shù)據(jù)傳輸率,其速度遠(yuǎn)大于DRAM。因而,SDRAM常作為數(shù)據(jù)緩存應(yīng)用于高速數(shù)據(jù)傳輸系統(tǒng)中。目前,許多嵌入式設(shè)備的大容量、高速度存儲(chǔ)器都采用SDRAM來(lái)實(shí)現(xiàn),而且大多都是用專(zhuān)用芯片完成其控制電路,這不但提高了設(shè)計(jì)成本,而且使系統(tǒng)的硬件電路變得復(fù)雜。隨著FPGA在嵌入式系統(tǒng)中的廣泛應(yīng)用,如果我們能夠結(jié)合具體的需要,利用FPGA來(lái)設(shè)計(jì)自己的SDRAM控制器,這些問(wèn)題就迎刃而解了。然而,SDRAM的控制邏輯復(fù)雜、時(shí)序要求嚴(yán)格,常常困擾設(shè)計(jì)人員。有很多文章2,3,4,5詳細(xì)的介紹了SDRAM的工作原理、控制時(shí)序和指令特點(diǎn),以及基于FPGA的SDRAM控制器的實(shí)現(xiàn)方法,但是并沒(méi)有詳細(xì)的給

3、出控制器內(nèi)部結(jié)構(gòu)和指令時(shí)序的控制問(wèn)題。因此。本文將介紹一種基于FPGA的通用SDRAM控制器,并著重介紹設(shè)計(jì)方案中各模塊的功能和實(shí)現(xiàn)方法。該控制器用VHDL語(yǔ)言程序?qū)崿F(xiàn),完成了SDRAM指令狀態(tài)轉(zhuǎn)換、信號(hào)仲裁判斷,并巧妙的用三個(gè)移位寄存器解決了指令的邏輯和時(shí)序的問(wèn)題。1. SDRAM簡(jiǎn)介SDRAM具有空間存儲(chǔ)量大、讀寫(xiě)速度快、價(jià)格相對(duì)便宜的特點(diǎn)。但其控制邏輯復(fù)雜,需要周期性刷新操作、行列管理、不同延時(shí)和命令序列等。1.1 SDRAM地址結(jié)構(gòu)SDRAM的存儲(chǔ)地址分為頁(yè)(bank)地址,行(row)地址和列(column)地址。例如一個(gè)8MByte的SDRAM,被分為4個(gè)bank,即1個(gè)bank為

4、2MByte,每個(gè)bank包括12行8列。1.2 SDRAM的指令SDRAM的一系列指令如表1所示,每個(gè)指令最終都是通過(guò)控制RAS、CAS、WE信號(hào)來(lái)實(shí)現(xiàn)。通常對(duì)SDRAM的操作過(guò)程如下:表1 SDRAM命令(1) SDRAM初始化操作:上電后至少等待100ns,然后至少執(zhí)行1條空操作;對(duì)所有頁(yè)執(zhí)行預(yù)充電操作;向各頁(yè)發(fā)出兩條刷新操作指令;最后執(zhí)行SDRAM工作模式的設(shè)定LMR命令用來(lái)配置SDRAM工作模式寄存器,SDRAM工作寄存器如表2所示。其中A11A10是用戶(hù)保留位;A9用來(lái)配置寫(xiě)突發(fā)模式;A8A7是操作模式,通常為“00”,代表標(biāo)準(zhǔn)操作模式;A6A4設(shè)置CAS延遲時(shí)間;A3決定突發(fā)操作

5、模式是順序還是間隔型;最后的三位A2A0用來(lái)配置突發(fā)長(zhǎng)度。表2 SDRAM工作寄存器A11A10A9A8A7A6A5A4A3A2A1A0ReserveWrite burst modeOperating modeLatency modeBurst typeBurst length(2) SDRAM讀、寫(xiě)操作:根據(jù)實(shí)際應(yīng)用的需要,發(fā)出讀、寫(xiě)指令。SDRAM可實(shí)現(xiàn)突發(fā)式讀寫(xiě),支持的突發(fā)長(zhǎng)度可配置為1個(gè)、2個(gè)、4個(gè)、8個(gè)數(shù)據(jù)周期或者頁(yè)模式。并且突發(fā)的模式可以配置為順序或者間隔型。對(duì)SDRAM進(jìn)行訪(fǎng)問(wèn)的最主要操作就是讀RD和寫(xiě)WR操作。SDRAM在進(jìn)行讀寫(xiě)操作時(shí),必須要先進(jìn)行頁(yè)激活A(yù)CT操作,以保證存儲(chǔ)

6、單元是打開(kāi)的,以便從中讀取地址或者寫(xiě)入地址,關(guān)閉存儲(chǔ)單元通過(guò)預(yù)充電PHC命令實(shí)現(xiàn)。在進(jìn)行寫(xiě)操作時(shí),內(nèi)部的列地址和數(shù)據(jù)就會(huì)被寄存;進(jìn)行讀操作時(shí),內(nèi)部地址被寄存,等待CAS 延遲時(shí)間(通常為13個(gè)時(shí)鐘周期)后,讀出的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線(xiàn)上,具體時(shí)序詳見(jiàn)SDRAM數(shù)據(jù)手冊(cè),此處不再贅述。(3) 操作終止:當(dāng)SDRAM接收到讀、寫(xiě)指令后,開(kāi)始進(jìn)行順次的讀寫(xiě)操作,直到達(dá)到突發(fā)長(zhǎng)度或者突發(fā)終止指令BT出現(xiàn)。2 SDRAM控制器方案 SDRAM控制器【6】針對(duì)SDRAM的指令操作特點(diǎn),為SDRAM提供同步命令接口和時(shí)序邏輯控制,下面將以ALTERA公司的Cyclone系列FPGA為例,主機(jī)系統(tǒng)時(shí)鐘為100MH

7、z,使用三星公司的K4S641632E,8MByte SDRAM【7】,介紹SDRAM控制器的具體設(shè)計(jì)方法。圖1為SDRAM控制器的接口原理圖。圖1 SDRAM控制器接口原理圖接口信號(hào)介紹:(1) 與主機(jī)接口信號(hào): CLK:系統(tǒng)時(shí)鐘信號(hào); RESET::系統(tǒng)復(fù)位信號(hào);CMD2:0:譯碼指令,如表3所示;CMDACK:指令應(yīng)答信號(hào),通知主機(jī)命令已被SDRAM執(zhí)行;ADDR:地址線(xiàn),根據(jù)具體情況確定位數(shù),本例中為22位,A21、A20代表頁(yè)地址BA1,BA0;A19A8代表行地址;A7A0代表列地址;DATAIN/DATAOU:輸入、輸出數(shù)據(jù)總線(xiàn);DM:數(shù)據(jù)掩碼;(2) 與SDRAM接口信號(hào):SA

8、DDR:12位地址線(xiàn),在讀、寫(xiě)操作時(shí),地址線(xiàn)分時(shí)復(fù)用為行地址和列地址;BA:頁(yè)地址,BA0,BA1;CS:片選信號(hào);CKE:時(shí)鐘使能信號(hào);RAS、CAS、WE:命令控制信號(hào);DQM:SDRAM數(shù)據(jù)掩碼;DQ:雙向數(shù)據(jù)線(xiàn);SDRAM控制器作為頂層模塊,由3個(gè)主要模塊組成:接口控制模塊、命令生成模塊、數(shù)據(jù)路徑模塊。下面將詳細(xì)的介紹各個(gè)模塊的功能和關(guān)鍵設(shè)計(jì)的VHDL實(shí)現(xiàn)方法。表3 CMD命令字2.1 接口控制模塊 接口控制模塊主要實(shí)現(xiàn)的功能包括:將CMD2:0翻譯成接口指令和對(duì)刷新計(jì)數(shù)器的控制,如圖2所示。首先通過(guò)狀態(tài)機(jī)來(lái)完成對(duì)CMD2:0的翻譯,在VHDL程序中聲明一個(gè)用戶(hù)自定義類(lèi)型states,

9、根據(jù)CMD2:0輸入來(lái)決定狀態(tài)的轉(zhuǎn)移,完成對(duì)CMD2:0的解碼,如下所示:type states is(nop,reada,writea,refresh,precharge,load_mode);signal state : states ;case cmd is when 011 = state state=nop; SDRAM需要周期性刷新操作以保持?jǐn)?shù)據(jù),數(shù)據(jù)手冊(cè)中通常會(huì)給出在一定的時(shí)間T內(nèi),SDRAM至少刷新X次,如果用戶(hù)使用頻率為Fr MHz的時(shí)鐘,則刷新周期Tf可以通過(guò)下面的公式計(jì)算出:Tf(T*Fr) / X。例如,本例中數(shù)據(jù)手冊(cè)要求64ms內(nèi)至少刷新4096次,系統(tǒng)時(shí)鐘周期為10

10、0MHz,則刷新周期為(64ms*100MHz)/ 4096,得出結(jié)果等于1562.5,所以至多1562個(gè)時(shí)鐘周期的時(shí)間就必須對(duì)SDRAM刷新一次。刷新控制在程序中通過(guò)一個(gè)計(jì)數(shù)器來(lái)完成,當(dāng)?shù)竭_(dá)規(guī)定的計(jì)數(shù)周期,就向SDRAM發(fā)出REF_REQ刷新請(qǐng)求,直到SDRAM完成刷新操作,發(fā)出REF_ACK刷新應(yīng)答信號(hào),計(jì)數(shù)器才重新賦值開(kāi)始下一次的計(jì)數(shù)。圖2 接口控制模塊2.2 命令生成模塊圖3是命令生成模塊,主要實(shí)現(xiàn)了對(duì)輸入的指令請(qǐng)求進(jìn)行仲裁判斷,并將仲裁后要執(zhí)行的指令解碼成SDRAM需要的RAS、CAS等信號(hào),從而實(shí)現(xiàn)對(duì)SDRAM的控制。圖3 命令生成模塊之所以需要仲裁機(jī)制,是因?yàn)樵谥噶顖?zhí)行之前可能會(huì)

11、發(fā)生以下情況:其它指令和刷新請(qǐng)求同時(shí)到來(lái);刷新請(qǐng)求到來(lái)時(shí),其它指令正在執(zhí)行。仲裁機(jī)制實(shí)現(xiàn)方法如下:(1) SDRAM在每一刻只有一個(gè)指令在執(zhí)行;(2) 先到的指令先執(zhí)行,即:如果刷新請(qǐng)求到來(lái)時(shí),其它命令正在執(zhí)行中,要等到當(dāng)前命令執(zhí)行完成后,才能執(zhí)行刷新指令;(3) 其它指令和刷新請(qǐng)求同時(shí)到來(lái)時(shí)刷新操作先執(zhí)行。經(jīng)過(guò)仲裁判斷后,指令將傳入命令生成器。命令生成器不僅要把指令解碼成可控制SDRAM的信號(hào),同時(shí)還要用三個(gè)移位寄存器對(duì)命令執(zhí)行的延遲時(shí)間進(jìn)行控制。第一個(gè)為指令延時(shí)寄存器,用來(lái)保證SDRAM有充足時(shí)間完成最終指令。例如,如果命令的執(zhí)行需要8各時(shí)鐘周期的時(shí)間,則指令延時(shí)寄存器com_delay的

12、初值設(shè)為“11111111”,同時(shí)聲明一個(gè)內(nèi)部信號(hào)com_done,作為指令執(zhí)行完成的標(biāo)志的。在指令執(zhí)行期間,每一個(gè)時(shí)鐘上升沿到來(lái)時(shí),移位寄存器向右移位一次,com_delay0的移入com_done,同時(shí)“0” 移入最高位com_delay7。當(dāng)com_done為“0”時(shí),就說(shuō)明指令的延遲時(shí)間已到,即通過(guò)com_done的值,就可以判斷當(dāng)前指令是否執(zhí)行完成。要注意的是:移位寄存器的位數(shù)和初值,應(yīng)該根據(jù)SDRAM的數(shù)據(jù)手冊(cè)中命令完成需要的時(shí)間和系統(tǒng)的時(shí)鐘周期來(lái)確定。下面得例程僅供參考。if (do_state=refresh or do_state=reada or do_state=writ

13、ea or do_state=precharge or do_state=load_mode)then command_delay(7 downto 0)=11111111; -移位寄存器初值 command_done=1; else command_done=command_delay(0); -移位操作 command_delay(6 downto 0)= command_delay(7 downto 1); command_delay(7)=0; end if;當(dāng)輸入的指令為writea和reada指令,將引發(fā)一系列指令的執(zhí)行,和其它指令相比需要附加時(shí)間。所以,聲明第二個(gè)移位寄存器rw_

14、shift,來(lái)計(jì)算這兩個(gè)指令的附加時(shí)間,其工作原理和第一個(gè)移位寄存器是一樣的。最后一個(gè)移位寄存器oe_shift用來(lái)為數(shù)據(jù)通道生成oe,即數(shù)據(jù)輸入、輸出使能信號(hào)。對(duì)于非頁(yè)模式的讀寫(xiě)來(lái)說(shuō),oe保持有效的時(shí)間取決于突發(fā)長(zhǎng)度。并且oe有效的起始時(shí)間對(duì)讀操作和寫(xiě)操作時(shí)不同的:讀操作時(shí),oe有效的起始時(shí)間取決于CAS延時(shí)時(shí)間,而對(duì)于寫(xiě)操作時(shí)則在寫(xiě)指令開(kāi)始時(shí)oe就是有效的。 23 數(shù)據(jù)路徑模塊 數(shù)據(jù)路徑模塊主要是在writea和reada命令期間處理數(shù)據(jù)的路徑操作。模塊的結(jié)構(gòu)圖如圖4所示。DQ是雙向數(shù)據(jù)線(xiàn),用來(lái)傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫(xiě)入的數(shù)據(jù)。無(wú)論是數(shù)據(jù)在讀出還是寫(xiě)入時(shí),都是在oe有效,即

15、oe為高電平時(shí)才能進(jìn)行傳輸。DM是由主機(jī)輸出的數(shù)據(jù)掩碼,通過(guò)DQM輸出到SDRAM的LDQM和UDQM管腳,進(jìn)而控制SDRAM I/O緩沖的低字節(jié)和高字節(jié)。 圖4 數(shù)據(jù)路徑模塊 3 總結(jié)本文結(jié)合SDRAM控制指令的特點(diǎn),詳細(xì)的介紹了一種基于FPGA的通用SDRAM控制器的設(shè)計(jì)方案。本文所介紹的指令狀態(tài)的轉(zhuǎn)移、仲裁機(jī)制的實(shí)現(xiàn)和移位寄存器控制指令延遲時(shí)間的方法,提供了一種SDRAM控制器的設(shè)計(jì)思想,由于SDRAM的控制機(jī)制比較復(fù)雜,具有多種突發(fā)讀寫(xiě)的工作模式,我們可以根據(jù)實(shí)際應(yīng)用中的需求情況來(lái)編寫(xiě)程序,實(shí)現(xiàn)最基本的讀寫(xiě)和刷新操作,不必要顧全到每一種情況。SDRAM作為高速數(shù)據(jù)緩存,在基于現(xiàn)場(chǎng)可編程門(mén)陣列FPGA的控制下,將在高速、高密度、高端的數(shù)字電路領(lǐng)域中得到更加廣泛的應(yīng)用。參考文獻(xiàn)1王誠(chéng),吳華,范麗珍,等. Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇). 人民郵電出版社,2005,7.2田豐,鄧建國(guó),李巍,賈治華. SDRAM的設(shè)計(jì)與VHDL實(shí)現(xiàn). 電子技術(shù)應(yīng)用,2003,(31)2:74-77.3劉云清,佟首峰,姜會(huì)林. 利用FPGA實(shí)現(xiàn)SDRAM控制器的設(shè)計(jì). 長(zhǎng)春理工大學(xué)學(xué)報(bào).2005,28(4):47-50.4宋一鳴,謝煜,李春茂. 基于FPGA的SDRAM控制器設(shè)計(jì). 電子工程師, 2003,29(9):10-13.5

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論