文獻標識碼: A
文章編號: 0258-7998(2011)05-0060-04
ZEHAVI提出比特交織編碼調制BICM(Bit Interleaver coding Modulation)思想[1],即在編碼和調制之間引入交織。BICM通過犧牲一些歐式距離來提高漢明距離,使其在衰落信道下具有高度的魯棒性。交織的原理是打亂原始數據序列,使數據的相關性減弱,盡力分散突發錯誤,在譯碼時大大降低數據突發錯誤的影響。
3GPP LTE中物理上行鏈路共享信道PUSCH(Physi-
cal Uplink Shared Channel)上承載的信息包含預編碼矩陣指示PMI(Precoding Matrix Index)、秩指示RI(Rand Index)、CQI信道質量指示(channel quality indicator)和混合自動重傳請求應答HARQ-ACK(hybrid automatic repeat request acknowledgement)以及數據信息。為降低數據突發錯誤率,在幾路信息各自編碼后和調制間,引入了信道交織[2]。PUSCH信道交織采用的是分組交織,但與傳統的分組交織有較大差異。本文從DSP實際角度出發,針對PUSCH信道交織與解交織,提出了一種簡單的實現方案。
1 PUSCH信道交織
進入PUSCH信道交織是三路信息,為降低譯碼的錯誤率,在進行信道交織前,先將三路信息進行復用" title="數據復用">數據復用,然后再進行PUSCH信道交織。在用DSP具體實現時,把數據復用和信道交織放在一個模塊實現。
1.1 三路編碼后的數據復用
通過對上述公式的計算和理解,從節省程序代碼段和cycle數考慮,提出了一種簡單的實現方案,在放置RI時每行只需放置4列,每行放置的位置相同,在實現時,只需把原RI所占列的表1修改為表2,即可實現上述代碼。
(4)在交織表中放置CQI和數據信息:首先放置CQI信息,然后放置數據信息,在放置CQI和數據信息時,程序中必須考慮不能覆蓋RI的信息,具體見下節信道交織的DSP實現。
(6)交織表按列輸出即可實現交織。
2 信道交織與解交織算法的DSP實現
本系統選用TMS320C6455作為DSP芯片,該芯片是TI公司基于第三代先進Velovi TI超長指令字VLIW(Very Long Instruction Word)結構的高性能定點DSP[3]。其最高主頻達到了1.2 GHz,每個周期可以并行執行8條指令,處理速度最大可至8 000 MIPS,實現高速運算。TMS320C6455片內采用L1/L2兩級存儲器結構,L1包含相互獨立的32 KB的程序Cache(L1P)和32 KB的數據Cache(L1D),L2為2 MB的尋址空間,其片內存儲器容量是其他C64系列的二倍。
2.1 信道交織的DSP實現
在實現信道交織時,輸入的三路信息:RI、CQI/PMI和數據復用后的信息,HARQ經過編碼后直接到信道交織模塊,數據復用放到信道交織模塊實現。圖1給出PUSCH信道交織的程序實現流程。信道交織是比特進行交織,為便于尋址處理,需要把每個比特字節化。
三路信息實現比特字節化,利用TMS320C6455每個周期最多可并行執行8條指令,為節省Cycle,在比特字節化的循環體里,每次分別取出4 B的數據,在程序中利用A組寄存器和B組寄存器交替使用的方式,達到每個周期可以并行執行6條指令。利用B指令和LDB指令后的延遲“NOP”指令,使程序進行極大的優化。
在交織表中放置RI信息,根據對協議的理解,提出了一種簡單的實現方案。在放置RI信息過程中,采用三層循環實現:第一層為Qm行小向量是否填滿,第二層為該大行的4列是否填滿,第三層為大行數依次遞減,是否所有的RI已經放在交織表中。
在交織表中放置CQI信息,在放置時不能覆蓋RI的信息,即需要知道RI在交織表中占哪些位置。為確定RI在交織表中的位置,用RI編碼后的長度除以4×Qm,在程序中提出采用文獻[4]介紹的除法程序,該除法程序經優化后只占用35cycle。CQI的放置原理和RI相同,都是采用三層循環。只是放置時需要根據RI在交織表占用位置的不同情況進行放置。
在交織表中放置ACK信息,為便于程序的簡化,提出了一種簡單的實現方案,ACK放置在交織表中的位置是覆蓋CQI信息,為避免覆蓋多余的CQI,需明確ACK占交織表中哪些位置,用ACK編碼后的長度調用除法程序除以4×Qm,根據ACK在交織表中的具體情況進行放置。ACK的放置原理和RI相同,采用三層循環。
2.2 PUSCH解信道交織的DSP實現
PUSCH上的數據經過解調、解擾后是軟信息,每個軟信息占16 bit,解信道交織時無需對軟信息進行字節化。通過對協議TS36.212中PUSCH信道交織的理解,解信道交織的思想是首先恢復出交織表(注意恢復交織表時,列輸入行輸出),然后根據三路數據所放置的具體位置,再解出三路數據信息。在解交織時,為保證三路輸出的數據正確,需調用除法程序,具體步驟如下:
(1)根據高層的參數來確定交織表的列數Cmux和大行數R'mux。
(2)恢復交織表。按列進行輸入,在放置數據時,包含三層循環,第一層把Qm小行向量填滿,每一小行從起始位置偏移0~(Qm-1)×Cmux進行放置,直到把Qm小行放置完;第二層為大行數依次遞增,直到把R'mux大行的數據填滿;第三層為列數依次遞增,把Cmux列的數據填滿,每一列的處理方式相同。
(3)從交織表中取出RI的數據。在取RI數據時,采用三層循環進行實現:從最后一大行開始,第一層為取出列表二的值,根據該值確定其RI在交織表中列位置偏移,把Qm小行向量的RI數據從交織表取出;第二層為列表二中RI所占四列的數據是否取完;第三層為大行數依次遞減,直到把所有的RI信息取出。
(4)在交織時,ACK的數據覆蓋一部分CQI的數據,在解交織時,取出ACK的數據,同時在放置ACK的數據位置填0,即實現對CQI數據的打孔。根據ACK的長度確定ACK在交織表所占位置,從交織表中取出ACK的數據,其處理方式和RI相同,采用三層循環,在取出數據的同時,把相應的位置賦值為0。
(5)在解交織取出CQI的數據時,從交織表中取出的CQI數據的原理和RI相同,都是采用三層循環。只是取CQI數據時需要根據RI在交織表占用位置的不同情況進行。
3 性能分析
在TMS320C6455DSP軟件實現中,考慮該定點DSP具有每個周期最多可并行執行8條指令的特性。根據上節描述的信道交織與解交織的軟件實現流程,從節省cycle數和存儲空間角度出發,最大程度優化程序循環體,使用并行指令,利用一些指令后的延遲“NOP”指令[5]。根據不同的數據類型和數據的長度,通過程序仿真實現,得到統計結果如表3。
表3中PUSCH解信道交織時得到的數據是軟信息,每一個軟信息占16 bit。給出的三路數據各自的長度雖然比較特別,但不失一般性。在交織時由于處理的是比特交織,需要把比特進行字節化,在交織完后,需要字節比特化級聯。而解交織處理的是軟信息,無需此過程,所執行的周期明顯的減少。雖然給出簡化方案的運算量較大,但是由于采用的TMS320C6455的主頻為1 GHz,在具體實現時,完全可以滿足實時需求。
本文從理論上詳細分析了PUSCH信道交織的過程,PUSCH信道交織的交織表的行、列是由高層來的參數確定,與傳輸的三路數據的長度無關。根據PUSCH上的三路數據采用特殊的分塊交織,提出了一種簡單的方案實現PUSCH上數據復用和信道交織的模塊與PUSCH解信道交織和數據復用的模塊。將DSP程序輸出的結果與MATLAB程序輸出的結果進行比較,程序運行結果表明,本方案能夠滿足TD-LTE無線綜合測試儀表的需求。
參考文獻
[1] ZEHAVI.E 8-PSK Trellis Codes for a Rayleigh Fading Channel IEEE Transactions on Communications,1992,40(5):873-874.
[2] 3GPP TS36.212.v8.9.0 Multiplexing and channel coding(Release 9)[S].
[3] 汪安民,張松燦.TMS320C6000系列DSP實用技術與開發案例[M].北京:人民郵電出版社,2008.
[4] 石元君.定點DSP除法原理及其TMS320C6000實現[J].單片機與嵌入式系統應用,2002(10):73-74.
[5] Texas Instruments Incorporated. TMS320C6000系列DSP變成工具與指南[M].田黎育,何佩琨,朱夢宇,譯.北京:清華大學出版社,2007:30-60.