基于FPGA的SDRAM控制器的設計和實現.doc_第1頁
基于FPGA的SDRAM控制器的設計和實現.doc_第2頁
基于FPGA的SDRAM控制器的設計和實現.doc_第3頁
基于FPGA的SDRAM控制器的設計和實現.doc_第4頁
基于FPGA的SDRAM控制器的設計和實現.doc_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于FPGA的SDRAM控制器的設計和實現0引言隨著電子技術在工業、醫療、商業等領域的發展,人們對數據傳輸率的要求越來越高,傳統的單片機早已不能滿足這種高速數據傳輸的要求。與此同時,可編程的邏輯器件FPGA/CPLD以其強大的功能,開發過程投資小、周期短,可反復編程修改,開發工具智能化等特點,成為當今硬件設計的潮流;相比而言,FPGA即現場可編程門陣列,它的集成度高,可完成極其復雜的時序與組合邏輯電路功能,更適用于高速、高密度的高端數字邏輯電路設計領域1。SDRAM即:同步動態隨即存儲器,與傳統的DRAM有很大區別。它可以與系統總線以同頻率工作,用同一個CPU時鐘周期即可完成數據的訪問和刷新,進而大大的提高了數據傳輸率,其速度遠大于DRAM。因而,SDRAM常作為數據緩存應用于高速數據傳輸系統中。目前,許多嵌入式設備的大容量、高速度存儲器都采用SDRAM來實現,而且大多都是用專用芯片完成其控制電路,這不但提高了設計成本,而且使系統的硬件電路變得復雜。隨著FPGA在嵌入式系統中的廣泛應用,如果我們能夠結合具體的需要,利用FPGA來設計自己的SDRAM控制器,這些問題就迎刃而解了。然而,SDRAM的控制邏輯復雜、時序要求嚴格,常常困擾設計人員。有很多文章2,3,4,5詳細的介紹了SDRAM的工作原理、控制時序和指令特點,以及基于FPGA的SDRAM控制器的實現方法,但是并沒有詳細的給出控制器內部結構和指令時序的控制問題。因此。本文將介紹一種基于FPGA的通用SDRAM控制器,并著重介紹設計方案中各模塊的功能和實現方法。該控制器用VHDL語言程序實現,完成了SDRAM指令狀態轉換、信號仲裁判斷,并巧妙的用三個移位寄存器解決了指令的邏輯和時序的問題。1.SDRAM簡介SDRAM具有空間存儲量大、讀寫速度快、價格相對便宜的特點。但其控制邏輯復雜,需要周期性刷新操作、行列管理、不同延時和命令序列等。1.1SDRAM地址結構SDRAM的存儲地址分為頁(bank)地址,行(row)地址和列(column)地址。例如一個8MByte的SDRAM,被分為4個bank,即1個bank為2MByte,每個bank包括12行8列。1.2SDRAM的指令SDRAM的一系列指令如表1所示,每個指令最終都是通過控制RAS、CAS、WE信號來實現。通常對SDRAM的操作過程如下:表1SDRAM命令(1)SDRAM初始化操作:上電后至少等待100ns,然后至少執行1條空操作;對所有頁執行預充電操作;向各頁發出兩條刷新操作指令;最后執行SDRAM工作模式的設定LMR命令用來配置SDRAM工作模式寄存器,SDRAM工作寄存器如表2所示。其中A11A10是用戶保留位;A9用來配置寫突發模式;A8A7是操作模式,通常為“00”,代表標準操作模式;A6A4設置CAS延遲時間;A3決定突發操作模式是順序還是間隔型;最后的三位A2A0用來配置突發長度。表2SDRAM工作寄存器A11A10A9A8A7A6A5A4A3A2A1A0ReserveWriteburstmodeOperatingmodeLatencymodeBursttypeBurstlength(2)SDRAM讀、寫操作:根據實際應用的需要,發出讀、寫指令。SDRAM可實現突發式讀寫,支持的突發長度可配置為1個、2個、4個、8個數據周期或者頁模式。并且突發的模式可以配置為順序或者間隔型。對SDRAM進行訪問的最主要操作就是讀RD和寫WR操作。SDRAM在進行讀寫操作時,必須要先進行頁激活ACT操作,以保證存儲單元是打開的,以便從中讀取地址或者寫入地址,關閉存儲單元通過預充電PHC命令實現。在進行寫操作時,內部的列地址和數據就會被寄存;進行讀操作時,內部地址被寄存,等待CAS延遲時間(通常為13個時鐘周期)后,讀出的數據出現在數據總線上,具體時序詳見SDRAM數據手冊,此處不再贅述。(3)操作終止:當SDRAM接收到讀、寫指令后,開始進行順次的讀寫操作,直到達到突發長度或者突發終止指令BT出現。2SDRAM控制器方案SDRAM控制器【6】針對SDRAM的指令操作特點,為SDRAM提供同步命令接口和時序邏輯控制,下面將以ALTERA公司的Cyclone系列FPGA為例,主機系統時鐘為100MHz,使用三星公司的K4S641632E,8MByteSDRAM【7】,介紹SDRAM控制器的具體設計方法。圖1為SDRAM控制器的接口原理圖。圖1SDRAM控制器接口原理圖接口信號介紹:(1)與主機接口信號:CLK:系統時鐘信號;RESET::系統復位信號;CMD2:0:譯碼指令,如表3所示;CMDACK:指令應答信號,通知主機命令已被SDRAM執行;ADDR:地址線,根據具體情況確定位數,本例中為22位,A21、A20代表頁地址BA1,BA0;A19A8代表行地址;A7A0代表列地址;DATAIN/DATAOU:輸入、輸出數據總線;DM:數據掩碼;(2)與SDRAM接口信號:SADDR:12位地址線,在讀、寫操作時,地址線分時復用為行地址和列地址;BA:頁地址,BA0,BA1;CS:片選信號;CKE:時鐘使能信號;RAS、CAS、WE:命令控制信號;DQM:SDRAM數據掩碼;DQ:雙向數據線;SDRAM控制器作為頂層模塊,由3個主要模塊組成:接口控制模塊、命令生成模塊、數據路徑模塊。下面將詳細的介紹各個模塊的功能和關鍵設計的VHDL實現方法。表3CMD命令字2.1接口控制模塊接口控制模塊主要實現的功能包括:將CMD2:0翻譯成接口指令和對刷新計數器的控制,如圖2所示。首先通過狀態機來完成對CMD2:0的翻譯,在VHDL程序中聲明一個用戶自定義類型states,根據CMD2:0輸入來決定狀態的轉移,完成對CMD2:0的解碼,如下所示:typestatesis(nop,reada,writea,refresh,precharge,load_mode);signalstate:states;casecmdiswhen011=statestate=nop;SDRAM需要周期性刷新操作以保持數據,數據手冊中通常會給出在一定的時間T內,SDRAM至少刷新X次,如果用戶使用頻率為FrMHz的時鐘,則刷新周期Tf可以通過下面的公式計算出:Tf(T*Fr)/X。例如,本例中數據手冊要求64ms內至少刷新4096次,系統時鐘周期為100MHz,則刷新周期為(64ms*100MHz)/4096,得出結果等于1562.5,所以至多1562個時鐘周期的時間就必須對SDRAM刷新一次。刷新控制在程序中通過一個計數器來完成,當到達規定的計數周期,就向SDRAM發出REF_REQ刷新請求,直到SDRAM完成刷新操作,發出REF_ACK刷新應答信號,計數器才重新賦值開始下一次的計數。圖2接口控制模塊2.2命令生成模塊圖3是命令生成模塊,主要實現了對輸入的指令請求進行仲裁判斷,并將仲裁后要執行的指令解碼成SDRAM需要的RAS、CAS等信號,從而實現對SDRAM的控制。圖3命令生成模塊之所以需要仲裁機制,是因為在指令執行之前可能會發生以下情況:其它指令和刷新請求同時到來;刷新請求到來時,其它指令正在執行。仲裁機制實現方法如下:(1)SDRAM在每一刻只有一個指令在執行;(2)先到的指令先執行,即:如果刷新請求到來時,其它命令正在執行中,要等到當前命令執行完成后,才能執行刷新指令;(3)其它指令和刷新請求同時到來時刷新操作先執行。經過仲裁判斷后,指令將傳入命令生成器。命令生成器不僅要把指令解碼成可控制SDRAM的信號,同時還要用三個移位寄存器對命令執行的延遲時間進行控制。第一個為指令延時寄存器,用來保證SDRAM有充足時間完成最終指令。例如,如果命令的執行需要8各時鐘周期的時間,則指令延時寄存器com_delay的初值設為“11111111”,同時聲明一個內部信號com_done,作為指令執行完成的標志的。在指令執行期間,每一個時鐘上升沿到來時,移位寄存器向右移位一次,com_delay0的移入com_done,同時“0”移入最高位com_delay7。當com_done為“0”時,就說明指令的延遲時間已到,即通過com_done的值,就可以判斷當前指令是否執行完成。要注意的是:移位寄存器的位數和初值,應該根據SDRAM的數據手冊中命令完成需要的時間和系統的時鐘周期來確定。下面得例程僅供參考。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;當輸入的指令為writea和reada指令,將引發一系列指令的執行,和其它指令相比需要附加時間。所以,聲明第二個移位寄存器rw_shift,來計算這兩個指令的附加時間,其工作原理和第一個移位寄存器是一樣的。最后一個移位寄存器oe_shift用來為數據通道生成oe,即數據輸入、輸出使能信號。對于非頁模式的讀寫來說,oe保持有效的時間取決于突發長度。并且oe有效的起始時間對讀操作和寫操作時不同的:讀操作時,oe有效的起始時間取決于CAS延時時間,而對于寫操作時則在寫指令開始時oe就是有效的。23數據路徑模塊數據路徑模塊主要是在writea和reada命令期間處理數據的路徑操作。模塊的結構圖如圖4所示。DQ是雙向數據線,用來傳輸從SDRAM讀出數據和向SDRAM寫入的數據。無論是數據在讀出還是寫入時,都是在oe有效,即oe為高電平時才能進行傳輸。DM是由主機輸出的數據掩碼,通過DQM輸出到SDRAM的LDQM和UDQM管腳,進而控制SDRAMI/O緩沖的低字節和高字節。圖4數據路徑模塊3總結本文結合SDRAM控制指令的特點,詳細的介紹了一種基于FPGA的通用SDRAM控制器的設計方案。本文所介紹的指令狀態的轉移、仲裁機制的實現和移位寄存器控制指令延遲時間的方法,提供了一種SDRAM控制器的設計思想,由于SDRAM的控制機制比較復雜,具有多種突發讀寫的工作模式,我們可以根據實際應用中的需求情況來編寫程序,實現最基本的讀寫和刷新操作,不必要顧全到每一種情況。SDRAM作為高速數據緩存,在基于現場可編程門陣列FPGA的控制下,將在高速、高密度、高端的數字電路領域中得到更加廣泛的應用。參考文獻1王誠,吳華,范麗珍,等.AlteraFPGA/CPLD設計(基礎篇).人民郵電出版社,2005,7.2田豐,鄧建國,李巍,賈治華.SDRAM的設計與VHDL實現.電子技術應用,2003,(31)2:74-77.3劉云清,佟首峰,姜會林.利用FPGA實現SDRAM控制器的設計.長春理工大學學報.2005,28(4):47-50.4宋一鳴,謝煜,李春茂.基于FPGA的SDRAM控制器設計.電子工程師,2003,29(9):10-13.5周正昆.基于FPGA的SDRAM控制器設計.現代電子技術,2003,

溫馨提示

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

最新文檔

評論

0/150

提交評論