本白皮書討論各種存儲器接口控制器設計所面臨的挑戰和 Xilinx 的解決方案,同時也說明如何使用 Xilinx軟件工具和經過硬件驗證的參考設計來為您自己的應用(從低成本的 DDR SDRAM 應用到像 667 Mb/sDDR2 SDRAM 這樣的更高性能接口)設計完整的存
儲器接口解決方案。
存儲器接口趨勢和 Xilinx 解決方案
20 世紀 90 年代后期,存儲器接口從單倍數據速率 (SDR) SDRAM 發展到了雙倍數據速率 (DDR) SDRAM,而今天的 DDR2 SDRAM 運行速率已經達到每引腳 667 Mb/s或更高。當今的趨勢顯示,這些數據速率可能每四年增加一倍,到 2010 年,隨著DDR3 SDRAM 的出現,很可能超過每引腳 1.2 Gb/s。見圖1。
應用通常可分為兩類:一類是低成本應用,降低器件成本為主要目的;另一類是高性能應用,首要目標是謀求高帶寬。
運行速率低于每引腳 400 Mb/s 的 DDR SDRAM 和低端 DDR2 SDRAM 已能滿足大多數低成本系統存儲器的帶寬需求。對于這類應用,Xilinx 提供了 Spartan-3 系列FPGA,其中包括 Spartan-3、Spartan-3E 和 Spartan-3A 器件。
高性能應用把每引腳 533 和 667 Mb/s 的 DDR2 SDRAM 這樣的存儲器接口帶寬推到了極限;對于這類應用,Xilinx 推出了 Virtex-4 和 Virtex-5 FPGA,能夠充分滿足今天大多數系統的最高帶寬需求。
帶寬是與每引腳數據速率和數據總線寬度相關的一個因素。Spartan-3 系列、Virtex-4、Virtex-5 FPGA 提供不同的選項,從數據總線寬度小于 72 位的較小的低成本統,到576 位寬的更大的 Virtex-5 封裝(見圖2)。
高于 400 Mb/s 速率的更寬總線使得芯片到芯片的接口愈益難以開發,因為需要更大的封裝、更好的電源和接地-信號比率。Virtex-4 和 Virtex-5 FPGA 的開發使用了先進的稀疏鋸齒形 (Sparse Chevron) 封裝技術,能提供優良的信號-電源和接地引腳比率。每個 I/O 引腳周圍都有足夠的電源和接地引腳和板,以確保良好的屏蔽,使由同步交換輸出 (SSO) 所造成的串擾噪音降到最低。
低成本存儲器接口
今天,并不是所有的系統都在追求存儲器接口的性能極限。當低成本是主要的決定因素,而且存儲器的比特率達到每引腳 333 Mb/s 已經足夠時,Spartan-3 系列 FPGA配之以 Xilinx 軟件工具,就能提供一個易于實現、低成本的解決方案。
基于 FPGA 設計的存儲器接口和控制器由三個基本構建模塊組成:讀寫數據接口、存儲器控制器狀態機,以及將存儲器接口設計橋接到 FPGA 設計的其余部分的用戶界面(圖3)。這些模塊都在 FPGA 資源中實現,并由數字時鐘管理器 (DCM) 的輸出作為時鐘來驅動。在 Spartan-3 系列實現中,DCM 也驅動查找表 (LUT) 延遲校準監視器(一個確保讀數據采集具有正確時序的邏輯塊)。延遲校準電路用來選擇基于 LUT 的延遲單元的數量,這些延遲單元則用于針對讀數據對選通脈沖線 (DQS) 加以延遲。延遲校準電路計算出與 DQS 延遲電路相同的一個電路的延遲。校準時會考慮所有延遲因素,包括所有組件和布線延遲。
用戶界面是一種握手型的界面。用戶發出一條讀或寫命令,如果是寫命令的話還包括地址和數據,而用戶界面邏輯以 User_cmd-ack 信號回應,于是下一條命令又可發出。
在 Spartan-3 系列實現中,使用可配置邏輯塊 (CLB) 中的 LUT 來實現讀數據采集。在讀事務過程中,DDR 或 DDR2 SDRAM 器件將讀數據選通脈沖 (DQS) 及相關數據按照與讀數據 (DQ) 邊沿對齊的方式發送給 FPGA。在高頻率運行的源同步接口中采集讀數據是一項頗具挑戰性的任務, 因為數據在非自由運行 DQS 的每個邊沿上都會改變。讀數據采集的實現使用了一種基于 LUT 的 tap 延遲機制。DQS 時鐘信號被適量延遲,使其放置后在讀數據有效窗口中具有足夠的余量,以在 FPGA 內被采集。
讀數據的采集是在基于 LUT 的雙端口分布式 RAM 中完成的(見圖4)。LUT RAM 被配置成一對 FIFO,每個數據位都被輸入到上升邊沿 (FIFO 0) 和下降邊沿 (FIFO 1)的FIFO 中,如圖4 所示。這些深度為 16 個輸入的 FIFO 異步運行,具有獨立的讀寫端口。
來自存儲器的讀數據寫到經過延遲的 DQS 上升邊沿的 FIFO_0 中,并寫到經過延遲的DQS 下降邊沿的 FIFO_1 中。將讀數據從 DQS 時鐘域傳輸到存儲器控制器時鐘域就是通過這些異步 FIFO 完成的。在存儲器控制器的時鐘域中,可以從 FIFO_0 和FIFO_1 同時讀出數據。FIFO 的讀指針在 FPGA 的內部時鐘域中生成。寫使能信號(FIFO_0 WE 和 FIFO1_WE)的生成通過 DQS 和一個外部回送(亦即歸一化)信號完成。外部歸一化信號作為輸出傳送至輸入/ 輸出模塊 (IOB),然后通過輸入緩沖器作為輸入取出。這種技術可補償 FPGA 與存儲器器件之間的 IOB、器件和跡線延遲。從FPGA 輸入管腳發出的歸一化信號在進入 LUT 延遲電路之前使用與 DQS 相似的布線資源,以與布線延遲相匹配。環路之跡線延遲應為發送給存儲器的時鐘和 DQS 之跡線延遲的總和(圖4)。
寫數據命令和時序由寫數據接口生成并控制。寫數據接口使用 IOB 觸發器和 DCM 的90 度、180 度和 270 度輸出,發送按照 DDR 和 DDR2 SDRAM 的時序要求與命令位和數據位正確對齊的 DQS。
用于 Spartan-3 系列 FPGA 的一種 DDR 和 DDR2 SDRAM 存儲器接口實現已通過硬件進行了充分驗證。一個利用 Spartan-3A 入門套件的低成本 DDR2 SDRAM 參考設計示例已完成。此設計為板上 16 位寬 DDR2SDRAM 存儲器器件而開發,并使用了XC3S700A-FG484。此參考設計僅利用了 Spartan-3A FPGA 器件可用資源的一小部分:13% 的 IOB、9% 的邏輯 Slice、16% 的 BUFG MUX 和八個 DCM 中的一個。這一實現為其余部分 FPGA 設計所需的其他功能留下了可用資源。
使用存儲器接口生成器 (MIG) 軟件工具(本白皮書后面的部分有說明),設計人員可以很容易地定制 Spartan-3 系列的存儲器接口設計,以適合自己的應用。
高性能存儲器接口
隨著數據速率的提高,滿足接口時序方面的要求變得愈益困難了。與寫入存儲器相比,從存儲器中讀數據時,存儲器接口時鐘控制方面的要求通常更難滿足。追求更高數據速率的趨勢使得設計人員面臨巨大挑戰,因為數據有效窗口(此為數據周期內的一段時間,其間可獲得可靠的讀數據)比數據周期本身縮小得快。造成這種情況的原因是,影響有效數據窗口尺寸大小的系統和器件性能參數具有種種不確定性,它們縮小的速率與數據周期不同。
如果比較一下運行速度為 400 Mb/s 的 DDR SDRAM 數據有效窗口和運行速度為 667Mb/s 的 DDR2 存儲器技術,這種情況就一目了然了。數據周期為 2.5 ns 的 DDR 器件擁有 0.7 ns 的數據有效窗口,而數據周期為 1.5 ns 的 DDR2 器件僅有 0.14 ns 的數據有效窗口(圖5)。
顯然,數據有效窗口的加速減損給 FPGA 設計人員帶來了一堆全新的設計挑戰,要創建和維護可靠的存儲器接口性能,就得采用更有效的方法。
正如 Spartan-3 系列 FPGA 中所實現的那樣,使用讀數據 DQS 可以把讀數據采集到可配置邏輯塊 (CLB) 中,但是使用 LUT 把 DQS 或時鐘與數據有效窗口中心對齊時,所用的延遲 tap 卻很粗糙。CLB 中實現的延遲 tap 具有大約幾百微微秒 (ps) 的分辨率,然而,對于超過 400 Mb/s 的數據速率的讀取采集時序,所需的分辨率要比基于CLB 的 tap 高一個數量級。Virtex-4 和 Virtex-5 FPGA 采用 I/O 模塊中的專用延遲和時鐘資源(稱為 ChipSync? 技術)來解決這一難題。內置到每個 I/O 中的 ChipSync模塊都含有一串延遲單元(tap 延遲),在 Virtex-4 中稱為 IDELAY,而在 Virtex-5FPGA 中稱為 IODELAY,其分辨率為 75 ps (見圖6)。
此實現的架構基于幾個構建模塊。用戶界面負責把存儲器控制器和物理層接口橋接到其余 FPGA 設計,它使用 FIFO 架構(圖7)。FIFO 有三套:命令/ 地址 FIFO、寫FIFO、讀 FIFO。這些 FIFO 保存著命令、地址、寫數據和讀數據。主要的控制器模塊控制讀、寫和刷新操作。其他兩個邏輯模塊執行讀操作的時鐘-數據中心對齊:初始化控制器和校準邏輯。
用于地址、控制和數據的物理層接口在 I/O 模塊 (IOB) 中實現。讀數據在鎖存器的第二級(也是 IOB 的一部分)重新采集。
Virtex-4 和 Virtex-5 FPGA 存儲器接口參考設計支持兩種讀數據采集技術。Virtex-4FPGA 支持的直接時鐘技術延遲了讀數據,因而使用 IOB 的輸入 DDR 觸發器中的系統時鐘可直接寄存讀數據。為將 FPGA 時鐘對齊到最佳狀態,對每個讀數據位都會單獨進行校驗。這種技術為高達 240 MHz 的時鐘速率提供了足夠的性能。
第二種技術稱為基于 DQS 的技術。此技術用于更高的時鐘速率,Virtex-4 和 Virtex-5FPGA 二者都支持此技術。它使用存儲器 DQS 來采集相應的讀數據,數據被此 DQS的延遲信號(通過一個局部 I/O 時鐘緩沖器 (BUFIO) 分配)寄存。此數據然后在觸發器的第二級與系統的時鐘域同步。IOB 中的輸入串行器/ 解串器功能用于讀數據采集;第一對觸發器把數據從延遲的 DQS 域中傳輸到系統的時鐘域(圖8)。
兩種技術都涉及到 tap 延遲 (IDELAY) 單元的應用, 在由校驗邏輯實現的校驗程序中,這些延遲單元會有所變化。在系統初始化期間,會執行此校準程序以設置 DQS、數據和系統時鐘之間的最佳相位。這樣做的目的是使時序余量最大化。校準會消除任何由過程相關的延遲所導致的不確定性,從而補償對于任何一塊電路板都不變的那些通路延遲成分。這些成分包括 PCB 跡線延遲、封裝延遲和過程相關的傳播延遲成分(存儲器和 FPGA 中都有),以及 FPGA I/O 模塊中采集觸發器的建立/ 保持時間。有的延遲是由系統初始化階段的過程、電壓和溫度所決定的,校準即負責解決這些延遲的變動。
在校準過程中會增加 DQS 和數據的延遲 tap 以執行邊沿檢測,檢測方式是通過連續從存儲器中讀回數據并對預編寫培訓模式或存儲器 DQS 本身進行采樣,直到確定數據選通脈沖 (DQS) 的前沿或前后兩沿。之后數據或 DQS 的 tap 數被設定,以提供最大的時序余量。對“基于 DQS”的采集而言,DQS 和數據可以有不同的 tap 延遲值,因為同步實質上分為兩個階段:一個先在 DQS 域中采集數據,另一個把此數據傳輸到系統時鐘域。
在更高的時鐘頻率下,“基于 DQS ”的采集方法就變得十分必要,其二階段方法能提供更好的采集時序余量,因為 DDR 時序的不確定性主要限于 IOB 中觸發器的第一級。此外,因為使用 DQS 來寄存數據,與時鐘-數據 (Tac) 變化相比較, DQS -數據變化的時序不確定性要小一些。例如,對于 DDR2 而言,這些不確定性就是由器件的tDQSQ 和 tQHS 參數給出的。
正如 Spartan-3 系列 FPGA 中所實現的那樣,Virtex-4 和 Virtex-5 FPGA 的寫時序由DCM 所支持,此 DCM 生成系統時鐘的兩相輸出。存儲器的 DQS 由一個輸出 DDR 寄存器來輸出,這個 DDR 寄存器由系統時鐘的同相時鐘驅動。寫數據則由超前系統時鐘90° 的一個 DCM 時鐘輸出進行時鐘控制。這種技術確保了在 FPGA 的輸出部分,DQS 與寫操作的數據中心對齊。
此設計的其他方面包括整體控制器狀態機的邏輯生成和用戶接口。為了使設計人員更容易完成整個設計,Xilinx 開發了存儲器接口生成器 (MIG) 工具。
控制器設計和集成
創建存儲器控制器是一項極其復雜、精細的任務,FPGA 設計人員要解決面臨的一道道難題,就需要 FPGA 隨附的工具提供更新水平的集成支持。
為設計的完整性起見,對包括存儲器控制器狀態機在內的所有構建模塊加以集成,十分必要。控制器狀態機因存儲器架構和系統參數的不同而異。狀態機編碼也可以很復雜,它是多個變量的函數,例如:
架構(DDR、DDR2、QDR II、RLDRAM 等)
組 (bank) 數(存儲器器件之外或之內)
數據總線寬度
存儲器器件的寬度和深度
組和行存取算法
最后,數據與 DQS 比 (DQ/DQS) 這類參數會進一步增加設計的復雜性。控制器狀態機必須按正確順序發出命令,同時還要考慮存儲器器件的時序要求。
使用 MIG 軟件工具可生成完整的設計。該工具作為 CORE Generator 參考設計和知識產權套件的一部分,可從 Xilinx 免費獲取。MIG 設計流程(圖9)與傳統 FPGA 的設計流程非常相似。MIG 工具的優點是不必再為物理層接口或存儲器控制器從頭生成RTL 代碼。
MIG 圖形用戶界面 (GUI) 可用于設置系統和存儲器參數(圖10)。例如,選定 FPGA器件、封裝方式和速度級別之后,設計人員可選擇存儲器架構,并挑選實際存儲器器件或 DIMM。同是這一個 GUI,還可用于選擇總線寬度和時鐘頻率。同時,對于某些FPGA 器件,它還提供擁有多于一個控制器的選項,以適應多個存儲器總線接口的要求。另外一些選項可提供對時鐘控制方法、CAS 延遲、突發長度和引腳分配的控制。
用不了一分鐘,MIG 工具即可生成 RTL 和 UCF 文件,前者是 HDL 代碼文件,后者是約束文件。這些文件是用一個經過硬件驗證的參考設計庫生成的,并根據用戶輸入進行了修改。
設計人員享有完全的靈活性,可進一步修改 RTL 代碼。與提供“黑匣子”實現方法的其他解決方案不同,此設計中的代碼未加密,設計人員完全可以對設計進行任意修改和進一步定制。輸出文件按模塊分類,這些模塊被應用于此設計的不同構建模塊:用戶界面、物理層、控制器狀態機等等。因此,設計人員可選擇對控制組存取算法的狀態機進行自定義。由 MIG 工具生成的 Virtex-4 和 Virtex-5 DDR2 的組存取算法彼此不同。Virtex-5 設計采用一種最近最少使用 (LRU) 算法,使多達四組中的一行總是打開,以縮減因打開/ 關閉行而造成的開銷。如果需要在一個新組中打開一行,控制器會關閉最近最少使用組中的行,并在新組中打開一行。而在 Virtex-4 控制器實現中,任何時候只有單個組有一個打開的行。每個應用都可能需要有自己的存取算法來最大化吞吐量,設計人員可通過改變 RTL 代碼來修改算法,以更加適合其應用的訪問模式。
修改可選代碼之后,設計人員可再次進行仿真,以驗證整體設計的功能。MIG 工具還可生成具有存儲器校驗功能的可綜合測試平臺。該測試平臺是一個設計示例,用于Xilinx 基礎設計的功能仿真和硬件驗證。測試平臺向存儲控制器發出一系列寫和讀回命令。它還可以用作模板,來生成自定義的測試平臺。
設計的最后階段是把 MIG 文件導入 ISE 項目,將它們與其余 FPGA 設計文件合并,然后進行綜合、布局和布線,必要時還運行其他時序仿真,并最終進行硬件驗證。MIG軟件工具還會生成一個批處理文件,包括相應的綜合、映射以及布局和布線選項,以幫助優化生成最終的 bit 文件。
高性能系統設計
實現高性能存儲器接口遠遠不止實現 FPGA 片上設計,它需要解決一系列芯片到芯片的難題,例如對信號完整性的要求和電路板設計方面的挑戰。
信號完整性的挑戰在于控制串擾、地彈、振鈴、噪聲容限、阻抗匹配和去耦合,從而確保可靠的信號有效窗口。Virtex-4 和 Virtex-5 FPGA 所采用的列式架構能使 I/O、時鐘、電源和接地引腳部署在芯片的任何位置,而不光是沿著外圍排列。此架構緩解了與 I/O 和陣列依賴性、電源和接地分布、硬 IP 擴展有關的問題。此外,Virtex-4 和Virtex-5 FPGA 中所使用的稀疏鋸齒形封裝技術能對整個封裝中的電源和接地引腳進行均勻分配。這些封裝提供了更好的抗串擾能力,使高性能設計中的信號完整性得以改善。圖11 所示為 Virtex-5 FPGA 封裝管腳。圓點表示電源和接地引腳,叉號表示用戶可用的引腳;在這樣的布局中,I/O 信號由足夠的電源和接地引腳環繞,能確保有效屏蔽 SSO 噪音。
對于高性能存儲器系統來說,增加數據速率并不總能滿足需求;要達到希望的帶寬,就需要有更寬的數據總線。今天,144 或 288 位的接口已經隨處可見。多位同時切換可導致信號完整性問題。對 SSO 的限制由器件供應商標明,它代表器件中用戶可為每組同時使用的信號引腳的數量。憑借稀疏鋸齒形封裝技術良好的 SSO 噪音屏蔽優勢和同質的 I/O 結構,寬數據總線接口完全可能實現。
表1 列出了 Virtex-5 LX 器件和滿足 600 Mb/s 數據速率下的 SSO 需求的最大數據總線寬度。
設計大容量或密集型存儲器系統的另一個挑戰是容量負載。高性能存儲器系統可能需要由地址和命令信號共用的一條總線驅動的多存儲器器件。大容量無緩沖 DIMM 接口就是一個例子。如果每個單列 DIMM 擁有 18 個組件,那么包含兩個 72 位無緩沖DIMM 的接口可以在地址和命令總線上擁有多達 36 個接收器。由 JEDEC 標準推薦,并在通用系統中常見的最大負載是兩個無緩沖 DIMM。總線上所產生的容量負載會極其龐大,導致信號邊沿上升和下降需要多于一個時鐘周期,從而使存儲器器件的建立和保持出錯。圖12 所示為 IBIS 仿真所提供的眼圖,使用的是不同配置:一個寄存DIMM、一個無緩沖 DIMM 和兩個單列無緩沖 DIMM。容量負載的范圍從使用寄存DIMM 時的 2 個接收器到使用無緩沖 DIMM 時的 36 個接收器不等。
這些眼圖清楚地顯示了地址總線的容量負載效果;寄存 DIMM 提供地址和命令總線上一個打得很開的有效窗口。一個 DIMM 的眼張開度在 267 MHz 下仍然不錯。然而,當負載為 32 時,地址和命令信號有效窗口便大為縮小,而傳統的實現方法已不足以可靠地與兩個無緩沖 DIMM 接口。
這個簡單的測試示例說明負載會導致邊沿明顯變慢的同時,眼圖在更高的頻率下閉上。對于總線負載不可減少的系統,降低操作的時鐘頻率不失為使信號完整性維持在可接受水平上的一種方法。然而,還有其他方法可以在不降低時鐘頻率的情況下解決容量負載問題:在可以往接口添加一個時鐘周期的延遲的應用中,使用寄存 DIMM 可以是不錯的選擇。這些 DIMM 使用一個寄存器來緩沖地址和命令一類信號,從而降低容量負載。使用基于在地址和命令信號上采用兩個時鐘周期(稱為 2T 時序)的設計技術,地址和命令信號可以用系統時鐘頻率的一半發送。控制好存儲器系統的成本和達到要求的性能一樣,也是一個很大的挑戰。降低電路板設計的復雜性并減少材料費用的一個方法是使用片上終端而不是電路板上的電阻器。Virtex-4 和 Virtex-5 系列 FPGA 提供一種稱為“數控阻抗 (DCI)”的功能,在設計中實現該功能可減少電路板上的電阻器數量。MIG 工具有一個內置選項,允許設計人員在實現存儲器接口設計時包含針對地址、控制或數據總線的上述功能。此時要考慮的一個權衡因素是當終端在片上實現時,片上與片外功耗孰優孰劣。
存儲器接口的開發板
對參考設計進行硬件驗證是確保解決方案嚴密可靠的重要最終步驟。Xilinx 已經驗證了Spartan-3 系列、Virtex-4 和 Virtex-5 FPGA 的存儲器接口設計。表2 所示為對于每一個開發板,所支持的存儲器接口。
開發電路板的范圍涵蓋從低成本 Spartan-3 系列 FPGA 實現到 Virtex-4 和 Virtex-5FPGA 系列器件所提供的高性能解決方案。
結論
有了合適的 FPGA、軟件工具和開發電路板這樣的利器,使用 667 Mb/s DDR2SDRAM 進行存儲器接口控制器設計便成為一個既快速又流暢的過程,無論是低成本應用還是高性能設計,都可以得心應手地完成。
評論
查看更多