專利名稱:數(shù)字信號處理器及處理方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于高效有限脈沖響應(yīng)濾波器。
背景技術(shù):
數(shù)字信號處理器(Digital Signal Processor, DSP)能夠使用涉及對許多組數(shù)據(jù)執(zhí)行大量數(shù)學(xué)運算的算法,來執(zhí)行許多種信號處理例如音頻及/或視頻信號處理。相比于通用微處理器,數(shù)字信號處理器能夠執(zhí)行較少范圍的任務(wù),但是能夠以更少延遲、更少功耗來更高效地執(zhí)行信號處理算法。這使得數(shù)字信號處理器適用于便攜式裝置,例如移動電話。數(shù)字信號處理器包含儲存程序的程序存儲器、儲存待處理信息的數(shù)據(jù)存儲器、以及至少一計算工具(computing engine),基于來自程序存儲器的程序以及來自數(shù)據(jù)存儲器的數(shù)據(jù)執(zhí)行算術(shù)處理。由數(shù)字信號處理器高效執(zhí)行的信號處理范例包含音頻壓縮與解壓縮、圖像壓縮與解壓縮、視頻壓縮與解壓縮、信號濾波、頻譜分析、調(diào)制、模式識別以及相關(guān)性分析。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種能平行處理信號的數(shù)字信號處理器及處理方法。依本發(fā)明一實施方式,揭示一種數(shù)字信號處理器,包含復(fù)數(shù)乘法累加單元,計算第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字的該卷積來產(chǎn)生輸出序列,該處理器包含:多個乘法器,每一乘法器進行兩個實數(shù)的相乘來產(chǎn)生一個輸出;多個復(fù)用器,將該第一輸入序列和該第二輸入序列的數(shù)字或者數(shù)字的實部和虛部指向該多個乘法器;控制電路,控制多個復(fù)用器基于第一輸入序列的數(shù)字與第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將第一輸入序列和第二輸入序列的數(shù)字或者數(shù)字的實部和虛部指向多個乘法器,其中,當?shù)谝惠斎胄蛄械臄?shù)字是復(fù)數(shù)并且第二輸入序列的數(shù)字是實數(shù)時,控制電路控制多個復(fù)用器將第一輸入序列和第二輸入序列的數(shù)字指向多個乘法器來平行地執(zhí)行第一乘法與第二乘法,第一乘法將第一輸入序列的第一復(fù)數(shù)與第二輸入序列的實數(shù)相乘,并且第二乘法將第一輸入序列的第二復(fù)數(shù)與第二輸入序列的實數(shù)相乘;以及累加器,將第一乘法與第二乘法的乘積相加,來計算該卷積。根據(jù)本發(fā)明又一實施方式,提供一種處理方法,用于將多個數(shù)字相乘,處理方法包含:識別第一輸入序列的數(shù)字與第二輸入序列的數(shù)字;基于第一輸入序列的數(shù)字與第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將第一輸入序列和第二輸入序列的數(shù)字或者數(shù)字的實部和虛部指向多個乘法器,其中每一乘法器進行兩個實數(shù)的相乘來產(chǎn)生一個輸出;當?shù)谝惠斎胄蛄械臄?shù)字是復(fù)數(shù)并且第二輸入序列的數(shù)字是實數(shù)時,將第一輸入序列的第一復(fù)數(shù)、第一輸入序列的第二復(fù)數(shù)和第二輸入序列的實數(shù)指向多個乘法器,以及平行地執(zhí)行第一乘法與第二乘法,第一乘法將第一輸入序列的第一復(fù)數(shù)與第二輸入序列的實數(shù)相乘,并且第二乘法將第一輸入序列的第二復(fù)數(shù)與第二輸入序列的實數(shù)相乘。本發(fā)明所提出的數(shù)字信號處理器及處理方法,通過重復(fù)使用至少一個運算對象,更充分地利用乘法器,并減少加載時間。
圖1為依本發(fā)明一實施方式,復(fù)數(shù)乘法累加單元的方塊示意圖。圖2為依本發(fā)明另一實施方式,復(fù)數(shù)乘法累加單元的示意圖。圖3為依本發(fā)明一實施方式,數(shù)字濾波器的示意圖。圖4為依本發(fā)明一實施方式,具有代表卷積計算分量的元素的矩陣示意圖。圖5為依本發(fā)明另一實施方式,具有代表卷積計算分量的元素的矩陣示意圖。
具體實施例方式請參閱圖1,圖1為依本發(fā)明一實施方式,復(fù)數(shù)乘法累加(ComplexMultiplier-ACcumulator, CMAC)單元100的示意圖。數(shù)字信號處理器包含復(fù)數(shù)乘法累加單元100。復(fù)數(shù)乘法累加單元100包含至少四個乘法器102 (乘法器102包含乘法器1、乘法器2、乘法器3、乘法器4)來執(zhí)行對復(fù)數(shù)和實數(shù)的乘法運算。復(fù)數(shù)包含實部和虛部。當執(zhí)行兩個復(fù)數(shù)的乘法時,使用四個乘法器計算兩個復(fù)數(shù)的實部和虛部的乘積項。當執(zhí)行兩個實數(shù)的乘法時,使用一個乘法器。當執(zhí)行實數(shù)和復(fù)數(shù)的乘法時,使用兩個乘法器計算實數(shù)與復(fù)數(shù)的實部和虛部的乘積。為了更充分地利用乘法器102,當計算實部與復(fù)數(shù)相乘時,復(fù)數(shù)乘法累加單元100使用四個乘法器來平行地執(zhí)行兩個乘法運算,其中每一乘法涉及一個復(fù)數(shù)與一個實數(shù)的相乘。復(fù)數(shù)乘法累加單元100亦可使用四個乘法器來平行地執(zhí)行四個乘法運算,其中每一乘法涉及一個實數(shù)與一個實數(shù)的相乘。假若數(shù)字信號處理器執(zhí)行一系列乘法,其中一些運算對象(operand)是實數(shù)并且一些運算對象不止一次地被使用,則這是非常有用的。這種運算的范例包含使用數(shù)字信號處理器來處理數(shù)字有限脈沖響應(yīng)(Finite ImpulseResponse,F(xiàn)IR)濾波器,其中或者濾波器的輸入取樣為實數(shù),或者濾波器系數(shù)為實數(shù),或者二者皆為實數(shù)。為更充分地利用乘法器來實施有限脈沖響應(yīng)濾波器的計算,允許平行執(zhí)行兩個以上的輸入取樣以及濾波器系數(shù)的乘法。在一些范例中,復(fù)數(shù)乘法累加單元100包含暫存器文件104,儲存待復(fù)數(shù)乘法累加單元100處理的運算對象。將運算對象儲存到暫存器106中,并且將其發(fā)送至復(fù)用器108(本范例中,復(fù)用器108包含復(fù)用器1、復(fù)用器2、復(fù)用器3、復(fù)用器4)。復(fù)用器108將復(fù)數(shù)的實部和虛部指向適當?shù)某朔ㄆ?02。復(fù)用器108由控制電路114基于待執(zhí)行的指令控制??刂齐娐?14基于運算對象是復(fù)數(shù)還是實數(shù),來以不同方式控制復(fù)用器108。每一乘法器102將兩個實數(shù)相乘并且將乘積發(fā)送給累加器110。累加器110包含加法器I與加法器2來將乘積相加,并且產(chǎn)生輸出112。在一些實施方式中,復(fù)數(shù)乘法累加單元100包含流水線級(pipeline stage),以使得在一段時間內(nèi)(例如,當流水線已滿時),每個時鐘周期復(fù)數(shù)乘法累加單元100處理一個復(fù)數(shù)和另一復(fù)數(shù),兩個復(fù)數(shù)和一個實數(shù)或者四個實數(shù)和一個實數(shù)的乘法。請參閱圖2所示范例,圖2為依本發(fā)明一實施方式,復(fù)數(shù)乘法累加單元140的示意圖。復(fù)數(shù)乘法累加單元100的一個實施方式為復(fù)數(shù)乘法累加單元140,執(zhí)行對32比特運算對象的計算。圖 2中,ΟΡΑ、0ΡΒ, OPC分別表示運算對象A、B、C。復(fù)數(shù)乘法累加單元140包含暫存器文件142。暫存器文件142包含用于儲存32比特運算對象的8個入口(entry),或者用于儲存16比特運算對象的16個入口。暫存器144a、144b、144c儲存3個運算對象,例如分別儲存運算對象A、運算對象B、運算對象C。兩個流水線152a、152b平行地對運算對象執(zhí)行運算。流水線152a中,兩個復(fù)用器146a、146b復(fù)用運算對象或者運算對象的各部(實部和虛部),并且將其指向乘法器148a、148b的輸入。流水線152b中,兩個復(fù)用器146c、146d復(fù)用運算對象或者運算對象的各部(實部和虛部),并且將其指向乘法器148c、148d的輸入。每一乘法器148接收兩個16比特的數(shù)字。如圖2所示,復(fù)用器146a-146d接收運算對象A、B、C,還可以接收來自存儲器的負載。暫存器文件142接收加載的運算對象A、加載的運算對象B、來自累加器150a的輸出162a和來自累加器150b的輸出162b,并且將輸出提供給外部存儲器。在一實施方式中,存儲器144c接收暫存器文件142所提供的用于表示負載的數(shù)據(jù)OPC,及運算對象C。此外,存儲器文件142還可通過復(fù)用器將運算對象提供給存儲器144a、144b。如圖2所示,復(fù)用器還接收來自存儲器的負載和中間數(shù)據(jù)。出于簡潔的目的,本發(fā)明僅對運算對象的操作進行說明。以第一復(fù)數(shù)\+Xi*i (&為實部且Xi為虛部)與第二復(fù)數(shù)h+yi.i (yr為實部且Ii為虛部)的乘法作為范例,復(fù)用器將實部&及發(fā)送至乘法器148a,將虛部Xi及yi發(fā)送至乘法器148b,將實部χ,及虛部yi發(fā)送至乘法器148c,以及將虛部Xi及實部yr發(fā)送至乘法器148d。乘法器148a、148b、148c、148d將復(fù)用器146a、146b、146c、146d提供的數(shù)字相乘來產(chǎn)生部分乘積。上述范例中,乘法器148a計算xjyp乘法器148b計算Xjyi,乘法器148c計算并且乘法器148d計算邏輯電路154a包含部分乘積壓縮器156a、156b以及48比特可配置加法器158a,以更緊湊的格式處理流水線152a中的部分乘積來產(chǎn)生提供給累加器150a的輸出160a、160b。累加器150a產(chǎn)生48比特的輸出162a,代表乘積(X^XiXyJyi)的實部。Α0.Η為累加器150a較上面的(upper) 24比特,儲存X1^部分的乘積。A0.L為累加器150a較下面的(lower) 24比特,儲存Xjyi部分的乘積。邏輯電路154b包含部分乘積壓縮器156c、156d以及48比特可配置加法器158b,以更緊湊的格式處理流水線152b中的部分乘積來產(chǎn)生提供給累加器150b的輸出160c、160d。累加器150b產(chǎn)生48比特的輸出162b,代表乘積(X^XiXyJyi)的虛部。Al.H為累加器150b較上面的24比特,儲存Xjyi部分的乘積。Al.L為累加器150b較下面的24比特,儲存Xi*^部分的乘積。此外,本領(lǐng)域技術(shù)人員應(yīng)了解,邏輯電路中還可以含有復(fù)用器、存儲器等元件,在此不再贅述。復(fù)數(shù)乘法累加單元140的一個特點在于:四個乘法器148a_148d能夠平行地計算實數(shù)與第一復(fù)數(shù)的乘法,以及相同的實數(shù)與第二復(fù)數(shù)的乘法。例如,暫存器144a儲存第一復(fù)數(shù)X=XjXi,暫存器144b儲存第二復(fù)數(shù)y=yr+yi,一半的暫存器144c儲存實數(shù)C。復(fù)用器146a-146d復(fù)用x、y、c,以使得乘法器148a接收第一復(fù)數(shù)的實部Xr與實數(shù)c,乘法器148b接收第一復(fù)數(shù)的虛部Xi與實數(shù)C,乘法器148c接收第二復(fù)數(shù)的實部與實數(shù)C,以及乘法器148d接收第二復(fù)數(shù)的虛部Ji與實數(shù)C。累加器150a提供x*c的乘積,其中A0.H=xr*c,A0.L=Xi^c0 累加器 150b 提供 y*c 的乘積,其中 Al.H=yr*c, Al.L=Yi^c0在一些范例中,第一復(fù)數(shù)X和第二復(fù)數(shù)I是數(shù)字濾波器的輸入樣本,實數(shù)c是數(shù)字濾波器的系數(shù) ,并且乘積x*c、y*c是濾波器響應(yīng)的項(term)。舉例而言,數(shù)字濾波器是有限脈沖響應(yīng)濾波器。復(fù)數(shù)乘法累加單元140的另一個特點在于:四個乘法器148a_148d能夠平行地計算第一實數(shù)、第二實數(shù)、第三實數(shù)、第四實數(shù)與第五實數(shù)的乘法。例如,暫存器144a儲存實數(shù)xO和xl,暫存器144b儲存實數(shù)x2和x3,暫存器144c儲存實數(shù)C。復(fù)用器146a_146d復(fù)用x0、xl、x2、x3、c,以使得乘法器148a接收實數(shù)x0與實數(shù)c,乘法器148b接收實數(shù)xl與實數(shù)c,乘法器148c接收實數(shù)x2與實數(shù)C,乘法器148d接收實數(shù)x3與實數(shù)C。累加器150a提供x0*c的乘積與xl*c的乘積,其中A0.H=x0*c, A0.L=xl*c。累加器150b提供x2*c的乘積與x3*c的乘積,其中Al.H=x2*c, Al.L=x3*c。在一些范例中,實數(shù)x0、xl、x2、x3是數(shù)字濾波器的輸入樣本,實數(shù)c是數(shù)字濾波器的系數(shù),并且乘積x0*c、xl*c、x2*c、x3*c是濾波器響應(yīng)的項。舉例而言,數(shù)字濾波器是有限脈沖響應(yīng)濾波器。在一些實施方式中,數(shù)字信號處理器執(zhí)行一組指令,此組指令指定如何將儲存在暫存器144a-144c的運算對象或者運算對象的各部(實部和虛部)復(fù)用并且提供給乘法器146a-146d。如下所述,通過仔細地設(shè)計指令,復(fù)數(shù)乘法累加單元140能夠通過重新使用運算對象來更高效地執(zhí)行數(shù)字濾波器,以及在計算中更充分地利用四個乘法器148a-148。指令針對不同情況(例如實數(shù)或者復(fù)數(shù)濾波器輸入、實數(shù)或者復(fù)數(shù)濾波器系數(shù))來最優(yōu)化硬件資源,使得在達到更高吞吐量(throughput)的同時消耗更少功率??蓪?fù)數(shù)濾波器輸入視為第一輸入序列數(shù),將復(fù)數(shù)濾波器系數(shù)視為第二輸入序列數(shù)。在將多個數(shù)字進行相乘的處理方法中,識別第一輸入序列與第二輸入序列的數(shù)字后,基于第一輸入序列與第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將該第一輸入序列的數(shù)字和該第二輸入序列的數(shù)字指向多個乘法器。在此給出不同狀況的實施方式(即不同狀況的處理方法)。狀況O:復(fù)數(shù)濾波器輸入與復(fù)數(shù)濾波器系數(shù)指令允許數(shù)字信號處理器執(zhí)行常規(guī)的復(fù)數(shù)乘法:
權(quán)利要求
1.一種數(shù)字信號處理器,包含: 復(fù)數(shù)乘法累加單元,計算第一輸入序列的數(shù)字與第二輸入序列的數(shù)字的卷積來產(chǎn)生輸出序列,該復(fù)數(shù)乘法累加單元包含: 多個乘法器,每一乘法器進行兩個實數(shù)的相乘來產(chǎn)生一個輸出; 多個復(fù)用器,將該第一輸入序列和該第二輸入序列中的數(shù)字或者數(shù)字的實部和虛部指向該多個乘法器; 控制電路,控制該多個復(fù)用器基于該第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將該第一輸入序列和該第二輸入序列的數(shù)字或者數(shù)字的實部和虛部指向該多個乘法器, 其中,當該第一輸入序列的數(shù)字是復(fù)數(shù)并且該第二輸入序列的數(shù)字是實數(shù)時,該控制電路控制該多個復(fù)用器將該第一輸入序列和該第二輸入序列的數(shù)字指向該多個乘法器來平行地執(zhí)行第一乘法與第二乘法,該第一乘法將該第一輸入序列的第一復(fù)數(shù)與該第二輸入序列的實數(shù)相乘,并且該第二乘法將該第一輸入序列的第二復(fù)數(shù)與該第二輸入序列的該實數(shù)相乘;以及 累加器,將該第一乘法與該第二乘法的乘積相加,來計算該卷積。
2.如權(quán)利要求1所述的數(shù)字信號處理器,其特征在于,該復(fù)數(shù)乘法累加單元還包含: 第一暫存器,儲存該第一輸入序列的該第一復(fù)數(shù); 第二暫存器,儲存該第一輸入序列的該第二復(fù)數(shù);以及 第三暫存器,儲存該第二輸入序列的該實數(shù)。
3.如權(quán)利要求2所述的數(shù)字信號處理器,其特征在于,該控制電路控制該多個復(fù)用器將該實數(shù)指向該多個乘法器中的第一乘法器、第二乘法器、第三乘法器、和第四乘法器,并且控制該多個復(fù)用器將該第一復(fù)數(shù)的實部指向該第一乘法器,將該第一復(fù)數(shù)的虛部指向該第二乘法器,將該第二復(fù)數(shù)的實部指向該第三乘法器,以及將該第二復(fù)數(shù)的虛部指向該第四乘法器。
4.如權(quán)利要求1所述的數(shù)字信號處理器,其特征在于,當該第一輸入序列的數(shù)字是實數(shù)并且該第二輸入序列的數(shù)字是實數(shù)時,該控制電路控制該多個復(fù)用器將該第一輸入序列和該第二輸入序列的數(shù)字指向該多個乘法器來平行地執(zhí)行第一乘法、第二乘法、第三乘法和第四乘法,該第一乘法將該第一輸入序列的第一實數(shù)與該第二輸入序列的實數(shù)相乘,該第二乘法將該第一輸入序列的第二實數(shù)與該第二輸入序列的該實數(shù)相乘,該第三乘法將該第一輸入序列的第三實數(shù)與該第二輸入序列的該實數(shù)相乘,并且該第四乘法將該第一輸入序列的第四實數(shù)與該第二輸入序列的該實數(shù)相乘。
5.如權(quán)利要求1所述的數(shù)字信號處理器,其特征在于,該復(fù)數(shù)乘法累加單元還包含多個流水線級來計算該卷積,并且在一段時間內(nèi),該多個流水線在每個運算周期產(chǎn)生一部分乘積。
6.如權(quán)利要求5所述的數(shù)字信號處理器,其特征在于,該復(fù)數(shù)乘法累加單元還包含多個暫存器來儲存該第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字的一部分,并且該控制電路控制該多個復(fù)用器 將儲存在該多個暫存器中的數(shù)字指向該多個乘法器。
7.如權(quán)利要求6所述的數(shù)字信號處理器,其特征在于,當該第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字皆為復(fù)數(shù)時,在一段時間內(nèi)的每一周期中,該控制電路將該第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字中的至少一個數(shù)字加載至該多個暫存器中,并且控制該多個復(fù)用器將該第一輸入序列和該第二輸入序列的數(shù)字指向該多個乘法器來輸出該第一輸入序列中的一個復(fù)數(shù)與該第二輸入序列中的一個復(fù)數(shù)的乘積。
8.—種處理方法,用于將多個數(shù)字相乘,該處理方法包含: 識別第一輸入序列的數(shù)字與第二輸入序列的數(shù)字; 基于該第一輸入序列的數(shù)字與該第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將該第一輸入序列和該第二輸入序列的數(shù)字或者數(shù)字的實部和虛部指向多個乘法器,其中每一乘法器進行兩個實數(shù)的相乘來產(chǎn)生一個輸出; 當該第一輸入序列的數(shù)字是復(fù)數(shù)并且該第二輸入序列的數(shù)字是實數(shù)時, 將該第一輸入序列的第一復(fù)數(shù)、該第一輸入序列的第二復(fù)數(shù)和該第二輸入序列的實數(shù)指向該多個乘法器,以及 平行地執(zhí)行第一乘法與 第二乘法,該第一乘法將該第一輸入序列的該第一復(fù)數(shù)與該第二輸入序列的該實數(shù)相乘,并且該第二乘法將該第一輸入序列的該第二復(fù)數(shù)與該第二輸入序列的該實數(shù)相乘。
9.如權(quán)利要求8所述的處理方法,其特征在于,該第一輸入序列的數(shù)字包含數(shù)字濾波器的多個輸入樣本,該第二輸入序列的數(shù)字包含多個濾波器系數(shù)。
10.如權(quán)利要求8所述的處理方法,其特征在于,該處理方法更包含將該第一乘法與該第二乘法的乘積累加,來計算該第一輸入序列的數(shù)字該與第二輸入序列的數(shù)字的卷積,該卷積表示該數(shù)字濾波器響應(yīng)該多個輸入樣本的輸出。
全文摘要
本發(fā)明揭示數(shù)字信號處理器及處理方法。本發(fā)明的處理方法包含識別第一與第二輸入序列的數(shù)字;基于第一與第二輸入序列的數(shù)字是復(fù)數(shù)還是實數(shù),來將第一和第二輸入序列的數(shù)字指向多個乘法器,其中每一乘法器進行兩個實數(shù)的相乘來產(chǎn)生一個輸出;當?shù)谝惠斎胄蛄械臄?shù)字是復(fù)數(shù)并且第二輸入序列的數(shù)字是實數(shù)時,將第一輸入序列的第一復(fù)數(shù)、第二復(fù)數(shù)和第二輸入序列的實數(shù)指向多個乘法器,以及平行地執(zhí)行第一乘法與第二乘法,第一乘法將第一輸入序列的第一復(fù)數(shù)與第二輸入序列的實數(shù)相乘,并且第二乘法將第一輸入序列的第二復(fù)數(shù)與第二輸入序列的實數(shù)相乘。本發(fā)明能夠充分地利用乘法器,并減少加載時間。
文檔編號G06F7/523GK103218201SQ20131000795
公開日2013年7月24日 申請日期2013年1月9日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者斯里尼瓦桑·艾伊爾, 卡斯汀·阿嘉得·派得森 申請人:聯(lián)發(fā)科技(新加坡)私人有限公司