M0=101101101001101101010010011011001101011011001001
M1=011011011011011011001001001001011011001001011011
M2=000111000111000111000111000111000111000111000111
M3=000000111111000000111111000000111111000000111111
M4=000000000000111111111111000000000000111111111111
M5=000000000000000000000000111111111111111111111111
M6=111111111111111111111111111111111111111111111111
M7=011101110111010011000011111010001011101111100001
M8=100111101001110101011101011101001010111001111100
M9=001000110011101100110010101111111101011001100110
其中,M6為全1序列,MO,M1,M2,M3,M4和 M5由 Walsh碼發(fā)生器產(chǎn)生,M7,M8和 M9由掩碼發(fā)生器產(chǎn)生。
較長(zhǎng)TFCI可采用超碼譯碼法,超碼譯碼原理:在接收的雙極性碼字中依次乘前面的雙極性化后的掩碼集,然后對(duì)消除掩碼的碼字采用基礎(chǔ)碼集的譯碼算法(在此為一階RM碼的FHT),譯出碼字和相應(yīng)的陪集表示確定出最后的譯碼信息。分析編碼的原理,8PSK的較長(zhǎng)TFCI編碼就是以32階walsh碼的子集和全1矢量為基礎(chǔ)碼序列,以三個(gè)Mask矢量為掩碼序列,所組成的線性組合(b0~b63),然后打孔生成48比特。譯碼實(shí)際上就是要找到譯碼輸入碼字添加打孔位置比特之后的碼字(b0~b63)所對(duì)應(yīng)信息比特(a0~a9)。因此,8PSK的較長(zhǎng)TFCI譯碼首先要恢復(fù)打孔位置的16個(gè)bit,然后進(jìn)行消掩處理,即消除掩碼對(duì)接受碼字的影響,之后進(jìn)行基礎(chǔ)碼集譯碼即可,如圖2。

根據(jù)[2],在8PSK的較長(zhǎng)TFCI編碼后的打孔位置填0,此時(shí)得到一個(gè)長(zhǎng)為64bit的序列。
當(dāng)TFCI的原始比特?cái)?shù)為6~10時(shí),TFCI的編碼實(shí)際上是一種超碼編碼方式。就是以一階RM(1,7)碼(3GPP為RM(64,10))為基礎(chǔ)碼集,以生成矩陣的后三列構(gòu)成三維掩碼集。譯碼的時(shí)候,得到掩碼集后,將掩碼集雙極性化,然后用恢復(fù)打孔后的序列雙極性化后得到的碼字與雙極性化后的掩碼集依次相乘,完成消掩。
對(duì)于8PSK的較長(zhǎng)TFCI編碼,二階Reed-Muller碼的打孔 (48,10) 子碼的碼字是10個(gè)基本序列的線性組合。根據(jù)消掩后得到的雙極性矩陣,分別對(duì)每一行進(jìn)行FHT變換并存儲(chǔ),循環(huán)進(jìn)行8次,再比較并進(jìn)行譯碼,進(jìn)而得到二進(jìn)制信息序列m。
FHT的實(shí)質(zhì)就是求 Hadamard矩陣和輸入向量的相關(guān)值向量, 它主要利用了蝶形運(yùn)算來減少運(yùn)算量。對(duì)于一個(gè) M階的哈達(dá)馬矩陣 HM,如果直接計(jì)算(brute force method)輸入向量與Hadamard矩陣中每個(gè)行向量的相關(guān)值,容易得到其運(yùn)算量為M2的加減法運(yùn)算,利用快速哈得馬變換可以大大減少運(yùn)算次數(shù)。
3 譯碼算法的實(shí)現(xiàn)
ZSP500 DSP核硬件主要包括預(yù)存取單元(PFU)、指令定序單元(ISU)、流水線控制單元(PIP)、裝載保存單元(LSU)、寄存器文件單元、旁路單元(BYU)、算數(shù)邏輯單元(ALU)、乘累加單元(MAU),存儲(chǔ)系統(tǒng)包括數(shù)據(jù)存儲(chǔ)區(qū)(data memory)和 指令存儲(chǔ)區(qū)(Instruction memory)。數(shù)據(jù)存儲(chǔ)區(qū)和指令存儲(chǔ)區(qū)的大小分別都是0x20000(128k)word,各自由2個(gè)bank組成,而每個(gè)bank又包含兩個(gè)block[3]。
在實(shí)現(xiàn)8PSK的較長(zhǎng)TFCI譯碼時(shí),可考慮將打孔位置、掩碼矩陣分別計(jì)算出來并存成2張表,另外,較長(zhǎng)TFCI譯碼在實(shí)現(xiàn)時(shí),采用FHT可以減小運(yùn)算量,理論上,F(xiàn)HT就是將Hadamard矩陣分解為稀疏矩陣的乘積,采用蝶形變換。
3.1 恢復(fù)打孔的實(shí)現(xiàn)
恢復(fù)打孔在實(shí)現(xiàn)時(shí),通過查打孔位置表可以得到打孔的位置,根據(jù)相應(yīng)位置在接收序列中填0即可。部分代碼如下:
AddPun:
xor r0, r0
stu r0, a1, 1 !add punctured bit
ldu r0, a3, 1 !r0=original bit num
mov %loop2, r0
FillOrg:
ldu r0, a0, 1
stu r0, a1, 1
3.2 消掩的實(shí)現(xiàn)
實(shí)現(xiàn)消掩時(shí),從已經(jīng)計(jì)算并存好的掩碼表M(8*64)中查取每個(gè)元素,根據(jù)查取到的元素看輸入序列是否要取反(為1取反)。部分代碼如下:
ldu r4, a0, 1
bitt r3, 15
cexe(z, nu)
{
neg r4, r4
}
stu r4, a1, 1
3.3 FHT的實(shí)現(xiàn)
FHT算法與FFT算法類似,采用蝶形運(yùn)算。部分代碼如下:
mov a1, a0 //the first data
add a1, r8 //adjacent the second data
ld r4, a0
ld r5, a1
add r6, r4, r5
sub r7, r4, r5
3.4 計(jì)算TFCI值的實(shí)現(xiàn)
由上面軟判決的步驟可以知道,要計(jì)算TFCI的值,關(guān)鍵是要找出經(jīng)過hadamard變換以后的矩陣的最大絕對(duì)值的行號(hào)和列號(hào),此項(xiàng)工作的實(shí)現(xiàn)可以通過一個(gè)查找最大值子模塊來實(shí)現(xiàn)。部分代碼如下:
cmp r8, 0 ! r8->the max abs(value)
cexe(gt, nu)
{
mov r14, 1
}
shll r14, 6
4 結(jié)語
本文重點(diǎn)討論了8PSK的較長(zhǎng)TFCI譯碼算法原理,并根據(jù)算法原理,給出了在ZSP500 DSP核上的實(shí)現(xiàn)過程。在TD-SCDMA系統(tǒng)的信道譯碼過程中,TFCI是一個(gè)很重要的參數(shù),TFCI譯碼的正確性是進(jìn)行正確信道譯碼的前提,本文對(duì)TD-SCDMA系統(tǒng)研發(fā)中的信道編解碼過程具有一定實(shí)用價(jià)值。本文作者創(chuàng)新點(diǎn):根據(jù)8PSK的較長(zhǎng)TFCI編碼算法原理,得出譯碼算法原理,并對(duì)其在ZSP500 DSP核上進(jìn)行了代碼實(shí)現(xiàn)。
參考文獻(xiàn):
[1] Samsung Electronics Co., Ltd,TFCI Coding Scheme for 8PSK in low chip rate TDD Option.
[2] 3GPP TS 25.222: "Multiplexing and channel coding (TDD)" (Release 5).
[3] ZSP500 Digital Signal Processor Core TECHNICAL MANUAL.
[4] 李小文等編.TD—SCDMA第三代移動(dòng)通信系統(tǒng)、信令及實(shí)現(xiàn)[M].北京:人民郵電出版社,2003.
[5] 陳永翾,陳向東,李長(zhǎng)春. 基于TDD的無線語音通信協(xié)議的研究. 微計(jì)算機(jī)信息, 2007,2-3:106-107.
作者簡(jiǎn)介:
趙義(1983—),男(漢族),籍貫河北,重慶郵電大學(xué)在讀研究生,通信與信息系統(tǒng)專業(yè),研究方向?yàn)榈谌苿?dòng)通信。
申敏(1963—),女,籍貫貴州,教授,碩士生導(dǎo)師,主要從事DSP及物理層協(xié)議算法研究。
聯(lián)系方式:趙義,重慶郵電大學(xué)05級(jí)研究生77#信箱34棟123室,郵編400065,郵箱hyozia@126.com





