單 琦 ,張志芳 ,沙立偉 ,張 曄 ,宋振宇
(1.航天恒星科技有限公司北京100086;2.天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司天津300301;3.北京信威永勝通信技術(shù)有限公司北京100193)
現(xiàn)代通信系統(tǒng)中,在信號(hào)傳輸過(guò)程與接收過(guò)程中,碼間串?dāng)_(ISI)是造成誤碼的主要原因之一[1-2]。成型濾波器用來(lái)減少碼間串?dāng)_,提高頻帶率用率[3-4]。在利用FPGA實(shí)現(xiàn)成型濾波設(shè)計(jì)時(shí),目前常規(guī)的做法主要查表法,查表法的基本原理是通過(guò)對(duì)輸入信號(hào)與單位沖擊響應(yīng)進(jìn)行線性卷積來(lái)實(shí)現(xiàn)數(shù)據(jù)的成型,查找法預(yù)先將信號(hào)所有可能的成型后的基帶波形樣本值存儲(chǔ)起來(lái)[5-6],隨著成型濾波器系數(shù)的增加,這種卷積運(yùn)算會(huì)占用大量硬件資源,并導(dǎo)致延遲增大,設(shè)備成本增加。為了避免過(guò)多硬件資源的占用,又提出了分布式算法[7],分布式算法利用ROM查找表,將固定系數(shù)的乘累加運(yùn)算轉(zhuǎn)換成查找表操作,從而避免了乘法運(yùn)算,查找表后的數(shù)據(jù)執(zhí)行的都是簡(jiǎn)單的加法運(yùn)算。為了實(shí)現(xiàn)高速數(shù)據(jù)速率的需求,進(jìn)一步提出了并行的分布式算法[8-10],利用并行結(jié)構(gòu)和濾波器的系數(shù)對(duì)稱性等對(duì)于分布式算法進(jìn)行改進(jìn),但是當(dāng)階數(shù)增大時(shí),無(wú)論是分布式算法還是并行分布式算法的查找表規(guī)模仍然成指數(shù)增加,造成FPGA資源緊張。文獻(xiàn)[11]和[12]針對(duì)特定調(diào)制方式的查找表方法進(jìn)行了分析,但不具有普適性。
在成型濾波的實(shí)現(xiàn)過(guò)程中還有一個(gè)主要的要求就是數(shù)據(jù)速率可變,為了能夠適應(yīng)數(shù)據(jù)速率的變化,目前主要的處理方式是采用插值和抽取相結(jié)合的方式實(shí)現(xiàn)分?jǐn)?shù)倍采樣[13-15],這種方式實(shí)現(xiàn)復(fù)雜,占用硬件資源較多。文獻(xiàn)[16]中利用改變采樣時(shí)鐘的做法實(shí)現(xiàn)變速率采樣,這種方法需要產(chǎn)生多個(gè)采樣時(shí)鐘,系統(tǒng)不夠穩(wěn)定。
基于此,文中提出了一種高速并行成型濾波器的FPGA實(shí)現(xiàn)方法,有效降低了系統(tǒng)資源的占用,并且能夠靈活適應(yīng)高速可變數(shù)據(jù)速率的要求。
針對(duì)目前成型濾波器實(shí)現(xiàn)中的問(wèn)題,文中提出了一種新型的基于群時(shí)延結(jié)構(gòu)的查找表算法。成型濾波器采用波形擬合的方法產(chǎn)生,通過(guò)簡(jiǎn)單的查表法來(lái)實(shí)現(xiàn)。首先用Matlab程序計(jì)算出成型濾波的波形數(shù)據(jù),調(diào)用Matlab函數(shù)

其中,rcosine用于生成成型濾波單位脈沖響應(yīng)波形采樣數(shù)據(jù),Rate為數(shù)據(jù)速率,此處可設(shè)為1;Fs為采樣率,文中設(shè)為1024;fir/sqrt表示根升余弦FIR濾波器;alpha為滾降系數(shù)[17],范圍 0~1;group_delay為群時(shí)延[17]。
將生成的系數(shù)y經(jīng)過(guò)歸一化處理后,放入到FPGA的查找表中。查找表總深度為2*group_delay*Fs/Rate,由此可知,查找表深度與階數(shù)成正比,與目前常規(guī)算法的指數(shù)式增長(zhǎng)相比占用資源很少。

圖1 成型濾波波形圖
如圖1所示,令群時(shí)延為4,則前后共有8個(gè)碼元相關(guān),將(-4TB,4TB)共8個(gè)碼元周期的波形分為8段,每段長(zhǎng)度為一個(gè)碼元周期TB,將其作為一個(gè)查找表的數(shù)據(jù),每個(gè)采樣點(diǎn)的數(shù)值量化為12位補(bǔ)碼。
根據(jù)NCO理論,碼元數(shù)據(jù)時(shí)鐘相位的生成采用計(jì)數(shù)器累加的方法實(shí)現(xiàn),時(shí)鐘相位累加步進(jìn)值的計(jì)算公式為

其中R為符號(hào)速率,fclk為系統(tǒng)時(shí)鐘頻率,即FPGA工作時(shí)鐘頻率。每個(gè)系統(tǒng)時(shí)鐘周期內(nèi),相位值增加E。設(shè)相位累加值s0的初始值為0,經(jīng)過(guò)若干周期的累加后,相位值達(dá)到2N時(shí),則生成一個(gè)數(shù)據(jù)讀取脈沖data_clkp作為數(shù)據(jù)源產(chǎn)生模塊的讀取脈沖,數(shù)據(jù)源產(chǎn)生模塊響應(yīng)讀取脈沖輸出一個(gè)新的碼元符號(hào)作為成型濾波的輸入數(shù)據(jù)。將采樣率設(shè)為1 024,也就是說(shuō)每個(gè)TB時(shí)間段內(nèi)采樣1 024個(gè)波形點(diǎn)來(lái)存儲(chǔ),因此只需取相位累加值s0的高10位phase0(phase0=s0[N-1:N-10])作為查找表的地址,讀取對(duì)應(yīng)的濾波數(shù)值。
前后8個(gè)碼元相關(guān),共需8個(gè)查找表,每個(gè)查找表分別存儲(chǔ)(-4TB,-3TB)、(-3TB,-2TB)、(-2TB,-TB)、(-TB,0)、(0,TB)、(TB,2TB)、(2TB,3TB)、(3TB,4TB)時(shí)間段內(nèi)的采樣數(shù)據(jù),共有8*1 024=8 192個(gè)數(shù)據(jù)。將前后相關(guān)的幾個(gè)碼元的成型濾波波形數(shù)據(jù)相加就得到最終的成型濾波輸出。
當(dāng)數(shù)據(jù)速率改變時(shí),只需修改式(2)中的符號(hào)速率R值就可以實(shí)現(xiàn)變速率采樣。

圖2 0~TB時(shí)間段內(nèi)輸出波形對(duì)應(yīng)數(shù)據(jù)值
如圖 2所示,令di表示在iTB~(i+1)TB時(shí)間段內(nèi)的進(jìn)入成型濾波器的有效碼元,以d4進(jìn)入成型濾波器的時(shí)間段4TB~5TB為例,每個(gè)數(shù)據(jù)用一個(gè)脈沖表示,由于群時(shí)延的影響,此時(shí)輸出的波形應(yīng)該是0(4TB-4TB=0)~TB(5TB-4TB=TB)時(shí)間段內(nèi)的波形數(shù)據(jù),以8個(gè)脈沖的生成時(shí)刻作為各自成型波形的0時(shí)刻,在上圖中畫出各個(gè)脈沖的成型波形后,將所有在0~TB范圍出現(xiàn)的波形值相加就得到了這個(gè)時(shí)間段內(nèi)的成型濾波輸出。將所有出現(xiàn)在0~TB范圍內(nèi)的波形列出如下:
d4輸出(-4TB,-3TB)的數(shù)據(jù)
d3輸出(-3TB,-2TB)的數(shù)據(jù)
d2輸出(-2TB,-TB)的數(shù)據(jù)
d1輸出(-TB,0)的數(shù)據(jù)
d0輸出(0,TB)的數(shù)據(jù)
d-1輸出(TB,2TB)的數(shù)據(jù)
d-2輸出(2TB,3TB)的數(shù)據(jù)
d-3輸出(3TB,4TB)的數(shù)據(jù)
成型濾波查找表讀出的波形數(shù)據(jù)是輸入數(shù)據(jù)有效值為“1”時(shí)對(duì)應(yīng)的值,若輸入數(shù)據(jù)為“0”,則應(yīng)對(duì)查找表讀出的數(shù)據(jù)取反來(lái)得到濾波結(jié)果輸出,這個(gè)處理過(guò)程實(shí)際上就是用輸入數(shù)據(jù)d4~d-3與查表輸出的波形值作乘法,即用d4~d-3加權(quán),可以簡(jiǎn)單的用對(duì)應(yīng)的d4~d-3的值與成型濾波查找表讀出的波形數(shù)據(jù)相“與”來(lái)實(shí)現(xiàn),再將8個(gè)經(jīng)過(guò)“與”處理的結(jié)果相加就得到0~TB時(shí)間段范圍內(nèi)的成型濾波輸出。
小節(jié)1中所述的成型濾波實(shí)現(xiàn)方法只適用于串行輸入的情況,成型濾波模塊每輸入一個(gè)碼元符號(hào)就對(duì)應(yīng)輸出一個(gè)成型濾波結(jié)果,但是隨著數(shù)據(jù)速率的升高,在新一代的數(shù)傳系統(tǒng)中,符號(hào)速率可能達(dá)到幾百甚至幾千兆,如果仍然采用串行方式實(shí)現(xiàn)成型濾波波器的設(shè)計(jì)就顯得力不從心。此時(shí)要求成型濾波模塊一個(gè)系統(tǒng)時(shí)鐘周期輸入并行的多個(gè)碼元符號(hào),并能夠產(chǎn)生相應(yīng)的多個(gè)并行成型濾波輸出數(shù)據(jù)。由于成型濾波的群時(shí)延特性,多個(gè)碼元符號(hào)之間并不是相互獨(dú)立的,如小節(jié)1中所述,若群時(shí)延為4,則每個(gè)碼元符號(hào)都影響著前后4個(gè)碼元符號(hào)的成型濾波輸出結(jié)果。下面以16路并行成型濾波為例,說(shuō)明并行成型濾波器的設(shè)計(jì)方法,更高并行度的成型濾波設(shè)計(jì)可以以此類推。
在16路并行成型濾波器的設(shè)計(jì)中,成型濾波模塊的輸入為來(lái)自數(shù)據(jù)時(shí)鐘產(chǎn)生模塊的16路并行時(shí)鐘相位值、16路并行數(shù)據(jù)的數(shù)據(jù)讀取脈沖data_clkp和來(lái)自數(shù)據(jù)源產(chǎn)生模塊的16路并行數(shù)據(jù)。
在并行數(shù)據(jù)時(shí)鐘產(chǎn)生模塊的設(shè)計(jì)中,由于每路數(shù)據(jù)時(shí)鐘是獨(dú)立生成的,因此每路時(shí)鐘相位的累加步進(jìn)值E的計(jì)算方法與串行時(shí)一致,與串行的情況不同的是,由于每個(gè)系統(tǒng)時(shí)鐘周期要產(chǎn)生16路不同的相位值,因此各相位累加值s0~s15的初始值initial_phase0~initial_phase15之間的差值為E/16,每個(gè)系統(tǒng)時(shí)鐘周期,各路的相位累加值s0~s15增加E,第16路相位累加值s15經(jīng)過(guò)若干周期的累加后,達(dá)到2N時(shí),則生成一個(gè)數(shù)據(jù)時(shí)鐘脈沖data_clkp作為數(shù)據(jù)源產(chǎn)生模塊的讀取脈沖,數(shù)據(jù)源產(chǎn)生模塊響應(yīng)data_clkp輸出并行的16路數(shù)據(jù)。
在并行成型濾波模塊中,由于前后共8個(gè)碼元相關(guān),因此同時(shí)輸入的每個(gè)碼元符號(hào)都需要寄存在一個(gè)8個(gè)元素的移位寄存器數(shù)組中,具體來(lái)說(shuō),若同時(shí)輸入的是16個(gè)并行的碼元符號(hào)d0_new~d15_new,則16個(gè)移位寄存器數(shù)組為


其中d0~d15為前一數(shù)據(jù)讀取脈沖送入的16路并行碼元符號(hào),d0_new~d15_new為當(dāng)前時(shí)刻數(shù)據(jù)讀取脈沖送入的16路并行碼元符號(hào)。
在串行處理時(shí),一次處理一個(gè)碼元,所以時(shí)鐘相位的值只需要取一個(gè)碼元周期內(nèi)的值0~210-1(采樣率為210),共10bit的相位信息;在16路并行處理時(shí),一次處理16個(gè)碼元,那么意味著時(shí)鐘相位要能夠表示16個(gè)碼元周期內(nèi)的相位變化,即0~214-1(214=16*210),只有這樣才能表示出當(dāng)前的時(shí)鐘相位對(duì)應(yīng)16路并行碼元中的哪一個(gè)。設(shè)時(shí)鐘相位為phase0~phase15(共14位,分別取s0~s15的高14位),則結(jié)合并行的移位寄存器組中的數(shù)據(jù)的移動(dòng),F(xiàn)PGA用不同的移位寄存器組計(jì)算成型濾波輸出波形數(shù)據(jù),時(shí)鐘相位phase0~phase15的高4位用來(lái)確定當(dāng)前的成型濾波結(jié)果應(yīng)該用哪個(gè)移位寄存器組來(lái)計(jì)算,而低10位則用來(lái)確定成型濾波結(jié)果應(yīng)該用每個(gè)查找表內(nèi)的具體波形地址,將查表的結(jié)果與對(duì)應(yīng)的碼元符號(hào)相“與”再相加就得到最終的成型濾波結(jié)果。
還有一點(diǎn)需要特別說(shuō)明,由于數(shù)據(jù)讀取脈沖采用的是最后一路相位累加值s15累加到2N時(shí)輸出的讀取脈沖,而第一路相位累加值s0與s15之間相差了15E/16,也就是說(shuō)s0的讀取脈沖與s15的讀取脈沖之間最多相差小于一個(gè)系統(tǒng)時(shí)鐘周期,當(dāng)對(duì)應(yīng)于s15,在數(shù)據(jù)讀取脈沖有效時(shí),已經(jīng)更新了16路并行數(shù)據(jù)時(shí),s0此時(shí)可能還未累加到2N,而是經(jīng)過(guò)一個(gè)系統(tǒng)時(shí)鐘周期(由于兩者相差不到一個(gè)E,因此最多經(jīng)過(guò)一個(gè)系統(tǒng)時(shí)鐘周期)后才累加到2N,同理,其他各路相位累加值s1~s14與s15也都有相位差,也可能要經(jīng)過(guò)一個(gè)系統(tǒng)時(shí)鐘周期才達(dá)到累加門限,因此在這個(gè)讀取脈沖內(nèi),s0應(yīng)該采用的成型濾波移位寄存器組的值應(yīng)該是上一次更新時(shí)的值,兩組移位寄存器組之間相差了一個(gè)系統(tǒng)時(shí)鐘周期。因此在計(jì)算時(shí)還要保留移位寄存器組的前一時(shí)刻的采樣值,這在FPGA中很好實(shí)現(xiàn),只要用系統(tǒng)時(shí)鐘對(duì)于data_array_new0~data_array_new15進(jìn)行采樣即可。設(shè)采樣后的移位寄存器組為data_array0~data_array15,在成型濾波模塊輸入的數(shù)據(jù)讀取脈沖(對(duì)應(yīng)s15的數(shù)據(jù)讀取脈沖)有效時(shí),其他各路s0~s14所對(duì)應(yīng)的移位寄存器組應(yīng)根據(jù)s0~s14的最高位來(lái)判斷,若最高位為0,則移位寄存器組則采用data_array_new0~data_array_new15,否 則 就 采 用data_array0~data_array15作為成型濾波計(jì)算時(shí)應(yīng)用的移位寄存器數(shù)組。
采用上述小節(jié)2所述的方法,利用ISE和ModelSim對(duì)于并行成型濾波器進(jìn)行仿真,成型濾波處理前后的數(shù)據(jù)分別如圖3(a)和(b)所示。由圖3可以看出,文中所述成型濾波方法能夠準(zhǔn)確的對(duì)于輸入數(shù)據(jù)進(jìn)行成型濾波處理。

圖3 成型濾波仿真結(jié)果
文中詳細(xì)闡述了一種新型的高速并行成型濾波的FPGA實(shí)現(xiàn)方法,該方法結(jié)合系統(tǒng)的群時(shí)延特性,構(gòu)造成型濾波實(shí)現(xiàn)的并行結(jié)構(gòu),利用數(shù)據(jù)時(shí)鐘相位對(duì)于查找表進(jìn)行尋址,能夠靈活的實(shí)現(xiàn)變速率采樣,使該種方法能夠適應(yīng)現(xiàn)代通信系統(tǒng)對(duì)于高速可變數(shù)據(jù)速率的處理要求,具有廣泛的應(yīng)用前景。
參考文獻(xiàn):
[1]孫京蕾.QAM調(diào)制技術(shù)研究[D].南京:東南大學(xué),2012.
[2]王志遠(yuǎn).平方根升余弦濾波器的FPGA實(shí)現(xiàn)[J].中國(guó)新技術(shù)新產(chǎn)品,2012(6):23.
[3]王相龍.多制式寬帶通信信號(hào)模擬系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2014.
[4]季偉,周學(xué)軍,林海濤,等.基帶成形濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].艦船電子工程,2012,32(2):131-133.
[5]牛明.基于脈沖成型的OFDM系統(tǒng)峰均比抑制[J].自動(dòng)化技術(shù)與應(yīng)用,2016,35(3):42-46.
[6]王頂,劉智朋,趙頤軒.基帶成形濾波器的數(shù)字設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(13):95-97.
[7]李艷萍,周勝源.高速成形濾波器的研究與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(8):103-105.
[8]王戰(zhàn)強(qiáng),王大慶.高速通信QPSK數(shù)字調(diào)制器設(shè)計(jì)與實(shí)現(xiàn)[J].空間電子技術(shù),2015(6):50-57.
[9]包可佳,唐琦.基于FPGA的高碼率QPSK信號(hào)產(chǎn)生方法[J].信息通信,2015(9):82-84.
[10]吳鳳輝,遲永鋼,鄭宇希,等.一種改進(jìn)DA算法的成型濾波器設(shè)計(jì)[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2016,48(5):32-35.
[11]徐蘭天.EDGE中8PSK調(diào)制的軟件實(shí)現(xiàn)[J].電子產(chǎn)品世界,2013(10):31-33.
[12]梁堯,周智勛,何麗.一種基于查找表的FIR成型濾波實(shí)現(xiàn)裝置[J].太赫茲科學(xué)與電子信息學(xué)報(bào),2015,13(1):102-105.
[13]孫潔朋.多體制通信基帶信號(hào)產(chǎn)生模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2014.
[14]盧佳欣,周志剛,王麗云,等.E波段微波傳輸系統(tǒng)發(fā)送濾波模塊的FPGA設(shè)計(jì)[J].高技術(shù)通訊,2014,24(9):922-927.
[15]馮佳梅,鄒剛,朱南,等.基于可變帶寬多速率處理算法的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字電子世界,2015(8):325-326,332.
[16]田之俊,段旭.高速可變速率QPSK模擬源設(shè)計(jì)與實(shí)現(xiàn)[J].無(wú)線電工程,2015,45(11):77-80.
[17]樊昌信,曹麗娜.通信原理[M].北京:國(guó)防工業(yè)出版社,2014.