引言:從本文開始,我們介紹Xilinx FPGA時鐘及I/O接口規(guī)劃設(shè)計。I/O和時鐘規(guī)劃是定義和分析FPGA和印刷電路板(PCB)之間連接的過程,并將各種互連信號分配給FPGA器件的物理管腳,正確的規(guī)劃I/O端口和時鐘分配會提高FPGA系統(tǒng)性能、減少設(shè)計迭代和縮短計開發(fā)時間。本文主要介紹時鐘及I/O規(guī)劃的各個階段及流程要點。
1.1 概述
I/O和時鐘規(guī)劃過程會涉及PCB設(shè)計師、FPGA設(shè)計師和系統(tǒng)設(shè)計師,通常會關(guān)注一下幾點內(nèi)容:
簡化關(guān)鍵信號連接,縮短信號長度,避免信號交叉;
保持輸入和輸出器件高速信號的完整性;
選擇可能與備用設(shè)備一起使用的I/O配置;
確定PCB上的電源和接地信號可用性;
確定PCB適當(dāng)去耦的要求;
確定器件編程和調(diào)試注意事項。
通常,設(shè)計人員會受到非最佳引腳的阻礙,在試圖滿足時序和信號完整性要求時,會導(dǎo)致進(jìn)一步延遲。通過考慮從PCB到FPGA芯片的數(shù)據(jù)流,可以快速實現(xiàn)最佳的引腳配置,從而減少內(nèi)部和外部走線長度以及路由擁塞。I/O和時鐘規(guī)劃主要利用Vivado?集成設(shè)計環(huán)境(IDE)的圖形用戶界面(GUI)完成。1.2 I/O和時鐘規(guī)劃階段
圖1、FPGA器件管腳布局
Vivado Design Suite有助于在設(shè)計過程的不同階段進(jìn)行I/O和時鐘規(guī)劃,實現(xiàn)從PCB設(shè)計師和FPGA設(shè)計師之間的初始協(xié)作到完全實現(xiàn)設(shè)計的驗證。隨著設(shè)計在設(shè)計流程中的推進(jìn),更多的信息變得可用,從而實現(xiàn)更復(fù)雜的分析和規(guī)則檢查。例如,在設(shè)計流程的早期分析使用估計數(shù)據(jù),例如延遲信息,而對綜合網(wǎng)表或?qū)崿F(xiàn)的設(shè)計的分析使用實際器件和互連延遲。
正確的I/O分配取決于FPGA的結(jié)構(gòu)、PCB設(shè)計的要求以及兩者之間的交互。I/O端口分配(定義PCB信號如何進(jìn)入FPGA設(shè)計或輸出到電路板)和時鐘資源分配(定義設(shè)計中時鐘樹的結(jié)構(gòu))通常一起完成。例如,器件上的某些管腳用作時鐘管腳是最佳的,而其他管腳對于數(shù)字控制阻抗(DCI)級聯(lián)和內(nèi)部電壓參考(VREF)是最佳的。
某些類型的IP,如內(nèi)存IP、千兆收發(fā)器(GT)、Xilinx的高速IO IP以及PCI Express?(PCIe)和以太網(wǎng)接口都有與之相關(guān)的I/O端口。在開始I/O規(guī)劃過程之前,必須使用Vivado Design Suite中的IP功能正確配置此IP。由于這些接口通常對時序最為關(guān)鍵,因此在考慮設(shè)備管腳分配時,將此IP用作起點。此外,使用此IP時,請使用RTL或綜合設(shè)計。
- RTL前I/O規(guī)劃
在進(jìn)行RTL設(shè)計前,可以創(chuàng)建一個空的I/O規(guī)劃工程,以便在設(shè)計源文件可用之前啟用早期器件初始I/O端口分配。使用這種方法,PCB和FPGA設(shè)計師能夠就早期的引腳定義達(dá)成一致,從而消除設(shè)計周期后期與設(shè)備引腳更改相關(guān)的迭代。使用I/O規(guī)劃工程,您可以:
- 從PCB設(shè)計器導(dǎo)入器件和I/O端口分配,或手動創(chuàng)建I/O端口;導(dǎo)出器件和I/O端口分配,以交給PCB設(shè)計師,或在設(shè)計過程中稍后使用;解決端口定義和引腳分配后,將I/O規(guī)劃工程遷移到RTL項目;根據(jù)端口定義,為頂層設(shè)計創(chuàng)建Verilog或VHDL模塊定義。
完成I/O規(guī)劃工程中的端口分配后,可以將該工程遷移到RTL工程,并為頂層設(shè)計創(chuàng)建Verilog或VHDL模塊定義。
RTL I/O規(guī)劃
在詳細(xì)的RTL工程中執(zhí)行I/O規(guī)劃,通過這種方法,可以選擇包括Vivado IP目錄中的IP核,也可以包括Vivado IP integrator中的塊設(shè)計。使用IP目錄,您可以自定義IP,使用時鐘向?qū)ё远x時鐘組件,并配置SelectIO? 使用SelectIO界面向?qū)нB接資源。在精心設(shè)計中,Vivado工具提供基本的DRC,用于檢查端口分配、I/O標(biāo)準(zhǔn)、時鐘資源和其他設(shè)計細(xì)節(jié)。您可以使用精心設(shè)計完成初始I/O和時鐘規(guī)劃,并導(dǎo)出設(shè)備和I/O端口分配,以用于PCB原理圖符號生成,或?qū)⒓s束保存在XDC文件中,以便在綜合或?qū)崿F(xiàn)期間使用。
網(wǎng)表I/O規(guī)劃
還可以使用綜合的網(wǎng)表執(zhí)行I/O規(guī)劃。使用這種方法,可以使用合成的RTL項目,也可以使用綜合后的網(wǎng)表創(chuàng)建的網(wǎng)表項目。盡可能使用綜合設(shè)計來執(zhí)行I/O和時鐘規(guī)劃。Vivado工具在合成后有更多關(guān)于設(shè)計的信息,您可以使用自動I/O放置和交互式放置模式來控制I/O端口分配。還可以使用I/O規(guī)劃視圖布局查看設(shè)備包的物理管腳與設(shè)備上I/O組的管芯焊盤之間的關(guān)系。
使用綜合設(shè)計還可以讓您在優(yōu)化PCB和Xilinx?設(shè)備之間的連接時做出更明智的決定。這使您能夠更好地與PCB或系統(tǒng)級設(shè)計器接口,從而更容易從分配IO放置的IP核(如PCIe或內(nèi)存IP)合并IO放置。此外,由于所有時鐘(包括生成的時鐘)都是在綜合后定義的,Vivado Design Suite對時鐘要求和資源利用率有更大的可見性,并且可以對設(shè)計進(jìn)行更徹底的驗證。
建議:為了檢查時鐘邏輯,Xilinx建議使用綜合設(shè)計進(jìn)行驗證。為了檢查時鐘計時,Xilinx建議使用已實現(xiàn)的設(shè)計進(jìn)行驗證。
最終I/O驗證和已實施的設(shè)計
您必須使用完全實現(xiàn)的設(shè)計來驗證最終有效的I/O引腳和時鐘配置。正確的時鐘資源驗證需要所有時鐘的完全路由實現(xiàn)??梢詸z查實現(xiàn)報告中與I/O和時鐘相關(guān)的消息。最后,與PCB設(shè)計師仔細(xì)檢查I/O端口分配,以確保FPGA在系統(tǒng)級設(shè)計中得到正確定義。
1.3 I/O和時鐘規(guī)劃設(shè)計流程步驟
圖2、I/O和時鐘規(guī)劃設(shè)計流程圖
圖2左側(cè)顯示了的項目設(shè)計流程步驟。水平箭頭指示項目設(shè)計流程中可以執(zhí)行I/O和時鐘規(guī)劃的不同階段。I/O和時鐘規(guī)劃設(shè)計流程中的步驟如圖右側(cè)所示。
1) 選擇器件及兼容器件
FPGA器件選型時,根據(jù)最終設(shè)計的資源估算確定器件資源大小。根據(jù)PCB要求選擇封裝,例如通往存儲器的關(guān)鍵路徑。另外,還要考慮器件的兼容性,因為在設(shè)計初期,特別對于未知的算法或邏輯,難以估計資源使用,這時需要選擇具有較大資源器件,考慮到后期產(chǎn)品上市成本,又要考慮兼容小資源器件。
2) 選擇配置、DCI級聯(lián)和內(nèi)部VREF
Xilinx設(shè)備每次通電時都必須進(jìn)行配置。比特流通過啟用不同配置模式的特殊配置引腳加載到器件中。應(yīng)用程序中使用的配置模式可能會影響設(shè)計的I/O規(guī)劃。
在開始I/O分配之前,確定和規(guī)劃配置模式非常重要。配置模式不僅決定了某些管腳的可連接性,還決定了包括多功能管腳的I/O組所需的VCCO電壓。
根據(jù)I/O標(biāo)準(zhǔn),數(shù)字控制阻抗(DCI)可以控制驅(qū)動器的輸出阻抗,或為驅(qū)動器、接收器或兩者添加并行終端,以匹配傳輸線的特性阻抗并改善信號完整性。DCI在每個I/O組中使用兩個多用途參考引腳來控制驅(qū)動器的阻抗或組中所有I/O的并行端接值。
帶有差分輸入緩沖器的單端I/O標(biāo)準(zhǔn)需要參考電壓(VREF)。您可以使用internal_VREF約束生成內(nèi)部VREF,這樣就不需要在PCB上提供特定的參考電壓供電軌。在7系列和UltraScale中? 架構(gòu),這可以釋放給定I/O庫中的多用途VREF引腳,用于其他I/O端口分配。
3) 配置I/O端口和時鐘
器件上的I/O端口支持多個I/O相關(guān)約束,例如電平標(biāo)準(zhǔn)、壓擺率和驅(qū)動電流。配置這些端口以支持系統(tǒng)級設(shè)計所需的I/O標(biāo)準(zhǔn)。I/O標(biāo)準(zhǔn)定義可能會影響管腳的放置。例如,可以在單個I/O Bank中組合某些I/O標(biāo)準(zhǔn),但不能組合其他標(biāo)準(zhǔn)。
Xilinx器件被細(xì)分為時鐘區(qū)域的列和行。時鐘區(qū)域包含可配置邏輯塊(CLB)、I/O組、數(shù)字信號處理(DSP)片、塊隨機(jī)存取存儲器(RAM)、互連和相關(guān)時鐘資源。每個I/O Bank都包含支持時鐘的輸入引腳,用于將系統(tǒng)或板時鐘引入設(shè)備和時鐘路由資源。您必須計劃使用這些時鐘資源,以便將設(shè)計中的時鐘分布到器件上。
建議:Xilinx建議您使用Vivado IP目錄中的時鐘向?qū)砩苫旌夏J綍r鐘管理器(MMCM)或鎖相環(huán)(PLL)模塊,以定義時鐘連接。
4) 分配DDR內(nèi)存控制器I/O端口
內(nèi)存IP定義了一個使用預(yù)制控制器和物理層(PHY)的內(nèi)存控制器,用于將FPGA設(shè)計與支持的外部內(nèi)存設(shè)備連接。高速內(nèi)存控制器以及以太網(wǎng)IP和PCI Express?(PCIe)技術(shù)IP都有特定的引腳要求,這是由時鐘和偏移需求驅(qū)動的。
當(dāng)IP核添加到設(shè)計中時,必須定義千兆收發(fā)器(GT)、PCIe技術(shù)和7系列DDR內(nèi)存IP的I/O物理引腳分配,作為IP定制的一部分。要更改I/O分配,必須在設(shè)計中重新自定義IP。
注意:I/O規(guī)劃工程不會從復(fù)雜IP(如內(nèi)存控制器、PCIe或千兆收發(fā)器)的IP文件中讀取物理管腳分配。
5) 放置I/O端口
您可以使用不同的方法將設(shè)計中的I/O端口以交互方式分配給器件上的管腳。您可以在I/O端口窗口中選擇稱為接口的單個I/O端口或I/O端口Bank,并將它們分配給package窗口中的package Pin或Device窗口中的I/O Pad。
6) 運行DRC和SSN分析
在完成I/O和時鐘分配后,通過運行設(shè)計規(guī)則檢查(DRC)和同步開關(guān)噪聲(SSN)分析來分析設(shè)計至關(guān)重要。DRC根據(jù)一組指定的設(shè)計規(guī)則驗證當(dāng)前設(shè)計,并報告任何違規(guī)行為。SSN分析估計了同時切換輸出可能在I/O組的其他輸出端口上造成的干擾。計算和估算將I/O組特定的電氣特性納入預(yù)測中,以確定設(shè)計中潛在的噪聲相關(guān)問題。
注意:SSN分析估算旨在確定設(shè)計中潛在的噪聲相關(guān)問題,而不是作為最終設(shè)計簽核標(biāo)準(zhǔn)。
建議:Xilinx建議您在綜合之后、實施之前以及實施之后運行DRC和SSN分析。這使您能夠在設(shè)計周期的早期發(fā)現(xiàn)問題。
7) 實施設(shè)計
在生成比特流以配置Xilinx器件之前,必須實現(xiàn)該設(shè)計。在實現(xiàn)過中,Vivado工具將設(shè)計元素放置在器件資源上,布線設(shè)計網(wǎng)絡(luò),并進(jìn)行優(yōu)化以降低功耗和時序收斂。
8) 生成PCB數(shù)據(jù)(XDC、CSV、IBIS)
I/O和時鐘規(guī)劃是一個迭代過程,包括PCB或系統(tǒng)設(shè)計師與FPGA設(shè)計師之間的信息交換。它可以從使用從CSV文件導(dǎo)入的目標(biāo)設(shè)備引腳從PCB輸入開始。完成I/O和時鐘規(guī)劃流程中的步驟后,可以使用逗號分隔值(CSV)文件和I/O緩沖區(qū)信息規(guī)范(IBIS)模型返回引腳,以及用于信號完整性分析的設(shè)備模型。
1.4 小結(jié)
時鐘和I/O規(guī)劃是否合理、正確,對于產(chǎn)品的性能及開發(fā)周期有著非常重要的作用。在FPGA電路板及RTL邏輯設(shè)計早期進(jìn)行規(guī)劃,也是Xilinx快速開發(fā)方法學(xué)極力推薦的。下一篇博文,我們介紹如何進(jìn)行FPGA器件的配置,配置方案對時鐘及I/O Bank電壓標(biāo)準(zhǔn)產(chǎn)生影響。