<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于fpga二維小波變換核的實(shí)時(shí)可重構(gòu)電路

          基于fpga二維小波變換核的實(shí)時(shí)可重構(gòu)電路

          作者: 時(shí)間:2014-12-07 來源:網(wǎng)絡(luò) 收藏

            1.硬件部分

          本文引用地址:http://www.ex-cimer.com/article/266432.htm

            可進(jìn)化的實(shí)現(xiàn)

            3.1 實(shí)現(xiàn)中的問題

            可復(fù)用的通常有軟核、固核和硬核三種。本文討論的是軟核。本文的目標(biāo)是,設(shè)計(jì)和實(shí)現(xiàn)以HDL源代碼(例如,VHDL)表示的可進(jìn)化。其優(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)電路

           

            圖 5 用vertex slice 實(shí)現(xiàn)的虛擬可重構(gòu)電路

            當(dāng)一個(gè)可進(jìn)化IP核從一個(gè)組件庫(kù)中被下載到可重構(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)電路。但文中對(duì)設(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對(duì)應(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)

           

            圖 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í),可以購(gòu)買或免費(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)行通信并完成對(duì)染色體的基因操作。此外,處理器還負(fù)責(zé)內(nèi)部虛擬可重構(gòu)電路的重構(gòu)。



          關(guān)鍵詞: fpga 小波變換 IP核

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();