摘 要: 在深入研究移動DTV國家標(biāo)準(zhǔn)的基礎(chǔ)上,對調(diào)制系統(tǒng)進行了設(shè)計規(guī)劃,并對信道調(diào)制的星座映射、系統(tǒng)信息插入、幀體數(shù)據(jù)處理、PN序列插入的幀形成模塊和成形濾波模塊進行了設(shè)計與仿真,驗證了其在公交站牌系統(tǒng)上的正確性。
關(guān)鍵詞: 移動DTV;TDS-OFDM;IFFT;FPGA
1 星座映射的設(shè)計與實現(xiàn)
基于FPGA的星座映射模塊設(shè)計接口定義如下:
clk_bitx2:系統(tǒng)比特時鐘2倍周期的輸入時鐘;
QAM_para:控制模塊的參數(shù)信號;
constellation:星座映射模式;
data_in_en:輸入數(shù)據(jù)有效信號;
data_v_in:輸入數(shù)據(jù),數(shù)據(jù)寬度為6位;
data_I:輸出I路數(shù)據(jù),數(shù)據(jù)寬度為16位;
data_Q:輸出Q路數(shù)據(jù),數(shù)據(jù)寬度為16位;
data_out_en:輸出數(shù)據(jù)有效信號。
在Windows XP和Quartus DE2的軟件環(huán)境下,在Altera公司的DE2平臺的FPGA上綜合之后,其消耗資源情況如下:占用了90個觸發(fā)器,138個四輸入查找表,69個Slices,占用1個片內(nèi)存儲塊Block RAM,不到總量的1%。
2 系統(tǒng)信息插入的設(shè)計與實現(xiàn)
2.1 系統(tǒng)信息
本系統(tǒng)中預(yù)設(shè)了64種不同的系統(tǒng)信息模式,并采用擴頻技術(shù)傳輸。這64種系統(tǒng)信息在擴頻前可以用6個信息位(s5s4s3s2s1s0)來表示,其中s5為MSB,定義如下:s3s2s1s0:編碼調(diào)制模式;s4:交織信息;s5:保留[1]。
該6 bit擴頻前的系統(tǒng)信息將采用擴頻技術(shù)擴為32 bit長的系統(tǒng)信息矢量,即用長度為32 bit的Walsh序列和長度為32 bit的隨機序列來映射保護[2]。國家標(biāo)準(zhǔn)中已經(jīng)給出了擴頻后的64個32 bit的系統(tǒng)信息矢量,將這32 bit采用I、Q相同的4QAM調(diào)制映射成為32個復(fù)符號,再加上4個幀體模式符號[3],得到了36個系統(tǒng)信息符號。在本設(shè)計中幀體模式C=3 780,“1111”4個bit也采用I、Q相同的4QAM映射為4個復(fù)符號,由于這種映射模式是2位到2位的映射,所以把它擴展為8 bit的符號,用補碼表示。映射后的4個幀體模式指示符號在前,32個調(diào)制和碼率等模式指示符號在后。該36個系統(tǒng)信息符號通過復(fù)用模塊與信道編碼后的數(shù)據(jù)符號復(fù)合成幀體數(shù)據(jù)[4]。
2.2 系統(tǒng)信息插入的實現(xiàn)
系統(tǒng)信息插入模塊的端口定義[5]為:
tps_in[5:0]:輸入的系統(tǒng)信息位為6 bit并行數(shù)據(jù);
data_Qed:輸入數(shù)據(jù),經(jīng)過QAM映射后的32位幀體數(shù)據(jù),高16位為實部,低16位為虛部;
data_valid_in:輸入數(shù)據(jù)有效信號;
clk:模塊工作時鐘,也是數(shù)據(jù)輸入時鐘;
rst:復(fù)位信號,低電平有效,等于0時可以復(fù)位控制模塊的寄存器值;
dout_start:輸出3 780個連續(xù)數(shù)據(jù)的起始脈沖信號,持續(xù)1個時鐘周期;
dout_en:輸出3 780個連續(xù)數(shù)據(jù)的有效使能信號;
dout:輸出數(shù)據(jù),高16位為實部,低16位為虛部; 系統(tǒng)信息插入模塊[6]仿真波形圖如圖1所示。
在Windows XP和Quartus DE2的軟件環(huán)境下,在Altera公司的DE2平臺的FPGA上綜合之后,其消耗資源情況如下:占用了115個Slices,187個觸發(fā)器,208個四輸入查找表,占用片內(nèi)Block RAM資源在6%以下。
本文設(shè)計的是幀頭模式1,長度為420,為OFDM幀體長的1/9。前同步緩沖的長度取82,后同步緩沖的長度取83[7]。
PN幀頭數(shù)據(jù)插入[8]模塊的結(jié)構(gòu)定義如下:
clk:模塊工作時鐘,是系統(tǒng)的符號時鐘;
data_in:32位的輸入數(shù)據(jù),數(shù)據(jù)的高16位為實部,低16位為虛部;
data_in_en:輸入有效數(shù)據(jù)使能信號,高電平有效;
data_in_start:輸入有效數(shù)據(jù)起始信號,高電平有效;
PN_mode:插入PN序列的模式指示信號;
dout_start:輸出有效數(shù)據(jù)起始信號,高電平有效;
dout_en:輸出有效數(shù)據(jù)使能信號,高電平有效;
dout:32位輸出數(shù)據(jù),數(shù)據(jù)的高16位為數(shù)據(jù)實部,低16位為數(shù)據(jù)虛部[9]。
PN幀頭數(shù)據(jù)插入模塊主要完成OFDM調(diào)制的3 780個數(shù)據(jù)和PN幀頭的數(shù)據(jù)拼接。具體實現(xiàn)時,輸入的3 780個數(shù)據(jù)首先緩存在RAM中,當(dāng)所需要的PN頭數(shù)據(jù)產(chǎn)生完以后,啟動讀RAM操作,把緩存數(shù)據(jù)輸出。PN幀頭數(shù)據(jù)插入模塊硬件實現(xiàn)結(jié)構(gòu)框圖[10]如圖2所示。在Windows XP和Quartus DE2的軟件環(huán)境下,在Altera公司的DE2平臺的FPGA上綜合之后,其消耗資源情況如下:占用了145個Slices,207個觸發(fā)器,273個四輸入查找表,占用片內(nèi)Block RAM資源在6%以下。
3 幀體數(shù)據(jù)處理的設(shè)計
3.1 傅里葉變換在OFDM系統(tǒng)中的應(yīng)用[11]
設(shè)一個時間信號s(t)的抽樣函數(shù)為s(k),其中k=0,1,2,…,N-1,則s(k)的離散傅里葉變換(DFT)為:
對上式中S(t)進行抽樣,抽樣間隔為T,假定在一個碼元周期內(nèi)T內(nèi)含有N個抽樣值。由于OFDM信號的產(chǎn)生首先在基帶上實現(xiàn),之后通過上變頻產(chǎn)生輸出信號,因此基帶處理時可令上式簡化為[13]:
由此可知,OFDM系統(tǒng)的調(diào)制可以由IDFT來實現(xiàn)。同理,它的解調(diào)可以用離散傅里葉變換實現(xiàn),大大簡化了系統(tǒng)實現(xiàn)的復(fù)雜度。
下面討論如何用DFT來實現(xiàn)IDFT。令X(k)是N點離散系列x(n)的DFT,于是有下面2式成立:
把X(k)看作OFDM調(diào)制系統(tǒng)的輸入信號,則它的IDFT就是系統(tǒng)調(diào)制后的輸出,所以可以通過正向的傅里葉變換來實現(xiàn)IDFT,可分3個步驟來實現(xiàn)[14]:(1)將長度為N的輸入數(shù)據(jù)取共軛;(2)對N點數(shù)據(jù)做正向傅里葉變換;(3)把得到的結(jié)果求共軛,再乘以系數(shù)1/N。若要完成N點傅里葉變換,需要N×N次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法。N值較大時,計算量會相當(dāng)驚人,可能會因為計算量過大,占用系統(tǒng)大部分的資源并造成較長的延時,最終導(dǎo)致系統(tǒng)無法實時。
3.2 3 780點快速傅里葉變換算法
3.2.1 算法概述
目前,關(guān)于FFT的算法主要有基于基-2和基-4[15]兩種,從軟件仿真到硬件實現(xiàn)已有多種成熟的算法。圖3所示為3 780點FFT算法程序流程圖。
將輸入的3 780個復(fù)數(shù)數(shù)據(jù)進行串轉(zhuǎn)并,進行下標(biāo)映射,從原始數(shù)據(jù)中以60為間隔抽取數(shù)據(jù),組成了60組63個數(shù)1組的新序列,用63點的素因子算法作FFT運算,再進行第1次素因子算法的整序,然后將3 780個數(shù)據(jù)乘以相應(yīng)的旋轉(zhuǎn)因子,做60點的素因子算法,進行第2次由于素因子分解所需的整序,最后進行因混合基分解算法所需要的整序[16]。
利用Matlab自帶的函數(shù),輸入采用了2.4 Hz和3.5 Hz的正弦信號,將最終得到的仿真圖和Matlab自帶的函數(shù)計算比較,可以驗證本設(shè)計的正確性。
3.2.2 算法實現(xiàn)
3 780點FFT算法實現(xiàn)模塊的端口定義如下:
clk:系統(tǒng)的符號時鐘;
clk_working:工作時鐘,也是系統(tǒng)比特時鐘;
reset:系統(tǒng)復(fù)位信號,低電平有效,完成系統(tǒng)初始化和復(fù)位;
data_in_I、data_in_R:輸入數(shù)據(jù)的實部、虛部,16位位寬;
data_in_valid:輸入數(shù)據(jù)有效起始信號,高電平有效,持續(xù)1個輸入時鐘周期,表示從下一個時鐘沿開始為3 780個有效數(shù)據(jù)輸入;
dout_start:輸出有效數(shù)據(jù)起始信號,高電平有效,持續(xù)期為1個輸出時鐘周期,表示下一個時鐘開始的3 780個數(shù)據(jù)為輸出有效數(shù)據(jù);
dout_valid:輸出數(shù)據(jù)有效使能信號,高電平有效[18];
dout_R、dout_I:輸出復(fù)數(shù)數(shù)據(jù)的實部、虛部,16位位寬。
3 780點FFT模塊的硬件實現(xiàn)如圖4所示。clk_work-ing是系統(tǒng)的比特時鐘,每個上升時鐘沿到來,串行數(shù)據(jù)讀寫1次,小N點WFTA模塊內(nèi)部移位計算1次。為了解決由于雙口RAM讀或?qū)懙奶S性[19],Winograd小N DFT算法是整個3 780點FFT實現(xiàn)的基礎(chǔ),3 780點FFT被分解成幾個小點的DFT,最終通過Winograd小N DFT算法來實現(xiàn)的。
經(jīng)過Matlab工具驗證算法設(shè)計的正確性之后,在Quartus DE2軟件環(huán)境下編寫了Verilog HDL代碼,并進行硬件仿真。輸入data_in_I和data_in_R為2路16位寬的隨機數(shù),關(guān)鍵數(shù)據(jù)的仿真波形如圖5所示。可以看出,存儲器的讀寫控制完全達到了預(yù)期設(shè)計效果。把輸出數(shù)據(jù)導(dǎo)入Matlab進行分析,當(dāng)輸出數(shù)據(jù)為16 bit時,模塊的信噪比達到了56.8 dB,完全符合標(biāo)準(zhǔn)45 dB~60 dB的要求。對信噪比有更高要求的應(yīng)用場合,可以采用擴展位寬來設(shè)計。要完成IFFT運算,根據(jù)兩者之間的關(guān)系,只需對該模塊的輸入和輸出分別取共軛,就可以完成整體數(shù)據(jù)處理模塊的功能。
理論上分析本設(shè)計的實數(shù)乘法和加法數(shù)量已逼近4 096點FFT,但是在FPGA具體實現(xiàn)時,小N點的WFTA運算消耗了較多的邏輯單元,與4 096點FFT采用蝶形運算單元完成相比較,前者消耗的邏輯單元較4 096點FFT多出不少。整個仿真在Windows XP和Quartus DE2的軟件環(huán)境下,在Altera公司的DE2平臺的FPGA上綜合之后消耗資源情況比較如表1所示。
本設(shè)計沒有涉及交織模塊的編寫,但完成了一個相對完整的DMB-T的調(diào)制系統(tǒng),其中3 780個子載波的TDS-OFDM調(diào)制是移動DTV系統(tǒng)的核心模塊。利用FFT在OFDM中的應(yīng)用以及實現(xiàn),針對移動DTV系統(tǒng)中特有的3 780點IFFT,綜合利用了Cooley-Tukey算法、Winograd算法、素因子算法3種算法各自的特點,考慮了算法的復(fù)雜度、運算的速度、資源的消耗。本設(shè)計采用了一種新的算法,通過了Matlab驗證和基于FPGA的仿真。本設(shè)計采用了Winograd小N DFT算法的硬件實現(xiàn),通過16次迭代的方法完成了公交車站牌系統(tǒng)的移動DTV的核心模塊仿真設(shè)計。
參考文獻
[1] 姜秀華,張永輝,章文輝.數(shù)字電視原理與應(yīng)用[M].北京:人民郵電出版社,2003:149-154.
[2] 中華人民共和國國家質(zhì)量監(jiān)督檢驗檢疫總局,中國國家標(biāo)準(zhǔn)化管理委員會.中華人民共和國國家標(biāo)準(zhǔn)——數(shù)字電視地面廣播傳輸系統(tǒng)幀結(jié)構(gòu)、信道編碼和調(diào)制[M]. 2007.
[3] 汪裕民.OFDM關(guān)鍵技術(shù)與應(yīng)用[M].北京:機械工業(yè)出版社,2006.
[4] 北京凌訊華業(yè)科技有限公司,清華大學(xué).DMB-TH地面數(shù)字電視傳輸技術(shù)白皮書(第2版)[M].2006.
[5] 趙堅勇.數(shù)字電視技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005:150-152.
[6] RODGER E Z,ROGER L P.數(shù)字通信基礎(chǔ)(第2版)[M]. 尹長川,等譯.北京:機械工業(yè)出版社,2005.
[7] 文紅,符初生,周亮.LDPC碼原理與應(yīng)用[M].成都:電子科技大學(xué)出版社,2006.
[8] 佟學(xué)儉,羅濤.OFDM移動通信技術(shù)原理與應(yīng)用[M].北京:機械工業(yè)出版社,2005.
[9] 王誠,薛小剛,鐘信潮.FPGA/CPLD—Xilinx ISE使用詳解[M].北京:人民郵電出版社,2005:1-341.
[10] YANG Zhi Ying,HU Yu Peng,PAN Chang Yong,et al. Design of a 3780-point IFFT processor for TDS-OFDM[J]. IEEE Tras on Broadcasting,2002,48(01):57-59.
[11] 谷萩隆嗣.快速算法與并行信號處理[M].北京:科學(xué)出版社,2003.
[12] 胡廣書.數(shù)字信號處理(第2版)[M].北京:清華大學(xué)出版社,2003:195-198.
[13] BURRUS C S,PARKS T W.DFT/FFT and convolution algorithms theory and implementation[M].Canada:A Wlley-Intersclence Publication,1985.
[14] 蔣增榮,曾泳泓,余品能.快速算法[M].長沙:國防科技大學(xué)出版社,1993.
[15] HARVERY F.S.An introduction to programming the winograd fourier transform algorithm(WFTA)[J].IEEE Tras on Acoustics,Speech,and signal processing,April 1977(2).
[16] BURRUS C S,PETER W E.An in-place,in-order prime factor FFT algorithm[J].IEEE Trans,Acoust,Speech,Signal Processing,1982,29(1):4-6.
[17] 陳懷琛.數(shù)字信號處理教程MATLAB釋義與實現(xiàn)[M].北京:電子工業(yè)出版社,2004:90-105.
[18] 余濤.DVB-H信道編碼調(diào)制的設(shè)計及其FPGA實現(xiàn)研究[D].成都:電子科技大學(xué),2006.
[19] RAY A.A survey of CORDIC algorithms for FPGA based computers.In Proceedings of the 1998 ACM/SIGDA sixth international symposium on field programmable gate arrays,1998:191-200.