《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 用Xilinx FPGA實現DDR SDRAM控制器
用Xilinx FPGA實現DDR SDRAM控制器
摘要: 在高速信號處理系統中,需要緩存高速、大量的數據,存儲器的選擇與應用已成為系統實現的關鍵所在。DDRSDRAM是一種高速CMOS、動態(tài)隨機訪問存儲器,它采用雙倍數據速率結構來完成高速操作。
關鍵詞: 信號 系統 存儲器
Abstract:
Key words :

1 引言
在高速信號處理系統中, 需要緩存高速、大量的數據, 存儲器的選擇與應用已成為系統實現的關鍵所在。DDR SDRAM是一種高速CMOS、動態(tài)隨機訪問存儲器, 它采用雙倍數據速率結構來完成高速操作。SDR SDRAM一個時鐘周期只能傳輸一個數據位寬的數據, 因此在相同的數據總線寬度和工作頻率下, DDR SDRAM的總線帶寬比SDR SDRAM的總線帶寬提高了一倍。

Xilinx VirtexTM- 4 FPGA 具備ChipSync 源同步技術等優(yōu)勢。它的輸入輸出模塊( IOB) 提供了封裝引腳與內部可配置邏輯之間的接口, 無論是輸入路徑還是輸出路徑都提供了一個可選的SDR 和DDR 寄存器。VirtexTM- 4 的IOB 專門針對源同步設計進行了優(yōu)化, 包括每一位的偏移校正、數據的串行化和解串行化、時鐘分頻以及專用的本地時鐘資源等, 而且它在每一個I/O 模塊中都提供了64- 階延遲線。這些特性使得VirtexTM- 4 FPGA 能夠更好的實現DDR SDRAM控制器的邏輯設計, 準確可靠的捕獲數據。

實驗板選擇專為DSP 應用而優(yōu)化的Virtex- 4 SX35 作為DDR SDRAM控制器的實現平臺, 選用Micron MT46V8M16P-75Z DDR SDRAM。

2 DDR SDRAM 控制器工作原理
DDR SDRAM控制器的主要功能就是完成對DDR SDRAM的初始化, 將DDR SDRAM復雜的讀寫時序轉化為用戶簡單的
讀寫時序, 以及將DDR SDRAM接口的雙時鐘沿數據轉換為用戶的單時鐘沿數據, 使用戶像操作普通的RAM一樣控制DDR SDRAM; 同時, 控制器還要產生周期性的刷新命令來維持DDR SDRAM內的數據而不需要用戶的干預。該控制器的模塊化表示如圖1。

應用層接口是DDR 控制器與FPGA 用戶設計的接口。對于DDR 控制器的用戶來說, 只需要了解如何使用應用層接口, 通
過應用層接口給DDR 控制器發(fā)出指令、數據, 并且接收數據。這種模塊化設計增加了DDR 控制器的可移植性, 也使用戶使用起來更簡單。

要功能是:完成存儲器的初始化, 接收并解碼用戶指令然后產生讀、寫、刷新等指令。控制層的邏輯設計主要是由一個狀態(tài)機管理的。物理層是直接與DDR SDRAM通信的平臺, 它的主要功能是:捕獲DDR SDRAM發(fā)出的數據、以及通過輸入輸出緩存發(fā)送所有DDR SDRAM的控制信號、地址信號以及數據信號。

2.1 控制層工作原理
控制層主要由一個狀態(tài)機來控制DDR SDRAM控制器的狀態(tài)轉移。狀態(tài)機如圖2 所示。

DDR SDRAM上電后必須按照規(guī)定的程序完成初始化的過程。在初始化過程中一定要注意普通模式寄存器與擴展模式寄
存器的值是否正確。普通模式寄存器用來設定DDR SDRAM的工作方式, 包括突發(fā)長度、突發(fā)類型、CAS 潛伏期和工作模式;擴展模式寄存器主要實現對DDR SDRAM內部DLL 的使能和輸出驅動能力的設置。在本實驗板中選擇的是Micron
MT46V8M16P- 75Z 型號的DDR SDRAM, 該型號芯片CAS 潛伏期只能為2 或者2.5。

初始化完成之后, DDR SDRAM進入正常的工作狀態(tài), 此時可對存儲器進行讀寫和刷新操作。在本設計中為了計算讀數據
延遲量引入了一個假讀操作(Dummy Read) , 這將在下一節(jié)中詳細分析。DDR SDRAM在一對差分時鐘的控制下工作。命令在每個時鐘的上升沿觸發(fā)。隨著數據一起傳送的還包括一個雙向的數據選通信號DQS, 接收方通過該信號來接收數據。該選通信號與數據相關, 其作用類似于一個獨立的時鐘。DQS 作為選通信號在讀周期中由DDR SDRAM來產生。讀周期中, DQS 與數據是邊沿對齊的。讀操作時, DDR 控制器采用直接時鐘獲取的方式捕獲數據。讀命令觸發(fā)后, 數據將在CAS 延遲之后出現在數據總線上。DQS 在寫周期中是由DDR 控制器產生的。寫周期中, DQS 與數據是中心對齊的。讀寫操作時序如圖3(DQ 指傳輸的數據) 。

在進行讀寫操作之前需要先執(zhí)行ACTIVE 命令( 激活命令) , 與激活命令一起被觸發(fā)的地址用來選擇將要存取的區(qū)( bank) 和頁( 或行) 。與讀或寫命令一起觸發(fā)的地址位用來選擇突發(fā)存取的起始列單元。在激活指令之前還有一個預充電
( PRECHARGE) 操作, 預充電操作關閉之前進行操作的存儲區(qū)或行, 此操作之后DDR SDRAM才能對新的區(qū)或者行進行讀寫操作。

DDR SDRAM需要用自動刷新(AUTO REFRESH) 命令來周期性的刷新DDR SDRAM, 以保持其內部的數據不丟失。自動刷新必須在所有區(qū)都空閑的狀態(tài)下才能執(zhí)行。128Mb 的DDR SDRAM執(zhí)行自動刷新的周期最大為15.625μs。

寫操作是由FPGA 向DDR SDRAM寫入數據, 只需按照DDR SDRAM的工作要求發(fā)出相應的指令即可, 邏輯設計相對簡單, 因此下面我們將詳細介紹讀操作中的數據捕獲技術。

2.2 物理層數據捕獲技術及數據通道電路
物理層的主要功能是獲得DDR SDRAM發(fā)出的數據、以及通過輸入輸出緩存發(fā)送所有DDR SDRAM的控制信號、地址信號以及數據信號。數據捕獲技術及數據通道電路是DDR SDRAM控制器的技術核心。DDR SDRAM接口是源同步接口,
即數據與傳輸時鐘是邊沿對齊的。因此, 為了在FPGA 中可靠捕獲數據要么延遲時鐘要么延遲數據, 使數據與時鐘中心對齊。本設計采取直接時鐘數據捕獲技術。

所謂直接時鐘數據捕獲技術就是利用DQS 信號計算數據延遲量, 通過延遲數據使數據中心與FPGA 內部時鐘沿對齊, 然
后用該內部時鐘直接讀取數據。DQS 是由DDR 發(fā)出的數據選通信號, 它與FPGA 內部時鐘頻率相同。此項技術的關鍵是確定數據的延遲時間。相對于其他的數據捕獲技術, 這種直接時鐘數據捕獲技術可以應用于更高的時鐘頻率, 精確性和穩(wěn)定性都高于其他方法。


為了得到數據應該延遲的時間量, 首先要對DQS 進行邊沿檢測??刂破靼l(fā)出Dummy_rd_en 信號( 即假讀信號) 使DDR
SDRAM 發(fā)出DQS 信號, 當延遲量計算完畢時, 置Dummy_rd_en 為低。

在Xilinx VirtexTM- 4 FPGA 中實現該延遲檢測電路是非常容易的, 因為設計可以直接利用FPGA 內部的IDELAY 與IDELAY_CTRL 電路。圖5 表示了邊沿檢測以及數據通道電路。

在該電路中, DQS 輸入到IDELAY 模塊, 延遲量初始化為0, 然后延遲量逐次遞增, 在這個過程中不斷檢測延遲后的DQS 的跳變沿, 并將延遲量TAP 值記錄下來, 以便計算數據DQ 的延遲量。在圖中可看出, 邊沿檢測和控制邏輯發(fā)出DLYRST、DLYCE 和DLYINC 三個信號來控制IDELAY 延遲模塊的工作模式。

由于IDELAY 模塊的最大延遲階數為64, 且在Xilinx VirtexTM-4 FPGA 中, 延遲模塊的精度TIDELAYRESOLUTION 為75ps, 所以延遲時間最大為75ps*64=4.8ns, 因此當時鐘頻率低于200MHZ( 周期為5ns) 時, 不可能檢測到兩個跳變沿, 此時必須采取適當的措施來獲得數據延遲量。當64 階延遲量完成時只檢測到一個跳變沿時, 我們認為數據延遲量為檢測到第一個跳變沿時的延遲量加上16, 因為四分之一個200MHZ 時鐘周期大約為16階延遲量( 16*75=1.2ns) 即:

延遲后的數據經過IDDR 觸發(fā)器分別得到上升沿對應的數據和下降沿對應的數據, 然后再通過異步查找表FIFO 使讀進
FPGA 的數據與FPGA 內部時鐘同步方便用戶使用。

3 控制器實驗結果及結論
該DDR 控制器設計總共占用751 個4 輸入LUT, 占總LUT 資源的2%。另外, 設計還使用了3 個DCM。DDR 控制器在
Xilinx ISE8.1i 編程環(huán)境下實現, 結合ModelSim SE6.1b 進行仿真。板上調試時時鐘選為100MHZ, 經測試數據傳輸及捕獲準確無誤。

經實驗驗證該DDR 控制器工作穩(wěn)定可靠、確實可行, 占用邏輯資源較少, 且具有較高的可移植性, 以及簡單方便的用戶接
口。該DDR 控制器經過簡單的修改就可以控制其他型號的DDR SDRAM芯片, 因此可以極大地提高信號處理板的存儲容
量, 很好的用于高速信號處理系統中。

本文的創(chuàng)新觀點是基于Xilinx VirtexTM- 4 FPGA, 利用DCM及內部延遲線等優(yōu)勢, 采用直接時鐘捕獲技術實現DDR SDRAM控制器。

此內容為AET網站原創(chuàng),未經授權禁止轉載。