本系列博文描述7系列FPGA配置的技術(shù)參考。作為開篇,簡要概述了7系列FPGA的配置方法和功能。隨后的博文將對每種配置方法和功能進行更詳細的描述。本文描述的配置方法和功能適用于所有7系列家族器件,只有少數(shù)例外。
1.概述
Xilinx®7系列FPGA通過將特定于應(yīng)用程序的配置數(shù)據(jù)(位流)加載到內(nèi)存中進行配置。7系列FPGA可以主動從外部非易失性存儲設(shè)備加載,也可以通過外部智能源(如微處理器、DSP處理器、微控制器、PC或板測試儀)被動進行配置。在任何情況下,都有兩個通用配置數(shù)據(jù)路徑。第一個是串行數(shù)據(jù)路徑,這種情況需要最少的硬件管腳連接。第二個數(shù)據(jù)路徑是8位、16位或32位數(shù)據(jù)路徑,用于更高性能或訪問(或鏈接)行業(yè)標準接口,非常適合外部數(shù)據(jù)源,如處理器或x8或x16并行閃存。與處理器和處理器外圍設(shè)備一樣,Xilinx FPGA可以在線重新編程,編程次數(shù)無限制。由于Xilinx FPGA配置數(shù)據(jù)存儲在CMOS配置鎖存器(CCL)中,因此必須在斷電后對其進行重新配置。每次通過專用配置引腳將比特流加載到FPGA器件中。這些配置引腳可以用作多種不同配置模式的接口:
主動-串行配置模式
從(或被動)-串行配置模式
主動-并行(SelectMAP)配置模式(x8和x16)
主動-并行(SelectMAP)配置模式(x8,x16和x32)
JTAG邊界掃描模式
主動-串行SPI Flas配置模式(x1,x2,x4)
主動-字節(jié)BPI Flash配置模式(x8,x16),使用并行NOR Flash
這些配置模式通過輸入管腳M[2:0]設(shè)置不同的電平進行模式選擇。M2,M1和M0應(yīng)該連接至DC電壓常量,可以直接接GND或者VCCO_0或者通過上拉或下拉電阻(≤1kΩ)連接至GND或者VCCO_0。上述幾種配置模式中主或者從是以配置時鐘管腳CCLK的方向為參考的。例如,在從配置模式中,CCLK為輸入管腳;在主配置模式中,CCLK來自7系列FPGA內(nèi)部振蕩器,在主配置模式中,配置完成之后,CCLK時鐘自動關(guān)閉,除非通過Persist Option將其配置為強制打開。該CCLK管腳為三態(tài)管腳,內(nèi)部弱上拉。JTAG邊界掃描配置模式,無論M[2:0]配置管腳電平如何,都一直可用。
2.設(shè)計考慮
要建立一個高效的系統(tǒng),重要的是要考慮哪種FPGA配置模式最符合系統(tǒng)的要求。每個配置模式都有專用FPGA配置引腳,并且只能在配置期間臨時使用其他多功能引腳。配置完成后,這些多功能管腳將被釋放作為通用I/O使用。類似地,配置模式可能會對某些FPGA I/O Bank施加電壓限制。盡管FPGA有幾種不同的配置選項可用,但就單個具體項目來說,每個系統(tǒng)通常都有一個最佳解決方案。FPGA配置過程涉及許多步驟。每個步驟通常涉及一系列事件。例如,第一步是多個電源的通電順序。要了解總體配置時間,設(shè)計師必須了解每個步驟的貢獻。CALC_CONFIG_TIME可以估算配置時間。選擇最佳配置選項時必須考慮幾個主題:總體方案、速度、成本和復雜性。
2.1 配置比特流長度及Flash容量選擇
FPGA設(shè)計被編譯成比特流。比特流通過配置接口加載。每個FPGA部件類型的完整比特流具有固定長度。表1-1顯示了7系列FPGA的比特流長度和其他設(shè)備特定信息。
表1、7系列FPGA的比特流長度和其他設(shè)備特定信息
2.2 FPGA配置數(shù)據(jù)源
Xilinx 7系列FPGA旨在實現(xiàn)最大的靈活性。FPGA或者自動加載來自非易失性閃存的配置數(shù)據(jù),或者其他外部智能設(shè)備(如處理器或微控制器)可以將配置數(shù)據(jù)下載到FPGA。此外,配置數(shù)據(jù)可以通過電纜從主機下載到FPGA的JTAG端口。
主動模式
主動模式,F(xiàn)PGA自我加載,可通過串行或并行數(shù)據(jù)路徑使用。FPGA在驅(qū)動配置邏輯的內(nèi)部振蕩器中生成配置時鐘信號,并在CCLK輸出引腳上可見,F(xiàn)PGA控制整個配置過程。主動模式利用各種類型的非易失性存儲器來存儲FPGA的配置信息。在主動模式下,F(xiàn)PGA的配置比特流通常保存在同一塊電路板上的非易失性內(nèi)存中,通常位于FPGA外部。
被動模式
圖1、從配置模式
外部控制加載FPGA配置模式,通常稱為從模式,也可通過串行或并行數(shù)據(jù)路徑進行配置。在從模式下,外部“智能代理”(如處理器、微控制器、DSP處理器或測試儀)將配置映像下載到FPGA中,如圖1所示。從屬配置模式的優(yōu)點是FPGA比特流幾乎可以存儲在整個系統(tǒng)中的任何位置。比特流可以與主機處理器的代碼一起存儲在閃存板上。它可以儲存在硬盤上,它可以通過網(wǎng)絡(luò)連接或其他類型的網(wǎng)橋連接發(fā)起配置。
2.3 JTAG連接
四針JTAG接口常用于調(diào)試硬件和測試。無論最終在應(yīng)用程序中使用何種配置模式,最好還包括一個JTAG配置路徑,以便于設(shè)計開發(fā)。
2.4 基本配置解決方案
在基本配置解決方案中,F(xiàn)PGA在通電時自動從Flash設(shè)備檢索其比特流。FPGA具有串行外圍接口(SPI),通過該接口,F(xiàn)PGA可以從標準SPI閃存設(shè)備讀取比特流。
2.5 低成本配置解決方案
成本最低的選項因具體應(yīng)用而異。
如果系統(tǒng)中已有備用非易失性存儲器可用,則可將比特流鏡像存儲在系統(tǒng)存儲器中。它甚至可以存儲在硬盤上或通過網(wǎng)絡(luò)連接遠程下載。如果是,則應(yīng)考慮其中一種下載模式:主BPI模式,從串行模式或JTAG。
如果應(yīng)用程序已經(jīng)需要非易失性內(nèi)存,則可以整合內(nèi)存。例如,F(xiàn)PGA配置比特流可以與該板的任何處理器代碼一起存儲。如果處理器是MicroBlaze™ 嵌入式處理器,則FPGA配置數(shù)據(jù)和MicroBlaze理器代碼可以共享同一個非易失性存儲設(shè)備。
2.6 高速配置
某些應(yīng)用要求邏輯在短時間內(nèi)可運行。某些FPGA配置模式和方法比其他配置模式和方法更快。配置時間包括初始化時間和配置時間。配置時間取決于設(shè)備的大小和配置邏輯的速度。
- 在相同的時鐘頻率下,并行配置模式固有地比串行模式快,因為它們一次編程8、16或32位。
- 在菊花鏈中配置單個FPGA比配置多個FPGA具有更快的固有速度。在關(guān)注配置速度的多FPGA設(shè)計中,每個FPGA都應(yīng)該單獨并行配置。
- 在主模式下,F(xiàn)PGA內(nèi)部生成配置時鐘信號,并在CCLK引腳上發(fā)送。默認情況下,CCLK頻率較低,但比特流配置選項可以提高CCLK頻率,或?qū)CLK源從EMCCLK引腳切換到外部時鐘源。支持的最大CCLK頻率設(shè)置取決于所連接的非易失性存儲器的讀取規(guī)格。更快的內(nèi)存可實現(xiàn)更快的配置。當使用CCLK的內(nèi)部振蕩器源時,輸出頻率可隨工藝、電壓或溫度而變化。EMCCLK時鐘源選項啟用精確的外部時鐘源,以實現(xiàn)最佳配置性能。
使用EMCCLK選項的從模式或主模式允許更嚴格的公差和更快的時鐘。
2.7 保護FPGA比特流免受未經(jīng)授權(quán)的復制
與處理器代碼一樣,定義FPGA功能的比特流在上電期間加載到FPGA中。因此,這意味著不道德的公司可以在上電啟動配置時捕獲配置比特流并創(chuàng)建未經(jīng)授權(quán)的設(shè)計副本。與處理器一樣,存在多種技術(shù)來保護FPGA比特流和嵌入在FPGA中的任何知識產(chǎn)權(quán)(IP)核心。最強大的技術(shù)是使用電池支持的基于SRAM密鑰的AES加密或使用eFUSE密鑰的AES加密。設(shè)備識別是第三種技術(shù),它使用較低級別的安全性和設(shè)備DNA。
此外,7系列器件還具有片上高級加密標準(AES)解密邏輯,以提供高度的設(shè)計安全性。
2.8 加載具有相同配置比特流的多個FPGA
通常,系統(tǒng)中每個FPGA有一個配置比特流映像。通過利用菊花鏈配置,多個不同的FPGA比特流鏡像可以共享單個配置閃存。如果應(yīng)用程序中的所有FPGA具有相同的部件并使用相同的比特流,則只需要一個比特流鏡像。另一種解決方案稱為組合或?qū)掃吪渲?,它使用相同的比特流加載多個類似的FPGA。僅在從串行或從SelectMAP模式下支持組合或?qū)拏?cè)配置。
3.配置調(diào)試考慮
本節(jié)討論的最佳實踐有助于在實現(xiàn)配置解決方案時遇到問題時啟用調(diào)試和解決方案。在開始全面調(diào)試之前,請使用比特流默認值(例如,計數(shù)器或LED輸出模式)創(chuàng)建并測試簡單設(shè)計。此簡單的設(shè)計測試有助于消除高級比特流設(shè)置或板接口的任何潛在問題。嘗試使用其他方法進行配置,例如通過JTAG而不是從閃存進行配置,以確定問題是否特定于配置模式。兩個最重要的配置信號INIT_B和DONE應(yīng)連接到LED驅(qū)動器。INIT_B從低到高的脈沖表示通電時初始化完成。配置期間INIT_B信號低電平可指示FPGA設(shè)備讀取到的比特流存在CRC錯誤。如果配置未正確完成,狀態(tài)寄存器將提供有關(guān)哪些錯誤可能導致故障的重要信息。JTAG readback/verify可確定預期配置數(shù)據(jù)是否正確加載到設(shè)備中。