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