引言
SDRAM 具有存儲容量大、速度快、成本低的特點,因此廣泛應用于雷達信號處理等需 要海量高速存儲的場合,但是SDRAM 的操作相對復雜,需要有專門的控制器配合處理器 工作完成數據的存取操作。隨著FPGA 技術的快速發展及其應用的普及,用FPGA 實現 SDRAM 控制器是目前最流行的技術手段。雖然現在FPGA 的生產商提供了一些通用的 SDRAM 控制器,但是在雷達信號處理等一些專用領域內這些通用的SDRAM 控制器難以滿 足需要,需要開發適合的專用的SDRAM 控制器。
本文以一個典型的雷達信號存儲與預處理系統為應用背景,用 Altera 公司的Stratix 系 列FPGA 實現了一個三端口非透明型的SDRAM 控制器,該控制器內部具有靈活準確的優 先級仲裁功能,在保證多個端口平均分配SDRAM 帶寬的同時不影響數據傳輸的帶寬,采 用乒乓的DMA 傳輸機制大大提高了數據傳輸的帶寬和效率。
2 SDRAM 的特點及其基本操作
SDRAM 是在現有的標準動態存儲器中加入同步控制邏輯(一個狀態機),利用一個單一的系統時鐘同步所有的地址數據和控制信號,它具有如下一些特點:
結構特點:存儲容量大,受輸出管腳數量限制,其存儲單元設計成矩陣形存儲結構,因此地址分為行地址和列地址,首先給出行地址選通一行(或一頁),然后給出列地址選中要訪問的地址單元;
采用電容存儲信息,因此需要定時充電(刷新);
同步訪問:所有信號都在時鐘上升沿采樣有效才認為有效;
基于猝發(Burst)方式訪問:在發出一次讀寫命令之后,SDRAM 自動訪問長度為猝發 長度的地址空間,非Burst 訪問的效率很低;
速度快:只要 SDRAM 控制器合理設計時序,可以實現單周期訪問一個地址單元。 SDRAM 的基本操作包括:初始化、激活、預充電、刷新等等。
初始化:SDRAM 上電之后必須按照確定的程式進行初始化之后才能正常工作,最主要 的操作是模式寄存器的設置;
激活:選中所要訪問的行列地址單元;
刷新:SDRAM 存儲單元載體為容量很小的電容并存在漏電流。需要定時讀取回填各 個單元才能保證數據不丟。在片內有自動刷新控制器,記錄了刷新行地址,每執行一次自 動刷新命令,刷新一行;
預充電:每次讀寫操作是通過傳感放大器對存儲單元電容的充放電過程,在讀操作時對 選中整行單元的原始數據可能產生破壞。這就需要在每次讀取操作后立即對該行原內容 與閾值比較再回寫,并且對傳感放大器參考閾值電壓復位準備下一次做讀寫操作。所以 總是在執行換行讀寫或刷新之前執行預充電操作。
3 SDRAM 控制器的基本功能
三端口非透明型 SDRAM 控制器是指控制器面向用戶端有三個端口而不是通常情況下 的一個端口,三個端口的功能完全一致,依靠仲裁控制切換端口與SDRAM 之間交換數據, 數據交換采用DMA 的方式,流經SDRAM 的數據流如圖1 所示。數據由C 端口輸入,A 端 口輸出,B 端口作為與DSP 的數傳通道。
圖 1 三端口SDRAM 控制器的數據流向
這里透明型是指外部設備訪問 SDRAM 時,只需簡單讀寫而不需要進行其它復雜的管 理操作,外部設備可以通過SDRAM 控制器將SDRAM 空間視為一個普通的同步三口RAM 操作。但是這種結構不能靈活的實現地址跳變的訪問,隨機訪問的帶寬很低,三個端口再次 平均分配SDRAM 的帶寬會進一步降低吞吐性能。所以,系統設計中采用了非透明型的設 計,非透明的意思是指:外部設備為了訪問SDRAM 的數據,不但要進行數據的讀寫操作,而且需要進行寄存器設置、控制信號調整等其它操作。非透明型設計的靈活性較差,但是可 以根據具體的使用環境對功能進行簡化,并且將一部分控制操作轉交給軟件完成,所以實現 相對比較簡單,而且更加穩定可靠。
4 SDRAM 控制器的基本結構及工作原理
三端口非透明型 SDRAM 控制器的結構框圖如圖2 所示。A、B、C 三個端口的內部結 構完全相同,都包含一個雙口RAM(作為數據乒乓緩存),一個DMA 控制器。外部設備可以 通過端口讀寫DPRAM 中的數據,也可以寫DMA 控制寄存器。DMA 控制器的功能是根據 DMA 控制寄存器內的設置在DPRAM 和SDRAM 之間交換數據,當DSP 或者其它外部設備 設置了寄存器后,DMA 控制器向仲裁和數據分配器發出訪問SDRAM 的請求,然后開始一 次DMA 操作。仲裁和數據分配器的功能是決定當前哪一個端口具有訪問SDRAM 的權利。 SDRAM 時序控制器則負責產生操作SDRAM 必須的命令碼,并且傳遞數據。
圖 2 三端口非透明型SDRAM 控制器的結構
外部設備與 SDRAM 之間通過一個雙口RAM(DPRAM)進行隔離。外部設備可以直 接讀寫DPRAM 的右側端口,也可以通過設置DMA 寄存器來啟動DPRAM 左側端口與 SDRAM 之間的DMA 操作。SDRAM 控制器的基本工作原理如下:
(1)寫操作:當外部設備需要向SDRAM 寫數據時,首先將數據存入DPRAM,然后 啟動一個從DPRAM 到SDRAM 的DMA。
(2)讀操作:當外部設備需要讀SDRAM 時,首先啟動一個從SDRAM 到DPRAM 的 DMA,等DMA 結束以后再從DPRAM 讀取數據。
(3)基于扇區的長度和地址控制:為了簡化DMA 控制器以及其它的控制邏輯,DPRAM 和SDRAM 之間的DMA 傳輸不是任意長度任意地址的DMA 傳輸,而是以扇區為基本數傳 單位。這里定義一個扇區的長度為SDRAM 中的一行(或者叫一個page)。每個DPRAM 則 順序劃分為2 個扇區。每次DMA 操作完成一個完整扇區數據的搬移。
(4)仲裁控制:當兩個或是三個DMA 控制器同時請求訪問SDRAM 時,由仲裁控制 器根據優先級規則進行控制。設計中采用了輪換優先級的方式,即:剛剛完成了一次DMA 操作的端口具有比較低的優先級,當前具有最高優先級的端口有權占用SDRAM 直至本次 DMA 結束,這樣,就可以三個端口分時占用DMA 通道,保證三個端口之間平均的分配 SDRAM 的帶寬。
5 仲裁器的設計
仲裁及數據分配器的設計的核心問題是輪換優先級的設計。必須保證三個端口分時占用 DMA 通道,保證平均分配帶寬。采用有限狀態機作為仲裁器的控制邏輯,這樣既可以保證 優先級設計的穩定性,又可以確保仲裁器判決的實時性,有限狀態機的設計如圖3 所示。
圖 3 仲裁器的有限狀態機設計
設計中最復雜的情況是:一個通道訪問SDRAM 的同時(如A 通道),另外兩個通道同時 申請下一次訪問SDRAM(如B、C 通道),這樣就需要有一個標志位,用它來記錄上一次訪 問過SDRAM 的通道,在下一次仲裁時把它排除在外,直到再下一次仲裁時才予以考慮。
每次DMA 結束后,都自動返回到IDLE 的狀態,通過request 標志位,上次DMA 通道記錄 位來判斷此次訪問SDRAM 的通道。具體設計如下:
設初始狀態下,默認A 端口具有最高優先級,然后A、B、C 三個端口具有輪換優先級;
設置一個標志位 old_request,表示上一次響應的端口,“100”A 端口響應,“010”B 端 口響應,“001”C 端口響應;
利用一個標志位 request[2:0]作為狀態翻轉的標志;
利用標志位 two_request,three_request 作為進入兩個或三個端口同時請求狀態的標志, two_request = ABC + ABC + ABC,three_request = ABC。
6 結論
本文利用 FPGA 設計并實現了一個相對專用的三端口非透明型SDRAM 控制器。本文 作者創新點在于:通過設計一個帶輪換優先級設置的多端口SDRAM 控制器,采用乒乓的 DMA 傳輸機制,將復雜的SDRAM 訪問虛擬成一個簡單的三口RAM 的訪問,具有訪問簡 單、控制靈活、傳輸帶寬大等特點。已在某雷達信號存儲與預處理系統中成功應用。
-
FPGA
+關注
關注
1643文章
21957瀏覽量
614037 -
控制器
+關注
關注
114文章
16963瀏覽量
182891 -
雷達
+關注
關注
50文章
3075瀏覽量
119399
發布評論請先 登錄
SDRAM與雙口RAM數據轉移接口控制電路
如何使用Verilog實現基于FPGA的SDRAM控制器?
SDRAM控制器的設備與VHDL實現

使用Verilog實現基于FPGA的SDRAM控制器
采用FPGA與IP來實現DDR RAM控制和驗證的方法

SDRAM控制器的設計

FPGA讀寫SDRAM的實例和SDRAM的相關文章及一些SDRAM控制器設計論文

基于FPGA的DDR3SDRAM控制器設計及實現簡介

基于FPGA的DDR3SDRAM控制器設計及實現

評論