動態重構兩種模式的分析與對比
圖2 具有兩個可重構模塊的設計布局圖
4、總線宏的通訊
為了促進可重構模塊之間的通信,需要保證穿過可重構模塊邊界的布線資源是完全固定而且必須是靜態的,這就需要一種特殊的總線宏。如圖3就是所需的這種總線宏。
其中,左邊的A是一個模塊,右邊的B是另一個模塊,A或者B是可重構模塊,或者AB全是可重構模塊。A和B中間的總線宏,就是支持AB之間通信的特殊總線宏。它保證AB間布線資源的不變性。也就是說當一個模塊進行重構時模塊內部信號用到的布線資源不能改變。如圖3,總線宏是兩個模塊間的一個固定的布線橋。它是一個事先已經布線好的用來確定精確布線軌道的宏,并且在編輯改變的時候保持不變。對于每個不同的設計應用來說,它是一個絕對固定不變的總線宏。
圖3 總線宏
目前使用的總線宏由八個三態緩沖器組成如圖4。總線宏允許信息雙向傳遞,一個比特的信息使用一個三態緩沖器的長線。Virtex器件的每一行支持一個總線宏的四個固定的通信。總線宏的信息通訊是雙向的,既可以從左到右又可以從右到左。但是對于這個設計來說,一旦信息通信方向確定以后就不能再改變。
圖4 總線宏的物理執行
5、基于差異的部分可重構
基于差異的部分可重構比較重構前后的電路差別,產生一個只包含重構前后設計差別的比特流。可以使用兩種方法來改變設計、產生重構前后的差別,分別是前端改變(HDL描述)和后端改變(NCD文件)。使用前端改變,設計必須重新綜合,創建新的NCD文件。后端改變只需直接修改NCD文件,不必重新綜合,可通過FPGA Editor工具修改NCD文件。
在FPGA Editor中可以進行三種方式的修改:改變I/O標準、BRAM內容、LUT設計。其中可以選擇的最小邏輯元素是slice。首先打開NCD文件,看到邏輯塊后找到可選擇的最小邏輯元素slice,打開slice的結構圖窗口,可以分別將重構前的I/O標準、BRAM內容、LUT設計修改為重構后的形式,如圖5所示。
圖5 改變LUT設計
以上三種修改都符合有效的重構流程。除了這三種方式還有其他的修改方式,比如:顛倒極性、振蕩器的初始化和重新設置值、上拉、下拉外部管腳或者RAM寫方式。所有這些特性都能夠在實際的slice、RAM邏輯塊或IOB中修改。但是,最好不要進行任何有可能影響布線或者產生內部連接沖突的修改行為。
實現上述修改后,使用BitGen就可產生可下載的差異比特文件。可重構前后開關配置的改變非常迅速,比重新配置整個電路要快很多,就像差異比特流比整個電路的比特流小很多一樣,所以能夠迅速而簡單的下載到電路中。
6、結論
當電路只需要修改比較少的內容時,往往選擇基于差異的部分可重構。差異比特流比整個電路的比特流小很多,所以能夠迅速下載到電路中。
但是如果電路功能比較復雜則差異文件會非常龐大,部分動態重構的優勢并不十分明顯。所以基于差異的部分可重構只適用于功能簡單的電路,對于功能復雜的電路需要使用基于模塊的部分可重構。
綜上所述,基于差異和基于模塊的部分動態重構都可以大大節省系統的硬件資源,加快文件的下載速度,提高資源利用率,相信會有廣闊的研究和應用前景。
評論