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