專利名稱:一種可編程內(nèi)插濾波器裝置及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種集成電路設(shè)計(jì)領(lǐng)域、FPGA設(shè)計(jì)領(lǐng)域和通信領(lǐng)域中的裝置和方法,具體地說,涉及一種用于軟件無線電中數(shù)字前端信號(hào)處理時(shí)基于RAM的可編程內(nèi)插濾波器的VLSI和FPGA設(shè)計(jì)的裝置和方法。
背景技術(shù):
隨著集成電路技術(shù)的日益發(fā)展,在無線通信技術(shù)中,數(shù)字(或軟件)處理的范圍不斷向射頻部分遷移,使以前只能用模擬電路實(shí)現(xiàn)的功能逐步用數(shù)字電路或軟件來實(shí)現(xiàn),從而產(chǎn)生了軟件無線電(Software Defined Radio,SDR)這門新興學(xué)科分支。采用軟件無線電技術(shù),可以在不改變硬件平臺(tái)的情況下靈活地在多種通信制式中進(jìn)行切換,同時(shí)具有模擬技術(shù)無法比擬的優(yōu)越性能。
內(nèi)插濾波器在通信系統(tǒng)的數(shù)字前端中有著廣泛的應(yīng)用,其作用是根據(jù)實(shí)際的需要,將數(shù)據(jù)的采樣頻率提高若干倍,同時(shí)濾除由于提高數(shù)據(jù)的采樣頻率而帶來的鏡像干擾。
現(xiàn)有技術(shù)的整數(shù)倍內(nèi)插濾波器的原理如下設(shè)原來的采樣率為fs,周期為T,如果將采樣率增加到L倍,那么新的采樣率fs1和采樣周期T1分別為fs1=Lfs,T1=1/fs1=T/L把采樣信號(hào)x(n)的采樣率增加到原來的L倍意味著必須在x(n)的每兩個(gè)樣值之間插入L-1個(gè)新的采樣值,因此采樣值增加的過程在數(shù)學(xué)上就是內(nèi)插的過程。
目前現(xiàn)有的內(nèi)插濾波器主要是固定系數(shù)、固定內(nèi)插倍數(shù)的濾波器,實(shí)現(xiàn)的方法主要有兩種,一是直接在每個(gè)輸入數(shù)據(jù)后面插入L-1個(gè)0值,用一個(gè)運(yùn)行在Lfs采樣頻率上的有限沖擊響應(yīng)FIR濾波器來實(shí)現(xiàn),這個(gè)FIR濾波器可以是直接型或轉(zhuǎn)置型,具體結(jié)構(gòu)現(xiàn)有技術(shù)已經(jīng)有大量文獻(xiàn)描述,在此不再贅述;二是用多相濾波器來實(shí)現(xiàn),在每個(gè)輸入數(shù)據(jù)后面不插入0值,而是將整個(gè)內(nèi)插濾波器分解成L相,每相產(chǎn)生一個(gè)輸出。
當(dāng)固定了系數(shù)和內(nèi)插倍數(shù)時(shí),以上兩種結(jié)構(gòu)實(shí)現(xiàn)起來還是很方便的,但會(huì)占用較大的硬件資源,尤其是在濾波器階數(shù)較高的時(shí)候更加不利,而且軟件無線電所強(qiáng)調(diào)的靈活性在現(xiàn)有技術(shù)中無法體現(xiàn)出來。
因此,現(xiàn)有技術(shù)還存在缺陷,而有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種可編程內(nèi)插濾波器裝置及其實(shí)現(xiàn)方法,針對(duì)上述現(xiàn)有技術(shù)的不足,通過將采樣數(shù)據(jù)和濾波器的系數(shù)各自保存在一定大小的RAM中,從而可靈活改變內(nèi)插倍數(shù)、濾波器的階數(shù)和調(diào)整濾波器的系數(shù)數(shù)值,同時(shí)采用流水線和時(shí)分復(fù)用技術(shù),可大大減少所占用的硬件資源。
本發(fā)明的技術(shù)方案包括一種可編程內(nèi)插濾波器裝置,其中,所述裝置包括一輸入數(shù)據(jù)產(chǎn)生單元、一系數(shù)產(chǎn)生單元、一計(jì)算單元和一輸出單元;所述輸入數(shù)據(jù)單元用于將輸入的采樣數(shù)據(jù)保存在數(shù)據(jù)RAM中,并提供給計(jì)算單元處理;所述系數(shù)單元用于尋址,產(chǎn)生系數(shù)給所述計(jì)算單元;所述計(jì)算單元用于完成內(nèi)插濾波器的乘加運(yùn)算;所述輸出單元用于根據(jù)設(shè)置的抽取倍數(shù)對(duì)內(nèi)插的數(shù)據(jù)進(jìn)行抽取,產(chǎn)生所需的采樣率的輸出數(shù)據(jù)。
所述的裝置,其中,所述內(nèi)插濾波器的內(nèi)插用多相濾波器實(shí)現(xiàn),用于實(shí)現(xiàn)不同內(nèi)插倍數(shù)、不同系數(shù)個(gè)數(shù)及系數(shù)數(shù)值的內(nèi)插濾波。
所述的裝置,其中,所述計(jì)算單元包括至少兩個(gè)相同結(jié)構(gòu)的乘加器,用于提高該濾波器的計(jì)算能力,處理階數(shù)更高的濾波計(jì)算。
所述的裝置,其中,所述輸入數(shù)據(jù)產(chǎn)生單元包括有兩個(gè)輸入雙口RAM和對(duì)應(yīng)的輸入存取控制邏輯電路;所述輸入雙口RAM用于緩存來自外部的采樣數(shù)據(jù),每個(gè)輸入雙口RAM分為兩側(cè)端口,一側(cè)用于接收來自外部的數(shù)據(jù)實(shí)現(xiàn)只寫功能,另一側(cè)則用于輸出數(shù)據(jù)實(shí)現(xiàn)只讀功能;所述輸入存取控制邏輯電路包括一個(gè)計(jì)數(shù)器,當(dāng)來自外部的采樣數(shù)據(jù)保存到輸入雙口RAM時(shí),用該計(jì)數(shù)器對(duì)輸入的采樣數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù),并根據(jù)計(jì)數(shù)器的數(shù)值分奇偶輪流寫入到所述兩輸入雙口RAM中;所述輸入存取控制邏輯電路還包括一個(gè)已寫標(biāo)志位的處理電路,用于表明該位是否被賦過確定的數(shù)值。
所述的裝置,其中,所述系數(shù)產(chǎn)生單元包括有兩個(gè)系數(shù)雙口RAM和系數(shù)存取控制邏輯電路;
所述系數(shù)雙口RAM用于存放系數(shù),其輸出分別送到所述計(jì)算單元的兩個(gè)乘加器;每個(gè)系數(shù)雙口RAM包括兩側(cè)端口,外部通過一側(cè)端口對(duì)該內(nèi)插濾波器的系數(shù)進(jìn)行配置;另一側(cè)端口由該內(nèi)插濾波器內(nèi)部訪問,只有讀操作;所述系數(shù)存取控制邏輯電路對(duì)兩個(gè)系數(shù)雙口RAM的訪問進(jìn)行讀寫控制。
所述的裝置,其中,所述系數(shù)的寫入順序?yàn)榫€性寫入,即按照地址從小到大寫入;所述系數(shù)的讀出順序是二維,先從左到右,再從上到下。
所述的裝置,其中,所述計(jì)算單元還包括加法器、流水線控制邏輯電路;所述乘加器包括乘法器和累加器,所述乘法器用于完成數(shù)據(jù)和系數(shù)的相乘,兩個(gè)乘加器并行計(jì)算;所述加法器用于將兩個(gè)乘加器的計(jì)算結(jié)果相加,產(chǎn)生一個(gè)有效的輸出值,同時(shí)要將這兩個(gè)累加器清零;所述流水線控制邏輯電路使所述計(jì)算單元實(shí)現(xiàn)流水線操作,用于在每個(gè)時(shí)鐘周期,將輸入一組對(duì)應(yīng)的系數(shù)和數(shù)據(jù),通過流水線的控制邏輯中的寄存器以及相關(guān)的節(jié)拍計(jì)數(shù)器,實(shí)現(xiàn)流水線操作。
所述的裝置,其中,所述輸出單元包括抽取邏輯電路和輸出控制邏輯電路;所述抽取邏輯電路用于完成預(yù)定倍數(shù)抽取,當(dāng)每個(gè)乘加器完成了半數(shù)次運(yùn)算后,將內(nèi)插濾波器產(chǎn)生一個(gè)控制信號(hào),輸出單元響應(yīng)此控制信號(hào),并根據(jù)抽取倍數(shù),在每倍數(shù)個(gè)數(shù)據(jù)中取一個(gè)輸出;所述輸出控制邏輯電路用于在抽取邏輯電路產(chǎn)生輸出時(shí),產(chǎn)生適當(dāng)?shù)目刂菩盘?hào),告訴外界有新的數(shù)據(jù)輸出。
一種可編程內(nèi)插濾波器裝置的實(shí)現(xiàn)方法,基于RAM,其包括以下步驟A、完成配置內(nèi)插倍數(shù)、抽取倍數(shù)和多相濾波器的每相系數(shù)個(gè)數(shù),并將系數(shù)個(gè)數(shù)寫入到兩個(gè)系數(shù)雙口RAM中;B、輸入1個(gè)數(shù)據(jù),所述輸入雙口RAM之一的地址初值指針加1,并將該數(shù)據(jù)保存到該輸入雙口RAM中,另一輸入雙口RAM中的內(nèi)容保持不變,地址初值指針也保持不變;C、從系數(shù)雙口RAM之一中取出系數(shù),該系數(shù)雙口RAM的地址指針加內(nèi)插倍數(shù),從所述輸入雙口RAM之一中取出數(shù)據(jù)送到乘加器之一的計(jì)算單元進(jìn)行乘加運(yùn)算,所述輸入雙口RAM的地址指針減一;D、從另一系數(shù)雙口RAM中取出系數(shù),該另一系數(shù)雙口RAM的地址指針加內(nèi)插倍數(shù),對(duì)應(yīng)從另一輸入雙口RAM中取出數(shù)據(jù)送到計(jì)算單元的另一乘加器進(jìn)行乘加運(yùn)算,該另一輸入雙口RAM的地址指針減一;
E、重復(fù)步驟C、步驟D次數(shù)不超過系數(shù)個(gè)數(shù)的一半;F、將兩個(gè)乘加器計(jì)算得到的累加結(jié)果輸出,產(chǎn)生控制信號(hào)通知輸出單元,并對(duì)該累加器清零。
所述的方法,其中,所述步驟F中,所述輸出單元根據(jù)抽取倍數(shù)值確定是否輸出該值,如果所述計(jì)算單元輸出的數(shù)據(jù)個(gè)數(shù)未達(dá)到內(nèi)插倍數(shù),則繼續(xù)重復(fù)步驟C到步驟F。
所述的方法,其中,還包括G、如果再有新的數(shù)據(jù)輸入時(shí),則交替使用兩個(gè)輸入雙口RAM,兩個(gè)系數(shù)雙口RAM。
本發(fā)明所提供的一種可編程內(nèi)插濾波器裝置及其實(shí)現(xiàn)方法,與現(xiàn)有的技術(shù)相比,由于是基于RAM的設(shè)計(jì),并采用了流水線和時(shí)分復(fù)用技術(shù),大大節(jié)省了硬件資源,也能使芯片運(yùn)行的時(shí)鐘頻率超過100MHz,達(dá)到150MHz以上,當(dāng)應(yīng)用到通信系統(tǒng)的數(shù)字前端系統(tǒng)中,可提高系統(tǒng)的性能以及設(shè)計(jì)的靈活性。
圖1是本發(fā)明的可編程內(nèi)插濾波器的組成結(jié)構(gòu)示意圖;圖2是本發(fā)明方法的系數(shù)二維矩陣示意圖;圖3是本發(fā)明裝置和方法的計(jì)算單元結(jié)構(gòu)示意圖。
具體實(shí)施例方式
以下結(jié)合附圖,將對(duì)本發(fā)明的各較佳實(shí)施例進(jìn)行較為詳細(xì)的說明。
本發(fā)明方法的核心構(gòu)思為,在內(nèi)插濾波器中,設(shè)L為內(nèi)插倍數(shù),M為抽取倍數(shù),只要L>M,且分?jǐn)?shù)L/M不可約分,則該濾波器可以方便實(shí)現(xiàn)L/M倍內(nèi)插,從而實(shí)現(xiàn)整數(shù)倍和大于1的小數(shù)倍內(nèi)插濾波。
本發(fā)明可編程內(nèi)插濾波器裝置的操作步驟包括該可編程的內(nèi)插濾波器先完成L倍內(nèi)插,再完成M倍抽取。L倍內(nèi)插用多相濾波器來實(shí)現(xiàn)內(nèi)插,每相產(chǎn)生一個(gè)輸出,共L相。M倍抽取是從M個(gè)數(shù)據(jù)中抽取一個(gè)數(shù)據(jù)作為輸出。
該內(nèi)插濾波器包括4個(gè)部分,分別是輸入數(shù)據(jù)產(chǎn)生單元、系數(shù)產(chǎn)生單元、計(jì)算單元和輸出單元,如圖1所示。其中,所述輸入數(shù)據(jù)產(chǎn)生單元將輸入的采樣數(shù)據(jù)保存在數(shù)據(jù)RAM中,并提供給計(jì)算單元處理;所述系數(shù)產(chǎn)生單元正確尋址,產(chǎn)生系數(shù)給所述計(jì)算單元;計(jì)算單元完成內(nèi)插濾波器的乘加運(yùn)算,它由兩個(gè)相同結(jié)構(gòu)的乘加器(MAC)組成,分別叫MAC1和MAC2,之所以用兩個(gè)MAC單元,主要是為提高該濾波器的計(jì)算能力,能處理階數(shù)更高的濾波計(jì)算。如果要獲得更大的計(jì)算能力,只需要將MAC的個(gè)數(shù)簡單擴(kuò)展即可;所述輸出單元根據(jù)設(shè)置的抽取倍數(shù)M對(duì)內(nèi)插的數(shù)據(jù)進(jìn)行抽取(在M=1時(shí)不抽取),產(chǎn)生所需的采樣率的輸出數(shù)據(jù)。
該內(nèi)插濾波器的L倍內(nèi)插采用多相濾波器來實(shí)現(xiàn),但可以實(shí)現(xiàn)不同內(nèi)插倍數(shù)、不同系數(shù)個(gè)數(shù)及系數(shù)數(shù)值的內(nèi)插濾波。
所述輸入數(shù)據(jù)產(chǎn)生單元是為計(jì)算單元提供輸入數(shù)據(jù),它包含有兩個(gè)輸入雙口RAM和輸入存取控制邏輯電路。
輸入雙口RAM用于緩存來自外部的采樣數(shù)據(jù),分別記為DRAM1和DRAM2。在每個(gè)DRAM分為PORTA、PORTB兩側(cè),PORTA側(cè)接收來自外部的數(shù)據(jù)(只寫),PORTB側(cè)輸出數(shù)據(jù)(只讀)。
所述輸入存取控制邏輯電路包括一個(gè)計(jì)數(shù)器,當(dāng)來自外部的采樣數(shù)據(jù)保存到DRAM時(shí),用計(jì)數(shù)器對(duì)輸入的采樣數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù)。然后根據(jù)計(jì)數(shù)器的數(shù)值分奇偶輪流寫入到這兩塊DRAM中,先DRAM1后DRAM2。MAC1和MAC2的輸入數(shù)據(jù)取自DRAM的PORTB側(cè),每個(gè)時(shí)鐘周期取一個(gè)。
所述輸入存取控制邏輯電路還包括一個(gè)dirty標(biāo)志位的處理電路。因?yàn)槭怯肦AM來實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存,該電路上電復(fù)位后RAM中的初始值不確定,因此需要給每個(gè)存儲(chǔ)單元增加一個(gè)已寫標(biāo)志位即dirty,表明該位是否被賦過確定的數(shù)值。它的初始值為0,讀出某個(gè)存儲(chǔ)單元時(shí),也要讀出該dirty標(biāo)志位,如果為0,則表明相應(yīng)的存儲(chǔ)單元中未有確定值,則給相應(yīng)的MAC發(fā)送0值,否則發(fā)送該存儲(chǔ)單元數(shù)值,寫該存儲(chǔ)單元時(shí),同時(shí)將相應(yīng)的dirty標(biāo)志位置1。
本發(fā)明所述系數(shù)產(chǎn)生單元用于為計(jì)算單元提供系數(shù),它包含有兩個(gè)系數(shù)雙口RAM和系數(shù)存取控制邏輯電路。所述系數(shù)產(chǎn)生單元中的兩個(gè)系數(shù)雙口RAM用來存放系數(shù),分別記為CRAM1和CRAM2,其輸出分別送到計(jì)算單元的MAC1和MAC2。每個(gè)CRAM分為PORTA、PORTB兩側(cè),外部通過CRAM的PORTA對(duì)該濾波器的系數(shù)進(jìn)行配置;PORTB是由濾波器內(nèi)部訪問,只有讀操作。
所述系數(shù)存取控制邏輯電路對(duì)CRAM1和CRAM2的訪問進(jìn)行控制。對(duì)CRAM1和CRAM2的寫操作比較簡單,在內(nèi)插濾波器開始運(yùn)行之前將系數(shù)寫入到CRAM1和CRAM2即可,而要從CRAM1和CRAM2中取出系數(shù)相對(duì)要復(fù)雜一些。
對(duì)所述系數(shù)的讀出是基于以下原理因?yàn)樵搩?nèi)插濾波器是用多相濾波器實(shí)現(xiàn)多倍內(nèi)插,假設(shè)倍數(shù)為L,因此該多相濾波器共有L相,每相有N個(gè)系數(shù),因此這個(gè)多相濾波器的系數(shù)可以構(gòu)建二維系數(shù)矩陣,該矩陣的行數(shù)L即是內(nèi)插的倍數(shù),列數(shù)可以看做每相的系數(shù)個(gè)數(shù),每相的系數(shù)有N個(gè),則該多相濾波器的總系數(shù)個(gè)數(shù)為L×N,即構(gòu)成L×N的矩陣,本發(fā)明所述系數(shù)的二維矩陣見圖2所示,其中陰影部分和非陰影部分系數(shù)分別保存在CRAM2和CRAM1中。
在本發(fā)明裝置和方法的PORTB側(cè)取出系數(shù)時(shí),與PORTA側(cè)寫入的順序不同,在PORTA側(cè)寫入的順序是線性寫入的,即按照地址從小到大寫入。而PORTB側(cè)讀出的順序是二維的,根據(jù)圖2所示,系數(shù)讀出順序是先從左到右(按照k值讀取),再從上到下(按照m值讀取),即每當(dāng)有采樣數(shù)據(jù)輸入,啟動(dòng)濾波器運(yùn)算時(shí),先從矩陣的第一行的第一個(gè)元素(元素0)開始,從左到右取完第一行,再從矩陣的第二行開始仍是從左到右取完第二行,依此類推。
根據(jù)不同的L和N值,可以產(chǎn)生不同的二維系數(shù)矩陣,從而實(shí)現(xiàn)了不同內(nèi)插倍數(shù)和系數(shù)個(gè)數(shù)的可編程內(nèi)插濾波器中的L倍內(nèi)插。
本發(fā)明所述的計(jì)算單元是用于將來自DRAM和CRAM的數(shù)據(jù)相乘,并與前一個(gè)時(shí)鐘周期的MAC計(jì)算得到的累加值進(jìn)行累加。該計(jì)算單元由兩個(gè)MAC(乘加器)單元、加法器、流水線控制邏輯電路以及一些其它控制邏輯電路組成。
所述乘加器單元MAC由乘法器和累加器組成,乘法器完成數(shù)據(jù)和系數(shù)的相乘,數(shù)據(jù)和系數(shù)都是有符號(hào)數(shù),相乘的結(jié)果也是有符號(hào)數(shù)。每個(gè)MAC結(jié)構(gòu)相同,并行計(jì)算。如前面所述,每相的系數(shù)個(gè)數(shù)為N,這說明每個(gè)輸出要經(jīng)過N次MAC(乘加)運(yùn)算。
加法器用來將MAC的計(jì)算結(jié)果相加。當(dāng)每個(gè)MAC累加到N/2次時(shí),因?yàn)橛袃蓚€(gè)MAC同時(shí)運(yùn)算,只是各自取不同的數(shù)據(jù)和系數(shù),但兩個(gè)MAC加起來要運(yùn)算N次,將兩個(gè)MAC的累加器的輸出由加法器相加,將產(chǎn)生一個(gè)有效的輸出值,同時(shí)要將這兩個(gè)累加器清零。
所述流水線控制邏輯電路使MAC計(jì)算單元實(shí)現(xiàn)了流水線操作,在每個(gè)時(shí)鐘周期,將輸入一組對(duì)應(yīng)的系數(shù)和數(shù)據(jù),通過流水線的控制邏輯中的寄存器以及相關(guān)的節(jié)拍計(jì)數(shù)器,從而實(shí)現(xiàn)了流水線操作。
當(dāng)多相濾波器的每相的系數(shù)個(gè)數(shù)N為奇數(shù)時(shí),MAC2將比MAC1少運(yùn)算一次,此時(shí)要將送到MAC2的系數(shù)值要賦為0值,兩個(gè)MAC單元仍同時(shí)計(jì)算,只是MAC2的運(yùn)算沒有實(shí)際用處,這樣會(huì)減少設(shè)計(jì)的復(fù)雜度。
本發(fā)明的輸出單元包括抽取邏輯電路和輸出控制邏輯電路。所述抽取邏輯電路用于完成M倍抽取,當(dāng)每個(gè)MAC單元完成了N/2次運(yùn)算后,將內(nèi)插濾波器產(chǎn)生一個(gè)控制信號(hào),輸出單元響應(yīng)此控制信號(hào),并根據(jù)抽取倍數(shù)(M值),在每M個(gè)數(shù)據(jù)中取1個(gè)輸出。
在抽取邏輯電路產(chǎn)生輸出時(shí),用輸出控制邏輯電路產(chǎn)生適當(dāng)?shù)目刂菩盘?hào),告訴外界有新的數(shù)據(jù)輸出。
本發(fā)明所述可編程內(nèi)插濾波器實(shí)現(xiàn)方法基于RAM,其具體實(shí)現(xiàn)步驟包括A、完成配置內(nèi)插倍數(shù)L、抽取倍數(shù)M和多相濾波器的每相系數(shù)個(gè)數(shù)N,并將系數(shù)寫入到CRAM1和CRAM2中;B、輸入1個(gè)數(shù)據(jù),DRAM1的地址初值指針加1,并將該數(shù)據(jù)將保存到DRAM1中,DRAM2中的內(nèi)容保持不變,地址初值指針也保持不變;C、從CRAM1中取出系數(shù),CRAM1的地址指針加L。從DRAM1中取出數(shù)據(jù)送到MAC1計(jì)算單元進(jìn)行乘加運(yùn)算,DRAM1的地址指針減一(循環(huán)尋址);D、從CRAM2中取出系數(shù),CRAM2的地址指針加L。從DRAM2中取出數(shù)據(jù)送到MAC2計(jì)算單元進(jìn)行乘加運(yùn)算,DRAM2的地址指針減一(循環(huán)尋址);E、如果步驟C、D重復(fù)的次數(shù)小于N/2次,則繼續(xù)重復(fù)這兩步,否則進(jìn)入步驟F;F、將兩個(gè)MAC單元計(jì)算得到的累加結(jié)果輸出,產(chǎn)生控制信號(hào)通知輸出單元,并對(duì)該累加器清零。所述輸出單元根據(jù)M值確定是否輸出該值。如果計(jì)算單元輸出的數(shù)據(jù)個(gè)數(shù)未達(dá)到L個(gè),則繼續(xù)重復(fù)步驟C到步驟F,否則進(jìn)入步驟G;G、如果有新的數(shù)據(jù)輸入,則處理過程類似步驟B到步驟F,所不同的是在步驟B中,DRAM2的地址指針初值增一,將數(shù)據(jù)寫入到DRAM2中,DRAM1的地址初值指針仍保持原值,同時(shí)將DRAM1的輸出與CRAM2的輸出相乘,如此交替進(jìn)行,如果沒有新的數(shù)據(jù),則等待。
本發(fā)明方法的可編程內(nèi)插濾波器的時(shí)分復(fù)用表現(xiàn)在兩個(gè)方面一是多相濾波器的每相的時(shí)分復(fù)用,對(duì)于L倍的內(nèi)插濾波,用多相濾波器來實(shí)現(xiàn)則共有L相,而在具體實(shí)現(xiàn)這L相運(yùn)算時(shí),用一個(gè)計(jì)算單元來完成,每計(jì)算完一相并輸出一個(gè)數(shù)據(jù)后,將取出新的一組系數(shù)和輸入采樣數(shù)據(jù),計(jì)算新的一相,共重復(fù)L次;二是計(jì)算單元用2個(gè)MAC完成N次乘加運(yùn)算,其中N為多相濾波器的每相系數(shù)個(gè)數(shù),其中每個(gè)MAC單元進(jìn)行N/2次運(yùn)算。
經(jīng)過上面兩次時(shí)分復(fù)用,本發(fā)明方法的所有L×N次乘加運(yùn)算只用兩個(gè)乘加計(jì)算單元(MAC1和MAC2)來完成,不過前提是內(nèi)插濾波器的運(yùn)行時(shí)鐘頻率是輸入數(shù)據(jù)的采樣頻率的T×N/2倍,因此,又將用到流水線技術(shù)使該濾波器工作在較高的時(shí)鐘頻率上。
如圖1所示的實(shí)現(xiàn)了本發(fā)明方法的一個(gè)可編程內(nèi)插濾波器,在實(shí)現(xiàn)前面描述的可編程內(nèi)插濾波器時(shí),數(shù)據(jù)RAM的深度可以設(shè)為32,由于有兩個(gè)MAC計(jì)算單元,則多相濾波器的每相系數(shù)個(gè)數(shù)最大可以設(shè)為64(32×2)。系數(shù)RAM(CRAM)實(shí)際使用時(shí)可以將其總深度設(shè)為256,每個(gè)CRAM深度為128,根據(jù)內(nèi)插倍數(shù)的不同,實(shí)現(xiàn)不同的二維系數(shù)矩陣。限定L為16,M值也限定為16,則該濾波器的內(nèi)插倍數(shù)1≤L/M≤16。因此,內(nèi)插濾波器最大抽頭數(shù)為256,即用兩個(gè)MAC計(jì)算單元完成255階內(nèi)插濾波器的計(jì)算。
下面描述的本發(fā)明裝置和方法的較佳實(shí)施例中,所述可編程的內(nèi)插濾波器用于CDMA基站中,將下行鏈路基帶信號(hào)(相對(duì)中頻而言)進(jìn)行上變頻,將輸入的信號(hào)采樣頻率由1.2288MHz通過該內(nèi)插濾波器的4倍內(nèi)插上變頻到4.9152MHz,每相系數(shù)個(gè)數(shù)N為20,因此該內(nèi)插濾波器的總抽頭數(shù)是80(20×4),濾波器的時(shí)鐘頻率為49.152MHz,則意味著所述多相濾波器的每相系數(shù)個(gè)數(shù)N=20,內(nèi)插倍數(shù)L=4,抽取倍數(shù)M=1;每40個(gè)時(shí)鐘周期輸入一個(gè)數(shù)據(jù);每10個(gè)時(shí)鐘周期內(nèi)插濾波器要產(chǎn)生一個(gè)輸出;每個(gè)輸出要經(jīng)過20次MAC單元的計(jì)算;每個(gè)MAC計(jì)算10次。
如果覺得時(shí)鐘頻率過高,可以增加MAC單元的數(shù)量,比如MAC增加為4個(gè),則時(shí)鐘頻率下降一半,該內(nèi)插濾波器的結(jié)構(gòu)可以方便地進(jìn)行擴(kuò)展。
根據(jù)圖2所示,對(duì)本發(fā)明方法的系數(shù)矩陣進(jìn)行分配,則此時(shí)為4×20的矩陣,第1、3、5、…19列分配到CRAM1中,第2、4、6、…20列分配到CRAM2中。
在每次有數(shù)據(jù)輸入到可編程內(nèi)插濾波器的時(shí)候,將輸入一個(gè)data_valid指示信號(hào),通知內(nèi)插濾波器接收數(shù)據(jù);而內(nèi)插濾波器輸出的時(shí)候也將產(chǎn)生一個(gè)類似的data_valid信號(hào),表明有結(jié)果從內(nèi)插濾波器輸出。
計(jì)算單元按照圖3所示結(jié)構(gòu)來實(shí)現(xiàn),計(jì)算單元的MAC用四級(jí)流水線來實(shí)現(xiàn),每個(gè)時(shí)鐘周期流水線前進(jìn)一拍。當(dāng)輸入數(shù)據(jù)出現(xiàn)在計(jì)算單元的輸入端時(shí),將延遲4個(gè)時(shí)鐘周期后,計(jì)算結(jié)果保存在累加器中。當(dāng)完成了10次累加后,將累加器的內(nèi)容送到加法器中相加,相加得到的結(jié)果即是計(jì)算單元的一個(gè)輸出結(jié)果,同時(shí)要將累加器的內(nèi)容清空。如圖3中所示的寄存器起到節(jié)拍劃分的作用,共有四級(jí)處理第1級(jí),完成系數(shù)和數(shù)據(jù)的取絕對(duì)值運(yùn)算,并提取符號(hào)位;第2級(jí),完成無符號(hào)的乘法運(yùn)算;第3級(jí),將得到的乘積轉(zhuǎn)換成有符號(hào)數(shù);第4級(jí),完成累加運(yùn)算。
其中,CRAM1與MAC1對(duì)應(yīng),CRAM2與MAC2對(duì)應(yīng),且對(duì)應(yīng)關(guān)系固定。此時(shí)參數(shù)N為偶數(shù),MAC1和MAC2運(yùn)算次數(shù)相同,均為10次。由于此時(shí)M=1,完成的是整數(shù)倍內(nèi)插,無抽取操作,輸出單元直接將來自計(jì)算單元的結(jié)果輸出到內(nèi)插濾波器的外部。
本發(fā)明的可編程內(nèi)插濾波器裝置及其實(shí)現(xiàn)方法,與現(xiàn)有的技術(shù)相比,由于是基于RAM的設(shè)計(jì),并采用了流水線和時(shí)分復(fù)用技術(shù),大大節(jié)省了硬件資源,也能使芯片運(yùn)行的時(shí)鐘頻率超過100MHz,達(dá)到150MHz以上,當(dāng)應(yīng)用到通信系統(tǒng)的數(shù)字前端系統(tǒng)中,可提高系統(tǒng)的性能以及設(shè)計(jì)的靈活性。
應(yīng)當(dāng)理解的是,上述針對(duì)具體實(shí)施例的描述較為詳細(xì),并不能因此而理解為本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種可編程內(nèi)插濾波器裝置,其特征在于,所述裝置包括一輸入數(shù)據(jù)產(chǎn)生單元、一系數(shù)產(chǎn)生單元、一計(jì)算單元和一輸出單元;所述輸入數(shù)據(jù)單元用于將輸入的采樣數(shù)據(jù)保存在數(shù)據(jù)RAM中,并提供給計(jì)算單元處理;所述系數(shù)單元用于尋址,產(chǎn)生系數(shù)給所述計(jì)算單元;所述計(jì)算單元用于完成內(nèi)插濾波器的乘加運(yùn)算;所述輸出單元用于根據(jù)設(shè)置的抽取倍數(shù)對(duì)內(nèi)插的數(shù)據(jù)進(jìn)行抽取,產(chǎn)生所需的采樣率的輸出數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述內(nèi)插濾波器的內(nèi)插用多相濾波器實(shí)現(xiàn),用于實(shí)現(xiàn)不同內(nèi)插倍數(shù)、不同系數(shù)個(gè)數(shù)及系數(shù)數(shù)值的內(nèi)插濾波。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述計(jì)算單元包括至少兩個(gè)相同結(jié)構(gòu)的乘加器,用于提高該濾波器的計(jì)算能力,處理階數(shù)更高的濾波計(jì)算。
4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述輸入數(shù)據(jù)產(chǎn)生單元包括有兩個(gè)輸入雙口RAM和對(duì)應(yīng)的輸入存取控制邏輯電路;所述輸入雙口RAM用于緩存來自外部的采樣數(shù)據(jù),每個(gè)輸入雙口RAM分為兩側(cè)端口,一側(cè)用于接收來自外部的數(shù)據(jù)實(shí)現(xiàn)只寫功能,另一側(cè)則用于輸出數(shù)據(jù)實(shí)現(xiàn)只讀功能;所述輸入存取控制邏輯電路包括一個(gè)計(jì)數(shù)器,當(dāng)來自外部的采樣數(shù)據(jù)保存到輸入雙口RAM時(shí),用該計(jì)數(shù)器對(duì)輸入的采樣數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù),并根據(jù)計(jì)數(shù)器的數(shù)值分奇偶輪流寫入到所述兩輸入雙口RAM中;所述輸入存取控制邏輯電路還包括一個(gè)已寫標(biāo)志位的處理電路,用于表明該位是否被賦過確定的數(shù)值。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述系數(shù)產(chǎn)生單元包括有兩個(gè)系數(shù)雙口RAM和系數(shù)存取控制邏輯電路;所述系數(shù)雙口RAM用于存放系數(shù),其輸出分別送到所述計(jì)算單元的兩個(gè)乘加器;每個(gè)系數(shù)雙口RAM包括兩側(cè)端口,外部通過一側(cè)端口對(duì)該內(nèi)插濾波器的系數(shù)進(jìn)行配置;另一側(cè)端口由該內(nèi)插濾波器內(nèi)部訪問,只有讀操作;所述系數(shù)存取控制邏輯電路對(duì)兩個(gè)系數(shù)雙口RAM的訪問進(jìn)行讀寫控制。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述系數(shù)的寫入順序?yàn)榫€性寫入,即按照地址從小到大寫入;所述系數(shù)的讀出順序是二維,先從左到右,再從上到下。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述計(jì)算單元還包括加法器、流水線控制邏輯電路;所述乘加器包括乘法器和累加器,所述乘法器用于完成數(shù)據(jù)和系數(shù)的相乘,兩個(gè)乘加器并行計(jì)算;所述加法器用于將兩個(gè)乘加器的計(jì)算結(jié)果相加,產(chǎn)生一個(gè)有效的輸出值,同時(shí)要將這兩個(gè)累加器清零;所述流水線控制邏輯電路使所述計(jì)算單元實(shí)現(xiàn)流水線操作,用于在每個(gè)時(shí)鐘周期,將輸入一組對(duì)應(yīng)的系數(shù)和數(shù)據(jù),通過流水線的控制邏輯中的寄存器以及相關(guān)的節(jié)拍計(jì)數(shù)器,實(shí)現(xiàn)流水線操作。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述輸出單元包括抽取邏輯電路和輸出控制邏輯電路;所述抽取邏輯電路用于完成預(yù)定倍數(shù)抽取,當(dāng)每個(gè)乘加器完成了半數(shù)次運(yùn)算后,將內(nèi)插濾波器產(chǎn)生一個(gè)控制信號(hào),輸出單元響應(yīng)此控制信號(hào),并根據(jù)抽取倍數(shù),在每倍數(shù)個(gè)數(shù)據(jù)中取一個(gè)輸出;所述輸出控制邏輯電路用于在抽取邏輯電路產(chǎn)生輸出時(shí),產(chǎn)生適當(dāng)?shù)目刂菩盘?hào),告訴外界有新的數(shù)據(jù)輸出。
9.一種可編程內(nèi)插濾波器裝置的實(shí)現(xiàn)方法,基于RAM,其包括以下步驟A、完成配置內(nèi)插倍數(shù)、抽取倍數(shù)和多相濾波器的每相系數(shù)個(gè)數(shù),并將系數(shù)個(gè)數(shù)寫入到兩個(gè)系數(shù)雙口RAM中;B、輸入1個(gè)數(shù)據(jù),所述輸入雙口RAM之一的地址初值指針加1,并將該數(shù)據(jù)保存到該輸入雙口RAM中,另一輸入雙口RAM中的內(nèi)容保持不變,地址初值指針也保持不變;C、從系數(shù)雙口RAM之一中取出系數(shù),該系數(shù)雙口RAM的地址指針加內(nèi)插倍數(shù),從所述輸入雙口RAM之一中取出數(shù)據(jù)送到乘加器之一的計(jì)算單元進(jìn)行乘加運(yùn)算,所述輸入雙口RAM的地址指針減一;D、從另一系數(shù)雙口RAM中取出系數(shù),該另一系數(shù)雙口RAM的地址指針加內(nèi)插倍數(shù),對(duì)應(yīng)從另一輸入雙口RAM中取出數(shù)據(jù)送到計(jì)算單元的另一乘加器進(jìn)行乘加運(yùn)算,該另一輸入雙口RAM的地址指針減一;E、重復(fù)步驟C、步驟D次數(shù)不超過系數(shù)個(gè)數(shù)的一半;F、將兩個(gè)乘加器計(jì)算得到的累加結(jié)果輸出,產(chǎn)生控制信號(hào)通知輸出單元,并對(duì)該累加器清零。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述步驟F中,所述輸出單元根據(jù)抽取倍數(shù)值確定是否輸出該值,如果所述計(jì)算單元輸出的數(shù)據(jù)個(gè)數(shù)未達(dá)到內(nèi)插倍數(shù),則繼續(xù)重復(fù)步驟C到步驟F。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,還包括G、如果再有新的數(shù)據(jù)輸入時(shí),則交替使用兩個(gè)輸入雙口RAM,兩個(gè)系數(shù)雙口RAM。
全文摘要
本發(fā)明公開了一種可編程內(nèi)插濾波器裝置及其實(shí)現(xiàn)方法,所述裝置包括一輸入數(shù)據(jù)產(chǎn)生單元、一系數(shù)產(chǎn)生單元、一計(jì)算單元和一輸出單元;所述輸入數(shù)據(jù)單元用于將輸入的采樣數(shù)據(jù)保存在數(shù)據(jù)RAM中,并提供給計(jì)算單元處理;所述系數(shù)單元用于尋址,產(chǎn)生系數(shù)給所述計(jì)算單元;所述計(jì)算單元用于完成內(nèi)插濾波器的乘加運(yùn)算;所述輸出單元用于根據(jù)設(shè)置的抽取倍數(shù)對(duì)內(nèi)插的數(shù)據(jù)進(jìn)行抽取,產(chǎn)生所需的采樣率的輸出數(shù)據(jù)。本發(fā)明裝置及其實(shí)現(xiàn)方法由于是基于RAM的設(shè)計(jì),并采用了流水線和時(shí)分復(fù)用技術(shù),大大節(jié)省了硬件資源,當(dāng)應(yīng)用到通信系統(tǒng)的數(shù)字前端系統(tǒng)中,可提高系統(tǒng)的性能以及設(shè)計(jì)的靈活性。
文檔編號(hào)H03H17/02GK1992517SQ200510132579
公開日2007年7月4日 申請日期2005年12月26日 優(yōu)先權(quán)日2005年12月26日
發(fā)明者葉輝 申請人:中興通訊股份有限公司