文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)05-0098-03
在長期演進(jìn)(LTE)系統(tǒng)中,上行控制信息(UCI)包括信道質(zhì)量指示信息CQI/PMI和混合自動(dòng)請(qǐng)求重傳應(yīng)答信息HARQ-ACK等,輸入編碼器的比特?cái)?shù)目較少。同時(shí)為了保證一定的數(shù)據(jù)傳輸可靠性,在很大程度上依賴于有效的信道編碼方法。Reed-Muller是一種能夠糾正多個(gè)差錯(cuò)的線性分組碼[1]。這種碼的構(gòu)造比較簡單,結(jié)構(gòu)特性也相當(dāng)豐富,在實(shí)際工程中得到廣泛的應(yīng)用,特別是應(yīng)用于編碼比特較少的情況。但是與經(jīng)典的RM碼相比,3GPP LTE協(xié)議[2]中采用的是一種基于RM碼的超碼編碼方式,編碼矩陣還采用了更復(fù)雜的交織技術(shù),同時(shí)也增加了更多的掩碼序列,這使得接收端的譯碼實(shí)現(xiàn)難度大大的增加,因此需要研究出一種有效的譯碼算法。
數(shù)字信號(hào)處理芯片DSP,以其數(shù)字器件特有的穩(wěn)定性、可重復(fù)性、可大規(guī)模集成、特別是可編程性和易于實(shí)現(xiàn)自適應(yīng)處理等特點(diǎn),給數(shù)字信號(hào)處理的發(fā)展帶來巨大機(jī)遇,并且使得信號(hào)處理手段更加靈活,功能更加復(fù)雜,應(yīng)用范圍也擴(kuò)展到移動(dòng)通信的各個(gè)領(lǐng)域。近年來DSP芯片功能越來越強(qiáng)大,特別是TI公司推出的DSP芯片TMS320C64x,片內(nèi)擁有8個(gè)并行處理單元,體系結(jié)構(gòu)采用甚長指令字(VLIW)結(jié)構(gòu),最高時(shí)鐘頻率可以達(dá)到300 MHz[3]。在這些強(qiáng)大的功能支持下,使得信號(hào)處理研究的重點(diǎn)在很大程度上可以放在軟件算法上,所以在TD-LTE綜合測(cè)試儀表系統(tǒng)中采用了這款芯片。本文重點(diǎn)研究了RM譯碼算法在TMS320C64x芯片上的軟件實(shí)現(xiàn)。
1 LTE系統(tǒng)中Reed-Muller編碼
在TD-LTE上行發(fā)送端,即UE端,當(dāng)輸入序列長度在編碼器范圍內(nèi)時(shí),需要對(duì)上行控制信息UCI(包括HARQ-ACK和CQI)進(jìn)行RM編碼。由于承載UCI的信道包括PUSCH和PUCCH,故在這兩個(gè)信道處理過程中采用不同的RM編碼生成矩陣,在PUSCH上進(jìn)行(32,11)編碼過程,而在PUCCH上進(jìn)行(20,13)編碼過程[2]。3GPP TS36.212協(xié)議上的編碼矩陣是由交織之后的Walsh碼和基本的掩碼序列組成。其中(32,11)編碼矩陣是由一階Reed-Muller碼和5個(gè)基本的掩碼序列進(jìn)行行交織而得到的,而(20,13)編碼矩陣是由一階Reed-Muller碼和7個(gè)基本的掩碼序列進(jìn)行行交織后對(duì)后12行進(jìn)行打孔而得到的。具體的編碼公式為:
式(1)中On表示輸入比特;Mi,n表示(32,11)或(20,13)編碼表;bi表示編碼輸出比特,O表示輸入編碼器比特長度。
編碼入口參數(shù):TxPUSCHCQIDataIn,TxQ_cqi,TxPUSCH
CQIDataout,其中編碼矩陣M在CCS3.3中直接存儲(chǔ)_PUSCHRMM和_PUCCHRMM。
2 RM譯碼算法的仿真與選擇
Reed-Muller碼是一種線性分組碼,可以利用冗余比特對(duì)接收比特進(jìn)行檢錯(cuò)和糾錯(cuò)。對(duì)于線性分組碼,盡管碼的生成可以高效地實(shí)現(xiàn),但一般線性分組碼的譯碼問題卻一直難以解決。為此,參考文獻(xiàn)[4]提出一種全搜索算法,其實(shí)質(zhì)是一種最大似然ML算法,基本思想是:在接收端將所有的碼字都進(jìn)行編碼,然后將編碼后的所有碼字與接收到的碼字進(jìn)行比較,找出最相似的碼字作為譯碼結(jié)果,具體方法為對(duì)于(32,11)或(20,13)RM譯碼,將2 048或8 192組長度為11或13的比特序列進(jìn)行與發(fā)送端相同的編碼,得到2 048或8 192組長度為32或20的比特序列, 然后將接收到的比特序列分別減去這2 048或8 192組比特序列并統(tǒng)計(jì)非0元素的個(gè)數(shù),即求相關(guān)值。這種算法存在兩方面的問題:一是需要對(duì)所有可能的編碼序列進(jìn)行編碼,運(yùn)算量過大;二是要對(duì)每一組碼字序列開辟存儲(chǔ)空間,占用過多的內(nèi)存空間。
通過研究可知參考文獻(xiàn)[5]和參考文獻(xiàn)[6]提出的基于軟判決FHT譯碼算法,將接收到的碼字進(jìn)行簡單的雙極性化處理:若大于0則判為1,否則判為-1。這是因?yàn)楣_(dá)碼矩陣是由1與-1組成的,這樣處理便于后面的FHT。然而在TD-LTE無線綜合測(cè)試系統(tǒng)中,eNodeB端進(jìn)行解調(diào)解擾處理后的數(shù)據(jù)為軟信息,所以本文主要對(duì)輸入的軟信息進(jìn)行RM譯碼處理。
圖1為在加性高斯白噪聲信道AWGN(Additive White Gaussian Noise)下對(duì)全搜索算法和軟判決FHT算法分別在PUSCH和PUCCH信道中的誤比特率進(jìn)行仿真比較。仿真結(jié)果表明:在同等情況下,基于快速哈達(dá)碼變換的軟判決算法的性能要比全搜索算法性能高2~3 dB,并且前者的運(yùn)算效率也遠(yuǎn)大于后者。同時(shí)可以看出,在PUSCH信道中進(jìn)行的(32,11)RM譯碼相對(duì)于在PUCCH信道中進(jìn)行的(20,13)RM譯碼有高達(dá)4 dB的編碼增益,這是因?yàn)椋?0,13)RM編碼矩陣是由(32,11)的編碼矩陣進(jìn)行打孔并增加兩列掩碼序列得到的,根據(jù)參考文獻(xiàn)[7],編碼矩陣的打孔和增加掩碼序列都將損失一定的編碼增益,該仿真結(jié)果驗(yàn)證了理論的正確性。
3 RM譯碼算法的DSP實(shí)現(xiàn)
3.1硬件簡介
TMS320C6000是最初主要為移動(dòng)通信基站的信號(hào)處理而推出的超級(jí)處理芯片,200 MHz時(shí)鐘的C64x完成2 048點(diǎn)定點(diǎn)FFT的時(shí)間只需要66 ?滋s,比傳統(tǒng)DSPs要快一個(gè)數(shù)量級(jí),因此在測(cè)試儀表的開發(fā)領(lǐng)域有廣闊的應(yīng)用前景。C64x系列DSP最主要的特點(diǎn)是在體系結(jié)構(gòu)上采用了VelocoTI甚長指令集VLIW(Very Long Instruction Word)。在VLIW體系結(jié)構(gòu)的DSP中,是由一個(gè)超長的機(jī)器指令字來驅(qū)動(dòng)內(nèi)部的多個(gè)功能單元。由于每條指令的字段之間是相互獨(dú)立的,故可以單周期發(fā)射多條指令,從而實(shí)現(xiàn)更高的指令級(jí)并行效率。CPU采用哈佛結(jié)構(gòu),程序總線與數(shù)據(jù)總線分開,取指令與執(zhí)行指令可并行運(yùn)行。程序總線寬度為256 bit,每一次取指令操作都是取8條指令,稱為一個(gè)取指包。C64x系列DSP芯片的大容量、高運(yùn)算能力等這一些優(yōu)點(diǎn)使其毫無疑問地在無線基站、終端等場(chǎng)合下得到廣泛的應(yīng)用,特別是運(yùn)算精度能滿足綜合測(cè)試儀表的開發(fā)條件。
3.2 RM譯碼算法處理流程
基于快速哈達(dá)碼FHT變換的RM譯碼是利用編碼表的組成原理,求Hadamard矩陣與接收碼字的相關(guān)值,從而根據(jù)相關(guān)值特性進(jìn)行判決譯碼。UE通過PUSCH或PUCCH傳輸上行控制信息UCI,在網(wǎng)絡(luò)端進(jìn)行解調(diào)、解擾及解信道交織(僅在PUSCH)后得到的是軟信息(16 bit位置表示1 bit軟信息)。其具體處理過程如圖2所示。由圖2可以看出RM譯碼實(shí)現(xiàn)過程主要包括五個(gè)部分:雙極性化、解交織、消掩碼、Hadamard變換以及譯碼判決。基于此,本文提出的一種實(shí)現(xiàn)方案輸入輸出變量及調(diào)用格式如表1所示。
調(diào)用格式:Turbo_Code(int*,int,int*,int,int),其中RxDecode_UCI_DataIn表示輸入序列的首地址;RxRMInLen表示輸入序列長度;Rx Decode_UCI_DataOut表示譯碼輸出序列首地址;RxO_UCI表示譯碼輸出序列長度;ChannelFlag用來區(qū)分信道,其中ChannelFlag=0表示PUSCH,ChannelFlag=1表示PUCCH。
3.3 RM譯碼算法程序?qū)崿F(xiàn)
接收端工程中,根據(jù)Channel Flag判定是調(diào)用PUSCH譯碼過程還是PUCCH譯碼過程,原因是PUSCH譯碼輸入碼字長度為32,而PUCCH譯碼輸入碼字長度為20,所以在PUCCH譯碼條件下首先在輸入碼字后面添加12 bit的占位符,即添加12個(gè)半字的0,這是為了在進(jìn)行FHT變換時(shí)保證是2的整階乘次方。此外,需要預(yù)先開辟的存儲(chǔ)空間如表2所示。
3.3.1 軟合并、雙極性化及解交織過程
在PUSCH信道條件下,當(dāng)輸入軟信息長度大于32時(shí),需要對(duì)每32個(gè)軟信息進(jìn)行軟信息合并。具體過程為以起始的32 bit軟信息作為基準(zhǔn),地址偏移32×2=64(因?yàn)檩斎胄蛄惺且悦總€(gè)軟信息占16 bit位置而存儲(chǔ)的)取下一個(gè)32 bit的軟信息,將前32 bit的軟信息與當(dāng)前32 bit的軟信息進(jìn)行加權(quán)平均之后存儲(chǔ)在_SoftCombineData,作為下一個(gè)32 bit軟信息合并的基準(zhǔn)值。如此循環(huán)整字?jǐn)?shù)次,對(duì)于整32 bit的剩余比特進(jìn)行單獨(dú)處理如下:將剩余比特與前32 bit的軟信息進(jìn)行加權(quán)平均,然后存儲(chǔ)在_SoftCombineData,循環(huán)剩余比特?cái)?shù)次。
將接收的軟信息根據(jù)其符號(hào)位進(jìn)行雙極性化[8], 以便于后面的FHT變換操作。然后按照下列交織表進(jìn)行解交織處理。
<31,0,20,1,2,21,3,4,22,5,6,23,7,8,9,24,19,25,10,11,12,13,26,27,14,15,28,16,17,18,29,30>
3.3.2 消掩碼處理
將解交織之后的序列_RxRMtemp0或_RxRMtemp1分別與消掩表的每一行進(jìn)行內(nèi)積操作,具體過程如下,每次取消掩表的32 bit數(shù)據(jù),根據(jù)這32 bit數(shù)據(jù)來決定解交織之后序列的符號(hào),從而內(nèi)循環(huán)32次,然后取消掩表的下一行,如此循環(huán)32次或者128次。
3.3.3 FHT變換
本文通過研究分析Hadamard矩陣的性質(zhì),將消掩碼處理之后的32個(gè)或128個(gè)長度為32 bit的矩陣與32階Hadamard矩陣相乘,轉(zhuǎn)化為5級(jí)蝶形運(yùn)算,從而大大減小了處理的運(yùn)算復(fù)雜度??梢赃@樣計(jì)算:每一級(jí)進(jìn)行加法和減法各16次,從而得到總的運(yùn)算量為16×2×5=160次。
3.3.4 譯碼判決
在進(jìn)行FHT變換后的1 024(32×32)或者4 096(128×32)個(gè)軟信息比特中,找出絕對(duì)值最大值,并且記錄其在矩陣中的行序號(hào)和列序號(hào)。由于編碼矩陣中M0為全1序列,它對(duì)相關(guān)值矩陣的影響是改變矩陣中所有值的符號(hào),因此根據(jù)絕對(duì)值最大數(shù)的實(shí)際符號(hào)來譯第1 bit,即:正號(hào)時(shí),譯為0;負(fù)號(hào)時(shí),譯為1。由于在發(fā)送端進(jìn)行編碼時(shí)第2~6 bit與Reed-Muller碼相乘,故絕對(duì)值最大值列序號(hào)對(duì)應(yīng)的二進(jìn)制形式即為第2~6 bit。由于在發(fā)送端進(jìn)行編碼時(shí)第7~11 bit與掩碼相乘,故絕對(duì)值最大值行序號(hào)對(duì)應(yīng)的二進(jìn)制形式即為第7~11 bit。
4 性能分析
在進(jìn)行DSP軟件設(shè)計(jì)時(shí),需要對(duì)程序進(jìn)行優(yōu)化,盡量減少或者消除程序中的“NOP”指令,特別是循環(huán)體內(nèi)的“NOP”指令。通過在CCS3.3上進(jìn)行程序的仿真運(yùn)行,在理想信道環(huán)境下,統(tǒng)計(jì)得到各種條件下的譯碼仿真執(zhí)行結(jié)果,如表3所示。
表3僅列舉了幾種典型的數(shù)據(jù)長度,且不失一般性,總體性能基本不會(huì)受輸入數(shù)據(jù)長度的約束。通過分析可以看出:PUSCH_100與PUSCH_32相比,處理時(shí)間主要耗費(fèi)在軟信息合并處理上,而PUCCH_20與PUSCH_32相比,由于消掩表為128×32的矩陣,在進(jìn)行消掩碼和FHT變換時(shí),處理時(shí)間是后者的4倍,因此處理時(shí)間相對(duì)較長。TMS320C64x芯片的主頻為1GHz,一個(gè)指令周期耗時(shí)1 ns,所以本文提出的譯碼算法DSP實(shí)現(xiàn)可以達(dá)到約兆比特每秒的速率,且誤比特率相當(dāng)?shù)?,滿足LTE綜合測(cè)試系統(tǒng)的性能要求。
本文從RM編碼理論出發(fā),根據(jù)TD-LTE綜合測(cè)試系統(tǒng)的特點(diǎn),通過Matlab鏈路級(jí)仿真比較,為LTE系統(tǒng)選擇了一種最優(yōu)的FHT譯碼算法,提出了一種簡單有效的RM譯碼實(shí)現(xiàn)算法,特別是運(yùn)用蝶型運(yùn)算對(duì)FHT變換運(yùn)算進(jìn)行了大量簡化,并對(duì)其在TMS320C64xDSP中進(jìn)行實(shí)現(xiàn)。重點(diǎn)描述了FHT變換譯碼算法在DSP中的實(shí)現(xiàn)方法,通過程序在CCS3.3上運(yùn)行仿真,證明本算法在高斯白噪聲信道(AWGN)環(huán)境下具有較低的誤碼率和較高的譯碼運(yùn)行速率,能夠滿足TD-LTE系統(tǒng)的性能需求。由于其實(shí)現(xiàn)的可行性和高效性,該實(shí)現(xiàn)方案已應(yīng)用于TD-LTE無線綜合測(cè)試儀表的開發(fā)當(dāng)中。
參考文獻(xiàn)
[1] FREUDENBERGER J(著).編碼理論——算法、結(jié)構(gòu)和應(yīng)用[M].北京:人民郵電出版社,2009:42-48.
[2] 3GPP TS 36.212 v9.0.0 evolved universal terrestrial radio access(E-UTRA) multiplexing and channel coding (Release 9)[S]. 2009-12.
[3] Texas Instruments Incorporated.TMS320C6000系列DSP編程工具與指南[M].田黎育,何佩琨,朱夢(mèng)宇,譯.北京:清華大學(xué)出版社,2006:32-50.
[4] 吳湛擊,吳偉陵.3GPP中的Reed-Muller編譯碼算法[J]. 電子學(xué)報(bào),2005,33(1):147-149.
[5] BRUNASHEV M V, DUMER I. Error exponents for two soft-decicision decoding algorithms of reed-muller code[J]. IEEE Transactions on Iformation Theory,2009,55(9):4108-4118.
[6] DUMER I. Soft-decision decoding of reed-muller codes:a simplified algorithm[J]. IEEE Transactions on Information Theory, 2006,52(3):956-963.
[7] JONES A E, WILKINSON T A.Performance of reed-muller codes and a maximum-likelyhood decoding algorithm for OFDM[J]. IEEE Transaction On Communication, 1999,47(7):949-952.
[8] Prokis John G(著).數(shù)字通信(第五版)[M].張力軍,張宗橙, 鄭寶玉,等(譯)北京:電子工業(yè)出版社,2005:340-371.