摘要: 為了在嵌入式系統設計中實現對SDRAM存儲器的訪問,提出了一種基于AMBA?AHB總線規范的SDRAM控制器設計方案。首先簡要介紹了AMBA總線規范,然后在完成整個存儲控制器的整體框架設計的基礎上給出了SDRAM控制器的實現原理以及詳細的子模塊劃分。整個控制器的設計已用Verilog HDL語言實現并通過了Modelsim仿真和FPGA驗證。仿真結果表明所設計的控制器符合SDRAM內部指令操作,并且滿足了嚴格的時序要求。
關鍵詞: AMBA總線; SDRAM控制器; FPGA; Modelsim仿真
中圖分類號: TN710?34 文獻標識碼: A 文章編號: 1004?373X(2013)19?0083?03
0 引 言
隨著大規模集成電路和高速、低功耗、高密度存儲技術的發展[1],SDRAM動態存儲器因容量大、速度快、價格低廉等優點,現已成為PC內存的主流。然而SDRAM存儲器內部控制邏輯十分復雜,時序要求也非常嚴格[2],因此需要設計專門的SDRAM控制器來實現系統對SDRAM的訪問。
存儲控制器是嵌入式微處理器中AMBA?AHB總線與片外存儲設備之間的接口,完成總線主設備(CPU或DMA)與片外存儲設備(SDRAM或SRAM)的數據傳輸,其功能與性能決定著嵌入式微處理器所支持的外部存儲器的類型以及外部存儲器的訪問速度,進而決定著整個嵌入式系統的處理速度[3]。AMBA總線規范成為嵌入了式微處理器內片上總線的標準[4],設計基于AMBA總線標準,支持嵌入式系統常用存儲器類型的存儲控制器IP具有非常大的現實意義。
1 AMBA總線簡介
典型的基于AMBA總線的微控制器架構如圖1所示[5]。
它包含一個作為系統骨架的AHB(Advanced High?Performance Bus)或ASB總線,可實現CPU或DMA模塊與片外存儲器之間的大量數據通信,以獲得大的帶寬。另外,在這條高性能總線上還有一個橋接器以連接低帶寬的APB,而在APB上連接著大多數的系統外設。用戶可以各自獨立設計基于這個規范的微處理器以及外圍IP,提高了系統的開發效率及模塊的可重用型[6]。
其中,AHB總線是一種支持多總線主機的高性能總線,用于高性能、高時鐘頻率的系統,它保證了處理器與片外存儲器的有效連接。一個完整的AHB傳輸過程可以分為地址傳輸階段和數據傳輸階段,地址傳輸階段傳輸地址和控制信號,而數據傳輸階段傳輸的是讀寫數據和響應信號。AHB總線支持流水線傳輸,也就是說在前一個數據傳輸階段可以同時進行下一個地址傳輸階段,前后不同的傳輸階段可以重疊起來以提高系統的數據處理速度。
2 SDRAM工作原理
SDRAM是一種高速高容量同步動態存儲器,相比于SRAM等靜態存儲器具有容量大、速度快、價格低廉等優點,成為圖像處理中常用的數據存儲器[7]。但因SDRAM存儲結構的特殊性,需要對SDRAM不斷進行預充電、刷新等操作以保持數據不丟失。SDRAM內部的操作是通過總線命令實現的,命令由RASN、CASN和WEN信號聯合產生,如表1所示(H表示高電平,L表示低電平)。
SDRAM上電后必須按一種確定的方式初始化。在上電穩定后100 μs時間內存儲器不接受除NOP以外的任何命令。當100 μs過后,通過控制器向SDRAM所有bank發出預充電(Precharge)命令[8],使SDRAM所有bank進入待機狀態。之后,要對SDRAM連續執行兩個自動刷新操作,使SDRAM芯片內部的刷新及計數器進入正常運行狀態。兩個刷新周期完畢之后,開始對SDRAM的模式寄存器(Mode Register)進行操作,模式寄存器用來決定SDRAM將以何種工作模式工作。整個初始化過程如圖2所示。
3 SDRAM控制器與AMBA?AHB總線的關系
本設計基于AMBA?AHB總線的slave模塊,SDRAM控制器處在片內AHB總線與片外存儲設備之間,作為一個從機掛在AHB總線上。它一邊需要通過AHB總線接口模塊與AHB總線通信,因此必須符合AHB總線標準;另一邊又需要給外部存儲設備提供控制信號,以實現對外部存儲設備的讀寫操作。控制器接收來自總線主設備的符合AMBA?AHB總線規范的數據傳輸請求,產生正確的讀寫控制信號給SDRAM存儲器,以完成總線的數據傳輸請求。
AMBA 2.0總線為嵌入式微控制器定義了一套片上總線標準,因此本設計是獨立設計的基于該規范的外圍IP[9]。
4 SDRAM控制器系統設計架構
SDRAM控制器與AHB總線接口在整個系統中的連接關系如圖3所示。
4.1 AHB?slave總線接口電路
AHB?slave總線接口電路用來實現SDRAM控制邏輯與AHB?master之間的信號傳輸。
按照AMBA總線規范要求,AHB總線從設備(slave)在總線時鐘上升沿,HREADY信號(由從設備發出)為高的情況下,必須鎖存來自AHB總線的總線控制信號、數據信號、地址信號等,以供內部譯碼模塊以及其他各模塊使用。
4.2 總線地址譯碼
AHB總線可以掛多個從設備,如圖3所示的從機A,從機B。因此在一次讀寫操作中,需要對來自總線的讀寫地址進行譯碼,以判斷總線是對哪個從設備進行訪問,并產生相應的內部片選信號。
4.3 SDRAM控制器
SDRAM控制器由5個模塊組成:SDRAM控制器模塊、控制接口模塊、命令解析模塊、地址數據復用總線模塊和數據通路模塊。SDRAM控制器模塊是頂層模塊,通過例化其他4個子模塊將其連成一個整體。
4.3.1 控制接口模塊
控制接口模塊對來自AHB總線信號和SDRAM控制寄存器的信號解碼并寄存,傳送已經解碼的NOP、WRITEA、READA、REFRESH、PRECHARGE和 LOAD_MODE命令和ADDR給命令解析模塊。
控制接口模塊還含有一個用于給命令解析模塊產生周期刷新命令的刷新電路,用于給命令模塊發送刷新請求。收到命令模塊的刷新請求后,減法計數器重新裝入數值,重復以上過程。
本設計所使用的MT48LC16M4A2型號SDRAM存儲器具有每64 ms刷新4 096次的要求[4],因此由64 ms/4 096=15.625 09 μs知,器件必須至少每15.625 09 μs刷新一次。假如存儲器和SDRAM控制器工作在100 MHz的時鐘周期下,那么刷新間隔周期的最大數值是15.625 μs/0.01 μs=1 562 d。
4.3.2 命令解析模塊
命令解析模塊接收控制接口模塊輸出的已經解碼的命令和周期性輸出的刷新請求,產生合適的命令給SDRAM器件。從刷新控制邏輯電路發出的刷新請求比主機接口的命令的優先級別高,因此模塊還含有一個簡易的仲裁電路,用于仲裁主機的命令和刷新控制邏輯所產生的刷新請求。
在仲裁電路已經接受主機命令后,命令被送到模塊的命令發生器部分,命令模塊使用3個移位寄存器來產生命令之間的時序,一個移位寄存器用于控制ACT命令;第二個用于控制讀或寫命令發出的時間;第三個用于對命令的持續時間定時,這樣仲裁其就可以判斷最近請求的操作是否已經完成。
命令解析模塊所產生的輸出信號OE用于控制數據通路模塊的輸入數據通路的三態緩沖。
4.3.3 地址數據復用總線模塊
該模塊實現SDRAM的地址復用,地址的行部分在ACT (RAS) 命令時復用到SDRAM輸出的A[11:0], 地址的列部分在讀(CAS)或寫命令時復用到SDRAM地址線上。
4.3.4 數據通路模塊
數據通路模塊提供了SDRAM和主機之間的數據接口,負責SDRAM控制器與外部SDRAM存儲器之間的數據交換,具體說就是在對SDRAM寫操作時將來自AHB總線的數據放到外部數據線上,在對SDRAM讀操作時,將來自SDRAM的數據正確送到AHB總線上。
5 設計實現與仿真結果
本文使用Micron公司提供的型號為MT48LC16M4A2的Verilog仿真模型進行仿真驗證,證明了設計的正確性。仿真結果如圖4,圖5所示,圖4是SDRAM寫操作的仿真時序圖,即將AHB總線控制操作轉化成SDRAM寫操作指令;圖5表示的是將寫入SDRAM的數據連續讀出的仿真時序。
6 結 語
本文設計了一個基于AMBA?AHB總線的SDRAM控制器,將AMBA?AHB總線的控制操作轉化成了符合SDRAM操作規范的控制指令,最后的仿真波形證實了該設計的正確性。當然因SDRAM復雜的操作時序,該設計還未能實現對SDRAM與AHB總線之間所有傳輸方式的支持,如背靠背傳輸。這在今后的設計中需要進一步完善。
參考文獻
[1] 王志華,鄧仰東.數字集成系統的結構化設計與高層次綜合[M].北京:清華大學出版社,2000.
[2] SK hynix. DDR2 SDRAM device operation and timing diagram [M]. Korea: SK hynix, 2004.
[3] 張建民,沈勝宇.通用接口控制器 GPIO_WB IP核設計與實現[J].微電子學與計算機,2004,21(6):70?73.
[4] 齊利芳,賀占莊.SOPC設計中的兩種片上總線分析[J].計算機技術與發展,2006,16(1):112?114.
[5] FLYNN D. AMBA: enabling reusable on?chip designs [J]. IEEE Micro, 1997, 17(4): 20?27.
[6] ARM. AMBA Specification (Rev2.0) [S]. UK: ARM, 1999.
[7] 王騫.高速圖像存儲系統中SDRAM控制器的實現[J].液晶與顯示,2006,21(1):45?48.
[8] 周望瑋,史小軍.基于FPGA的SDRAM讀寫雙口控制器設計[J].電子器件,2006,29(2):56?59.
[9] 顏偉成,陳朝陽.AMBA?AHB總線接口的設計與實現[J].計算機與數字工程,2005,33(10):130?132.
[10] Micron. Micron 256MB SDRAM datasheet [M]. USA: Micron, 2008.