本發(fā)明涉及數(shù)字信號處理領域,尤其涉及一種高精度低硬件復雜度的sinc插值實現(xiàn)方法及系統(tǒng)。
背景技術:
在數(shù)字信號處理中,有時會需要變換抽樣頻率,插值就是從離散的已知采樣數(shù)據(jù)點構(gòu)建新的數(shù)據(jù)點的方法。通過插值可以增加抽樣率,并且這種對序列域直接處理的方法,相比于經(jīng)過數(shù)模轉(zhuǎn)換器變換成模擬信號再以另一個抽樣率抽樣的方式,可以有效減小失真,降低量化誤差。
根據(jù)采樣定理,為了不失真地從采樣離散信號點中恢復出模擬信號,采樣頻率應該不小于模擬信號頻譜中最高頻率的2倍。這是sinc插值無失真的從離散抽樣信號中恢復出模擬信號的必要條件。
sinc插值的時域重建方程為:f(x)≡∑ifd(i)·sinc[ωc(x-i)]
其中是fd(x)離散抽樣信號,ωc是抽樣頻率。
上述公式中可以理解為離散抽樣信號在時域上對函數(shù)的加權疊加,所以理論上如果計算某一點的精確值,則需要覆蓋完整周期內(nèi)時域上的點,即原始模擬信號最小周期內(nèi)的所有點,這需要非常大的計算量。但是根據(jù)sinc函數(shù)的函數(shù)特性,插值核的值隨著離x的間隔增加在加權疊加中所占的權重減小,所以在實際運用中可以根據(jù)對結(jié)果的精度要求對卷積核進行截斷。
即對于任一點x求f(x),已知x左右共r+1個點離散函數(shù)fd(x),重建方程為:
上式可以看成是fd(xn)與sinc(xn)的卷積,其中卷積核為:
上述就是對于某一點r的sinc插值計算流程。
硬件實現(xiàn)sinc插值運算一般采用串行的運算方式,運算效率較低,僅僅適用于小點數(shù)低精度的運算。雖然現(xiàn)有的一些并行結(jié)構(gòu)的sinc插值對串行的運算效率有所改善,但是由于這種簡單的并行結(jié)構(gòu)對卷積核系數(shù)也僅僅是采用緩存的方式,并沒有進行現(xiàn)場計算,因此會存在低精度的問題,并且每提高一位精度就需要ram的緩存深度成指數(shù)倍增長,所以這些插值方法都難以適用于現(xiàn)在高精度sinc插值的計算要求。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種高精度低硬件復雜度的sinc插值實現(xiàn)方法,具體由以下方案實現(xiàn):
所述高精度低硬件復雜度的sinc插值實現(xiàn)方法,包括如下步驟:
1)將現(xiàn)有的ram資源分成3塊,分別為存儲采樣點數(shù)據(jù)的ram0、存儲待插值點數(shù)據(jù)的ram1以及存儲結(jié)果數(shù)據(jù)的ram2;
2)順序?qū)am1中的待插值點數(shù)據(jù)取出,對待插值點數(shù)據(jù)進行定浮轉(zhuǎn)換和四舍五入估值,得到待插值點數(shù)據(jù)的整數(shù)部分和小數(shù)部分;
3)根據(jù)待插值點數(shù)據(jù)的整數(shù)部分得到需要使用的采樣點數(shù)據(jù)的地址,并根據(jù)地址信息從ram0中取出對應的采樣點數(shù)據(jù);
4)將采樣點數(shù)據(jù)進行乘加操作后再進行除法操作,由待插值點數(shù)據(jù)的小數(shù)部分得到最終的待插值點結(jié)果數(shù)據(jù);
5)由結(jié)果數(shù)據(jù)的地址生成器產(chǎn)生地址,并將待插值點結(jié)果數(shù)據(jù)存入ram2,完成整個運算流程。
所述高精度低硬件復雜度的sinc插值實現(xiàn)方法的進一步設計在于,步驟3)中根據(jù)待插值點數(shù)據(jù)的小數(shù)部分得到插值核系數(shù)中sin函數(shù)需要計算的輸入值。
所述高精度低硬件復雜度的sinc插值實現(xiàn)方法的進一步設計在于,步驟4)中,待插值點數(shù)據(jù)的小數(shù)部分通過sin函數(shù)公式實時計算,將兩部分結(jié)果延時同步之后進行除法和乘加操作,得到最終的待插值點結(jié)果數(shù)據(jù)。
所述高精度低硬件復雜度的sinc插值實現(xiàn)方法的進一步設計在于,sin函數(shù)公式如下:
其中fd(x)是離散抽樣信號,ωc是抽樣頻率,該公式是對點x1到xr+1進行r點sinc插值,得到待插值點x0的函數(shù)值;
在公式中
所述高精度低硬件復雜度的sinc插值實現(xiàn)方法的進一步設計在于,采用流水線設計進行上述五個步驟,完成一次完整的插值計算以后將結(jié)果數(shù)據(jù)從ram2中取出,結(jié)束整個運算流程。
根據(jù)所述高精度低硬件復雜度的sinc插值實現(xiàn)方法的系統(tǒng),包括存儲單元、數(shù)據(jù)搬運單元以及計算單元,所述存儲單元包括存儲采樣點數(shù)據(jù)的ram0、存儲待插值點數(shù)據(jù)的ram1以及存儲結(jié)果數(shù)據(jù)的ram2,所述數(shù)據(jù)搬運單元包括src1_gen功能塊、src2_gen功能塊、round功能塊以及result功能塊,所述計算單元包括通分與除法模塊、延時同步模塊以及sin函數(shù)計算模塊;src2_gen模塊從ram1中取出待插值點數(shù)據(jù),經(jīng)過round模塊取得整數(shù)部分和小數(shù)部分;整數(shù)部分傳入src1_gen,作為從ram0中取數(shù)的地址,再由src1_gen模塊從ram0中取出采樣點數(shù)據(jù),并將所述采樣點數(shù)據(jù)送入計算單元;同時將所述小數(shù)部分一同送入src2_gen與計算單元;sin函數(shù)計算模塊與通分與除法模塊輸出的中間值通過延時同步模塊進行同步后相乘得到結(jié)果數(shù)據(jù),計算單元取得結(jié)果數(shù)據(jù)以后,通過result模塊將結(jié)果數(shù)據(jù)存放到ram2中,完成一次計算的過程,完成全部計算以后將ram2中的結(jié)果數(shù)據(jù)存放到外部存儲單元中,完成一次完整的sinc插值計算。
本發(fā)明的優(yōu)點如下:
本發(fā)明提供了一種高精度低硬件復雜度的sinc插值實現(xiàn)方法,通過簡化和優(yōu)化sinc函數(shù)的計算流程,減小sin函數(shù)的重復計算,使用乘加功能模塊以減小高開銷的除法功能模塊等方式,既解決了高精度情況下sinc插值計算效率低的問題,同時也保證了計算結(jié)果的高精度和低硬件復雜度。
附圖說明
圖1為sinc插值的頂層互聯(lián)示意圖。
圖2為計算單元結(jié)構(gòu)示意圖。
圖3為兩個實數(shù)輸入的通分與除法模塊示意圖。
圖4為四個復數(shù)輸入的通分與除法模塊示意圖。
具體實施方式
本實施例的下面結(jié)合附圖和具體實施方式對本發(fā)明進行詳細說明,本實施例以插值核長度為16為例。
本實施例的實現(xiàn)高精度低硬件復雜度的sinc插值的系統(tǒng)主要由存儲單元、數(shù)據(jù)搬運單元以及計算單元組成,參見圖1、圖2。存儲單元包括存儲采樣點數(shù)據(jù)的ram0、存儲待插值點數(shù)據(jù)的ram1以及存儲結(jié)果數(shù)據(jù)的ram2,數(shù)據(jù)搬運單元包括src1_gen功能塊、src2_gen功能塊、round功能塊以及result功能塊,計算單元包括通分與除法模塊、延時同步模塊以及sin函數(shù)計算模塊。src2_gen模塊從ram1中取出待插值點數(shù)據(jù),經(jīng)過round模塊取得整數(shù)部分和小數(shù)部分。整數(shù)部分傳入src1_gen,作為從ram0中取數(shù)的地址,再由src1_gen模塊從ram0中取出采樣點數(shù)據(jù),并將采樣點數(shù)據(jù)送入計算單元。同時將小數(shù)部分一同送入src2_gen與計算單元。sin函數(shù)計算模塊與通分與除法模塊輸出的中間值通過延時同步模塊進行同步后相乘得到結(jié)果數(shù)據(jù),計算單元取得結(jié)果數(shù)據(jù)以后,通過result模塊將結(jié)果數(shù)據(jù)存放到ram2中,完成一次計算的過程,完成全部計算以后將ram2中的結(jié)果數(shù)據(jù)存放到外部存儲單元中,完成一次完整的sinc插值計算。
本實施例提供了一種高精度低硬件復雜度的sinc插值的實現(xiàn)方法具體包括如下步驟:
1)將現(xiàn)有的ram資源分成3塊,分別為存儲采樣點數(shù)據(jù)的ram0、存儲待插值點數(shù)據(jù)的ram1以及存儲結(jié)果數(shù)據(jù)的ram2;
2)順序?qū)am1中的待插值點數(shù)據(jù)取出,對待插值點數(shù)據(jù)進行定浮轉(zhuǎn)換和四舍五入估值,得到待插值點數(shù)據(jù)的整數(shù)部分和小數(shù)部分;
3)根據(jù)待插值點數(shù)據(jù)的整數(shù)部分得到需要使用的采樣點數(shù)據(jù)的地址,并根據(jù)地址信息從ram0中取出對應的采樣點數(shù)據(jù);
4)將采樣點數(shù)據(jù)進行乘加操作后再進行除法操作,由待插值點數(shù)據(jù)的小數(shù)部分得到最終的待插值點結(jié)果數(shù)據(jù);
5)由結(jié)果數(shù)據(jù)的地址生成器產(chǎn)生地址,并將待插值點結(jié)果數(shù)據(jù)存入ram2,完成整個運算流程。
步驟3)中根據(jù)待插值點數(shù)據(jù)的小數(shù)部分得到插值核系數(shù)中sin函數(shù)需要計算的輸入值。
步驟4)中,待插值點數(shù)據(jù)的小數(shù)部分通過sin函數(shù)公式實時計算,將兩部分結(jié)果延時同步之后進行除法和乘加操作,得到最終的待插值點結(jié)果數(shù)據(jù)。
進一步的,本實施例采用流水線設計進行上述五個步驟,完成一次完整的插值計算以后將結(jié)果數(shù)據(jù)從ram2中取出,結(jié)束整個運算流程。
sin函數(shù)公式為:
其中,fd(x)是離散抽樣信號,ωc是抽樣頻率,該公式是對點x1到xr+1進行r點sinc插值,得到待插值點x0的函數(shù)值;
在公式中
具體的,結(jié)合本實施例提供的實現(xiàn)高精度低硬件復雜度的sinc插值的系統(tǒng)的實現(xiàn)方法具體包括如下步驟:
步驟一:如圖1所示,將源數(shù)據(jù)緩存到ram中,并且數(shù)據(jù)優(yōu)先存放不同bank的同一地址。因為每次取源數(shù)據(jù)都是取相鄰地址的一段數(shù)據(jù),這種緩存方式可以極大地提高讀數(shù)據(jù)的帶寬。
步驟二:如圖1所示,由src2_gen模塊從ram1中取出待插值點數(shù)據(jù),經(jīng)過round模塊取得整數(shù)部分和小數(shù)部分,整數(shù)部分就是待插值點數(shù)據(jù)四舍五入后的近似值,而小數(shù)部分就是這個近似值和待插值點數(shù)據(jù)的差。
步驟三:如圖1所示,整數(shù)部分傳入src1_gen,作為從ram0中取數(shù)的地址,再由src1_gen模塊從ram0中取出采樣點數(shù)據(jù),并將數(shù)據(jù)送入計算單元;同時將src2_gen所得的小數(shù)部分一同送入計算單元。
步驟四:如圖2所示,數(shù)據(jù)進入計算單元以后,sin函數(shù)中需要計算的值送入sin函數(shù)的計算單元中,同時采樣點數(shù)據(jù)進入通分與除法模塊。兩邊的數(shù)據(jù)經(jīng)過延時同步模塊,再相乘就可以得到結(jié)果數(shù)據(jù)。其中用戶可自定義的通分與除法模塊的結(jié)構(gòu)如圖3和圖4所示,通過這兩種模塊的結(jié)合使用,可以流水處理輸入數(shù)據(jù),并且可以通過使用資源較少的加法和乘法器來減少使用資源較多的除法器,以達到降低硬件開銷的目的,同時也不會降低計算速度。
步驟五:如圖1所示,在計算單元取得結(jié)果數(shù)據(jù)以后,通過result模塊將結(jié)果數(shù)據(jù)存放到ram2中。
步驟六:以上步驟是一次計算的流程,并且計算過程可以流水進行,完成全部計算以后將ram2中的結(jié)果數(shù)據(jù)存放到外部存儲單元中,完成一次完整的sinc插值計算。
本實施中復數(shù)乘法器、復數(shù)加法器、實數(shù)乘法器、實數(shù)加法器均為延遲為4個時鐘周期的流水單精度浮點運算單元,訪存延遲為6個周期,采用ic仿真/綜合工具,工作主頻達到1ghz。依據(jù)本設計的實現(xiàn)方法,以256階sinc插值為例,計算時間為0.622ms,計算結(jié)果的平均誤差為2*10-6。
本設計中通分的方法使用乘加單元代替除法單元,除法單元的硬件復雜度要大于乘加單元,因此該實現(xiàn)方法有效地降低了硬件開銷,在40nmcmos工藝下dc綜合的面積為392820μm2。
本實施例的高精度低硬件復雜度的sinc插值實現(xiàn)方法,通過簡化和優(yōu)化sinc函數(shù)的計算流程,減小sin函數(shù)的重復計算,使用乘加功能模塊以減小高開銷的除法功能模塊等方式,既解決了高精度情況下sinc插值計算效率低的問題,同時也保證了計算結(jié)果的高精度和低硬件復雜度。
本實施例的高精度低硬件復雜度的sinc插值實現(xiàn)方法使用卷積核現(xiàn)場計算的方式,代替常用的將sinc插值核系數(shù)存放在ram中的方法,解決了計算精度低,片上存儲資源開銷大的問題;使用sin計算代替sinc計算,減小了插值中的重復計算,解決了較大插值核長度情況下,計算效率低的問題;使用乘法器和加法器代替運算中所需要的除法器,解決了現(xiàn)場計算卷積核所產(chǎn)生的除法次數(shù)多以及運算速度低等問題。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),根據(jù)本發(fā)明的技術方案及其本發(fā)明構(gòu)思加以等同替換或改變,都涵蓋在本發(fā)明的保護范圍之內(nèi)。