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

下載本文檔

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

文檔簡(jiǎn)介

基于FPGA的SDRAM控制器的設(shè)計(jì)和實(shí)現(xiàn)0引言隨著電子技術(shù)在工業(yè)、醫(yī)療、商業(yè)等領(lǐng)域的發(fā)展,人們對(duì)數(shù)據(jù)傳輸率的要求越來(lái)越高,傳統(tǒng)的單片機(jī)早已不能滿足這種高速數(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)可編程門陣列,它的集成度高,可完成極其復(fù)雜的時(shí)序與組合邏輯電路功能,更適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域1。SDRAM即:同步動(dòng)態(tài)隨即存儲(chǔ)器,與傳統(tǒng)的DRAM有很大區(qū)別。它可以與系統(tǒng)總線以同頻率工作,用同一個(gè)CPU時(shí)鐘周期即可完成數(shù)據(jù)的訪問(wèn)和刷新,進(jìn)而大大的提高了數(shù)據(jù)傳輸率,其速度遠(yuǎn)大于DRAM。因而,SDRAM常作為數(shù)據(jù)緩存應(yīng)用于高速數(shù)據(jù)傳輸系統(tǒng)中。目前,許多嵌入式設(shè)備的大容量、高速度存儲(chǔ)器都采用SDRAM來(lái)實(shí)現(xià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ì)的給出控制器內(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ǔ)量大、讀寫速度快、價(jià)格相對(duì)便宜的特點(diǎn)。但其控制邏輯復(fù)雜,需要周期性刷新操作、行列管理、不同延時(shí)和命令序列等。1.1SDRAM地址結(jié)構(gòu)SDRAM的存儲(chǔ)地址分為頁(yè)(bank)地址,行(row)地址和列(column)地址。例如一個(gè)8MByte的SDRAM,被分為4個(gè)bank,即1個(gè)bank為2MByte,每個(gè)bank包括12行8列。1.2SDRAM的指令SDRAM的一系列指令如表1所示,每個(gè)指令最終都是通過(guò)控制RAS、CAS、WE信號(hào)來(lái)實(shí)現(xiàn)。通常對(duì)SDRAM的操作過(guò)程如下:表1SDRAM命令(1)SDRAM初始化操作:上電后至少等待100ns,然后至少執(zhí)行1條空操作;對(duì)所有頁(yè)執(zhí)行預(yù)充電操作;向各頁(yè)發(fā)出兩條刷新操作指令;最后執(zhí)行SDRAM工作模式的設(shè)定LMR命令用來(lái)配置SDRAM工作模式寄存器,SDRAM工作寄存器如表2所示。其中A11A10是用戶保留位;A9用來(lái)配置寫突發(fā)模式;A8A7是操作模式,通常為“00”,代表標(biāo)準(zhǔn)操作模式;A6A4設(shè)置CAS延遲時(shí)間;A3決定突發(fā)操作模式是順序還是間隔型;最后的三位A2A0用來(lái)配置突發(fā)長(zhǎng)度。表2SDRAM工作寄存器A11A10A9A8A7A6A5A4A3A2A1A0ReserveWriteburstmodeOperatingmodeLatencymodeBursttypeBurstlength(2)SDRAM讀、寫操作:根據(jù)實(shí)際應(yīng)用的需要,發(fā)出讀、寫指令。SDRAM可實(shí)現(xiàn)突發(fā)式讀寫,支持的突發(fā)長(zhǎng)度可配置為1個(gè)、2個(gè)、4個(gè)、8個(gè)數(shù)據(jù)周期或者頁(yè)模式。并且突發(fā)的模式可以配置為順序或者間隔型。對(duì)SDRAM進(jìn)行訪問(wèn)的最主要操作就是讀RD和寫WR操作。SDRAM在進(jìn)行讀寫操作時(shí),必須要先進(jìn)行頁(yè)激活A(yù)CT操作,以保證存儲(chǔ)單元是打開(kāi)的,以便從中讀取地址或者寫入地址,關(guān)閉存儲(chǔ)單元通過(guò)預(yù)充電PHC命令實(shí)現(xiàn)。在進(jìn)行寫操作時(shí),內(nèi)部的列地址和數(shù)據(jù)就會(huì)被寄存;進(jìn)行讀操作時(shí),內(nèi)部地址被寄存,等待CAS延遲時(shí)間(通常為13個(gè)時(shí)鐘周期)后,讀出的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上,具體時(shí)序詳見(jiàn)SDRAM數(shù)據(jù)手冊(cè),此處不再贅述。(3)操作終止:當(dāng)SDRAM接收到讀、寫指令后,開(kāi)始進(jìn)行順次的讀寫操作,直到達(dá)到突發(fā)長(zhǎng)度或者突發(fā)終止指令BT出現(xiàn)。2SDRAM控制器方案SDRAM控制器【6】針對(duì)SDRAM的指令操作特點(diǎn),為SDRAM提供同步命令接口和時(shí)序邏輯控制,下面將以ALTERA公司的Cyclone系列FPGA為例,主機(jī)系統(tǒng)時(shí)鐘為100MHz,使用三星公司的K4S641632E,8MByteSDRAM【7】,介紹SDRAM控制器的具體設(shè)計(jì)方法。圖1為SDRAM控制器的接口原理圖。圖1SDRAM控制器接口原理圖接口信號(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:地址線,根據(jù)具體情況確定位數(shù),本例中為22位,A21、A20代表頁(yè)地址BA1,BA0;A19A8代表行地址;A7A0代表列地址;DATAIN/DATAOU:輸入、輸出數(shù)據(jù)總線;DM:數(shù)據(jù)掩碼;(2)與SDRAM接口信號(hào):SADDR:12位地址線,在讀、寫操作時(shí),地址線分時(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ù)線;SDRAM控制器作為頂層模塊,由3個(gè)主要模塊組成:接口控制模塊、命令生成模塊、數(shù)據(jù)路徑模塊。下面將詳細(xì)的介紹各個(gè)模塊的功能和關(guān)鍵設(shè)計(jì)的VHDL實(shí)現(xiàn)方法。表3CMD命令字2.1接口控制模塊接口控制模塊主要實(shí)現(xiàn)的功能包括:將CMD2:0翻譯成接口指令和對(duì)刷新計(jì)數(shù)器的控制,如圖2所示。首先通過(guò)狀態(tài)機(jī)來(lái)完成對(duì)CMD2:0的翻譯,在VHDL程序中聲明一個(gè)用戶自定義類型states,根據(jù)CMD2:0輸入來(lái)決定狀態(tài)的轉(zhuǎn)移,完成對(duì)CMD2:0的解碼,如下所示:typestatesis(nop,reada,writea,refresh,precharge,load_mode);signalstate:states;casecmdiswhen011=statestate=nop;SDRAM需要周期性刷新操作以保持?jǐn)?shù)據(jù),數(shù)據(jù)手冊(cè)中通常會(huì)給出在一定的時(shí)間T內(nèi),SDRAM至少刷新X次,如果用戶使用頻率為FrMHz的時(shí)鐘,則刷新周期Tf可以通過(guò)下面的公式計(jì)算出:Tf(T*Fr)/X。例如,本例中數(shù)據(jù)手冊(cè)要求64ms內(nèi)至少刷新4096次,系統(tǒng)時(shí)鐘周期為100MHz,則刷新周期為(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ì)發(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的初值設(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=refreshordo_state=readaordo_state=writeaordo_state=prechargeordo_state=load_mode)thencommand_delay(7downto0)=11111111;-移位寄存器初值command_done=1;elsecommand_done=command_delay(0);-移位操作command_delay(6downto0)=command_delay(7downto1);command_delay(7)=0;endif;當(dāng)輸入的指令為writea和reada指令,將引發(fā)一系列指令的執(zhí)行,和其它指令相比需要附加時(shí)間。所以,聲明第二個(gè)移位寄存器rw_shift,來(lái)計(jì)算這兩個(gè)指令的附加時(shí)間,其工作原理和第一個(gè)移位寄存器是一樣的。最后一個(gè)移位寄存器oe_shift用來(lái)為數(shù)據(jù)通道生成oe,即數(shù)據(jù)輸入、輸出使能信號(hào)。對(duì)于非頁(yè)模式的讀寫來(lái)說(shuō),oe保持有效的時(shí)間取決于突發(fā)長(zhǎng)度。并且oe有效的起始時(shí)間對(duì)讀操作和寫操作時(shí)不同的:讀操作時(shí),oe有效的起始時(shí)間取決于CAS延時(shí)時(shí)間,而對(duì)于寫操作時(shí)則在寫指令開(kāi)始時(shí)oe就是有效的。23數(shù)據(jù)路徑模塊數(shù)據(jù)路徑模塊主要是在writea和reada命令期間處理數(shù)據(jù)的路徑操作。模塊的結(jié)構(gòu)圖如圖4所示。DQ是雙向數(shù)據(jù)線,用來(lái)傳輸從SDRAM讀出數(shù)據(jù)和向SDRAM寫入的數(shù)據(jù)。無(wú)論是數(shù)據(jù)在讀出還是寫入時(shí),都是在oe有效,即oe為高電平時(shí)才能進(jìn)行傳輸。DM是由主機(jī)輸出的數(shù)據(jù)掩碼,通過(guò)DQM輸出到SDRAM的LDQM和UDQM管腳,進(jìn)而控制SDRAMI/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ā)讀寫的工作模式,我們可以根據(jù)實(shí)際應(yīng)用中的需求情況來(lái)編寫程序,實(shí)現(xiàn)最基本的讀寫和刷新操作,不必要顧全到每一種情況。SDRAM作為高速數(shù)據(jù)緩存,在基于現(xiàn)場(chǎng)可編程門陣列FPGA的控制下,將在高速、高密度、高端的數(shù)字電路領(lǐng)域中得到更加廣泛的應(yīng)用。參考文獻(xiàn)1王誠(chéng),吳華,范麗珍,等.AlteraFPGA/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周正昆.基于FPGA的SDRAM控制器設(shè)計(jì).現(xiàn)代電子技術(shù),2003,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論