<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 用Xilinx FPGA實(shí)現DDR SDRAM控制器

用Xilinx FPGA實(shí)現DDR SDRAM控制器

作者: 時(shí)間:2012-11-30 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/185551.htm

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

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

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

2 DDR SDRAM 控制器工作原理

DDR SDRAM控制器的主要功能就是完成對DDR SDRAM的初始化, 將DDR SDRAM復雜的讀寫(xiě)時(shí)序轉化為用戶(hù)簡(jiǎn)單的

讀寫(xiě)時(shí)序, 以及將DDR SDRAM接口的雙時(shí)鐘沿數據轉換為用戶(hù)的單時(shí)鐘沿數據, 使用戶(hù)像操作普通的RAM一樣控制DDR SDRAM; 同時(shí), 控制器還要產(chǎn)生周期性的刷新命令來(lái)維持DDR SDRAM內的數據而不需要用戶(hù)的干預。該控制器的模塊化表示如圖1。

1.jpg

應用層接口是DDR 控制器與 用戶(hù)設計的接口。對于DDR 控制器的用戶(hù)來(lái)說(shuō), 只需要了解如何使用應用層接口, 通

過(guò)應用層接口給DDR 控制器發(fā)出指令、數據, 并且接收數據。這種模塊化設計增加了DDR 控制器的可移植性, 也使用戶(hù)使用起來(lái)更簡(jiǎn)單。

要功能是:完成存儲器的初始化, 接收并解碼用戶(hù)指令然后產(chǎn)生讀、寫(xiě)、刷新等指令??刂茖拥倪壿嬙O計主要是由一個(gè)狀態(tài)機管理的。物理層是直接與DDR SDRAM通信的平臺, 它的主要功能是:捕獲DDR SDRAM發(fā)出的數據、以及通過(guò)輸入輸出緩存發(fā)送所有DDR SDRAM的控制信號、地址信號以及數據信號。

2.1 控制層工作原理

控制層主要由一個(gè)狀態(tài)機來(lái)控制DDR SDRAM控制器的狀態(tài)轉移。狀態(tài)機如圖2 所示。

2.jpg

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

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

3.jpg

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

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

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

2.2 物理層數據捕獲技術(shù)及數據通道電路

物理層的主要功能是獲得DDR SDRAM發(fā)出的數據、以及通過(guò)輸入輸出緩存發(fā)送所有DDR SDRAM的控制信號、地址信號以及數據信號。數據捕獲技術(shù)及數據通道電路是DDR SDRAM控制器的技術(shù)核心。DDR SDRAM接口是源同步接口,

即數據與傳輸時(shí)鐘是邊沿對齊的。因此, 為了在FPGA 中可靠捕獲數據要么延遲時(shí)鐘要么延遲數據, 使數據與時(shí)鐘中心對齊。本設計采取直接時(shí)鐘數據捕獲技術(shù)。

所謂直接時(shí)鐘數據捕獲技術(shù)就是利用DQS 信號計算數據延遲量, 通過(guò)延遲數據使數據中心與FPGA 內部時(shí)鐘沿對齊, 然

后用該內部時(shí)鐘直接讀取數據。DQS 是由DDR 發(fā)出的數據選通信號, 它與FPGA 內部時(shí)鐘頻率相同。此項技術(shù)的關(guān)鍵是確定數據的延遲時(shí)間。相對于其他的數據捕獲技術(shù), 這種直接時(shí)鐘數據捕獲技術(shù)可以應用于更高的時(shí)鐘頻率, 精確性和穩定性都高于其他方法。

4.jpg

為了得到數據應該延遲的時(shí)間量, 首先要對DQS 進(jìn)行邊沿檢測??刂破靼l(fā)出Dummy_rd_en 信號( 即假讀信號) 使DDR

SDRAM 發(fā)出DQS 信號, 當延遲量計算完畢時(shí), 置Dummy_rd_en 為低。

5.jpg

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

6.jpg

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

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

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

3 控制器實(shí)驗結果及結論

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

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

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



關(guān)鍵詞: Xilinx SDRAM FPGA DDR

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>