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