專利名稱:一種并行結(jié)構(gòu)的有限脈沖響應濾波器及其處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信號處理系統(tǒng),具體涉及基于多核處理器的FIR(有限 脈沖響應)濾波器及其并行處理方法。
背景技術(shù):
在當前的數(shù)字信號處理系統(tǒng)中,F(xiàn)IR濾波器的實現(xiàn)在不同的芯片上有不 同的運算結(jié)構(gòu)和方法。例如在FPGA (現(xiàn)場可編程門陣列)上,當FIR濾波 器階數(shù)較小時,它有一種較好的分布式運算結(jié)構(gòu)。但當階數(shù)較大時,由于查 找表(LUT)的大小是隨FIR濾波器階數(shù)的增加呈指數(shù)增長,因而這種分布 式運算結(jié)構(gòu)會占用FPGA上更多的邏輯資源。同樣在超大規(guī)模集成電路 (VLSI)上,也有一種稱為FFA ( Fast FIR Algorithms,快速FIR算法)的 快速算法。它能將原階數(shù)的大小縮小L倍,但濾波器個數(shù)會大約增加2L倍, 例如當需要將階數(shù)降3倍時,就需要6個FIR濾波器。顯然濾波的并行度越 高,所需的硬件資源和成本將會以兩倍的速率在增加。
這樣,在多核處理器中,對于高階數(shù)的FIR濾波器的實現(xiàn),上述兩種算 法均不適合,主要原因是在多核處理器芯片中,它的硬件資源是固定的,特 別是處理器核的數(shù)量是有限的,不可能獲得更高的并行度。但往往在實際應 用FIR濾波器時,為了要獲得良好的濾波效果,F(xiàn)IR濾波器的階數(shù)可能會顯 著增加,這是FIR濾波器的技術(shù)特性決定的。不同的應用項目要求FIR濾波 器的階數(shù)是不一樣的,有的可能會多達幾百階,甚至到上千階。而用單核處 理器來實現(xiàn)這樣的高階數(shù)FIR濾波器就會因運算速度不夠而很難成功。因此, 開發(fā)出適合多核處理器的FIR濾波器并行結(jié)構(gòu)和并行處理方法就很有必要
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種并行結(jié)構(gòu)的FIR濾波器及其處理方
法,使得在多核處理器芯片中,多個核并行完成一個高階數(shù)的FIR濾波運算。
為解決上述技術(shù)問題,本發(fā)明提供了 一種并行結(jié)構(gòu)的有限脈沖響應
(FIR)濾波器的處理方法,涉及多核FIR濾波器,該方法包括
所述多核FIR濾波器中設(shè)置多條FIR濾波并行支路;
當所述多核FIR濾波器接收到輸入數(shù)據(jù)時,將所述輸入數(shù)據(jù)分別發(fā)送給 各條FIR濾波并行支路進行FIR濾波處理,并將各條FIR濾波并行支路的輸 出數(shù)據(jù)進行組合,作為所述FIR濾波器的輸出數(shù)據(jù)輸出。
進一步地,上述方法中,所述多核FIR濾波器將輸入數(shù)據(jù)分別發(fā)送給各
行支路進行FIR濾波處理。
其中,所述各條FIR濾波并行支路接收所述輸入數(shù)據(jù)后,第X條FIR濾 波并行支路僅對輸入數(shù)據(jù)中采樣值序號為n的數(shù)據(jù)進行FIR濾波處理,其中, X=n%m+1, m為所述多核FIR濾波器中濾波單元的數(shù)目。
所述多核FIR濾波器中設(shè)置的FIR濾波并行支路數(shù)目等于所述多核FIR 濾波器中核數(shù)目減1。
所述多核FIR濾波器通過快速搬移工具將所述輸入數(shù)據(jù)分別發(fā)送給各條 FIR濾波并行支3各。
本發(fā)明還公開了 一種并行結(jié)構(gòu)的FIR濾波器,包括控制單元以及兩個以 上并4亍的濾波單元,其中
所述控制單元,用于將接收的輸入數(shù)據(jù)分別發(fā)送給各濾波單元,以及用 于將各濾波單元的輸出數(shù)據(jù)進行組合,作為所述FIR濾波器的輸出數(shù)據(jù)輸出;
所述濾波單元,用于對所述控制單元發(fā)送的數(shù)據(jù)進行FIR濾波處理,并 將濾波后的數(shù)據(jù)作為輸出數(shù)據(jù)發(fā)送給所述控制單元。
進一步地,上述濾波器中,所述控制單元,將輸入數(shù)據(jù)分別發(fā)送給各條 FIR濾波并行支路時,還按照發(fā)送順序依次以中斷方式啟動各條FIR濾波并行支^各進行FIR濾波處理。
其中,所述濾波單元,僅對輸入數(shù)據(jù)中采樣值序號為n的數(shù)據(jù)進行FIR 濾波處理,所述滿足如下要求
X=n%m+1,
m為所述多核FIR濾波器中濾波單元的數(shù)目,X為該濾波單元的序號。 所述多核FIR濾波器中濾波單元數(shù)目等于所述多核FIR濾波器中核數(shù)目減1。
所述控制單元,通過快速搬移工具將所述輸入數(shù)據(jù)分別發(fā)送給各濾波單元。
采用本發(fā)明技術(shù)方案使得,多核處理器芯片可以(使用多個核共同)完 成一個高階數(shù)的FIR濾波運算,且較單核處理器大大減少了 FIR濾波器的總 體運4亍時間。
圖1是本實施例中FIR濾波器的結(jié)構(gòu)示意圖; 圖2是本本實施例中FIR濾波器并行結(jié)構(gòu)的信號流向示意圖; 圖3是本實施例中主核Core0的數(shù)據(jù)分發(fā)模塊流程框圖; 圖4是本實施例中主核Core0的數(shù)據(jù)收集模塊流程框圖; 圖5是本實施例中主核Core0的數(shù)據(jù)組合模塊流程框圖。
具體實施例方式
本發(fā)明的發(fā)明構(gòu)思是可以將FIR濾波器的運算任務(wù)分配到多個核上并 行運4亍,以減少FIR濾波器總體運行時間。具體地,可以根據(jù)不同類型多核 處理器芯片的內(nèi)部硬件資源,來靈活設(shè)計和實現(xiàn)高階數(shù)FIR濾波器的并行運目相等,可以為2、 3、 4、 5等等,即一個從核運行一條FIR濾波器的并行 支路。當輸入數(shù)據(jù)以數(shù)據(jù)塊方式接收時,輸入數(shù)據(jù)幾乎是同時到達各條并行
減少。另外,在FIR濾波器并行結(jié)構(gòu)中設(shè)置控制開關(guān),每條并行支路或相應 的從核并不處理所有的輸入數(shù)據(jù),只按照控制開關(guān)的控制策略處理一部分的 輸入數(shù)據(jù)。
下面結(jié)合附圖及具體實施例對本發(fā)明技術(shù)方案作進一步詳細說明。
一種并行結(jié)構(gòu)的FIR濾波器,可并行完成高階數(shù)的FIR濾波運算,其結(jié) 構(gòu)如圖l所示,包括控制單元以及若千并行的濾波單元。下面介紹各單元的 功能。
控制單元,用于將接收到的輸入數(shù)據(jù)分別發(fā)送給各濾波單元,以及用于 收集和組合各濾波單元處理后的數(shù)據(jù),作為整個并行結(jié)構(gòu)的FIR濾波器的輸 出數(shù)據(jù);
本實施例中,控制單元由多核處理器中的主核(例如Core0)實現(xiàn),其 進一步可以包括數(shù)據(jù)分發(fā)模塊、數(shù)據(jù)收集模塊和數(shù)據(jù)組合模塊,其中
數(shù)據(jù)分發(fā)模塊,將輸入數(shù)據(jù)分別發(fā)送給各濾波單元的內(nèi)存中去,并用核 間中斷方式啟動各濾波單元運行FIR濾波程序;
數(shù)據(jù)收集模塊,按照啟動濾波單元的順序,分別等待和查詢各個濾波單 元是否完成FIR濾波,如果完成,則將各濾波單元的輸出數(shù)據(jù)搬移到控制單 元的內(nèi)存中;
本實施例中,數(shù)據(jù)收集通過查詢各濾波單元的運行完成標志,如被置位, 則認為各濾波單元完成FIR濾波;
數(shù)據(jù)組合模塊,將各個濾波單元的輸出數(shù)據(jù)按某種方式組合在一起,作 為最后FIR濾波器的輸出凄t據(jù);
濾波單元,用于對所收到的數(shù)據(jù)進行FIR濾波處理;
本實施例中,每個濾波單元是由多核FIR濾波器中的一個從核(例如Corel、 Core2、 Core3等)實現(xiàn)的,濾波單元進一步包括控制開關(guān)、若干系 數(shù)乘法器、若干加法器和若干移位邏輯單元,其中,加法器和移位邏輯單元 的數(shù)目相等,并等于FIR濾波器階數(shù)減1,而系數(shù)乘法器的數(shù)目則與FIR濾 波器階數(shù)相同。
控制開關(guān),用以接通或斷開輸入數(shù)據(jù)到系數(shù)乘法器的連接通i 各;
其中,控制開關(guān)按照控制策略接通或斷開,該控制策略是根據(jù)輸入數(shù)據(jù) 的采樣值序號和濾波單元的序號數(shù)來聯(lián)合制定。
移位邏輯單元,用于順序存放輸入的數(shù)據(jù),本實施例中,移位邏輯單元 按照采樣值序號順序存放各樣值,并將存放的樣值送到各自的系數(shù)乘法器, 其中,第一個移位邏輯單元空出后,將接收一個新的從外部來的樣值,而最 后一個移位邏輯單元則將樣值拋棄,接收前一個移位邏輯單元的樣值;
系數(shù)乘法器,用于將收到的樣值和系數(shù)相乘,然后將本單元的乘積值移 送到其后面的加法器中;
加法器,用于將上一級的乘法結(jié)果或加法器的輸出結(jié)果與本級的乘法結(jié) 果相加,然后將加法結(jié)果再輸出到下一級的加法器中,最后一個加法器將輸 出結(jié)果送到數(shù)據(jù)收集模塊中;
本實施例中,F(xiàn)IR濾波器中并行結(jié)構(gòu)的濾波單元的信號流向,如圖2所 示,圖中的x(")是輸入數(shù)據(jù),"是輸入的樣值順序號,"=0、 1、 2、 3等等, y(")是輸出數(shù)據(jù),是濾波器系數(shù),/=0,1,2,...N-1,其中,N是濾波器階 數(shù)。1是移位邏輯單元。m是并行的濾波單元數(shù)目(也可以稱為并行FIR 濾波支路H目),w =1、 2、 3等,分別稱為濾波單元l,濾波單元2,濾波 單元3等等,w的值應該等于FIR濾波器所使用的多核處理器中從核的個數(shù) (即每個濾波單元是由一個從核實現(xiàn)的)。A:,、 、、 &……、分別是各濾波 單元的控制開關(guān)組,每組開關(guān)的個數(shù)均相同并與FIR濾波器的系數(shù)個數(shù)相等。 ^ 、 P2 、 P,……^分別是各濾波單元的控制開關(guān)組的控制策略。
下面介紹上述FIR濾波器實現(xiàn)高階HR濾波處理的過程。
由于參與FIR濾波器運算的核的數(shù)量要按照具體多核處理器的硬件資源來定,本實施例中,設(shè)定FIR濾波器使用處理器核的個數(shù)為4,其中,從核 的個數(shù)為3,即附=3,表示有3個濾波單元(即3條并行FIR濾波支路), 其中,設(shè)定Core0作為控制單元(也稱主核),Core 1、 Core2和Core3分 別作為濾波單元(也稱從核),設(shè)定進入多核處理器芯片的外部輸入數(shù)據(jù)是 以數(shù)據(jù)塊的方式存放在主核的內(nèi)存中,數(shù)據(jù)塊的長度可自由設(shè)定, 一般為16、 32、 64、 128、 256等等,但要滿足數(shù)據(jù)塊的長度遠大于使用處理器核的個數(shù)。 此外所述FIR濾波器的系數(shù)表格也被事先存放在所有使用的處理器從核內(nèi)存 中,下面介紹這四個核共同完成一個高階數(shù)FIR濾波的過程是,先分發(fā)輸入 數(shù)據(jù),再收集各并行濾波支路的輸出數(shù)據(jù),最后組合濾波數(shù)據(jù)作為輸出數(shù)據(jù)。
其中,分發(fā)輸入數(shù)據(jù)過程,可使用多核處理器芯片中自有的快速數(shù)據(jù)搬 移功能模塊實現(xiàn),如DMA等,對各個從核的分發(fā)順序不作要求,但每完成 一個從核的數(shù)據(jù)分發(fā)之后,立即用核間中斷方式啟動該從核運行FIR濾波程 序,當然在有些實施例中,也可以用核間中斷方式以外的其他方式啟動從核 運行FIR濾波程序。具體實現(xiàn)過程,如圖3所示,包括以下步驟
步驟301: Core0將輸入的數(shù)據(jù)塊發(fā)送到Core 1的內(nèi)存中;
步驟302: Core0用核間中斷方式啟動從核Core 1運行FIR濾波程序;
步驟303: Core0將輸入的數(shù)據(jù)塊發(fā)送到Core 2的內(nèi)存中;
步驟305: Core0將輸入的數(shù)據(jù)塊發(fā)送到Core 3的內(nèi)存中;
步驟306: Core0用核間中斷方式啟動從核Core 3運行FIR濾波程序。
數(shù)據(jù)分發(fā)完成后,各個從核在中斷服務(wù)程序中,按照并行支路控制開關(guān) 組的控制策略來運行FIR濾波程序,本實施例中,Core 1、 Core2和Core3 分別運行第一條并行FIR濾波支路、第二條并行FIR濾波支路和第三條并行 FIR濾波支路;其中,各條并行FIR濾波支路的控制策略的邏輯表達式為 其中,"是輸入的樣值順序號,w是并行FIR濾波支路數(shù)。由于本實 施例中,《7=3,即余數(shù)只能是0、 1、 2三個值,當余數(shù)是0時,;t,控制開關(guān) 組閉合,其它控制開關(guān)組斷開;當余數(shù)是l時,^控制開關(guān)組閉合,其它控 制開關(guān)組斷開;當余數(shù)是2時,、控制開關(guān)組閉合,其它控制開關(guān)組斷開。
9即,第一條并行支路只計算余數(shù)是O的輸入樣值,第二條并行支路只計算余
數(shù)是1的輸入樣值,第三條并行支路只計算余數(shù)是2的輸入樣值。
具體地,可通過軟件實現(xiàn)上述的控制策略,即Corel只計算樣值順序號 是0、 3、 6、 9、 12等等的輸入數(shù)據(jù),Core2只計算樣值順序號是1、 4、 7、 10、 13等等這些的輸入數(shù)據(jù),Core3只計算樣值順序號是2、 5、 8、 11、 14 等等這些的輸入數(shù)據(jù)。
其中,在某條并行FIR濾波支路中,當其控制開關(guān)組閉合時,有數(shù)據(jù)輸 出;但當其控制開關(guān)組斷開時,它的移位功能照常進行,但所有其他計算功 能均停止不做,等到其控制開關(guān)組再度閉合時,才開始計算。但要求當其控 制開關(guān)組斷開時,它的輸出數(shù)據(jù)是0。
各個從核在其濾波計算完成之后,要將輸出數(shù)據(jù)存放在各自核的內(nèi)存中, 將各自核的運行完成標志置位,并等待主核來查詢完成標志置位和搬移輸出 數(shù)據(jù)。
收集數(shù)據(jù)的過程是,主核CoreO分發(fā)完數(shù)據(jù)之后,按照啟動從核運行的 順序,分別查詢各個從核的運行完成標志,當某個從核的運行完成標志已經(jīng) 被置時,使用快速數(shù)據(jù)搬移功能模塊,如DMA等,將該從核的輸出數(shù)據(jù)搬 移到主核的內(nèi)存中,具體過程如圖4所示,包括以下步驟
步驟401: Core0分發(fā)完三個核的輸入數(shù)據(jù)后,查詢Corel運行完成標志 是否置位,如果是,進入步驟402,否則繼續(xù)等待;
步驟402: Core0將Corel的輸出數(shù)據(jù)搬移到Core0的內(nèi)存中;
步驟403: CoreO查詢Core2運行完成標志是否置位,如果是,進入步驟 404,否則繼續(xù)等待;
步驟404: Core0將Core2的輸出數(shù)據(jù)搬移到Core0的內(nèi)存中;
步驟405: Core0查詢Core3運行完成標志是否置位,如果是,進入步驟 406,否則繼續(xù)等待;
步驟406: Core0將Core3的輸出數(shù)據(jù)搬移到Core0的內(nèi)存中。組合數(shù)據(jù)的過程是,主核在退出數(shù)據(jù)收集模塊,要組合數(shù)據(jù),即將各個 從核的輸出數(shù)據(jù)的樣值順序號按某種方式組合在一起,成為最終的FIR濾波
器輸出數(shù)據(jù)。具體過程如圖5所示,包括以下步驟 步驟501:取Core 1輸出的0號樣值; 步驟502:取Core 2輸出的1號樣值; 步驟503:取Core3輸出的2號樣值;
步驟503執(zhí)行完成后,再返回到Core 1取出3號樣值,到Core 2取出4 號樣值,到Core3取出5號樣值,余此類推,直至取完最后一個輸出數(shù)據(jù)。 到此為止, 一個高階數(shù)的FIR濾波器運行任務(wù)由四個處理器核以并行方式分 別同時完成任務(wù)的不同部分而結(jié)束。
上述實施例中使用三個從核執(zhí)行三條并行支路,根據(jù)一個實施例的實際 測試結(jié)果表明,其總體FIR濾波運算時間被減少了 2.7倍。
從上述實施例可以看出,本發(fā)明技術(shù)方案將FIR濾波器的運算任務(wù)分配 到多個核上并行運行,并且在FIR濾波器并行結(jié)構(gòu)中設(shè)置了控制開關(guān),每條 并行支路或相應的從核并不處理所有的輸入數(shù)據(jù),只按照控制開關(guān)的控制策 略處理一部分的輸入數(shù)據(jù),因此,大大減少了 FIR濾波器的運算時間。理論 分析如下假如一個輸入數(shù)據(jù)的樣值運行一次FIR濾波運算的時間是L,那 么對于單核FIR濾波器而言,S個樣值的總體FIR濾波運算的時間是S x L。 而對于多核FIR濾波器,采用本發(fā)明技術(shù)方案時,若設(shè)定使用的從核數(shù)目為 M時,并行支路數(shù)目也為M,由于一個并行支路只處理S/M個樣值,而所 有的并行支路都幾乎同時運行,因此,S個樣值的總體FIR濾波運算的時間 就是(S/M) xl。顯然,采用本發(fā)明技術(shù)方案的多核FIR濾波器并行處理 的時間是單核的1/M,同時,隨著FIR濾波器中從核數(shù)目的增加,總體FIR 濾波運算的時間就越少。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本 領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護 范圍之內(nèi)。
ii
權(quán)利要求
1、一種并行結(jié)構(gòu)的有限脈沖響應(FIR)濾波器的處理方法,涉及多核FIR濾波器,其特征在于,該方法包括所述多核FIR濾波器中設(shè)置多條FIR濾波并行支路;當所述多核FIR濾波器接收到輸入數(shù)據(jù)時,將所述輸入數(shù)據(jù)分別發(fā)送給各條FIR濾波并行支路進行FIR濾波處理,并將各條FIR濾波并行支路的輸出數(shù)據(jù)進行組合,作為所述FIR濾波器的輸出數(shù)據(jù)輸出。
2、 如權(quán)利要求1所述的方法,其特征在于,所述多核FIR濾波器將輸入數(shù)據(jù)分別發(fā)送給各條FIR濾波并行支路時, 按照發(fā)送順序依次以中斷方式啟動各條FIR濾波并行支-各進行FIR濾波處 理。
3、 如權(quán)利要求1或2所述的方法,其特征在于,所述各條FIR濾波并行支3I4^收所述輸入數(shù)據(jù)后,第X條FIR濾波并行 支路僅對輸入數(shù)據(jù)中采樣值序號為n的數(shù)據(jù)進行FIR濾波處理,其中, X=n%m+1, m為所述多核FIR濾波器中濾波單元的數(shù)目。
4、 如權(quán)利要求3所述的方法,其特征在于,所述多核FIR濾波器中設(shè)置的FIR濾波并行支路數(shù)目等于所述多核FIR 濾波器中核數(shù)目減1。
5、 如權(quán)利要求3所述的方法,其特征在于,所述多核FIR濾波器通過快速搬移工具將所述輸入數(shù)據(jù)分別發(fā)送給各條 FIR濾波并行支路。
6、 一種并行結(jié)構(gòu)的有限脈沖響應(FIR)濾波器,其特征在于,該FIR 濾波器包括控制單元以及兩個以上并行的濾波單元,其中所述控制單元,用于將接收的輸入數(shù)據(jù)分別發(fā)送給各濾波單元,以及用 于將各濾波單元的輸出數(shù)據(jù)進行組合,作為所述FIR濾波器的輸出數(shù)據(jù)輸出;所述濾波單元,用于對所述控制單元發(fā)送的數(shù)據(jù)進行FIR濾波處理,并 將濾波后的數(shù)據(jù)作為輸出數(shù)據(jù)發(fā)送給所述控制單元。
7、 如權(quán)利要求6所述的濾波器,其特征在于,所述控制單元,將輸入數(shù)據(jù)分別發(fā)送給各條FIR濾波并行支路時,還按
8、 如權(quán)利要求6或7所述的濾波器,其特征在于,所述濾波單元,僅對輸入數(shù)據(jù)中采樣值序號為n的數(shù)據(jù)進行FIR濾波處 理,所述滿足如下要求X=n%m+1 ,m為所述多核FIR濾波器中濾波單元的數(shù)目,X為該濾波單元的序號。
9、 如權(quán)利要求8所述的濾波器,其特征在于,所述多核FIR濾波器中濾波單元數(shù)目等于所述多核FIR濾波器中核數(shù)目減1。
10、 如權(quán)利要求8所述的濾波器,其特征在于,所述控制單元,通過快速搬移工具將所述輸入數(shù)據(jù)分別發(fā)送給各濾波單元。
全文摘要
本發(fā)明一種并行結(jié)構(gòu)的FIR(有限脈沖響應)濾波器及其處理方法,涉及數(shù)字信號處理系統(tǒng)。本發(fā)明方法,涉及多核FIR濾波器,該方法包括所述多核FIR濾波器中設(shè)置多條FIR濾波并行支路;當所述多核FIR濾波器接收到輸入數(shù)據(jù)時,將所述輸入數(shù)據(jù)分別發(fā)送給各條FIR濾波并行支路進行FIR濾波處理,并將各條FIR濾波并行支路的輸出數(shù)據(jù)進行組合,作為所述FIR濾波器的輸出數(shù)據(jù)輸出。采用本發(fā)明技術(shù)方案使得,多核處理器芯片可以(使用多個核共同)完成一個高階數(shù)的FIR濾波運算,且較單核處理器大大減少了FIR濾波器的總體運行時間。
文檔編號G06F9/50GK101661407SQ20091017459
公開日2010年3月3日 申請日期2009年9月30日 優(yōu)先權(quán)日2009年9月30日
發(fā)明者顏小平 申請人:中興通訊股份有限公司