基于fpga二維小波變換核的實(shí)時(shí)可重構(gòu)電路
1.硬件部分
本文引用地址:http://cafeforensic.com/article/266432.htm可進(jìn)化IP核的實(shí)現(xiàn)
3.1 實(shí)現(xiàn)中的問題
可復(fù)用的IP核通常有軟核、固核和硬核三種。本文討論的是軟核。本文的目標(biāo)是,設(shè)計(jì)和實(shí)現(xiàn)以HDL源代碼(例如,VHDL)表示的可進(jìn)化IP核。其優(yōu)點(diǎn)是IP核的表示獨(dú)立于平臺(tái),這樣它們就可以在各種不同的目標(biāo)結(jié)構(gòu)中運(yùn)行。要解決的主要問題是,可進(jìn)化的IP核的內(nèi)部可重構(gòu)電路的自動(dòng)重構(gòu)(因?yàn)樗鼈兪强蛇M(jìn)化的)。
圖 5 用vertex slice 實(shí)現(xiàn)的虛擬可重構(gòu)電路
當(dāng)一個(gè)可進(jìn)化IP核從一個(gè)組件庫中被下載到可重構(gòu)器件的一個(gè)指定位置時(shí),它的內(nèi)部可重構(gòu)電路必須進(jìn)行重構(gòu)。這就意味著這個(gè)可重構(gòu)器件中的一些可編程塊必須能配置這個(gè)可重構(gòu)器件的其它內(nèi)部可編程塊。另外,這個(gè)可進(jìn)化IP核(它的基因單元)能被放置于這個(gè)可編程陣列(即可重構(gòu)器件)的任何位置,也就是說,這個(gè)可重構(gòu)器件中必須支持內(nèi)部重構(gòu)。
FPGA以其動(dòng)態(tài)可重構(gòu)的優(yōu)點(diǎn),無疑是可進(jìn)化IP核的最佳實(shí)現(xiàn)平臺(tái)。然而,通常的FPGA并不支持內(nèi)部重構(gòu),而只允許通過一個(gè)特殊的配置接口外部重構(gòu)(如圖5)。目前,只存在一種支持內(nèi)部重構(gòu)的平臺(tái),就是單元陣列,但這種芯片目前還相當(dāng)少。因此,為了在普通FPGA器件實(shí)現(xiàn)可進(jìn)化IP核,使之能在實(shí)際應(yīng)用中發(fā)揮作用,必須采用其它的一些方法。硬件虛擬化是基于FPGA的系統(tǒng)常用的一種設(shè)計(jì)技術(shù)。從這個(gè)思想出發(fā),本文采用了一個(gè)被稱為虛擬可重構(gòu)電路的技術(shù)來實(shí)現(xiàn)可進(jìn)化硬件中的內(nèi)部可重構(gòu)電路。但文中對設(shè)計(jì)虛擬可重構(gòu)電路的概念進(jìn)行了擴(kuò)展。
3.2 虛擬可重構(gòu)電路
一些FPGA芯片支持部分重構(gòu),也就是允許可重構(gòu)系統(tǒng)的一部分重構(gòu),而不影響其余部分的運(yùn)行。部分重構(gòu)的優(yōu)點(diǎn)在于,其重構(gòu)所花的時(shí)間比全部重構(gòu)更少。本文以支持部分重構(gòu)的Xilinx Virtex FPGA為例,來說明虛擬可重構(gòu)電路的實(shí)現(xiàn)。IP核可以動(dòng)態(tài)地下載到FPGA或從FPGA刪除。所有的操作都通過Virtex重構(gòu)端口和Jbits接口來完成。當(dāng)一個(gè)可進(jìn)化IP核被下載時(shí),它的重構(gòu)位串在指定位置構(gòu)靠下列單元;虛擬可重構(gòu)電路、基因單元和控制器。
圖5表明,虛擬可重構(gòu)電路實(shí)際上是一種在普通FPGA上實(shí)現(xiàn)的新的可重構(gòu)電路。本例中由八個(gè)可編程元素構(gòu)成,由Virtex單元(slice)實(shí)現(xiàn)。Virtex單元實(shí)現(xiàn)新的可編程元素陣列、新的布線電路和新的配置存儲(chǔ)器。虛擬電路能內(nèi)部重構(gòu),但如果有其它新的配置存儲(chǔ)器與之連接,也可從FPGA的I/O引腳配置。
這種方法的優(yōu)點(diǎn)在于:可根據(jù)具體的應(yīng)用需要準(zhǔn)確地設(shè)計(jì)可編程元素陣列、布線電路和配置存儲(chǔ)器。虛擬可重構(gòu)電路的重構(gòu)方式和粒度能準(zhǔn)確地反映具體應(yīng)用的需要。通過虛擬可重構(gòu)電路,很容易把領(lǐng)域知識(shí)插入到基因單元和可重構(gòu)電路的體系結(jié)構(gòu)中,從而獲得電路軟件模型的精確實(shí)現(xiàn)。
圖6給出了一個(gè)虛擬可編程元素的例子。這個(gè)虛擬可重構(gòu)電路由8個(gè)這樣的元素構(gòu)成,有4個(gè)輸入和2個(gè)輸出。這些虛擬可編程元素稱為可重配置功能塊CFB(Configurable Functional Blocks)。每個(gè)CFB對應(yīng)一個(gè)配置位串(這里的位串為6位),其中兩個(gè)配置位決定了CFB的功能,其它四位定義了輸入的連接信息。布線電路由多路器組成,它們由配置存儲(chǔ)器中的位串控制。配置存儲(chǔ)器由Virtex單元構(gòu)成,一個(gè)Virtex單元包含兩個(gè)觸發(fā)器,用于存儲(chǔ)配置位串中的兩位。配置存儲(chǔ)器的所有位都連到多路器,多路器控制布線和CFB中功能的選擇。
虛擬可重構(gòu)電路中CFB的數(shù)量由具體的應(yīng)用決定。虛擬可重構(gòu)電路用結(jié)構(gòu)級(jí)VHDL語言來描述,但是一些基本的電路(例如“MAX”電路)用行為級(jí)來描述。虛擬可重構(gòu)能在不同的目標(biāo)器件下綜合,目標(biāo)器件并不需要支持部分重構(gòu)。
圖 6 虛擬可重構(gòu)電路及其中一個(gè)CFB的實(shí)現(xiàn)
3.3 基因單元和控制器
基因單元和控制器的實(shí)現(xiàn)通常有兩種選擇:采用普通微處理器實(shí)現(xiàn),或者設(shè)計(jì)一個(gè)專用的電路來實(shí)現(xiàn)。
專用的電路是指一種進(jìn)化算法的硬件實(shí)現(xiàn),目前在可進(jìn)化硬件領(lǐng)域已經(jīng)開發(fā)了很多這樣的實(shí)現(xiàn)。這種算法的優(yōu)點(diǎn)是電路的進(jìn)化速度快,適合于復(fù)雜的應(yīng)用。
采用微處理器實(shí)現(xiàn)時(shí),可以購買或免費(fèi)獲得現(xiàn)成的微處理器軟核,如Xilinx提供的MicroBlaze和PicoBlaze微控制器IP核,Altera生產(chǎn)Nios核,等等。此外,如果給出的目標(biāo)可重構(gòu)器件中有片上處理器,可以使用片上處理器,Xilinx Virtex II Pro XC2VP50芯片包含四個(gè)PowerPC處理器。處理器必須通過編程來執(zhí)行程序,它們能和核周圍的環(huán)境進(jìn)行通信并完成對染色體的基因操作。此外,處理器還負(fù)責(zé)內(nèi)部虛擬可重構(gòu)電路的重構(gòu)。
評(píng)論