“重構”對于剛接觸FPGA的人來說,可謂十分神秘,對于已經入門的人來說很“簡單”,但是你真的了解FPGA的重構嗎?
術語“重構”是指FPGA已經配置后的重新編程。FPGA的重構有兩種類型:完全的和部分的。完全重構將整個FPGA重新編程,而部分重構只取代設計的一部分,設計的剩下部分仍正常工作。部分重構不被視為完全重構的特殊情況,因為兩者基本相同。對FPGA執行部分重構通過使用與完全重構(JTAG、CAP或SelectMAP接口)相同的方法來進行,如上一節所述。比特流的結構對于完全和部分重構來說都是相同的。
FPGA重構具有以下幾個優點。它允許多個設計共享同一個FPGA架構,這反過來又降低了FPGA的面積、成本和系統復雜性。完全和部分重構為許多FPGA的創新應用程序提供了可能,否則,高昂的成本將影響應用程序實現。利用FPGA重構優勢的一些應用如DSP音頻或視頻處理器等,它們根據用戶輸人,由包括集成深度包檢測的通信控制器修改處理算法,以改變基于協議的數據包處理器。很多工業和學術性的FPGA重構方面的研究不斷產生有價值的應用、研究論文和學位論文。
雖然部分重構技術不是一項新功能,也不是主流的研究方向,但是設計和實現流程、工具支持甚至名詞術語都在不斷發展,用戶界面越來越友好。最終目標是向FPGA開發者提供簡單和透明的設計流程,無須詳細了解配置邏輯和比特流結構。部分重構是一項復雜過程,在設計實現、工具流程和重構本身的過程中充斥著多重挑戰。面臨的一個挑戰是在FPGA配置的變化過程中,完成平滑切換而無須中斷剩余設計功能或損害其完整性。而在完全重構過程中,FPGA架構和10不能保持在復位。另一項挑戰是在改變過程中,防止設計的未改動部分進入無效狀態。設計者必須正確界定和約束未改動和改動部分之間的接口。這樣,FPGA物理實現工具才能進行配置并使用完全相同的布線資源。
有三個部分重構流程可用于Xilinx FPGA基于差異的(difference based)、基于分層的(partition based)及使用動態重構端口。基于差異的部分重構基于差異的部分重構[2]最適合用于將小型設計轉化為LUT方程、IO特征和BRAM中的內容。以下是一個簡單的、基于差異的部分重構代碼和流程舉例,它可以運行在Xilinx開發板上。
//原始模塊:當兩個按鈕都按下時,點亮LED
module top(input btn0,btnl,output led); assign led=btn0&btnl;endmodule//top
//部分重構模塊:當兩個按鈕之一按下時,點亮LEDbutton is pressed
module top_pr(input btn0,btn1,output led); assign led=btn0 | btn1;endmodule//top_pr
#約朿文件:對兩個設計都相同
NET “btnO” LOC= “A18” ;NET “btnl” LOC= “H17” ;NET “led” LOC= “AD21”;
#實現LED功能的LUT被鎖定到特定邏輯片中#對于原始設計,LUT函數是btn0 & btn1#對于部分重構設計,LUT函數是btn0|btn1
INST “led” AREA_GROUP=“led”;AREA_GROUP “led” RANGE = SLICE_X65Y168:SLICE_X65Y168;
#bitgen命令用于產生部分重構比特流#ActiveReconfig和Persist選項在配置變化期間置為全局復位
$bitgen -g ActiveReconfig:Yes -g Persist:Yes -r top_orig.bittop_pr.ncd top_pr.bittop_orig.bit:原始設計的比特流top_pr.ncd:部分重構設計的布局布線后輸出top_pr.bit:得到的部分重構比特流結果
上面例子中基于差異的部分重構流程包括以下步驟:
(1)編譯top模塊。結果是比特流文件top_orig.bit。(2)編譯top_pr模塊。結果是布局布線后文件top_pr.ncd。(3)使用top.orig.bit比特流和top_pr.ncd,生成包含兩個設計之間LED LUT方程差異的比特流。
基于分層的部分重構
與基于差異的重構不同,基于分層的部分重構流程支持重構大型部件FPGA設計。PlanAhead工具它提供了用于配置、實現和使用分層管理部分重構項目的集成環境。設計和實現流程的簡要概述如下所示
:?FPGA開發者指定待配置的部分設計
?在FPGA芯片上包含所需邏輯、嵌入式存儲器、10和其他資源的區域。?開發者定義覆蓋該區域的所有可能設計變量。
?PlanAhead工具管理所有諸如編譯設計的細節,包括管理多個網表、靜態的和可重構的設計部分,執行DRC,并產生合適的比特流。
Xilinx應用提示XAPP883提供了使用部分重構的示例,以允許嵌入式PCI Exress接口模塊的快速配置。
動態重構端口
改變Xilinx GTX收發器、混合模式時鐘管理器(MMCM)和System Monitor原語設置的另一種方法,是使用動態重構端口(DRP)DRP提供了一個簡單的用戶邏輯接口,不需要更多地了解配置寄存器和比特流結構。例如,DRP允許輸出時鐘頻率、相位和MMCM的占空比動態變化。
文章出處:【微信公眾號:OpenFPGA】
責任編輯:gt
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603009 -
控制器
+關注
關注
112文章
16332瀏覽量
177812 -
接口
+關注
關注
33文章
8575瀏覽量
151021
原文標題:FPGA 的重構
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論