熊玉平
(中國(guó)船舶工業(yè)系統(tǒng)工程研究院,北京 100036)
?
一種交錯(cuò)并行高速TPC譯碼器的設(shè)計(jì)*
熊玉平**
(中國(guó)船舶工業(yè)系統(tǒng)工程研究院,北京 100036)
Turbo乘積碼(TPC)作為一種高碼率編碼在帶限通信系統(tǒng)中有著廣泛的應(yīng)用,但是大多數(shù)TPC譯碼器存在結(jié)構(gòu)復(fù)雜、資源消耗高、處理時(shí)延大的問題。為此,提出了一種交錯(cuò)并行流水線處理結(jié)構(gòu)的譯碼器,并通過譯碼過程中測(cè)試序列的合理排序以及使用相關(guān)運(yùn)算代替最小歐式距離計(jì)算等算法優(yōu)化設(shè)計(jì),簡(jiǎn)化了譯碼器的實(shí)現(xiàn)復(fù)雜度,現(xiàn)場(chǎng)可編程門陣列(FPGA)資源消耗相比傳統(tǒng)設(shè)計(jì)降低了35%,提高了譯碼速度。在Xilinx公司的FPGA芯片XC5VSX95T上完成了譯碼器的硬件實(shí)現(xiàn),達(dá)到80 Mbit/s的譯碼速度,通過增加子譯碼器個(gè)數(shù)還可進(jìn)一步提升譯碼吞吐率。
Turbo乘積碼(TPC);交錯(cuò)并行結(jié)構(gòu);測(cè)試序列;相關(guān)運(yùn)算
Turbo乘積碼(Turbo Product Code,TPC)是一種采用Turbo迭代譯碼方式的乘積碼,在高碼率(碼率大于0.7)應(yīng)用中,比Turbo碼、卷積Turbo碼(Convolutional Turbo Code,CTC)等更有效,尤其在帶限系統(tǒng)中,TPC碼可以在較高的頻帶利用率下保證優(yōu)異的誤碼性能[1-2]。同時(shí),它在碼率、硬件復(fù)雜度和譯碼性能方面也有較大的靈活性。目前,TPC碼已廣泛應(yīng)用于數(shù)據(jù)傳輸系統(tǒng)中。
隨著數(shù)據(jù)傳輸通信中高速需求的增加,TPC譯碼器的吞吐率成為制約其應(yīng)用的一個(gè)關(guān)鍵瓶頸。為此,通常的高速TPC譯碼器是以簡(jiǎn)化或者改進(jìn)算法犧牲部分性能為代價(jià)來提高速率,并且資源占用較多,結(jié)構(gòu)不夠靈活[3]。
針對(duì)這一問題,本文提出了一種新的交錯(cuò)并行譯碼器結(jié)構(gòu),在不損失性能的情況下極大地提高了譯碼速率,并且可以增加子譯碼器個(gè)數(shù),能靈活地實(shí)現(xiàn)資源與速率的互換,為譯碼速率的進(jìn)一步提升提供了途徑。
TPC碼由兩個(gè)或多個(gè)簡(jiǎn)單的線性分組碼串行級(jí)聯(lián)構(gòu)成,因此碼率非常靈活。常用的子碼有漢明碼、擴(kuò)展?jié)h明碼、BCH碼、RS碼等。下面以應(yīng)用最多的二維乘積碼為例來說明TPC碼的編碼過程。
如圖1所示,首先將信息位組成一個(gè)k2×k1的矩陣,然后用分組碼C1(n1,k1)對(duì)k2行信息位編碼,得到一個(gè)包含行校驗(yàn)的k2×n1的矩陣;再用分組碼C2(n2,k2)對(duì)n1列數(shù)據(jù)編碼,得到最終的包含列校驗(yàn)和校驗(yàn)位的校驗(yàn)的n2×n1的碼字矩陣。這里只是以先行后列的編碼順序介紹編碼過程,先列后行的編碼方式得到的碼字矩陣是完全相同的。通常情況下,為降低復(fù)雜度,在實(shí)現(xiàn)過程中子碼C1和C2會(huì)選擇相同的分組碼。
圖1 TPC編碼過程Fig.1 TPC encoding process
TPC碼由線性分組碼級(jí)聯(lián)構(gòu)成,因此TPC碼的譯碼過程也就是線性分組碼的譯碼?;贑hase算法的軟輸入軟輸出迭代譯碼算法具有復(fù)雜度低、性能好的優(yōu)點(diǎn),能夠很好地應(yīng)用于TPC碼的譯碼[1,4]。其具體譯碼過程如下:
(1)找到接收序列y中可信度最低的p個(gè)比特位。
(2)根據(jù)p個(gè)不可靠位產(chǎn)生2p個(gè)錯(cuò)誤圖樣ti=(t1,t2,…,tn),1≤i≤2p。即p個(gè)不可靠位上進(jìn)行“0”“1”全排列,其他位置為0。
(3)根據(jù)錯(cuò)誤圖樣得到2p個(gè)測(cè)試序列:zi=z0⊕ti,1≤i≤2p,其中z0是接收信號(hào)y的硬判決序列。
(4)對(duì)測(cè)試序列zi進(jìn)行代數(shù)譯碼,得到候選碼字集合Ω。
(5)將集合Ω中的碼字做{0,1}到{-1,+1}的映射,然后尋找與接收序列y具有最小歐氏距離的碼字作為譯碼輸出。
為了進(jìn)行迭代譯碼,我們還需要知道判決碼字中每個(gè)碼元的可信度,即計(jì)算碼元的軟信息。對(duì)于判決碼字d中的每個(gè)碼元di,要計(jì)算其軟信息必須尋找與其對(duì)應(yīng)的競(jìng)爭(zhēng)碼字,即除d以外與接收序列y的歐氏距離最小的碼字c,且di≠ci。
當(dāng)競(jìng)爭(zhēng)碼字存在時(shí),碼元di的外信息為
(1)
當(dāng)競(jìng)爭(zhēng)碼字不存在時(shí),
wi=β×di。
(2)
式中:β稱為可靠因子,通常由實(shí)驗(yàn)確定。
TPC碼的譯碼就是通過上述譯碼流程,經(jīng)過行列譯碼兩個(gè)階段的循環(huán)迭代,最終得到譯碼結(jié)果。
4.1 傳統(tǒng)譯碼器的設(shè)計(jì)
TPC碼的譯碼器結(jié)構(gòu)設(shè)計(jì)是高速譯碼設(shè)計(jì)的難點(diǎn)。串行迭代譯碼在譯碼過程中先進(jìn)行行譯碼,然后再進(jìn)行列譯碼,同一時(shí)刻只有一個(gè)子譯碼器在工作,當(dāng)行列子碼相同時(shí),可以通過行列子譯碼器的復(fù)用節(jié)省資源,但譯碼時(shí)延較大,很難實(shí)現(xiàn)高速譯碼[5]。傳統(tǒng)的高速譯碼器設(shè)計(jì)如圖2所示,通過簡(jiǎn)單的多路譯碼器復(fù)用,同時(shí)對(duì)多路接收信號(hào)譯碼,用資源來?yè)Q速度,要想提高吞吐率,資源的消耗會(huì)大大增加,并且行列子碼不相同時(shí)會(huì)有部分譯碼模塊處于空閑狀態(tài)。Argon等[6]提出了一種并行迭代譯碼結(jié)構(gòu),在進(jìn)行譯碼時(shí)行列子譯碼器同時(shí)工作,逐行和逐列譯碼過程中相互傳遞各自更新的外信息,因此不管行列子碼是否相同,都需要兩個(gè)子譯碼器。這種譯碼結(jié)構(gòu),每次行列譯碼時(shí)利用的外信息會(huì)減少,因此性能有所損失,但速率可以提高1倍。
圖2 傳統(tǒng)高速TPC譯碼器結(jié)構(gòu)Fig.2 Traditional high-speed TPC decoder structure
4.2 交錯(cuò)并行譯碼器的設(shè)計(jì)
4.2.1 交錯(cuò)并行譯碼結(jié)構(gòu)
為了提高譯碼速率的同時(shí)不損失譯碼性能,本文設(shè)計(jì)了一種交錯(cuò)并行迭代譯碼結(jié)構(gòu),充分利用行列子譯碼器的空閑時(shí)間進(jìn)行兩幀數(shù)據(jù)的譯碼,可以達(dá)到與并行迭代譯碼相同的速率,而性能與串行迭代譯碼相同,其結(jié)構(gòu)如圖3所示。
圖3 交錯(cuò)并行譯碼結(jié)構(gòu)Fig.3 Interleaved parallel TPC decoder structure
在交錯(cuò)并行譯碼結(jié)構(gòu)中,接收到的信道軟信息首先存儲(chǔ)在信息存儲(chǔ)RAM中,當(dāng)存儲(chǔ)完一個(gè)碼字后,讀取信道信息Y和譯碼外信息W(初始為0),經(jīng)過信息交換及計(jì)算模塊得到譯碼所需的軟信息,首先送入行譯碼模塊進(jìn)行行譯碼,此時(shí)新到的接收序列存入另一塊信息存儲(chǔ)RAM中;上一個(gè)碼字的行譯碼結(jié)束之后進(jìn)入列譯碼階段,而新到的碼字開始進(jìn)行行譯碼,之后由信息交換及計(jì)算模塊控制兩個(gè)碼字在行譯碼和列譯碼模塊中交替計(jì)算,同時(shí)對(duì)兩個(gè)碼字進(jìn)行譯碼;最后由輸出緩存模塊對(duì)譯碼結(jié)果進(jìn)行緩存并去除校驗(yàn)位輸出。
交錯(cuò)并行譯碼與串行譯碼的譯碼流程相同,因此性能上不會(huì)有損失,但能夠同時(shí)對(duì)兩幀數(shù)據(jù)進(jìn)行譯碼,因此總的吞吐量相當(dāng)于串行譯碼的2倍,與并行譯碼相同。
4.2.2 譯碼量化
譯碼過程中處理的是接收到的軟信息,是浮點(diǎn)數(shù),因此在FPGA實(shí)現(xiàn)時(shí)要考慮數(shù)據(jù)的量化。圖4給出了4次迭代譯碼時(shí)不同量化位寬的譯碼性能。
圖4 不同量化位寬的譯碼性能Fig.4 Decoding performance of different quantization word length
從圖中可以看到,在誤比特率為10-5時(shí),采用4 bit量化會(huì)帶來大概0.3 dB的性能損失,而5 bit量化與浮點(diǎn)情況下性能非常接近,因此在譯碼數(shù)據(jù)處理中將使用5 bit量化。
4.2.3 高速子譯碼模塊設(shè)計(jì)
要實(shí)現(xiàn)高速譯碼,必須在最少的時(shí)鐘周期內(nèi)完成子碼的一次行(或列)譯碼,并且多行(或列)的譯碼要形成流水,以減少完整的行(或列)譯碼所用的時(shí)間。為了減小計(jì)算量,這里提出了使用相關(guān)運(yùn)算來代替歐氏距離計(jì)算的新方法,把尋找歐氏距離的最小值轉(zhuǎn)化為計(jì)算內(nèi)積的最大值,譯碼運(yùn)算量可顯著減少。下面以行譯碼器為例,說明子譯碼器的工作流程,如圖5所示。
圖5 子譯碼模塊算法流程Fig.5 Algorithm flow for sub-decoder module
本文采用的子碼是(32,26)擴(kuò)展?jié)h明碼,因此每32個(gè)軟信息進(jìn)行一次譯碼。圖5所示的譯碼流程中虛線框?qū)⒆g碼分為3個(gè)階段。在譯碼的第一階段,求最不可靠位是難點(diǎn)。如果采用傳統(tǒng)的排序方法來求p個(gè)最不可靠位,則需要經(jīng)過p輪比較運(yùn)算,第i輪需要做32-i次比較,時(shí)延很大。這里我們采用圖6所示的方法,以p=4為例來說明求最不可靠位的流程。
圖6 最不可靠位計(jì)算流程Fig.6 Computation flow for most unreliable bits
圖6所示的算法設(shè)計(jì)了4個(gè)比較器和4個(gè)緩存器結(jié)構(gòu),軟輸入數(shù)據(jù)串行進(jìn)入,每個(gè)時(shí)刻都可以得到當(dāng)前時(shí)刻可靠性最小的4個(gè)值,32個(gè)時(shí)鐘周期后就可以求得4個(gè)最不可靠的比特位。
在第一階段的第二步,要使用前面得到的最不可靠位來構(gòu)造測(cè)試序列。如果按照常規(guī)的方法來構(gòu)造測(cè)試序列,測(cè)試序列沒有規(guī)律,每個(gè)測(cè)試序列在求相關(guān)值和伴隨式時(shí)都需要單獨(dú)運(yùn)算,一個(gè)測(cè)試序列的計(jì)算需要32個(gè)時(shí)鐘周期,2p個(gè)測(cè)試序列就需要32×2p個(gè)時(shí)鐘周期,時(shí)延大,也不利于流水操作的實(shí)現(xiàn)。這里我們對(duì)最不可靠位進(jìn)行格雷編碼[7],這樣相鄰的兩個(gè)測(cè)試序列只有一個(gè)比特不同,其相關(guān)值和伴隨式通過式(3)和(4)計(jì)算得到:
vi+1=vi±xk,
(3)
si+1=si⊕H(k)。
(4)
式中:k表示相鄰測(cè)試序列不同的比特位置,x是輸入軟信息,H為校驗(yàn)矩陣。這樣,2p個(gè)測(cè)試序列的計(jì)算只需要2p個(gè)時(shí)鐘周期。
第一個(gè)階段求得的測(cè)試序列串行進(jìn)入代數(shù)譯碼模塊,依次對(duì)錯(cuò)誤位置進(jìn)行糾正并更新全校驗(yàn)位就可以得到候選碼字及其相關(guān)度量。然后,再依次送入第三個(gè)階段,采用與求最不可靠位相同的方法得到判決碼字和競(jìng)爭(zhēng)碼字,最后進(jìn)行外信息計(jì)算即完成一行子碼的譯碼。從整個(gè)譯碼流程可以看到當(dāng)前階段數(shù)據(jù)的處理并不影響后續(xù)數(shù)據(jù)的處理,3個(gè)階段可以實(shí)現(xiàn)流水操作,能夠?qū)?shù)據(jù)進(jìn)行連續(xù)處理,沒有等待時(shí)間,因此可以大大提高譯碼速率。
本文以擴(kuò)展?jié)h明碼為子碼,設(shè)計(jì)了(32,26)×(32,26)的TPC譯碼器,并在Xilinx的XC5VSX95T芯片上對(duì)其進(jìn)行實(shí)現(xiàn),譯碼采用5 bit量化,使用基于Chase算法的軟輸入軟輸出譯碼算法,應(yīng)用4次迭代,主時(shí)鐘為160 MHz,則單路譯碼器的吞吐率為80 Mbit/s。
表1給出了譯碼器的性能測(cè)試結(jié)果,與圖4給出的仿真結(jié)果一致,性能沒有損失。
表1 譯碼器誤比特性能Tab.1 Error performance of decoder
表2給出了本文設(shè)計(jì)的譯碼器結(jié)構(gòu)與文獻(xiàn)[7]中并行譯碼器結(jié)構(gòu)在相似吞吐率下的資源對(duì)比情況。從對(duì)比結(jié)果可以看出,本文設(shè)計(jì)的譯碼器具有明顯的優(yōu)勢(shì),在相似吞吐率下資源消耗可降低35%左右。
表2 譯碼器資源占用表Tab.2 Resource consumption of decoder
隨著通信技術(shù)的發(fā)展和通信服務(wù)的多樣化,人們對(duì)高速無(wú)線數(shù)據(jù)傳輸?shù)男枨蟛粩嘣黾?,TPC碼易于并行處理的結(jié)構(gòu)特點(diǎn)決定了其在高速寬帶數(shù)據(jù)傳輸中的重要意義。本文介紹了TPC編譯碼的基本原理,以(32,26)×(32,26)TPC碼為例設(shè)計(jì)了可以實(shí)現(xiàn)高速處理的譯碼器結(jié)構(gòu)。譯碼器采用交錯(cuò)并行流水線結(jié)構(gòu),并且譯碼流程也進(jìn)行了優(yōu)化,在不損失性能的情況下可以將譯碼速率提高1倍,在高速需求下還可以利用TPC碼的并行結(jié)構(gòu),通過增加子譯碼器個(gè)數(shù)進(jìn)一步提高譯碼吞吐率,擴(kuò)展性好。目前,該譯碼器已經(jīng)在實(shí)際項(xiàng)目中應(yīng)用,并且性能優(yōu)異。
[1] ARGON C, MCLAUGHLIN S W. An efficient chase decoder for Turbo product codes[J]. IEEE Transactions on Communications, 2004, 52(6):896-898.
[2] SUN W C, CHEN Y M, WENG C Y, et al. An efficient implementation of the distance-based decoding for block Turbo codes[C]//Proceedings of 2013 IEEE 8th International ICST Conference on Communications and Networking in China.Guilin:IEEE, 2013:675-679.
[3] 張飛. 高速Turbo乘積碼譯碼器設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京理工大學(xué), 2015. ZHANG Fei. Design and implementation of a high-speed Turbo product code decoder[D]. Beijing: Beijing Institute of Technology, 2015. (in Chinese)
[4] LU P, LU E, CHEN T. An efficient hybrid decoder for block Turbo codes[J]. IEEE Communications Letters, 2014, 18(12):2077-2080.
[5] 陸連偉,馮占斌. Turbo乘積碼譯碼器的并行實(shí)現(xiàn)方法[J]. 通信技術(shù), 2014,47(12):1371-1374. LU Lianwei, FENG Zhanbin. A parallel implementation of TPC decoder[J]. Communications Technology, 2014, 47(12):1371-1374. (in Chinese)
[6] ARGON C, MCLAUGHLIN S. A parallel decoder for low latency decoding of Turbo product codes[J]. IEEE Communications Letters,2002,6(2):70-72.
[7] 李超. 基于FPGA的TPC編譯碼器設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子科技, 2015,28(5):121-123. LI Chao. Design and realization of TPC coding based on FPGA[J]. Electronic Science & Technology, 2015,28(5):121-123. (in Chinese)
Design of a High-speed Interleaved Parallel TPC Decoder
XIONG Yuping
(Systems Engineering Research Institute of China State Shipbuilding Corporation(CSSC),Beijing 100036,China)
Turbo product code (TPC) is applied extensively in bandlimited communication systems as a high-rate code. But most TPC decoders have the problems of complex structure, high resource consumption and large processing latency.For these problems,this paper proposes an interleaved parallel decoder adopting pipelined architecture.By using the reordered test sequences and optimized algorithm such as replacement of the calculation of Euclidean distance by correlation operation, the complexity is reduced, processing latency is shortened and resource consumption is reduced by 35%. Based on the proposed structures, a hardware implementation of TPC decoder on Xilinx XC5VSX95T FPGA is presented. The results show that the proposed decoder architecture can achieve a decoding throughput of 80 Mbit/s, and the decoding throughput can be improved further by increasing the number of sub-decoders.Key words:Turbo product code(TPC);interleaved parallel architecture;test sequence;correlation operation
10.3969/j.issn.1001-893x.2017.07.017
熊玉平.一種交錯(cuò)并行高速TPC譯碼器的設(shè)計(jì)[J].電訊技術(shù),2017,57(7):830-833.[XIONG Yuping.Design of a high-speed interleaved parallel TPC decoder[J].Telecommunication Engineering,2017,57(7):830-833.]
2017-03-20;
2017-06-15 Received date:2017-03-20;Revised date:2017-06-15
TN919.3
A
1001-893X(2017)07-0830-04
熊玉平(1963—),女,湖南人,碩士,高級(jí)工程師,主要研究方向?yàn)轱w行器制造、航空保障等。
Email:595090920@qq.com
**通信作者:595090920@qq.com Corresponding author:595090920@qq.com