李 超
(中國(guó)電子科技集團(tuán)公司第20研究所, 西安 710068)
一種低時(shí)延Turbo碼的編碼器設(shè)計(jì)與實(shí)現(xiàn)
李超
(中國(guó)電子科技集團(tuán)公司第20研究所, 西安 710068)
摘要:簡(jiǎn)要介紹了一種Turbo碼的編碼原理,并對(duì)螺旋交織器與分量編碼器所采用的咬尾卷積碼結(jié)構(gòu)進(jìn)行了分析,說(shuō)明了編碼器的實(shí)現(xiàn)結(jié)構(gòu),同時(shí)采用Xilinx公司的K7325T芯片完成了方案驗(yàn)證,結(jié)果表明在系統(tǒng)時(shí)鐘為64 MHz的情況下編碼時(shí)延僅為4.8 μs。
關(guān)鍵詞:Turbo碼;咬尾卷積碼;低時(shí)延
0引言
在1993年瑞士日內(nèi)瓦召開(kāi)的國(guó)際通信會(huì)議上,Berrou提出了一種新型的信道編碼方案——Turbo碼。根據(jù)仿真結(jié)果發(fā)現(xiàn),當(dāng)碼長(zhǎng)為65536bit并采用軟譯碼方式迭代18次情況下,Turbo碼性能與香農(nóng)限僅差0.7 dB,由于其優(yōu)異的性能而引起了業(yè)內(nèi)的廣泛重視[1]。經(jīng)過(guò)20余年的發(fā)展,Turbo碼的研究逐步成熟,目前它已成為第3代與第4代移動(dòng)通信的主流標(biāo)準(zhǔn)之一,并在衛(wèi)星通信與軍事通信中扮演著越來(lái)越重要的角色。
1編碼原理
Turbo碼是將信息序列分為交織序列與未交織序列后,分別通過(guò)分量編碼器級(jí)聯(lián)而成。本文中Turbo碼的分量編碼器采用咬尾卷積碼[2-3],其原理框圖如圖1所示。
圖1 編碼原理框圖
從圖1可以看出,Turbo編碼器由四相符號(hào)映射模塊、初始狀態(tài)計(jì)算模塊、分量編碼器模塊和復(fù)接模塊構(gòu)成。其編碼流程如下:
(1) 將輸入信息序列按每2 bit為單位進(jìn)行符號(hào)映射,并將映射后的符號(hào)分別傳輸給編碼器A和編碼器B。
(2) 對(duì)編碼器A信號(hào)進(jìn)行初始狀態(tài)計(jì)算,計(jì)算出編碼寄存器的初始狀態(tài)。
(3) 將映射后數(shù)據(jù)分為前后相等的2包,并將寄存器初始狀態(tài)值同時(shí)送入分量編碼器A1與A2進(jìn)行編碼。
(4) 將分量編碼器A1與A2編碼后的數(shù)據(jù)進(jìn)行復(fù)接,完成編碼器A的編碼工作。
(5) 編碼器B工作流程與編碼器A相似,只是在編碼前應(yīng)先進(jìn)行符號(hào)交織。
(6) 將編碼器B輸出與編碼器A進(jìn)行復(fù)接,完成整個(gè)編碼流程。
下面對(duì)其中的主要模塊進(jìn)行介紹。
通常使用的卷積碼需要額外的零尾比特,而咬尾卷積碼中移位寄存器初始值與結(jié)束值相同,好處是可以消除碼率的損失,不需要傳輸額外比特。本編碼使用的分量編碼器采用了咬尾卷積碼,所以在編碼前需對(duì)卷積碼的寄存器初始狀態(tài)進(jìn)行搜索。 搜索過(guò)程如下:
base=zech[B%(S-1)-1];
acc1=0;
for(i=0;i
acc1=acc1_lookup[data[i]][acc1];
initial_state=init_state_lookup[base][acc1];
其中B為編碼序列總長(zhǎng)度,S為寄存器的狀態(tài)個(gè)數(shù),zech、acc1_lookup、init_state_lookup表見(jiàn)參考文獻(xiàn)[4]。
交織可以使編碼后的數(shù)據(jù)隨機(jī)化,對(duì)碼重起到整形作用。交織器根據(jù)交織方式分為固定交織器、隨機(jī)交織器、分組交織器等3類[5],本文采用了螺旋交織器。螺旋交織器屬于分組交織器的一種,其螺旋式讀取數(shù)據(jù)的方式使得輸出碼字可以得到較大碼距,且實(shí)現(xiàn)較為簡(jiǎn)單,便于工程實(shí)現(xiàn)[6]。
其交織過(guò)程可分為以下3步實(shí)現(xiàn):
(1) 將輸入信息序列按照先行后列的方式寫入一個(gè)m×n矩陣中,其中m與n互為素?cái)?shù)。
(2) 當(dāng)開(kāi)始讀取數(shù)據(jù)時(shí),從矩陣的左上方開(kāi)始向右下方順序進(jìn)行,同時(shí)每向下一行讀取順序右移一位。
(3) 若讀取到矩陣邊緣,則返回后繼續(xù)按照左上方向右下方的順序讀取數(shù)據(jù)。
螺旋交織器的讀取順序表達(dá)式為:
(1)
式中:ri為第i個(gè)符號(hào)的行索引;ci為第i個(gè)符號(hào)的列索引;i=1,2,…,N-1,ri與ci的初始值均為0。
分量編碼器A與分量編碼器B采用的均是卷積碼,本文支持1/3、1/6和1/10 3種碼率,3種碼率的實(shí)現(xiàn)未采用刪余的方式,而是通過(guò)查詢編碼映射表與狀態(tài)轉(zhuǎn)移表的方式實(shí)現(xiàn)[7]。分量碼的狀態(tài)轉(zhuǎn)移表如表1所示。
表1 分量碼的狀態(tài)轉(zhuǎn)移表
2現(xiàn)場(chǎng)可編程門陣列(FPGA)實(shí)現(xiàn)
本方案設(shè)定原始信息位為1 024 bit,碼率為1/3、1/6和1/10 3種,交織器采用螺旋交織方式,編碼后碼長(zhǎng)對(duì)應(yīng)分別為3 072 bit、6 144 bit和1 0240 bit。整個(gè)編碼器的結(jié)構(gòu)框圖如圖2所示。
從圖2可以看出,當(dāng)外部啟動(dòng)編碼開(kāi)始信號(hào)后,編碼器首先從緩存隨機(jī)存儲(chǔ)器(RAM)中讀取一幀共1 024 bit信息位,并按照2 bit位寬進(jìn)行輸出從而完成符號(hào)映射。將映射后的512個(gè)信息符號(hào)分成前后相等的2包,每包長(zhǎng)度為256。計(jì)算2包信息符號(hào)的初始狀態(tài)并分別送入到分量編碼器A1與A2中進(jìn)行獨(dú)立編碼,并由編碼控制模塊控制編碼碼率。以1/3碼率為例,編碼器A1與A2查詢內(nèi)部編碼映射表與狀態(tài)轉(zhuǎn)移表后輸出碼字長(zhǎng)度均為768 bit,并將A1與A2編碼后碼字復(fù)接為1 536 bit進(jìn)行輸出。編碼器B與編碼器A工作流程類似,分為B1與B2分量編碼器,只是在前端加有交織器,其輸出碼字長(zhǎng)度也是1 536 bit。最后將編碼器A與編碼器B輸出復(fù)接后完成整個(gè)編碼流程。
圖2 編碼器的結(jié)構(gòu)框圖
為了盡量減小系統(tǒng)時(shí)延與現(xiàn)場(chǎng)可編程門陣列(FPGA)邏輯單元的使用,初始狀態(tài)計(jì)算模塊、交織器模塊和分量編碼器模塊均采用查表法,其中分量編碼器包括了1/3、1/6、1/10 3個(gè)編碼映射表,并統(tǒng)一使用一個(gè)狀態(tài)轉(zhuǎn)移表。為了盡量做到流水處理,在進(jìn)行待編碼數(shù)據(jù)從緩存RAM讀取的同時(shí)就要開(kāi)始初始狀態(tài)計(jì)算,當(dāng)初始狀態(tài)計(jì)算完畢后分量編碼器A1即可流水進(jìn)行編碼操作。當(dāng)分量編碼器A1與A2輸出編碼后數(shù)據(jù)時(shí),交織器同時(shí)開(kāi)始工作,保證了編碼器B在較短時(shí)延后輸出結(jié)果。
在Vivado環(huán)境下,采用Xilinx公司K7系列的K7325T芯片進(jìn)行Turbo編碼器設(shè)計(jì)與硬件實(shí)現(xiàn),其中資源占用情況為:Flip Flops為1 665,LUT Element為640,Block RAM為2,編碼模塊最高時(shí)鐘速率為331 MHz。編碼器的時(shí)序仿真圖如圖3所示。
圖3 編碼器的時(shí)序仿真圖
從圖3可以看出,本設(shè)計(jì)系統(tǒng)時(shí)鐘采用64 MHz,編碼總時(shí)延約為4.8 μs,4個(gè)分量編碼器的工作時(shí)間均為4 μs。當(dāng)start_coding脈沖產(chǎn)生后編碼器開(kāi)始工作,并將編碼器工作狀態(tài)busy信號(hào)置高。經(jīng)過(guò)20.4 μs后編碼器產(chǎn)生一個(gè)finish_coding脈沖標(biāo)志并將busy信號(hào)置低,這標(biāo)志著一次編碼工作結(jié)束。
3結(jié)束語(yǔ)
本文對(duì)一種特殊的Turbo卷積碼編碼方式進(jìn)行了理論分析與研究,對(duì)編碼器中各子模塊的原理與實(shí)現(xiàn)方法進(jìn)行了說(shuō)明,最后采用Xilinx公司K7系列的K7325T芯片進(jìn)行了方案驗(yàn)證,結(jié)果表明該編碼器占用邏輯資源較少,在系統(tǒng)時(shí)鐘為64 MHz的情況下,時(shí)延僅為4.8 μs。
參考文獻(xiàn)
[1]王新梅,肖國(guó)鎮(zhèn).糾錯(cuò)碼原理與方法[M].修訂版.西安:西安電子科技大學(xué)出版社,2001.
[2]周建欽,王喜鳳,謝振飛,等.嵌入法構(gòu)造線性分組碼咬尾網(wǎng)格[J].電子學(xué)報(bào),2009,37(8):1751-1756.
[3]吳偉陵.通向信道編碼定理的Turbo碼及其性能分析[J].電子學(xué)報(bào),1998(7):35-40.
[4]Chen Yiqi.Computation of initial state for tail-biting trellis[J].IEEE Transactions on Communications,2004,53(4):1268-1278.
[5]白寶明,馬嘯,王新梅,等.隨機(jī)交織器的設(shè)計(jì)與實(shí)現(xiàn)[J].通信學(xué)報(bào),2000,21(6):6-11.
[6]史治平,靳蕃.高碼率Turbo碼中確定性交織器的設(shè)計(jì)[J].西南交通大學(xué)學(xué)報(bào),2002,37(5):544-547.
[7]宋英杰.Turbo高速編譯碼技術(shù)研究[J].現(xiàn)代導(dǎo)航,2015(1):47-52.
Coder Design and Realization of A Low Time Delay Turbo Code
LI Chao
(The 20th Research Institute of CETC,Xi’an 710068,China)
Abstract:This paper introduces the coding principle of a kind of Turbo code,and analyses the structure of tail-biting convolutional code used in helical interleaver and sub-encoder,explains the realization structure of coder,and uses K7325T chip of Xilinx Co. to perform the project validation.The result shows that the coding time delay is only 4.8 μs when the sytem clock is 64 MHz.
Key words:Turbo code;tail-biting convolutional code;low time delay
收稿日期:2015-03-22
DOI:10.16426/j.cnki.jcdzdk.2015.03.031
中圖分類號(hào):TN911.22
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):CN32-1413(2015)03-0114-03