Xilinx FPGA 提供可簡化接口設計的 I/O 模塊和邏輯資源。盡管如此,這些 I/O 模塊以及額外的邏輯仍需設計人員在源 RTL 代碼中配置、驗證、執(zhí)行,并正確連接到系統的其余部分,然后仔細仿真并在硬件中進行驗證。
本文介紹了存儲器接口設計的性能要求、設計難題以及 Xilinx 的解決方案,從使用 Spartan-3 系列 FPGA 的低成本實現到使用 Virtex-5 FPGA 的最高帶寬接口,無所不包。
性能要求和 Xilinx 解決方案
20 世紀 90 年代后期,存儲器接口從單倍數據速率 SDRAM 發(fā)展為雙倍數據速率 (DDR) SDRAM,而如今的 DDR2 SDRAM 運行速率已達每引腳 667 Mbps 或更高。
應用通常可分為兩類:
● 低成本應用,器件成本最重要
● 高性能應用,獲得最高帶寬最重要
運行速率低于每引腳 400 Mbps 的 DDR SDRAM 和低端 DDR2 SDRAM 已能滿足大多數低成本系統存儲器的帶寬需求。對于這類應用,Xilinx 提供了 Spartan-3 系列 FPGA:Spartan-3、3E、3A 和
3AN 器件。
對于將存儲器接口帶寬推至極限的應用,如每引腳 667 Mbps 的 DDR2 SDRAM,Xilinx 提供了 Virtex-5 FPGA。
帶寬是與每引腳數據速率和數據總線寬度相關的一個因素。Spartan-3 系列和 Virtex-5 FPGA 均提供了不同選項,從數據總線寬度小于 72 位的較小的低成本系統,到寬度達 576 位的較大的 Virtex-5 封裝(圖 1)。
這些速度下的較寬總線使芯片對芯片接口的實現更為困難,因為要求的封裝更大,電源到信號和地面到信號比更佳。Virtex-5 FPGA 的開發(fā)使用了先進的稀疏鋸齒形 (SparseChevron) 封裝技術,能提供優(yōu)良的信號到電源和地面到引腳比。每個 I/O 引腳周圍都有足夠的電源和接地引腳和板,以確保良好的屏蔽,使由同步交換輸出 (SSO) 所造成的串擾噪音降到最低。
使用 Spartan-3 FPGA 的存儲器接口
對于每引腳 400Mbps低成本應用,Spartan-3 系列FPGA與 Xilinx 軟件工具結合即可提供易于實現且經濟的解決方案。
在一個基于FPGA的設計中,三個基本構建模塊組成一個存儲器接口和控制器:讀寫數據接口、存儲器控制器狀態(tài)機,以及將存儲器接口設計橋接到 FPGA 設計其余部分的用戶接口。這些模塊在架構中實現由數字控制管理器 (DCM) 的輸出信號對其進行時鐘驅動,在 Spartan-3 系列實現中,數字控制管理器還對查找表 (LUT) 延遲校準監(jiān)視器(可確保正確設置讀數據采集時序的邏輯塊)進行驅動。
在Spartan-3系列實現中,使用可配置邏輯塊 (CLB) 中的LUT實現讀數據采集。在讀事務過程中,DDR2 SDRAM器件將讀數據選通脈沖 (DQS) 及相關數據按照與讀數據 (DQ) 邊沿對齊的方式發(fā)送給FPGA。在源同步接口中采集DQ是一項頗具挑戰(zhàn)性的任務,因為數據在非自由運行DQS選通脈沖的每個邊沿上都會改變。讀數據采集的實現使用了一種基于 LUT 的 tap 延遲機制。
寫數據命令和時序由寫數據接口生成并控制。寫數據接口使用輸入/輸出模塊(IOB)觸發(fā)器和DCM的90度、180度和270度輸出端以與命令和數據位剛好對齊的方式發(fā)送DQS選通脈沖。
DDR2 SDRAM 存儲器接口的實現已在硬件中全面經過驗證。設計是在使用了 16 位寬 DDR2 SDRAM 存儲器器件和 XC3S700A-FG484 器件的 Spartan-3A 入門套件板中實現的。此參考設計僅利用了 Spartan-3A FPGA 可用資源的一小部分:13% 的 IOB、9% 的邏輯 Slice、16% 的全局緩沖器 (BUFG) 多路復用器 (MUX) 和八個 DCM 中的一個。
可以使用存儲器接口生成器 (MIG)軟件工具輕松定制Spartan-3系列存儲器接口設計,使其符合應用。
使用 Virtex-5 FPGA 的存儲器接口
隨著數據速率的提高,滿足接口時序方面的要求變得愈加困難了。追求更高數據速率的趨勢使得設計人員面臨巨大挑戰(zhàn),因為數據有效窗口(此為數據周期內的一段時間,其間可獲得可靠的 DQ)比數據周期本身縮小得快。這是由于與系統和器件性能參數關聯的多種不確定因素會影響數據有效窗口的大小,而這些因素的縮減速率與數據周期不同。
若對比以 400 Mbps 運行的 DDR SDRAM 和運行速率為 667 Mbps 的 DDR2存儲器技術的數據有效窗口,這種趨勢尤其明顯。數據周期為2.5ns的DDR器件的數據有效窗口為0.7ns,而周期為1.5ns的DDR2器件僅為 0.14 ns。
Virtex-5 FPGA采用I/O模塊中的專用延遲和時鐘資源(稱為ChipSync技術)解決了這一難題。內置到每個I/O中的ChipSync模塊均包含一串延遲單元(也稱作tap延遲),稱為 IODELAY,其分辨率為75ps。
此實現的架構基于若干構建模塊。用戶接口負責把存儲器控制器和物理層接口橋接到FPGA設計的其余部分,它使用的是FIFO架構。FIFO保存著命令、地址、寫數據和讀數據。主要控制器模塊控制讀、寫和刷新操作。其他兩個邏輯模塊(初始化控制器和校準邏輯)圍繞讀操作執(zhí)行時鐘到數據的操作(圖 2)。
用于地址、控制和數據的物理層接口在 IOB 中實現。采集 DQ 時,存儲器 DQS 會采集相應 DQ 并以此 DQS 的延遲形式將其寄存。此數據然后在觸發(fā)器的第二級與系統的時鐘域同步。I/O 模塊中的輸入串行器/解串器功能用于讀數據采集,第一對觸發(fā)器將數據從延遲 DQS 傳輸至系統時鐘域。該技術涉及到 75 ps tap 延遲 (IODELAY) 單元的應用,在由校準邏輯實現的校準程序中,這些延遲單 元會有所變化。系統初始化期間會執(zhí)行此校準程序,以設置 DQS、數據和系統時鐘之間的最佳相位,從而使時序余量達到最大化。
此設計還包括其他方面,如整體控制器狀態(tài)機的邏輯生成和用戶接口。為方便 FPGA 設計人員輕松實現整個設計,Xilinx 開發(fā)了存儲器接口生成器。
設計及與 MIG 的集成
將包括存儲器控制器狀態(tài)機在內的所有構建模塊集成到一起,對于設計的完整性具有重要意義??刂破鳡顟B(tài)機因存儲器架構和系統參數的不同而異。狀態(tài)機代碼也可能很復雜,取決于許多變量,如架構、數據總線寬度、深度、存取算法和數據與選通脈沖比等。
使用 MIG 可生成完整的設計,該軟件工具作為 ISE軟件 CORE Generator參考設計和知識產權作品套件之一部分,可從 Xilinx 免費獲取。MIG 的設計流程與傳統 FPGA 的設計流程非常相似。對于設計人員,MIG 的優(yōu)點是不必再為物理層接口或存儲器控制器從頭生成 RTL 代碼。
可以使用MIG 的GUI設置系統和存儲器參數(圖3)。例如,選定FPGA器件、封裝和速度級別后,可以選擇存儲器架構并挑選實際的存儲器器件或雙列直插存儲器模塊 (DIMM)。同是這一個GUI,還可用于選擇總線寬度和時鐘頻率。其他選項可對時鐘控制方法、CAS延遲、突發(fā)長度和引腳分配進行控制。
MIG 工具可在數分鐘內生成 RTL 和 UCF 文件,二者各為 HDL 代碼和約束文件。這些文件是用一個經過硬件驗證的參考設計庫生成的,并根據用戶輸入進行了修改。
有進一步修改 RTL 代碼的完全的靈活性。與提供“黑匣子”實現方法的其他解決方案不同,此設計中的代碼未經加密,設計人員可對設計隨意修改并進一步定制。輸出文件按模塊分類,適用于此設計的不同構建模塊:用戶接口、物理層或控制器狀態(tài)機。例如,可定制對存取算法進行控制的狀態(tài)機。修改可選代碼后,可再次進行仿真,以驗證整體設計的功能。
MIG 還可生成具有存儲器校驗功能的可綜合測試平臺。該測試平臺是一個設計示例,用于 Xilinx 基礎設計的功能仿真和硬件驗證。
設計的最后階段是導入 ISE 項目中的 MIG 文件,將其與 FPGA 設計的其余文件合并,然后進行綜合、布局和布線,必要時還會運行其他時序仿真,最后進行硬件驗證。MIG 軟件還會生成一個批處理文件,包括相應的綜合、映射以及布局和布線選項,以幫助優(yōu)化生成最終的 bit 文件。
開發(fā)板和套件
參考設計的硬件驗證是確保解決方案嚴密可靠的最終重要步驟。Xilinx 已驗證了 Spartan-3 系列和 Virtex-5 FPGA 的存儲器接口設計。表 1 所示為各種開發(fā)板所支持的存儲器接口。
開發(fā)板的范圍涵蓋從低成本 Spartan-3 系列 FPGA 實現到 Virtex-5 FPGA 系列所提供的高性能解決方案。