17.08.2013 Views

使用Spartan-3A FPGA 實現低成本DDR2接口使用Spartan-3A ... - Xilinx

使用Spartan-3A FPGA 實現低成本DDR2接口使用Spartan-3A ... - Xilinx

使用Spartan-3A FPGA 實現低成本DDR2接口使用Spartan-3A ... - Xilinx

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

技 術 專 欄<br />

<strong>使用Spartan</strong>-<strong>3A</strong> <strong>FPGA</strong><br />

實現低成本DDR2接口<br />

<strong>Xilinx</strong> 提供存儲器接口完全解決方案,幫助您的產品更快上市<br />

Input_clock <strong>FPGA</strong>_Clock<br />

DCM<br />

User_data_valid<br />

User_output_data<br />

User_data_mask<br />

User_input_data<br />

User_address<br />

User_command<br />

User_burst_done<br />

User_cmd_ack<br />

User Interface<br />

LUT Delay<br />

Calibration<br />

Monitor<br />

Clocks all modules in fabric<br />

Write Datapath<br />

Controller<br />

FIFO<br />

Read<br />

Capture<br />

FIFO<br />

LUT<br />

Delay<br />

LUT<br />

Delay<br />

and Control<br />

DM<br />

Spartan-3 Generation<br />

<strong>FPGA</strong><br />

圖 1 – Spartan-3 <strong>FPGA</strong> 系列的 DDR 2 SDRAM 接口實現<br />

12 賽靈思中國通訊 25期<br />

DQS<br />

DQ<br />

DDR2<br />

SDRAM<br />

作者:Adrian Cosoroaba<br />

<strong>Xilinx</strong> 公司營銷經理<br />

adrian.cosoroaba@xilinx.com<br />

應用通常可分為兩類:一類是高性能應用,以達到<br />

最高帶寬為首要目的;另一類是低成本應用,重降<br />

低系統成本。對於高端應用,<strong>Xilinx</strong> 提供能夠滿足其達<br />

到最高帶寬需求的 Virtex TM -5 <strong>FPGA</strong>。<br />

然而,並不是所有客戶都在追求存儲器性能的極<br />

限。每引腳數據速率在 400 Mbps 以下的 DDR SDRAM<br />

和 DDR2 SDRAM 足以滿足大多數低成本系統的需求。<br />

對於這類應用,<strong>Xilinx</strong> 提供了 Spartan TM -3 系列,其中<br />

包括 Spartan-3、Spartan-3E、Spartan-<strong>3A</strong> 和 Spartan-<strong>3A</strong>N<br />

<strong>FPGA</strong>。<br />

本文講述使用 Spartan-3 <strong>FPGA</strong> 系列實現 DDR2<br />

SDRAM 存儲器接口的方案架構,並且說明 <strong>Xilinx</strong> ® 工具<br />

和硬件驗證參考設計如何幫助您構建自己的存儲器接<br />

口。<br />

存儲器控制器和 DDR2 接口<br />

在一個基於 <strong>FPGA</strong> 的設計中,三個基本構建模塊組成<br />

一組控制器和存儲器接口:讀寫數據接口、存儲器控制器<br />

狀態機,以及將存儲器接口設計橋接到 <strong>FPGA</strong> 設計其余部<br />

分的用戶界面(圖 1)。<br />

在 Spartan-3 <strong>FPGA</strong> 系列中,用戶界面為握手型接口。<br />

當連同欲寫的地址和數據發出一條命令(讀或寫)時,用<br />

戶界面邏輯以“user_cmd-ack”信號回應,然後可發出下<br />

一條命令。<br />

結構中實現的功能模塊由數字時鐘管理器 (DCM) 的輸<br />

出進行時鐘控制,該數字時鐘管理器還驅動 LUT(查找<br />

錶)延遲校准監視器。這個校准電路用於選擇相對於讀數<br />

據 (DQ) 對讀數據選通脈衝 (DQS) 進行延遲所需的基於 LUT<br />

©2007 <strong>Xilinx</strong> Inc. 版權所有。XILINX、<strong>Xilinx</strong> 標誌以及本文件中包括的其他品牌名稱,是 <strong>Xilinx</strong>, Inc. 的商標。所有其他商標都是其各自所有者的財產。


元件的數量,以便為在 <strong>FPGA</strong> 內部採集數<br />

據而正確對齊讀數據選通脈衝 (DQS)。<br />

在讀取事務過程中,DDR2 SDRAM 器件<br />

將 DQS 和相關數據發送到與 DQ 對齊邊沿<br />

的 <strong>FPGA</strong>。採集 DQ 是一項艱巨任務,因為<br />

非自由型 DQS 的每個沿上都有數據在變<br />

化。<br />

DQ 採集通過可配置邏輯塊 (CLB) 中的<br />

LUT 實現。DQ 採集的實現使用了一種基<br />

於 LUT 的 tap 延遲機制。DQS 時鐘信號經<br />

過延遲,以提供足夠的時序余量。DQ 採<br />

集是在基於 LUT 的雙端口 RAM 中實現的<br />

DQ<br />

FIFO 0<br />

FIFO_0_WE<br />

FIFO 1 User Data<br />

FIFO_1_WE<br />

IOB Delayed DQS CLB<br />

(圖 2)。LUT RAM 配置成一對 FIFO,每個<br />

數據位都輸入到上昇沿 (FIFO_0) 和下降沿<br />

(FIFO_1) 的 FIFO 中。這些厚度為 16 個入口<br />

的 FIFO 是異步的,具有獨立的讀寫端口。<br />

從 DQS 時鐘域到存儲器控制器時鐘域<br />

的 DQ 傳輸就是通過這些異步 FIFO 完成<br />

的。在存儲器控制器的時鐘域中,可以從<br />

FIFO_0 和 FIFO_1 同時讀出數據。FIFO 的讀<br />

指針是在 <strong>FPGA</strong> 的內部時鐘域中生成的。<br />

寫使能信號(FIFO_0 WE 和 FIFO1_WE)的<br />

生成是通過 DQS 和一個外部環回或歸一化<br />

信號完成的。<br />

外部歸一化信號作為輸出送至輸入/輸<br />

出模塊 (IOB),然後再作為輸入送至輸入緩<br />

衝器。這種技術可補償 <strong>FPGA</strong> 與存儲器器<br />

件之間的 IOB、器件和跡線延遲。<br />

寫數據接口生成並控制寫數據命令和<br />

時序。寫數據接口使用 IOB 觸發器和 DCM<br />

的 90 度、180 度和 270 度輸出,發送一個<br />

按照 DDR 和 DDR2 SDRAM 的時序要求與命<br />

令位和數據位正確對齊的 DQS。<br />

此設計的其他方面包括整體控制器狀<br />

態機的邏輯生成和用戶界面。為便於設計<br />

人員使用整個解決方案,<strong>Xilinx</strong> 開發了存儲<br />

器接口生成器 (MIG) 工具。<br />

控制器的設計<br />

以及與 MIG 軟件工具的集成<br />

為了使您的設計完善,集成包括存儲<br />

Spartan-3<br />

Generation<br />

FIFO_0_WE<br />

FIFO_1_WE<br />

器控制器狀態機在內的所有構建模塊至關<br />

重要。控制器狀態機因存儲器架構和系<br />

統參數不同而異。狀態機代碼也可以很複<br />

雜,它可能是多個變量的函數,例如:<br />

• 架構(DDR、DDR2)<br />

• 組數(存儲器器件的外部或內部)<br />

• 數據總線寬度<br />

• 存儲器器件的寬度和厚度<br />

• 組和行存取算法<br />

最後,數據與選通脈衝比 (DQ/DQS) 這<br />

類參數會進一步加大設計的複雜性。控<br />

CLK<br />

Data/DQS<br />

Address<br />

Normalization<br />

Signal<br />

DDR2<br />

SDRAM<br />

制 器 狀 態 機<br />

必 須 按 正 確<br />

順 序 發 出 命<br />

令 , 同 時 還<br />

要 考 慮 存 儲<br />

器 器 件 的 時<br />

序要求。<br />

使用 MIG<br />

軟 件 工 具 可<br />

生 成 完 整 的<br />

設計。該工具作為參考設計和知識產權作<br />

品中的 ISE TM 軟件 CORE Generator TM 套件的<br />

一部分,可從 <strong>Xilinx</strong> 免費獲取。MIG 的設計<br />

流程與傳統 <strong>FPGA</strong> 的設計流程非常相似。<br />

對設計人員的好處是,有了這個軟件工<br />

具,就不必再為物理層接口或存儲器控制<br />

器從頭生成 RTL 代碼。<br />

要設置系統和存儲器參數,可使用 MIG<br />

的圖形用戶界面 (GUI)。例如,選定 <strong>FPGA</strong><br />

器件、封裝方式和速度級別之後,可以選<br />

擇存儲器架構,甚至還可以挑選實際的<br />

<strong>Xilinx</strong> <strong>FPGA</strong> Spartan-3 <strong>FPGA</strong> Spartan-3E <strong>FPGA</strong> Spartan-<strong>3A</strong> <strong>FPGA</strong><br />

開發板 SL361 入門套件 3E 入門套件 <strong>3A</strong><br />

支持的存儲器接口 DDR DDR DDR2<br />

存儲器器件或 DIMM(雙列直插存儲器模<br />

塊)。同是這一個 GUI,還可用來選擇總<br />

線寬度和時鐘頻率。另外一些選項可提供<br />

對 CAS(列訪問 DQS)延遲、突發長度和<br />

引腳分配的控制。<br />

用不了一分鐘,MIG 工具即可生成 RTL<br />

和 UCF 文件(分別是 HDL 代碼和約束文<br />

件)。這些文件是用一個經過硬件驗證的<br />

參考設計庫生成的,所用的參考設計根據<br />

您的輸入進行了修改。輸出文件按模塊分<br />

類,適用於此設計的不同構建模塊,如用<br />

戶界面、物理層和控制器狀態機。<br />

錶 1 – 存儲器接口的低成本開發板<br />

技 術 專 欄<br />

您還享有完全的靈活性,可進一步修<br />

改 RTL 代碼。與提供“黑匣子”實現方法<br />

的其他解決方案不同,此設計中的代碼沒<br />

有加密,從而提供了對設計進行修改和進<br />

一步定制的完全靈活性。修改任何可選代<br />

碼之後,都可再次進行仿真,以驗證整體<br />

設計的功能。<br />

MIG 工具還可生成具有存儲器校驗功<br />

能的可綜合測試平台。該測試平台是一個<br />

設計示例,用於 <strong>Xilinx</strong> 參考設計的功能仿<br />

真和硬件驗證,它可以向存儲器控制器發<br />

出一系列寫命令和讀回命令。您還可將其<br />

用作模板,生成自己的定制測試平台。<br />

設計的最後階段是導入 ISE 項目中的<br />

MIG 文件,將其與 <strong>FPGA</strong> 設計的其余文件合<br />

併(然後進行綜合、佈局和布線),必要<br />

時還會運行其他時序仿真,並進行硬件驗<br />

證。MIG 軟件工具生成一個批處理文件,<br />

其中有相應的綜合、映射、佈局和布線選<br />

項,以幫助您優化生成最終的位文件。<br />

硬件驗證和開發板<br />

參考設計的硬件驗證是確保解決方案<br />

嚴密可靠的最終重要步驟。<br />

<strong>Xilinx</strong> 對在硬件中實現 Spartan-<strong>3A</strong> <strong>FPGA</strong><br />

的 DDR2 SDRAM 存儲器接口進行了全面驗<br />

證。我們用低成本的 Spartan-<strong>3A</strong> 入門套件<br />

板實現了 DDR2 SDRAM 設計,在設計中使<br />

用了板上16 位寬的 DDR2 SDRAM 存儲器器<br />

件和 XC3S700A-FG484 <strong>FPGA</strong>。此參考設計僅<br />

使用了 Spartan-<strong>3A</strong> 器件可用資源的一小部<br />

分:IOB 的 13%、邏輯 Slice 的 9%、BUFG<br />

MUX 的 16% 和八個 DCM 之一。本實現方<br />

法為其他功能留下了大量資源。<br />

<strong>Xilinx</strong> 驗證了各種 Spartan-3 <strong>FPGA</strong> 系<br />

列的存儲器接口設計。錶 1 所示為各種<br />

Spartan-3 <strong>FPGA</strong> 系列開發板的硬件驗證存儲<br />

器接口。<br />

結論<br />

使用低成本 Spartan-3 <strong>FPGA</strong> 系列、存儲<br />

器接口生成器 (MIG) 工具和 <strong>Xilinx</strong> 開發板,<br />

可加快存儲器接口和控制器的設計。<br />

有關存儲器接口解決方案的進一步信息<br />

和詳情,請訪問 www.xilinx.com/cn/memory。<br />

2007年夏季刊 13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!