chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-09-24 08:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

實時系統(tǒng)一般都不是通用的,往往是針對具體的任務而設計的。軟件編程的優(yōu)點是設計調(diào)試靈活。無論多復雜的任務,只要給出算法,我們一定能夠通過軟件編程的方式來實現(xiàn),而且調(diào)試、修改都容易得多。缺點是執(zhí)行指令的效率不高,單CPU只能串行地執(zhí)行指令(多CPU方案確實是克服這一缺點的有效辦法,但是大大增加了軟硬件的復雜度)。對于一項任務,軟件都要將它不斷分解,最終變成CPU可執(zhí)行的機器語言,這種化整為零的指令方式正是軟件的優(yōu)點,同時也成了它的缺點。執(zhí)行一條指令一般需取指令、解碼、取操作數(shù)、執(zhí)行四步。雖然CPU內(nèi)部有了cache,實行流水指令操作,但是如果語句中有大量的跳轉(zhuǎn)語句,就會使流水線頻繁中斷,并且使cache的命中率降低。專用硬件的特點是速度快,便于進行并行性設計,是滿足實時性要求最好的方法。其缺點在于設計周期長,調(diào)試修改不容易,受到可用器件的實際限制,復雜的算法難以完全用硬件來完成。從以上的分析中,我們看到軟硬件設計有各自的優(yōu)缺點,能否將軟硬件各自的優(yōu)點結(jié)合起來呢?FPGA出現(xiàn)后,由于它設計輸入方式靈活,設計周期短,片內(nèi)資源豐富,可無限次加載等特點,很適合對具體的任務進行設計。我們可以用它來發(fā)揮硬件速度快的特點完成低層的、大量重復使用的任務。而處理器在上層實時調(diào)用FPGA。FPGA就象一個硬件函數(shù),這種結(jié)構(gòu)既可以發(fā)揮硬件的高速性,又利用了軟件的靈活性。兩者的結(jié)合可以極大地提高整體處理速度,而且開發(fā)周期短,修改方便。

下面以圖像處理中的直線提取算法的實現(xiàn)為例,來說明FPGA作為協(xié)處理器在實時系統(tǒng)中的應用。

1 相位編組算法實現(xiàn)直線提取

1.1 相位編組算法實現(xiàn)直線提取的原理

直線提取就是將圖像中明暗變化的邊緣以輪廓線或邊界線的形式提取出來。相位編組算法是直線提取中比較有效的一種。其算法框圖如圖1。

一幀圖像的象素逐行輸入,計算梯度方向角是先對圖像的每個像素求x方向上的差分Dx和y方向上的差分Dy。arctg(Dy/Dx)是該點梯度的正切值。

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

相位編組是將所有具有相同或相近方向角且?guī)缀挝恢眠B通(8連通或4連通)的點歸為一個點集,該集合就是直線的點集。實際上,圖像中大部分的點周圍明暗變化很小,我們只對M值大于一個給定的閥值Threshold的點進行編組。為了減少下一步處理的數(shù)據(jù)量,我們把滿足M大于閥值的點寫成水平跑碼的形式,即把水平位置相鄰且方向值θ相同的點編為一個跑碼。然后每一行的跑碼與上一行的跑碼進行比較,幾何位置連通且方向值相近的跑碼歸為一類。這樣,就得到整個圖像中的所有直線的點集合了。

得到直線的點集后,用最小二乘法對每個點集擬合出直線。

1.2 系統(tǒng)的軟硬件劃分

系統(tǒng)在實現(xiàn)算法的前提下對實時性有較為苛刻的要求,圖像大小為512×512,圖像數(shù)據(jù)的傳輸速率為5MByte/s,兩幀的間隔為0.6秒,要求系統(tǒng)提取直線的時間不得超過0.5秒。分析上面的框圖,要做的處理非常多,包括對圖像進行求差、求和運算、二維梯度場計算、相位編組、直線擬合等不同層次不同類別的處理和計算,如果完全由軟件做,為了達到所要求的實時性,CPU的主頻至少要250MHz以上,現(xiàn)有的高速DSP難以勝任。所以,必須考慮一部分任務由專用硬件來完成。經(jīng)過嚴密的論證,最后系統(tǒng)采用了圖2所示的結(jié)構(gòu)。

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

FPGA1和FPGA2選用XILINX公司的XC5210,DSP選用內(nèi)部主頻為20MHz的TMS320C40。求梯度、求反正切及編碼等步驟屬于像素級的處理,處理比較規(guī)則,而且隨著像素的流水輸入,一直到編碼完成,沒有中間數(shù)據(jù)需要存儲,可由前級FPGA1完成。其中求反正切可用查表法,查表的數(shù)據(jù)放在與FPGA1相連的RAM中。跑碼的數(shù)據(jù)結(jié)構(gòu)為:

typedef struct tagRUNCODE{

int x0;

int len;

unsigned char orientation;

}RUNCODE;

其中x0代表初始點的X坐標, len代表跑碼長度,orientation代表跑碼的方向值。剩下的就是相位編組和直線擬合了。直線擬合主要是浮點運算,交給DSP完成比較合適。難度在于相位編組。相位編組約占直線提取整個工作量的70%,操作復雜,屬于全局性的處理,涉及到對RAM的管理及訪問,該部分無法由硬件獨立完成。我們必須對這一部分進行軟硬件的分割,讓FPGA以協(xié)處理器的方式加快這部分的處理速度?,F(xiàn)以表1所示跑碼數(shù)據(jù)為例說明相位編組的過程,其中Ai代表當前行的第i 個跑碼,Bj代表上一行的第j個跑碼,圖3是跑碼數(shù)據(jù)的位置示意圖。

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

先從A1開始,拿它與上一行的各個跑碼比,A1與B1位置連通,且方向值也相同,所以A1與B1連通。將A1的點放入B1所屬的點集中。A1再與B2比,位置不連通,A1與B2不連通。由于B2在A2的后面,所以B2以后的跑碼一定不會與A1連通,不用再比較了。我們稱B2相對于A1越界。由此類推,A2與B1不連通,與B2連通,B3相對于A2越界。將A2的點放入B2所屬的點集中。A3從B3前一個跑碼開始比(這樣可以省去與B2前面的跑碼比較),A3與B2不連通,與B3也不連通。這樣,一行比較完畢。將當前行上移,掃描下一行。一幀下來,就可以將所有直線的點集得到。相位編組的特點是數(shù)據(jù)結(jié)構(gòu)復雜,要對內(nèi)存進行復雜的操作。顯然FPGA無法獨立完成,如果把它交給DSP去做,其中判斷Ai與Bj是否連通要經(jīng)常使用,是相位編組中相對簡單但大量重復使用的部分,可以寫成如下函數(shù):

int Is_Connect(RUNCODE runcodel,RUNCODE runcode2)

/*判決 位置連通性和梯度方向連通性/*

/* RETURN:255--連通0--不連通1--已經(jīng)越界(runcodel.x0+runcodel.len-runcode2.x0)<0*/

{

if(runcode 1.x0<=runcode2.x0)

{ if((runcodel.x0+runcodel.len-runcode2.x0)>0)

{ if(abs(runcodel.orientation-runcode2.orientation)<Threshold)

return 255;

}

else

{ return 1;

}

}

else

{ if(runcode2.x0+runcode1.len-runcode1.0x)>0)

if(abs(runcode1.orientation-runcode2.orientation)<Threshold)

return 255;

}

return 0;

}

可以看出,函數(shù)中主要的操作是判斷語句,判斷語句內(nèi)部的操作卻不多。也就是說,在該函數(shù)中,DSP相當一部分時間里都在作判斷。判斷語句在匯編中對應的是條件跳轉(zhuǎn)語句,這種頻繁的跳轉(zhuǎn)語句會使DSP內(nèi)部的指令流水線中斷,使cache命中率大為降低。實驗表明,用DSP編程執(zhí)行這段代碼不能滿足系統(tǒng)實時性的需要。硬件電路完成條件跳轉(zhuǎn)指令只需要比較器和二選一開關(guān)即可,而且硬件電路實現(xiàn)多重判斷和單一判斷的速度是一樣的。因此,硬件電路實現(xiàn)該函數(shù)不僅比較容易,而且執(zhí)行速度只需一個時鐘周期。于是我們用FPGA2實現(xiàn)此函數(shù),讓DSP來調(diào)用它,并取得了較理想的效果。

2 對FPGA用于協(xié)處理器的幾點探討

通過以上實例我們可以探討一下FPGA用于協(xié)處理器的結(jié)構(gòu)特點和設計原則。

2.1 FPGA作為協(xié)處理器所需的結(jié)構(gòu)

硬件要完成某種應用方式,必須依賴于相應的系統(tǒng)硬件結(jié)構(gòu)。FPGA在數(shù)字信號處理設計中最典型的應用有兩種:一種是作為整個數(shù)據(jù)處理流程中的一個“結(jié)點”,數(shù)據(jù)沿著線狀結(jié)構(gòu)被不斷加工處理,F(xiàn)PGA在這里作為處理單元,獨立地完成算法中的某些功能。如圖4。

圖中的PE一般為DSP或單片機。上例中的前級FPGA1就是作為處理單元來應用的。另一種是作為協(xié)處理器,如圖5。

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

FPGA從屬于PE,PE的一部分任務由FPGA分擔。PE象調(diào)用軟件中的函數(shù)一樣來調(diào)用FPGA。只是函數(shù)內(nèi)部寫的不是完成該功能的語句,而是向FPGA送參數(shù),再從FPGA接收結(jié)果。硬件的速度相對于PE的指令操作來說一般要快得多,可以認為將數(shù)據(jù)送出后馬上就可得到結(jié)果。如果使用得當,這種結(jié)構(gòu)可以大幅度提高PE的處理速度,需要指出的是,雖然硬件執(zhí)行起來要比軟件快,但是協(xié)處理器的開銷主要在 PE與FPGA的接口上,要保證PE與FPGA有高速的雙向通道,否則就達不到高速性的目的。在提取直線的系統(tǒng)中,DSP是通過自身的兩個高速并行口(一發(fā)一收)與FPGA相連接的。實際上,如果想進一步提高協(xié)處理器的效率,應該考慮設計更快的接口。

2.2 FPGA作為協(xié)處理器的優(yōu)點

使用FPGA作為協(xié)處理器的最大優(yōu)勢在于可根據(jù)具體算法的實際需要來為PE定做合適的硬件函數(shù)。傳統(tǒng)的協(xié)處理器為了自身的通用性,實現(xiàn)的一般都是指令層次上的功能,如80387專門完成乘加運算,而FPGA設計和使用更靈活,可以將協(xié)處理器建立在函數(shù)層上。如直線提取中協(xié)處理器完成的函數(shù),DSP本身不善長大量的邏輯判斷,如果不結(jié)合具體的算法,在指令層次上很難解決DSP的這一弱點。只有在具體的算法中,對邏輯判斷集中的一段程序進行硬件設計,才能做到比DSP高得多的效率。站在CPU的角度上看,CPU可以象調(diào)用軟件函數(shù)一樣來調(diào)用FPGA,而速度象匯編語句一樣快。這樣有效地克服了CPU的指令層次上效率低的弱點。又比如,矩陣乘法:

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

FPGA作為協(xié)處理器設計的原則及在相位編組算法的實現(xiàn)中的應用

兩個矩陣相乘,可以先分解為兩個向量的乘法,如公式(1),繼續(xù)分解為兩個標量的乘法,如公式(2)。CPU的指令集只能做標量乘法,在這個層次上很難大幅度提高矩陣乘法的效率。如果用FPGA設計一個向量乘法器,則可以少MN(2K-2)條指令。如果訂做一個矩陣乘法器,可以少NM(2K-1)-1條指令。

2.3 FPGA作為協(xié)處理器設計的原則

一般來講,F(xiàn)PGA適合完成函數(shù)級的任務,比如矩陣乘法、查表法等。實際中,一個復雜的任務要做的處理比較多,我們不大可能把每個函數(shù)都硬件化,給FPGA分配怎樣的任務才算恰當呢?在確定協(xié)處理器的任務時要整體把握,確定影響整體速度的瓶頸是哪部分,選擇最有潛力可挖的部分。硬件分擔的任務不是越多越好,這里面要綜合考慮FPGA設計的難度,系統(tǒng)的實際要求等。FPGA的任務太多,可調(diào)用性變差,如果只能被調(diào)用很少的幾次,它對整體速度的提高就不會有多少貢獻,而且會增加FPGA設計的工作量。在直線提取的例子中,我們必須對算法框圖各部分有較清楚的認識,看到判斷兩跑碼的連通性要經(jīng)常調(diào)用,而且DSP完成該函數(shù)效率不高,這兩點是采用協(xié)處理器完成該函數(shù)的兩個必要條件。C40的一個指令周期為50ns,如果不算調(diào)用函數(shù)時的堆棧操作,完成該函數(shù)至少需13個指令周期。而FPGA只需25.5ns就可完成。對于一幅512×512的圖像,設一行里有150個跑碼,平均每個跑碼調(diào)用3次該函數(shù),每調(diào)用一次FPGA比原來節(jié)省10個周期,則一幀圖像可節(jié)?。?/p>

512×150×3×10×50ns=0.115s

在實際測試中,整體的運行時間比原來快了0.15s左右。

FPGA作為協(xié)處理器在相位編組算法的實現(xiàn)中得到了成功的應用。在較為復雜的處理中,我們可以將任務分解為上下層關(guān)系,下層簡單而規(guī)則并且大量重復使用的工作交給FPGA完成,軟件在上層調(diào)用它,從而提高了系統(tǒng)整體的處理速度。這里面,F(xiàn)PGA與傳統(tǒng)協(xié)處理器相比更加靈活,這種靈活性不僅體現(xiàn)在FPGA可以更加帖近具體的算法進行設計上,而且依據(jù)可重構(gòu)的思想,我們可以在不同的時間段上對FPGA加載不同的功能函數(shù),系統(tǒng)資源從而得到了充分利用。


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

    關(guān)注

    68

    文章

    20079

    瀏覽量

    243465
  • FPGA
    +關(guān)注

    關(guān)注

    1650

    文章

    22214

    瀏覽量

    627675
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11192

    瀏覽量

    221694
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FPGA協(xié)處理器的優(yōu)勢

      傳統(tǒng)的、基于通用DSP處理器并運行由C語言開發(fā)的算法的高性能DSP平臺,正在朝著使用FPGA處理器和/或協(xié)
    發(fā)表于 09-29 16:28

    FPGA干貨分享六】基于FPGA協(xié)處理器算法加速的實現(xiàn)

    數(shù)據(jù)均衡決策的過程。該設計使用了一個平臺FPGA實現(xiàn)的一個嵌入式PowerPC。協(xié)處理器的意
    發(fā)表于 02-02 14:18

    采用FPGA協(xié)處理器來簡化ASIC仿真

    處理器。這些可配置協(xié)處理器可幫助設計人員解決傳統(tǒng)ASIC仿真中存在的許多問題,并更省力、更快捷地實現(xiàn)更精確的設計。
    發(fā)表于 07-23 06:24

    如何利用串行RapidIO實現(xiàn)FPGA協(xié)處理器?

    要跟上日益提高的性能需求,還得注意保持成本低廉有效利用基于串行RapidIO的FPGA作為DSP協(xié)處理器就能達到這些目的。那么,我們該怎么做呢?
    發(fā)表于 08-07 06:47

    FPGA協(xié)處理器實現(xiàn)代碼加速的方法有哪些?

    當今的設計工程師受到面積、功率和成本的約束,不能采用GHz級的計算機實現(xiàn)嵌入式設計。嵌入式系統(tǒng),通常是由相對數(shù)量較少的算法決定最大的運算需求。使用設計自動化工具可以將這些
    發(fā)表于 09-03 06:26

    舉例說明FPGA作為協(xié)處理器實時系統(tǒng)中有哪些應用?

    舉例說明FPGA作為協(xié)處理器實時系統(tǒng)中有哪些應用?FPGA用于
    發(fā)表于 04-08 06:48

    為什么FPGA協(xié)處理器可以實現(xiàn)算法加速?

    代碼加速和代碼轉(zhuǎn)換到硬件協(xié)處理器的方法如何采用FPGA協(xié)處理器實現(xiàn)
    發(fā)表于 04-13 06:39

    小白求助怎樣去使用ARM協(xié)處理器

    的Load/Store體系原則,這些指令類別是清楚區(qū)分的。指令的格式反映了這種情況。3. 協(xié)處理器數(shù)據(jù)操作協(xié)處理器數(shù)據(jù)操作完全是協(xié)
    發(fā)表于 04-24 09:36

    FPGA協(xié)處理技術(shù)介紹及進展

    FPGA協(xié)處理技術(shù)介紹及進展 FPGA的架構(gòu)使得許多算法得以實現(xiàn),較之采用四核CPU或通用圖形
    發(fā)表于 04-26 18:15 ?1082次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>協(xié)</b><b class='flag-5'>處理</b>技術(shù)介紹及進展

    基于FPGA平臺的嵌入式PowerPC協(xié)處理器實現(xiàn)算法加速設計

    當今的設計工程師受到面積、功率和成本的約束,不能采用GHz級的計算機實現(xiàn)嵌入式設計。嵌入式系統(tǒng),通常是由相對數(shù)量較少的算法決定最大的運算需求。使用設計自動化工具可以將這些
    發(fā)表于 07-22 11:54 ?1568次閱讀
    基于<b class='flag-5'>FPGA</b>平臺的嵌入式PowerPC<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>算法</b>加速設計

    通過利用FPGA協(xié)處理器實現(xiàn)對汽車娛樂系統(tǒng)進行優(yōu)化設計

    集成了數(shù)據(jù)通信,定位服務和視頻娛樂的高端汽車信息娛樂系統(tǒng)需要高性能的可編程處理技術(shù),其最佳實現(xiàn)方法是主流汽車信息通信系統(tǒng)構(gòu)架中集成FPGA協(xié)
    發(fā)表于 07-24 15:25 ?967次閱讀
    通過利用<b class='flag-5'>FPGA</b><b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b><b class='flag-5'>實現(xiàn)</b>對汽車娛樂系統(tǒng)進行優(yōu)化設計

    如何使用FPGA實現(xiàn)順序形態(tài)圖像處理器的硬件實現(xiàn)

    該文闡述了灰度圖像順序形態(tài)變換的基礎(chǔ)上,介紹了順序形態(tài)變換硬件實現(xiàn)的圖像處理系統(tǒng).該系統(tǒng)采用DSP+FPGA的框架結(jié)構(gòu),利用FPGA的可重
    發(fā)表于 04-01 11:21 ?8次下載

    采用FPGA協(xié)處理器實現(xiàn)算法加速教程

    當今的設計工程師受到面積、功率和成本的約束,不能采用GHz級的計算機實現(xiàn)嵌入式設計。嵌入式系統(tǒng),通常是由相對數(shù)量較少的算法決定最大的運算需求。使用設計自動化工具可以將這些
    的頭像 發(fā)表于 09-28 10:38 ?4516次閱讀
    采用<b class='flag-5'>FPGA</b><b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>算法</b>加速教程

    基于FPGA協(xié)處理器算法及總線連接

    協(xié)處理器是一個處理單元,該處理單元與一個主處理單元一起使用來承擔通常由主處理單元執(zhí)行的運算。通常
    發(fā)表于 10-27 12:41 ?1197次閱讀

    基于FPGA協(xié)處理器算法及總線連接

    當今的設計工程師受到面積、功率和成本的約束,不能采用GHz級的計算機實現(xiàn)嵌入式設計。嵌入式系統(tǒng),通常是由相對數(shù)量較少的算法決定最大的運算需求。使用設計自動化工具可以將這些
    的頭像 發(fā)表于 08-22 18:50 ?1316次閱讀