無錫市網(wǎng)站搭建學(xué)網(wǎng)絡(luò)運(yùn)營需要多少錢
一、概述
? ? ? ? 可重配置技術(shù)是Xilinx提供的用來高效利用FPGA設(shè)計資源實現(xiàn)FPGA資源可重復(fù)利用的最新的FPGA設(shè)計技術(shù),這種技術(shù)的發(fā)展為FPGA應(yīng)用提供了更加廣闊的前景。
????????術(shù)語“重構(gòu)”是指FPGA已經(jīng)配置后的重新編程。FPGA的重構(gòu)有兩種類型:完全的和部分的。完全重構(gòu)將整個FPGA重新編程,而部分重構(gòu)只取代設(shè)計的一部分,設(shè)計的剩下部分仍正常工作。部分重構(gòu)不被視為完全重構(gòu)的特殊情況,因為兩者基本相同。對FPGA執(zhí)行部分重構(gòu)通過使用與完全重構(gòu)(JTAG、CAP或SelectMAP接口)相同的方法來進(jìn)行,如上一節(jié)所述。比特流的結(jié)構(gòu)對于完全和部分重構(gòu)來說都是相同的。
二、可重配置導(dǎo)論
1、可重配置的概念
? ? ? ? 當(dāng)系統(tǒng)變得越來越復(fù)雜的時候,設(shè)計者需要用盡可能少的成本來做更多的事情,FPGA的靈活性成為了一個關(guān)鍵的“財富”。為什么這么說?因為xilinx的FPGA總是提供現(xiàn)場設(shè)備可重編程的靈活性。當(dāng)今,越來越苛刻的成本、電路板的空間和功耗限制要求更高效的設(shè)計策略。
????????FPGA技術(shù)提供了現(xiàn)場編程和重新編程的靈活性,而無需經(jīng)過修改設(shè)計的重新制作。部分可重構(gòu)(PR)進(jìn)一步提高了這種靈活性,允許通過加載部分配置文件,通常是部分BIT文件來修改一個操作中的FPGA設(shè)計。下圖是部分可重構(gòu)的結(jié)構(gòu)圖:
????????如圖所示,通過將A1.bit、A2.bit、A3.bit和A4.bit中的任意一個部分可重配置文件下載到可重配置塊“A”中,就可以實現(xiàn)可重配置塊“A”的功能。
????????FPGA設(shè)計中的邏輯分為兩種不同的類型,可重構(gòu)邏輯和靜態(tài)邏輯。FPGA塊的灰色區(qū)域表示靜態(tài)邏輯,標(biāo)記為重新配置塊“A”的塊部分表示可重構(gòu)邏輯。靜態(tài)邏輯保持工作,不受加載部分BIT文件的影響??芍貥?gòu)的邏輯將被部分BIT文件的內(nèi)容所取代。?
2、相關(guān)術(shù)語介紹
????????以下術(shù)語特定于部分重新配置功能,并在本系列中使用。
2.1?Bottom-Up Synthesis(自底向上綜合)
????????自底向上綜合是基于模塊設(shè)計的綜合,無論是在一個項目還是多個項目中。在Vivado中,自底向上的綜合被稱為out-of-context(OOC)綜合。OOC綜合為每個OOC模塊生成一個單獨(dú)的網(wǎng)表(或DCP),這是部分重新配置所必需的,以確保沒有在模塊邊界上進(jìn)行優(yōu)化。在OOC綜合中,頂層(或靜態(tài))邏輯與每個OOC模塊的黑盒模塊定義一起合成。
? ? ? ? 我們對此進(jìn)行一個簡單的總結(jié):
(1)模塊間獨(dú)立綜合工程,產(chǎn)生多個網(wǎng)表
(2)自底向上綜合要求為每個分區(qū)分配一個獨(dú)立的網(wǎng)表
(3)沒有跨越邊界的優(yōu)化。這樣,可以對設(shè)計的每個分區(qū)進(jìn)行獨(dú)立的綜合
(4)對帶有用于分區(qū)的黑盒頂層進(jìn)行綜合
2.2?Configuration(配置)
? ? ? ? 一個配置是一個完整的設(shè)計,包括靜態(tài)邏輯,以及用于每個可重構(gòu)分區(qū)的一個可重構(gòu)模塊。
????????在一個部分重構(gòu)FPGA項目中,可能有多個配置。每個配置生成一個充分的比特流文件,以及用于每個可配置模塊的一個部分比特流文件。
2.3?Configuration Frame(配置幀)
? ? ? ? 配置幀是FPGA配置內(nèi)存空間中最小的可尋址段。重構(gòu)配置幀是由這些最底層元件構(gòu)建的。在Xilinx設(shè)備中,基本的可重構(gòu)幀的大小為一個元件(CLB、BRAM、DSP)寬度和一個時鐘區(qū)域高度。這些幀中的資源數(shù)量因設(shè)備系列而異。
2.4?Internal Configuration Access Port ,ICAP(內(nèi)部訪問訪問端口)
????????內(nèi)部配置訪問端口(ICAP)本質(zhì)上是SelectMAP接口的內(nèi)部版本。有關(guān)詳細(xì)信息,請參見7系列FPGAs配置用戶指南(UG470)[參考文獻(xiàn)7]或UltraScale體系結(jié)構(gòu)配置用戶指南(UG570)
2.5?Media Configuration Access Port ,MCAP(媒體配置訪問端口)
? ? ? ? 在UltraScale 設(shè)備中,MCAP是從一個特定的PCIe塊到ICAP的專用鏈接,在配置Xilinx PCIe IP時,可以啟用此接入點。
2.6?Partial Reconfiguration ,PR(部分可重配置)
????????部分可重配置是通過下載部分比特流來修改操作FPGA設(shè)計中的邏輯子集。
2.7?Partition(分區(qū))
????????分區(qū)是設(shè)計的一個邏輯部分,設(shè)計者在層次邊界上定義,這個定義用于設(shè)計重用。一個分區(qū)要么作為新的實現(xiàn),要么從以前的實現(xiàn)中保留。保留的分區(qū)不僅維護(hù)相同的功能,而且還維護(hù)相同的實現(xiàn)。
2.8?Partition Definition ,PD(分區(qū)定義)
????????這是一個僅在工程流程中使用的術(shù)語。一個分區(qū)定義定義了一組與模塊實例(或可重構(gòu)分區(qū))相關(guān)的可重構(gòu)模塊。一個PD應(yīng)用于模塊的所有實例,但是不能與模塊實例的子集相關(guān)聯(lián)。
2.9?Partition Pin(分區(qū)引腳)
? ? ? ? 分區(qū)引腳是在靜態(tài)和可重配置邏輯之間的邏輯與物理的連接。
2.10?Processor Configuration Access Port,PCAP(處理器配置訪問端口)
????????處理器配置訪問端口(PCAP)類似于內(nèi)部配置訪問端口(ICAP),是用于配置Zynq-7000 AP SoC設(shè)備的主端口。有關(guān)更多信息,請參見Zynq-7000所有可編程技術(shù)參考手冊(UG585)[參考文獻(xiàn)9]
2.11?Programmable Unit,PU(可編程單元)
????????在UltraScale結(jié)構(gòu)中,這是用于可重配置所需的最小資源。PU的大小因資源類型而異。在UltraScale中,由于相鄰的位置共享一個布線資源(或互聯(lián)塊),因此成對定義PU。
2.12?Reconfigurable Frame(可重配置幀)
????????可重構(gòu)幀(在本指南中除“配置幀”之外的所有參考文獻(xiàn)中)表示FPGA中最小的可重構(gòu)區(qū)域??芍貥?gòu)幀的比特流大小取決于幀中所包含的邏輯類型。
2.13?Reconfigurable Logic(可重配置邏輯)
????????可重構(gòu)邏輯是作為可重構(gòu)模塊的一部分的任何一個邏輯元素。當(dāng)加載部分比特流文件時,會修改這些邏輯元素??梢灾匦屡渲眠壿嫿M件的許多類型,如LUTs、觸發(fā)器、BRAM和DSP塊。
2.14?Reconfigurable Module,RM(可重配置模塊)
? ? ? ? 在可重配置分區(qū)內(nèi),RM是網(wǎng)表或者HDL描述的實現(xiàn)。每個可重配置分區(qū)內(nèi)可以有很多個可重配置的模塊。
2.15?Reconfigurable Partition,RP(可重配置分區(qū))
? ? ? ? RP是在一個例化中的屬性設(shè)置,其定義了該實例是可重配置的。RP是設(shè)計層次中的一個層次,在這個層次上可以使用不同的RM進(jìn)行實現(xiàn)。例如,一些Tcl命令,如opt_design、place_design和route_design,用于檢測實例上的“HD.RECONFIGURABLE”屬性,并且正確地處理它。
2.16?Static Logic(靜態(tài)邏輯)
? ? ? ? 所有設(shè)計內(nèi)的邏輯是不可重配置的,它不是可重配置分區(qū)的一部分。當(dāng)對可重配置分區(qū)進(jìn)行重新配置時,靜態(tài)邏輯總是活動的。
2.17?Static Design(靜態(tài)設(shè)計)
? ? ? ??靜態(tài)設(shè)計時設(shè)計的一部分,它在部分可重配置的過程中不會發(fā)生變化。靜態(tài)設(shè)計包括頂層和沒有定義為可重配置的所有模塊。靜態(tài)設(shè)計由靜態(tài)邏輯和靜態(tài)布線所建立。
三、可重構(gòu)的應(yīng)用
????????部分可重構(gòu)的基本前提是,設(shè)備的硬件資源可以像微處理器切換任務(wù)一樣進(jìn)行時間上的多路復(fù)用。因為設(shè)備是在硬件中切換任務(wù),所以它具有軟件實現(xiàn)的靈活性和硬件實現(xiàn)的性能優(yōu)點。這里提出了幾個不同的場景來說明這項技術(shù)的優(yōu)勢。
1、Networked Multiport Interface(網(wǎng)絡(luò)多端口接口)
? ? ? ? 下面以網(wǎng)絡(luò)多端口接口的設(shè)計為例,說明可重構(gòu)的優(yōu)勢。如下圖所示:
? ? ? ? 這是一個40G OTN交換機(jī)應(yīng)用程序。交換機(jī)客戶端端口支持多種接口協(xié)議。但是,在配置FPGA之前,系統(tǒng)無法預(yù)測將使用哪個協(xié)議。為了確保FPGA不需要重新配置,以及因此禁用所有端口的情況,對每個端口都實現(xiàn)了每個可能的接口協(xié)議。
? ? ? ? 從上圖就可以看出,該設(shè)計的效率很低,這是因為每個端口只使用一種協(xié)議。如下圖所示:
? ? ? ? 通過使每個端口成為可配置的模塊來實現(xiàn)更高效的設(shè)計。這樣,就消除了將多個協(xié)議引擎連接到一個端口上需要使用MUX元件的問題。
????????除了效率之外,部分可重構(gòu)的設(shè)計還有其他優(yōu)點。在圖2-2的示例中,可以在任何時候支持一個新的協(xié)議,而不影響靜態(tài)邏輯,即本例中的交換機(jī)結(jié)構(gòu)。當(dāng)為任何端口加載一個新標(biāo)準(zhǔn)時,其他現(xiàn)有端口都不會受到任何影響。可以創(chuàng)建其他標(biāo)準(zhǔn)并添加到配置內(nèi)存庫中,而不需要完全重新設(shè)計。這使得交換機(jī)結(jié)構(gòu)具有更大的靈活性和可靠性,同時減少了交換機(jī)結(jié)構(gòu)和端口的停機(jī)時間??梢詣?chuàng)建一個調(diào)試模塊,以便如果一個端口遇到錯誤,則可以為一個未使用的端口加載分析/校正邏輯來實時處理問題。?
2、Configuration by Means of Standard Bus Interface(采用標(biāo)準(zhǔn)總線接口進(jìn)行配置)
????????部分重構(gòu)可以使用與系統(tǒng)體系結(jié)構(gòu)更兼容的接口標(biāo)準(zhǔn)來創(chuàng)建一個新的配置端口。例如,FPGA可以是PCIe總線上的外設(shè),系統(tǒng)主機(jī)可以通過PCIe連接配置FPGA。開機(jī)復(fù)位后,FPGA必須配置一個完整的BIT文件。但是,完整的BIT文件可能只包含PCIe接口和與內(nèi)部配置訪問端口(ICAP)的連接。
????????系統(tǒng)主機(jī)可以使用通過PCIe端口下載的部分比特流文件來配置大部分FPGA功能
? ? ? ? PCIe標(biāo)準(zhǔn)要求外設(shè)(在本例中是FPGA)確認(rèn)任何請求,即使它不能為該請求提供服務(wù)。重新配置整個FPGA將違反此要求。因為PCIe接口是靜態(tài)邏輯的一部分,所以在部分重新配置過程中它總是活動(active)的,從而確保FPGA即使在重新配置期間也能響應(yīng)PCIe命令。
????????串聯(lián)配置是一個相關(guān)的解決方案,乍一看似乎是相同的,在這里顯示。然而,使用部分重新配置的解決方案與串聯(lián)配置在兩個方面有所不同:
????????(1)首先,使用PR的配置過程是一個完整的設(shè)備配置,通過壓縮變得更小更快,然后是一個部分比特流,覆蓋黑盒區(qū)域以完成整體配置。串聯(lián)配置是一個兩階段的配置,其中每個配置幀被精確地編程一次。?
? ? ? ? (2)第二,7系列設(shè)備的串聯(lián)配置不允許用戶應(yīng)用程序的動態(tài)重新配置。使用部分重新配置,可以使用不同的用戶應(yīng)用程序或字段更新重新加載動態(tài)區(qū)域。UltraScale的串聯(lián)配置一般允許現(xiàn)場更新和與PR兼容。整個流程是一個兩階段初始負(fù)載的串聯(lián)配置,然后是部分重新配置,以動態(tài)修改用戶應(yīng)用程序。
3、Dynamically Reconfigurable Packet Processor(動態(tài)可重配置包處理器)
????????包處理器可以使用部分重新配置來根據(jù)接收到的包類型快速更改其處理功能。在下圖中,數(shù)據(jù)包包含頭部(PBF),或者特殊數(shù)據(jù)包包含部分比特流文件。處理部分比特流文件后,它用于重新配置FPGA中的協(xié)處理器。
4、Asymmetric Key Encryption(非對稱密鑰加密)
????????有一些新的應(yīng)用程序,如果沒有部分重新配置,它們是不可能實現(xiàn)的。當(dāng)部分重新配置和非對稱加密相結(jié)合時,可以構(gòu)建一種非常安全的保護(hù)FPGA配置文件的方法。
????????陰影框中的一組功能可以在FPGA的物理包中實現(xiàn)。明文信息和私鑰永遠(yuǎn)不會離開一個受良好保護(hù)的容器。
? ? ? ? 在真正實現(xiàn)這個設(shè)計時,初始的比特流文件是一個未加密的設(shè)計,它不包含任何專有的信息。初始設(shè)計只包含產(chǎn)生公鑰和私鑰對的算法,以及主機(jī)、FPGA和ICAP之間的接口連接。
? ? ? ? 在加載初始文件后,FPGA產(chǎn)生公鑰和私鑰對。公鑰發(fā)送給主機(jī),用來加密部分比特流文件。
? ? ? ? 如下圖所示,加密的部分BIT文件被下載到FPGA,在那里它被解密并發(fā)送到ICAP,以部分重新配置FPGA。
? ? ? ? 部分BIT文件可能是FPGA設(shè)計的絕大多數(shù),而靜態(tài)設(shè)計中的邏輯只消耗了整個FPGA資源的很小部分。
四、小結(jié)?
????????本文著重介紹了FPGA的可重構(gòu)技術(shù),可重配置技術(shù)是Xilinx提供的用來高效利用FPGA設(shè)計資源實現(xiàn)FPGA資源可重復(fù)利用的最新的FPGA設(shè)計技術(shù),這種技術(shù)的發(fā)展為FPGA應(yīng)用提供了更加廣闊的前景。在此基礎(chǔ)上,我們簡單介紹了與此技術(shù)相關(guān)的術(shù)語含義,最后介紹了FPGA可重構(gòu)技術(shù)的應(yīng)用。