單 琦 ,張志芳 ,沙立偉 ,張 曄 ,宋振宇
(1.航天恒星科技有限公司北京100086;2.天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司天津300301;3.北京信威永勝通信技術(shù)有限公司北京100193)
現(xiàn)代通信系統(tǒng)中,在信號傳輸過程與接收過程中,碼間串擾(ISI)是造成誤碼的主要原因之一[1-2]。成型濾波器用來減少碼間串擾,提高頻帶率用率[3-4]。在利用FPGA實現(xiàn)成型濾波設(shè)計時,目前常規(guī)的做法主要查表法,查表法的基本原理是通過對輸入信號與單位沖擊響應(yīng)進行線性卷積來實現(xiàn)數(shù)據(jù)的成型,查找法預(yù)先將信號所有可能的成型后的基帶波形樣本值存儲起來[5-6],隨著成型濾波器系數(shù)的增加,這種卷積運算會占用大量硬件資源,并導(dǎo)致延遲增大,設(shè)備成本增加。為了避免過多硬件資源的占用,又提出了分布式算法[7],分布式算法利用ROM查找表,將固定系數(shù)的乘累加運算轉(zhuǎn)換成查找表操作,從而避免了乘法運算,查找表后的數(shù)據(jù)執(zhí)行的都是簡單的加法運算。為了實現(xiàn)高速數(shù)據(jù)速率的需求,進一步提出了并行的分布式算法[8-10],利用并行結(jié)構(gòu)和濾波器的系數(shù)對稱性等對于分布式算法進行改進,但是當階數(shù)增大時,無論是分布式算法還是并行分布式算法的查找表規(guī)模仍然成指數(shù)增加,造成FPGA資源緊張。文獻[11]和[12]針對特定調(diào)制方式的查找表方法進行了分析,但不具有普適性。
在成型濾波的實現(xiàn)過程中還有一個主要的要求就是數(shù)據(jù)速率可變,為了能夠適應(yīng)數(shù)據(jù)速率的變化,目前主要的處理方式是采用插值和抽取相結(jié)合的方式實現(xiàn)分數(shù)倍采樣[13-15],這種方式實現(xiàn)復(fù)雜,占用硬件資源較多。文獻[16]中利用改變采樣時鐘的做法實現(xiàn)變速率采樣,這種方法需要產(chǎn)生多個采樣時鐘,系統(tǒng)不夠穩(wěn)定。
基于此,文中提出了一種高速并行成型濾波器的FPGA實現(xiàn)方法,有效降低了系統(tǒng)資源的占用,并且能夠靈活適應(yīng)高速可變數(shù)據(jù)速率的要求。
針對目前成型濾波器實現(xiàn)中的問題,文中提出了一種新型的基于群時延結(jié)構(gòu)的查找表算法。成型濾波器采用波形擬合的方法產(chǎn)生,通過簡單的查表法來實現(xiàn)。首先用Matlab程序計算出成型濾波的波形數(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為群時延[17]。
將生成的系數(shù)y經(jīng)過歸一化處理后,放入到FPGA的查找表中。查找表總深度為2*group_delay*Fs/Rate,由此可知,查找表深度與階數(shù)成正比,與目前常規(guī)算法的指數(shù)式增長相比占用資源很少。
圖1 成型濾波波形圖
如圖1所示,令群時延為4,則前后共有8個碼元相關(guān),將(-4TB,4TB)共8個碼元周期的波形分為8段,每段長度為一個碼元周期TB,將其作為一個查找表的數(shù)據(jù),每個采樣點的數(shù)值量化為12位補碼。
根據(jù)NCO理論,碼元數(shù)據(jù)時鐘相位的生成采用計數(shù)器累加的方法實現(xiàn),時鐘相位累加步進值的計算公式為
其中R為符號速率,fclk為系統(tǒng)時鐘頻率,即FPGA工作時鐘頻率。每個系統(tǒng)時鐘周期內(nèi),相位值增加E。設(shè)相位累加值s0的初始值為0,經(jīng)過若干周期的累加后,相位值達到2N時,則生成一個數(shù)據(jù)讀取脈沖data_clkp作為數(shù)據(jù)源產(chǎn)生模塊的讀取脈沖,數(shù)據(jù)源產(chǎn)生模塊響應(yīng)讀取脈沖輸出一個新的碼元符號作為成型濾波的輸入數(shù)據(jù)。將采樣率設(shè)為1 024,也就是說每個TB時間段內(nèi)采樣1 024個波形點來存儲,因此只需取相位累加值s0的高10位phase0(phase0=s0[N-1:N-10])作為查找表的地址,讀取對應(yīng)的濾波數(shù)值。
前后8個碼元相關(guān),共需8個查找表,每個查找表分別存儲(-4TB,-3TB)、(-3TB,-2TB)、(-2TB,-TB)、(-TB,0)、(0,TB)、(TB,2TB)、(2TB,3TB)、(3TB,4TB)時間段內(nèi)的采樣數(shù)據(jù),共有8*1 024=8 192個數(shù)據(jù)。將前后相關(guān)的幾個碼元的成型濾波波形數(shù)據(jù)相加就得到最終的成型濾波輸出。
當數(shù)據(jù)速率改變時,只需修改式(2)中的符號速率R值就可以實現(xiàn)變速率采樣。
圖2 0~TB時間段內(nèi)輸出波形對應(yīng)數(shù)據(jù)值
如圖 2所示,令di表示在iTB~(i+1)TB時間段內(nèi)的進入成型濾波器的有效碼元,以d4進入成型濾波器的時間段4TB~5TB為例,每個數(shù)據(jù)用一個脈沖表示,由于群時延的影響,此時輸出的波形應(yīng)該是0(4TB-4TB=0)~TB(5TB-4TB=TB)時間段內(nèi)的波形數(shù)據(jù),以8個脈沖的生成時刻作為各自成型波形的0時刻,在上圖中畫出各個脈沖的成型波形后,將所有在0~TB范圍出現(xiàn)的波形值相加就得到了這個時間段內(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”時對應(yīng)的值,若輸入數(shù)據(jù)為“0”,則應(yīng)對查找表讀出的數(shù)據(jù)取反來得到濾波結(jié)果輸出,這個處理過程實際上就是用輸入數(shù)據(jù)d4~d-3與查表輸出的波形值作乘法,即用d4~d-3加權(quán),可以簡單的用對應(yīng)的d4~d-3的值與成型濾波查找表讀出的波形數(shù)據(jù)相“與”來實現(xiàn),再將8個經(jīng)過“與”處理的結(jié)果相加就得到0~TB時間段范圍內(nèi)的成型濾波輸出。
小節(jié)1中所述的成型濾波實現(xiàn)方法只適用于串行輸入的情況,成型濾波模塊每輸入一個碼元符號就對應(yīng)輸出一個成型濾波結(jié)果,但是隨著數(shù)據(jù)速率的升高,在新一代的數(shù)傳系統(tǒng)中,符號速率可能達到幾百甚至幾千兆,如果仍然采用串行方式實現(xiàn)成型濾波波器的設(shè)計就顯得力不從心。此時要求成型濾波模塊一個系統(tǒng)時鐘周期輸入并行的多個碼元符號,并能夠產(chǎn)生相應(yīng)的多個并行成型濾波輸出數(shù)據(jù)。由于成型濾波的群時延特性,多個碼元符號之間并不是相互獨立的,如小節(jié)1中所述,若群時延為4,則每個碼元符號都影響著前后4個碼元符號的成型濾波輸出結(jié)果。下面以16路并行成型濾波為例,說明并行成型濾波器的設(shè)計方法,更高并行度的成型濾波設(shè)計可以以此類推。
在16路并行成型濾波器的設(shè)計中,成型濾波模塊的輸入為來自數(shù)據(jù)時鐘產(chǎn)生模塊的16路并行時鐘相位值、16路并行數(shù)據(jù)的數(shù)據(jù)讀取脈沖data_clkp和來自數(shù)據(jù)源產(chǎn)生模塊的16路并行數(shù)據(jù)。
在并行數(shù)據(jù)時鐘產(chǎn)生模塊的設(shè)計中,由于每路數(shù)據(jù)時鐘是獨立生成的,因此每路時鐘相位的累加步進值E的計算方法與串行時一致,與串行的情況不同的是,由于每個系統(tǒng)時鐘周期要產(chǎn)生16路不同的相位值,因此各相位累加值s0~s15的初始值initial_phase0~initial_phase15之間的差值為E/16,每個系統(tǒng)時鐘周期,各路的相位累加值s0~s15增加E,第16路相位累加值s15經(jīng)過若干周期的累加后,達到2N時,則生成一個數(shù)據(jù)時鐘脈沖data_clkp作為數(shù)據(jù)源產(chǎn)生模塊的讀取脈沖,數(shù)據(jù)源產(chǎn)生模塊響應(yīng)data_clkp輸出并行的16路數(shù)據(jù)。
在并行成型濾波模塊中,由于前后共8個碼元相關(guān),因此同時輸入的每個碼元符號都需要寄存在一個8個元素的移位寄存器數(shù)組中,具體來說,若同時輸入的是16個并行的碼元符號d0_new~d15_new,則16個移位寄存器數(shù)組為
其中d0~d15為前一數(shù)據(jù)讀取脈沖送入的16路并行碼元符號,d0_new~d15_new為當前時刻數(shù)據(jù)讀取脈沖送入的16路并行碼元符號。
在串行處理時,一次處理一個碼元,所以時鐘相位的值只需要取一個碼元周期內(nèi)的值0~210-1(采樣率為210),共10bit的相位信息;在16路并行處理時,一次處理16個碼元,那么意味著時鐘相位要能夠表示16個碼元周期內(nèi)的相位變化,即0~214-1(214=16*210),只有這樣才能表示出當前的時鐘相位對應(yīng)16路并行碼元中的哪一個。設(shè)時鐘相位為phase0~phase15(共14位,分別取s0~s15的高14位),則結(jié)合并行的移位寄存器組中的數(shù)據(jù)的移動,F(xiàn)PGA用不同的移位寄存器組計算成型濾波輸出波形數(shù)據(jù),時鐘相位phase0~phase15的高4位用來確定當前的成型濾波結(jié)果應(yīng)該用哪個移位寄存器組來計算,而低10位則用來確定成型濾波結(jié)果應(yīng)該用每個查找表內(nèi)的具體波形地址,將查表的結(jié)果與對應(yīng)的碼元符號相“與”再相加就得到最終的成型濾波結(jié)果。
還有一點需要特別說明,由于數(shù)據(jù)讀取脈沖采用的是最后一路相位累加值s15累加到2N時輸出的讀取脈沖,而第一路相位累加值s0與s15之間相差了15E/16,也就是說s0的讀取脈沖與s15的讀取脈沖之間最多相差小于一個系統(tǒng)時鐘周期,當對應(yīng)于s15,在數(shù)據(jù)讀取脈沖有效時,已經(jīng)更新了16路并行數(shù)據(jù)時,s0此時可能還未累加到2N,而是經(jīng)過一個系統(tǒng)時鐘周期(由于兩者相差不到一個E,因此最多經(jīng)過一個系統(tǒng)時鐘周期)后才累加到2N,同理,其他各路相位累加值s1~s14與s15也都有相位差,也可能要經(jīng)過一個系統(tǒng)時鐘周期才達到累加門限,因此在這個讀取脈沖內(nèi),s0應(yīng)該采用的成型濾波移位寄存器組的值應(yīng)該是上一次更新時的值,兩組移位寄存器組之間相差了一個系統(tǒng)時鐘周期。因此在計算時還要保留移位寄存器組的前一時刻的采樣值,這在FPGA中很好實現(xiàn),只要用系統(tǒng)時鐘對于data_array_new0~data_array_new15進行采樣即可。設(shè)采樣后的移位寄存器組為data_array0~data_array15,在成型濾波模塊輸入的數(shù)據(jù)讀取脈沖(對應(yīng)s15的數(shù)據(jù)讀取脈沖)有效時,其他各路s0~s14所對應(yīng)的移位寄存器組應(yīng)根據(jù)s0~s14的最高位來判斷,若最高位為0,則移位寄存器組則采用data_array_new0~data_array_new15,否 則 就 采 用data_array0~data_array15作為成型濾波計算時應(yīng)用的移位寄存器數(shù)組。
采用上述小節(jié)2所述的方法,利用ISE和ModelSim對于并行成型濾波器進行仿真,成型濾波處理前后的數(shù)據(jù)分別如圖3(a)和(b)所示。由圖3可以看出,文中所述成型濾波方法能夠準確的對于輸入數(shù)據(jù)進行成型濾波處理。
圖3 成型濾波仿真結(jié)果
文中詳細闡述了一種新型的高速并行成型濾波的FPGA實現(xiàn)方法,該方法結(jié)合系統(tǒng)的群時延特性,構(gòu)造成型濾波實現(xiàn)的并行結(jié)構(gòu),利用數(shù)據(jù)時鐘相位對于查找表進行尋址,能夠靈活的實現(xiàn)變速率采樣,使該種方法能夠適應(yīng)現(xiàn)代通信系統(tǒng)對于高速可變數(shù)據(jù)速率的處理要求,具有廣泛的應(yīng)用前景。
參考文獻:
[1]孫京蕾.QAM調(diào)制技術(shù)研究[D].南京:東南大學,2012.
[2]王志遠.平方根升余弦濾波器的FPGA實現(xiàn)[J].中國新技術(shù)新產(chǎn)品,2012(6):23.
[3]王相龍.多制式寬帶通信信號模擬系統(tǒng)軟件設(shè)計與實現(xiàn)[D].成都:電子科技大學,2014.
[4]季偉,周學軍,林海濤,等.基帶成形濾波器設(shè)計與實現(xiàn)[J].艦船電子工程,2012,32(2):131-133.
[5]牛明.基于脈沖成型的OFDM系統(tǒng)峰均比抑制[J].自動化技術(shù)與應(yīng)用,2016,35(3):42-46.
[6]王頂,劉智朋,趙頤軒.基帶成形濾波器的數(shù)字設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2012,20(13):95-97.
[7]李艷萍,周勝源.高速成形濾波器的研究與實現(xiàn)[J].電子設(shè)計工程,2012,20(8):103-105.
[8]王戰(zhàn)強,王大慶.高速通信QPSK數(shù)字調(diào)制器設(shè)計與實現(xiàn)[J].空間電子技術(shù),2015(6):50-57.
[9]包可佳,唐琦.基于FPGA的高碼率QPSK信號產(chǎn)生方法[J].信息通信,2015(9):82-84.
[10]吳鳳輝,遲永鋼,鄭宇希,等.一種改進DA算法的成型濾波器設(shè)計[J].哈爾濱工業(yè)大學學報,2016,48(5):32-35.
[11]徐蘭天.EDGE中8PSK調(diào)制的軟件實現(xiàn)[J].電子產(chǎn)品世界,2013(10):31-33.
[12]梁堯,周智勛,何麗.一種基于查找表的FIR成型濾波實現(xiàn)裝置[J].太赫茲科學與電子信息學報,2015,13(1):102-105.
[13]孫潔朋.多體制通信基帶信號產(chǎn)生模塊的設(shè)計與實現(xiàn)[D].成都:電子科技大學,2014.
[14]盧佳欣,周志剛,王麗云,等.E波段微波傳輸系統(tǒng)發(fā)送濾波模塊的FPGA設(shè)計[J].高技術(shù)通訊,2014,24(9):922-927.
[15]馮佳梅,鄒剛,朱南,等.基于可變帶寬多速率處理算法的設(shè)計與實現(xiàn)[J].數(shù)字電子世界,2015(8):325-326,332.
[16]田之俊,段旭.高速可變速率QPSK模擬源設(shè)計與實現(xiàn)[J].無線電工程,2015,45(11):77-80.
[17]樊昌信,曹麗娜.通信原理[M].北京:國防工業(yè)出版社,2014.