0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-05-03 08:40 ? 次閱讀

2.1項目背景及可行性分析

這個項目旨在利用JBits實時可重構系統(tǒng)完成一個基于二維離散小波變換核的全面設計過程 ,這包括仿真 ,調(diào)試 ,以及搭建 硬件與可重構計算平臺的接口。 JBits API的發(fā)展使對Xilinx 4000 系列和Virtex系列 器件配置比特流成為可能 。應用JBits API, 設計者可以繞開傳統(tǒng)的邏輯綜合和物理實現(xiàn)步驟 而允許高速比特流的重構。比較于asic 使用JBits 可以創(chuàng)造更高性能的電路以用于實時可重構系統(tǒng) 。因此 JBits API成為 設計一個有效的基于fpga的 實時可重構和可進化設計的必要工具。

2.2 應用背景

隨著信息技術的飛速發(fā)展,計算機系統(tǒng)面臨的問題越來越復雜,如何保證復雜系統(tǒng)的可靠性成為一個不容忽視的問題??蛇M化硬件給我們提供了一個很好的解決方案??蛇M化硬件EHW(Evolvable Hardware)是將進化算法和可編程邏輯元件融合在一起而產(chǎn)生的一種新的硬件研究流派。當所使用的環(huán)境發(fā)生變化時,或被放置于未知的環(huán)境中時,這種硬件會自動地改變內(nèi)部結構,使之經(jīng)常處于最適合狀態(tài),快速高效地完成規(guī)定的任務。

可編程門陣列(FPGA)以其獨有的優(yōu)點為國外多數(shù)研究人員用作硬件進化平臺。EHW利用FPGA的在線可編程技術(ISP)及動態(tài)重構技術,將FPGA的配置信息作為染色體,通過遺傳算法(GA)對其進行反復的適應度計算,交叉和變異,最終進化出符號環(huán)境要求的個體(即電路配置),從而使電路適合環(huán)境的變化。

與此同時,隨著FPGA技術的發(fā)展,芯片的性能越來越強、規(guī)模越來越大、開發(fā)的周期越來越長,使得芯片設計業(yè)正面臨一系列新的 問題:設計質(zhì)量難以控制,設計成本也越來越高。IP(Intelligence Property)技術解決了當今芯片設計業(yè)所面臨的難題。IP是指可用來生成ASIC和PLD的邏輯功能塊,又稱IP核(IP Core)或虛擬器件(VC)。設計者可以重復使用已經(jīng)設計并經(jīng)過驗證的IP核,從而專注于整個系統(tǒng)的設計,提高設計的效率和正確性,降低成本。目前數(shù)字IP已得到了充分的發(fā)展,可以很方便地購買到IP核并整合到SoC的設計中。

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖 1 FPGA 中的 可進化ip核和 普通 ip核

因此,可以考慮將進化硬件的思想應用于IP核的設計中,設計一種可進化的IP核,根據(jù)當前的環(huán)境進化出相應的電路,并能夠在普通的可重構器件中實現(xiàn)。

2.3 研究現(xiàn)狀

1 可進化IP核

從進化硬件的經(jīng)驗可知,系統(tǒng)通常只有一部分是適應性的(可進化的),另一部分可以通過傳統(tǒng)的不可變的電路來實現(xiàn)。同樣,使用IP核構造的系統(tǒng)也是有些IP核是可進化的,有些IP核是不可變的??蛇M化的那些IP核稱為可進化組件或可進化IP核。

可進化IP核像普通的IP核一樣被存儲在組件庫中,在被下載并放在一個可重構器件中后,它們將自動地進化它們的內(nèi)部電路。當不再需要適應性行為時,可以從可重構器件中刪除可進化IP核??蛇M化IP核和普通IP核的復用方式相同。

2 可進化IP核的一般體系結構

如圖1所示,可進化IP核由可重構電路,基因單元和控制器構成(本文中可重構電路是指可進化IP核內(nèi)的一個部分;可重構器件是指整個可重構平臺,如FPGA)。這里要強調(diào)的是,基因單元不包含適應度計算,它只實現(xiàn)基因的操作、染色體存儲和適應度存儲。適應度的計算和環(huán)境由其它的核來提供?;騿卧梢恍┡渲貌⑸陷d到可重構電路中去,環(huán)境對這些配置進行評估,并將適應度值發(fā)送給IP核。可進化IP核實際上是一個由環(huán)境控制的電路生成器。

環(huán)境(由其它核提出)和可進化IP核之間的通信如下:首先IP核被初始化(生成初始化種群),然后進入如下無限循環(huán)——當環(huán)境發(fā)生變化后,環(huán)境計算當前電路配置的適應度,并判斷電路是否適應環(huán)境。如果染色體存儲器中的配置不可用,則向IP核發(fā)出控制信息,IP核開始進化。即基因單元把硬件配置信息作為染色體,根據(jù)適應度對其進行交叉、變異等遺傳操作,生成一個新的種群。環(huán)境對新種群進行適應度計算,并判斷是否有滿足當前環(huán)境的個體(配置)。若沒有,向IP核發(fā)控制信息,遺傳單元繼續(xù)對電路配置進行進化,直至有滿足當前環(huán)境的配置為止;若有,則將適應度值發(fā)給IP核,IP核用這個新生成的最優(yōu)配置來重配置可重構電路,并在染色體存儲器中保存當前最優(yōu)配置及其適應度值,等待來自環(huán)境的下一個請求。

環(huán)境總是要求下載當前最優(yōu)的進化電路,因此,IP核必須保存目前為止最優(yōu)的配置,并且在需要的時候提供出去??蛇M化IP核總是屏蔽重構過程,因此它對于外部環(huán)境來說是不可見的。

對于一些特殊的應用,必須為它們開發(fā)專用的可進化IP核,因為反映應用的要求基因單元和可重構電路的體系結構將使進化過程優(yōu)于一個隨機的搜索。由于適應度計算是在IP核外進行的,因此IP核原則上支持動態(tài)適應度函數(shù)和無限的進化??蛇M化IP核可以用軟件實現(xiàn)。

三 項目實施方案

3.1方案基本功能框圖

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖2 系統(tǒng)框圖

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖3 DWT2D核原理圖

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖 4 由四個RTP核構成的四拍FIR濾波器

1.硬件部分

可進化IP核的實現(xiàn)

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

可復用的IP核通常有軟核、固核和硬核三種。本文討論的是軟核。本文的目標是,設計和實現(xiàn)以HDL源代碼(例如,VHDL)表示的可進化IP核。其優(yōu)點是IP核的表示獨立于平臺,這樣它們就可以在各種不同的目標結構中運行。要解決的主要問題是,可進化的IP核的內(nèi)部可重構電路的自動重構(因為它們是可進化的)。

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

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

當一個可進化IP核從一個組件庫中被下載到可重構器件的一個指定位置時,它的內(nèi)部可重構電路必須進行重構。這就意味著這個可重構器件中的一些可編程塊必須能配置這個可重構器件的其它內(nèi)部可編程塊。另外,這個可進化IP核(它的基因單元)能被放置于這個可編程陣列(即可重構器件)的任何位置,也就是說,這個可重構器件中必須支持內(nèi)部重構。

FPGA以其動態(tài)可重構的優(yōu)點,無疑是可進化IP核的最佳實現(xiàn)平臺。然而,通常的FPGA并不支持內(nèi)部重構,而只允許通過一個特殊的配置接口外部重構(如圖5)。目前,只存在一種支持內(nèi)部重構的平臺,就是單元陣列,但這種芯片目前還相當少。因此,為了在普通FPGA器件實現(xiàn)可進化IP核,使之能在實際應用中發(fā)揮作用,必須采用其它的一些方法。硬件虛擬化是基于FPGA的系統(tǒng)常用的一種設計技術。從這個思想出發(fā),本文采用了一個被稱為虛擬可重構電路的技術來實現(xiàn)可進化硬件中的內(nèi)部可重構電路。但文中對設計虛擬可重構電路的概念進行了擴展。

3.2 虛擬可重構電路

一些FPGA芯片支持部分重構,也就是允許可重構系統(tǒng)的一部分重構,而不影響其余部分的運行。部分重構的優(yōu)點在于,其重構所花的時間比全部重構更少。本文以支持部分重構的Xilinx Virtex FPGA為例,來說明虛擬可重構電路的實現(xiàn)。IP核可以動態(tài)地下載到FPGA或從FPGA刪除。所有的操作都通過Virtex重構端口和Jbits接口來完成。當一個可進化IP核被下載時,它的重構位串在指定位置構靠下列單元;虛擬可重構電路、基因單元和控制器。

圖5表明,虛擬可重構電路實際上是一種在普通FPGA上實現(xiàn)的新的可重構電路。本例中由八個可編程元素構成,由Virtex單元(slice)實現(xiàn)。Virtex單元實現(xiàn)新的可編程元素陣列、新的布線電路和新的配置存儲器。虛擬電路能內(nèi)部重構,但如果有其它新的配置存儲器與之連接,也可從FPGA的I/O引腳配置。

這種方法的優(yōu)點在于:可根據(jù)具體的應用需要準確地設計可編程元素陣列、布線電路和配置存儲器。虛擬可重構電路的重構方式和粒度能準確地反映具體應用的需要。通過虛擬可重構電路,很容易把領域知識插入到基因單元和可重構電路的體系結構中,從而獲得電路軟件模型的精確實現(xiàn)。

圖6給出了一個虛擬可編程元素的例子。這個虛擬可重構電路由8個這樣的元素構成,有4個輸入和2個輸出。這些虛擬可編程元素稱為可重配置功能塊CFB(Configurable Functional Blocks)。每個CFB對應一個配置位串(這里的位串為6位),其中兩個配置位決定了CFB的功能,其它四位定義了輸入的連接信息。布線電路由多路器組成,它們由配置存儲器中的位串控制。配置存儲器由Virtex單元構成,一個Virtex單元包含兩個觸發(fā)器,用于存儲配置位串中的兩位。配置存儲器的所有位都連到多路器,多路器控制布線和CFB中功能的選擇。

虛擬可重構電路中CFB的數(shù)量由具體的應用決定。虛擬可重構電路用結構級VHDL語言來描述,但是一些基本的電路(例如“MAX”電路)用行為級來描述。虛擬可重構能在不同的目標器件下綜合,目標器件并不需要支持部分重構。

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖 6 虛擬可重構電路及其中一個CFB的實現(xiàn)

3.3 基因單元和控制器

基因單元和控制器的實現(xiàn)通常有兩種選擇:采用普通微處理器實現(xiàn),或者設計一個專用的電路來實現(xiàn)。

專用的電路是指一種進化算法的硬件實現(xiàn),目前在可進化硬件領域已經(jīng)開發(fā)了很多這樣的實現(xiàn)。這種算法的優(yōu)點是電路的進化速度快,適合于復雜的應用。

采用微處理器實現(xiàn)時,可以購買或免費獲得現(xiàn)成的微處理器軟核,如Xilinx提供的MicroBlaze和PicoBlaze微控制器IP核,Altera生產(chǎn)Nios核,等等。此外,如果給出的目標可重構器件中有片上處理器,可以使用片上處理器,Xilinx Virtex II Pro XC2VP50芯片包含四個PowerPC處理器。處理器必須通過編程來執(zhí)行程序,它們能和核周圍的環(huán)境進行通信并完成對染色體的基因操作。此外,處理器還負責內(nèi)部虛擬可重構電路的重構。

2. 軟件部分

(1)bit n 的生成過程

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖 7 輸出地址bit n 的生成

基于FPGA二維離散小波變換核的實時可重構系統(tǒng)的設計及仿真

圖 8 輸入地址bit n 的生成

(2)部分代碼

1 #Configuring F and G look-up tables with JBits

/* define row and column values */

int row = 5; int col = 4;

/* define logic function for F LUT */

int[] F_LUT_Vals = Expr.F_LUT(“~(F1&F2&F3&F4)”);

/* define logic function for G LUT */

int[] G_LUT_Vals = Expr.G_LUT(“~(F1|F2|F3|F4)”);

/* set the F LUT value for slice 0 */

jbits.set(row, col, LUT.SLICE0_F, F_LUT_Vals);

/* set the G LUT value for slice 1 */

jbits.set(row, col, LUT.SLICE1_G, G_LUT_Vals);

2 #: Adding and configuring an OutputCore

/* create a signal to run to the cross bar pins on the Slaac1V X2 */

Bus XBar = new Bus(“XP_XBAR”, null, 20);

/* create a new board */

Slaac1VBoard slaac1V = new Slaac1VBoard(“SLAAC1V”);

/* add a cross bar output core to slaac1V board instance */

int XBarOutput = slaac1V.addOutput(Xbar.getName(), XBar);

/* configure the IOB resources output operation */

slaac1V.setOutputInvertT(XBarOutput, true);

/* implement the slaac1V board */

slaac1V.implement(0, “slaac1V.ucf”);

3 #Code showing how Slaac1V SRAMs are distinguished through signal names.

/* define memory signals for Slaac1V X2 memories 0 and 1 */

Bus addr[] = new Bus[2];

Bus data[] = new Bus[2];

/* memory address */

addr[0] = new Bus(“XP_MEM0_ADDR”, null, 18); /* SRAM 0 */

addr[1] = new Bus(“XP_MEM1_ADDR”, null, 18); /* SRAM 1 */

/* memory data */

data[0] = new Bus(“XP_MEM0_DATA”, null, 12); /* SRAM 0 */

data[1] = new Bus(“XP_MEM1_DATA”, null, 12); /* SRAM 1 */

4 #AdderTree input index computations and partitioning process

/* calculate the “parent” adder index */

int log = (int) Math.ceil(Math.log((double)range)/Math.log(2.0));

int parentAdder = low + (int) Math.pow(2.0,log - 1);

/* calculate the right sided adder input index */

range = high - parentAdder;

log = (int) Math.ceil(Math.log((double)range)/Math.log(2.0));

int RHSIndex = ((int) Math.pow(2.0, log - 1)) + parentAdder;

/* calculate the left sided adder input index */

range = parentAdder - low;

log = (int) Math.ceil(Math.log((double)range)/Math.log(2.0));

int LHSIndex = ((int) Math.pow(2.0, log - 1)) + low;

/* partition left hand side of parent adder recursively */

AIndex[parentAdder - 1] = LHSIndex - 1;

deriveAdderTree(low, parentAdder);

/* partition right hand side of parent adder recursively */

if (RHSIndex != parentAdder)

{

BIndex[parentAdder - 1] = RHSIndex - 1;

deriveAdderTree(parentAdder, high);

}

else /* required if there is an odd number of tree inputs */

{

BIndex[parentAdder - 1] = treeInPort.length - 1;

}

5 # Slaac1VBoard.java code

public class Slaac1VBoard extends Board

{

public Slaac1VBoard(String name) throws CoreParameterException

{

super(name);

setXCVPackage(xcvPackage);

setGCLK(GCLK);

};

private XCVPackage xcvPackage[] =

{

new xcv1000_fg680(), new xcv1000_fg680(), new xcv1000_fg680()

};

private static int GCLK = 2;

}; /* end of Slaac1V board class. */

3.2 需要的開發(fā)平臺

硬件平臺軟件平臺

PC機Linux

XUPV5-LX110T開發(fā)板QT

Matlab

ISE

ModelSim

Jbit


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1620

    文章

    21510

    瀏覽量

    598900
  • soc
    soc
    +關注

    關注

    38

    文章

    4021

    瀏覽量

    217022
  • IP
    IP
    +關注

    關注

    5

    文章

    1541

    瀏覽量

    148919
收藏 人收藏

    評論

    相關推薦

    圖像的二維離散變換問題

    (wcodemat(D1,nbcol));title('對角高頻D1');%由小變換恢復原圖像信號Xsyn=idwt2(cA1,cH1,cV1,cD1,'db4');%% 執(zhí)行圖象的多尺度二維小波分
    發(fā)表于 06-16 21:48

    怎樣去設計9/7二維離散變換系統(tǒng)?

    怎樣去設計9/7二維離散變換系統(tǒng)?如何對9/7二維離散
    發(fā)表于 05-07 07:09

    基于DSP Builder的小變換設計實現(xiàn)

    單片機實現(xiàn),存在實時性差等缺點。隨之,基于FPGA的小變換在腦電信號數(shù)字處理中應運而生,其實時性好。 DSP Builder將Matlab
    發(fā)表于 06-04 07:00

    二維DCT在粗粒度重構處理器上的實現(xiàn)

    針對粗粒度重構處理器的特點,提出一種二維離散余弦變換的設計方法,該方法在硬件資源受限的條件下,有效地挖掘了算法的并行性,結果證明算法在速度
    發(fā)表于 04-14 08:44 ?18次下載

    一種基于二維離散變換的醫(yī)學圖像增強算法

    一種基于二維離散變換的醫(yī)學圖像增強算法 噪聲是影響醫(yī)學圖像質(zhì)量的最重要的因素之一。去除噪聲,增強圖像以提高圖像質(zhì)量是醫(yī)學圖像處理的重要課題。傳
    發(fā)表于 02-22 17:15 ?51次下載

    基于FPGA二維提升小變換IP設計

    提出了一種高效并行的二維離散提升小(DWT)變換結構,該結構只需要7行數(shù)據(jù)緩存,即可實現(xiàn)行和列方向同時進行濾波變換。采用一種基于CSD編碼
    發(fā)表于 07-21 17:42 ?18次下載

    關鍵基于二維變換的圖像矢量分解消噪方法

    介紹了MATLAB二維工具籀在含噪圖像預處理中的應用。并提出了一種基于二維變換的圖像消噪的矢量分解方法。
    發(fā)表于 08-10 11:53 ?21次下載

    9/7二維離散變換系統(tǒng)設計及FPGA實現(xiàn)

      美國空間數(shù)據(jù)系統(tǒng)咨詢委員會(簡稱CCSDS)于2005年推出一套適用于空間領域的圖像壓縮標準,標準使用了離散變換為核心算法,推薦使用9/7整數(shù)
    發(fā)表于 09-08 10:25 ?1357次閱讀
    9/7<b class='flag-5'>二維</b><b class='flag-5'>離散</b>小<b class='flag-5'>波</b><b class='flag-5'>變換</b>的<b class='flag-5'>系統(tǒng)</b>設計及<b class='flag-5'>FPGA</b>實現(xiàn)

    基于FPGA的快速9/7整形離散變換系統(tǒng)

    美國空間數(shù)據(jù)系統(tǒng)咨詢委員會(簡稱CCSDS)于2005年推出一套適用于空間領域的圖像壓縮標準,標準使用了離散變換為核心算法,推薦使用9/7整數(shù)
    發(fā)表于 01-25 21:33 ?1655次閱讀
    基于<b class='flag-5'>FPGA</b>的快速9/7整形<b class='flag-5'>離散</b>小<b class='flag-5'>波</b><b class='flag-5'>變換系統(tǒng)</b>

    圖像的二維提升小變換FPGA實現(xiàn)

    本文將實現(xiàn)基于FPGA的圖像二維5/3提升小變換,采用FPGA芯片實現(xiàn)計算量十分復雜的二維提升
    發(fā)表于 06-29 11:59 ?3473次閱讀
    圖像的<b class='flag-5'>二維</b>提升小<b class='flag-5'>波</b><b class='flag-5'>變換</b>的<b class='flag-5'>FPGA</b>實現(xiàn)

    雙運算提升小變換FPGA硬件實現(xiàn)

    采用雙運算FPGA硬件平臺上實現(xiàn)小變換模塊。采用單一時鐘,在不增加系統(tǒng)設計復雜性和功耗的情況下,使得
    發(fā)表于 12-07 13:59 ?22次下載
    雙運算<b class='flag-5'>核</b>提升小<b class='flag-5'>波</b><b class='flag-5'>變換</b>的<b class='flag-5'>FPGA</b>硬件實現(xiàn)

    基于FPGA的快速9/7整形離散變換系統(tǒng)的設計過程與仿真

    CCSDS圖像數(shù)據(jù)壓縮標準中采用9/7整形離散變換為核心算法,該算法結構簡單,易于硬件設計實現(xiàn)。文中基于FPGA設計實現(xiàn)了9/7整數(shù)離散
    發(fā)表于 11-24 14:26 ?1054次閱讀
    基于<b class='flag-5'>FPGA</b>的快速9/7整形<b class='flag-5'>離散</b>小<b class='flag-5'>波</b><b class='flag-5'>變換系統(tǒng)</b>的設計過程與<b class='flag-5'>仿真</b>

    二維雙正交偶對稱小變換

    研究了對稱延拓在純二維雙正交偶對稱小變換中的應用,由純二維濾波器組和對稱延拓的性質(zhì)推導出了小波分解后4個子帶的公式。這些公式歸納了多級
    發(fā)表于 03-13 11:09 ?0次下載

    多級二維整數(shù)小變換FPGA實現(xiàn)資料詳細說明

    為了滿足整數(shù)小變換實時應用的需要,研究了整數(shù)小變換FPGA實現(xiàn)問題。相對于DSP等傳統(tǒng)實現(xiàn)
    發(fā)表于 02-01 11:53 ?9次下載

    升級!昊衡科技應變場重構軟件從二維擴展到三

    之前,昊衡科技已介紹二維應變場重構軟件,軟件搭配OFDR分布式光纖應變溫度傳感系統(tǒng)(OSI系列),將傳感系統(tǒng)數(shù)據(jù)重構在被測物照片或
    的頭像 發(fā)表于 08-25 10:47 ?628次閱讀
    升級!昊衡科技應變場<b class='flag-5'>重構</b>軟件從<b class='flag-5'>二維</b>擴展到三<b class='flag-5'>維</b>