田克純,常雪景
(桂林電子科技大學(xué) 信息與通信學(xué)院,廣西 桂林541004)
在信息傳輸中,采用信道編碼的方法可對(duì)信道差錯(cuò)進(jìn)行有效控制。近幾年來,Turbo碼一直是信道編碼的熱點(diǎn),成為3G中采用的主流信道編碼方式,而交織器的采用可以使Turbo碼實(shí)現(xiàn)隨機(jī)性編碼,獲得更加優(yōu)異的性能。
因?yàn)門urbo碼的性能受交織器設(shè)計(jì)好壞的影響很大,所以對(duì)于Turbo碼而言,交織器的設(shè)計(jì)至關(guān)重要。交織[1]是以一一映射的方式來進(jìn)行隨機(jī)化原始序列的,所以這就要求在設(shè)計(jì)交織器的時(shí)候,對(duì)原始數(shù)據(jù)的排列順序最大程度地進(jìn)行置亂,從而把那些在置換前相距較近的數(shù)據(jù)在經(jīng)過置換之后相距間隔變長(zhǎng),這樣就可以保證輸出碼元序列的準(zhǔn)確性,同時(shí)有利于在后續(xù)的譯碼過程中糾正這些錯(cuò)誤。
使用具有一一映射關(guān)系的確定性方法對(duì)二進(jìn)制和非二進(jìn)制順序進(jìn)行重新編排的過程,即為通常所說的交織,而把序列順序重新恢復(fù)的過程稱為解交織。交織和解交織是對(duì)應(yīng)的互逆過程。實(shí)現(xiàn)序列交織和解交織所采用的器件分別被稱為交織器和解交織器。
假設(shè),輸入交織器I的一組序列是[2]
式中:ui∈{1,0},i=1,2,…,N。
交織映射輸出序列記為
式中:uj∈{0,1},j=1,2,…,N。
若定義集合S={1,2,…,N},那么交織過程可理解為一一映射索引函數(shù)
目前,交織器主要有隨機(jī)交織器、規(guī)則交織器、偽隨機(jī)交織器這3種常見類型[3]。其中,隨機(jī)交織器的性能在理論上是最好的。然而,在硬件實(shí)現(xiàn)上不僅復(fù)雜度高,還極有可能產(chǎn)生不了交織,如隨機(jī)交織之后所產(chǎn)生的序列與原序列相同,也就是說在交織前輸入的數(shù)據(jù)順序與交織后的數(shù)據(jù)順序一樣,沒有發(fā)生變化。規(guī)則交織器在硬件上實(shí)現(xiàn)相對(duì)于另外兩種交織器是最容易的,但是性能卻是三者之中相對(duì)最差的,所以在對(duì)性能要求較高的情況下應(yīng)避免采用。在參數(shù)性能上偽隨機(jī)交織器比隨機(jī)交織器稍差,卻優(yōu)于規(guī)則交織器,同時(shí)在硬件實(shí)現(xiàn)時(shí),偽隨機(jī)交織器與規(guī)則交織器相比較為復(fù)雜,卻比隨機(jī)交織器易于實(shí)現(xiàn)。綜上所述,在工程應(yīng)用中,應(yīng)根據(jù)具體情況合理地選擇滿足性能及硬件指標(biāo)要求的交織器類型。以下介紹幾類常見的交織器。
在信道編碼中,最初應(yīng)用的交織器便是行列交織器[4]。它是規(guī)則交織器中最簡(jiǎn)單也是最常見的一種,交織前后的序列位置間的映射距離是固定的。
雖然行列交織器極易在硬件上實(shí)現(xiàn),但在優(yōu)化距離特性和改善相關(guān)性這兩個(gè)方面卻存在極大的不足,不利于提高Turbo碼的性能。
例如,一個(gè)3×4的行列交織器的交織過程可闡述如下:
1)按行順序讀入數(shù)據(jù),行列矩陣如圖1所示。
圖1 行列矩陣
2)按列順序讀出數(shù)據(jù)。
數(shù)據(jù)的寫入順序?yàn)閧0,1,2,3,4,5,6,7,8,9,10,11}。讀出順序?yàn)閧0,4,8,1,5,9,2,6,10,3,7,11}。
由交織映射隨機(jī)生成的交織器,稱為隨機(jī)交織器。根據(jù)隨機(jī)的方式打亂輸入序列,如果是在數(shù)據(jù)幀較長(zhǎng)的情況下,就會(huì)取得很好的效果,但是不足之處是在編譯過程中所產(chǎn)生的系統(tǒng)時(shí)延相對(duì)較大。隨機(jī)數(shù)的產(chǎn)生形式?jīng)Q定隨機(jī)交織器的隨機(jī)性,如果一個(gè)隨機(jī)交織器的長(zhǎng)度為N,那么就總共有N!種交織形式,N越大,則交織形式也就越多,隨機(jī)交織器的隨機(jī)性也就越復(fù)雜,這樣不僅增加了硬件實(shí)現(xiàn)的費(fèi)用,而且還提高了在工程實(shí)現(xiàn)時(shí)的復(fù)雜度。
所謂對(duì)稱交織器,是指滿足若I→J,則J→I的交織器I和J均屬于映射元素集合。
對(duì)稱交織器的交織過程和解交織過程是完全相同的,因此如果將此類交織器對(duì)原始數(shù)據(jù)序列應(yīng)用偶數(shù)次,將會(huì)得到與原始序列完全相同的輸出序列。
在對(duì)Turbo碼進(jìn)行編譯碼時(shí),交織器和解交織器互相對(duì)應(yīng)出現(xiàn),也就是要求設(shè)計(jì)對(duì)應(yīng)的硬件設(shè)備以及交織映射表,如果所設(shè)計(jì)的交織器是對(duì)稱的,那么交織器和解交織器就可以通用,也就是說只采用一種設(shè)備即可,從而降低系統(tǒng)實(shí)現(xiàn)的復(fù)雜度,避免資源浪費(fèi),同時(shí)Turbo碼的性能也會(huì)因此而得到極大的改善。
O.Y.Takeshita給出了一個(gè)基于二次同余映射的交織器設(shè)計(jì)方法。
這個(gè)交織器利用以N為周期的二次余式計(jì)算索引映射函數(shù)來生成,公式為
式中:0≤m<N;k為奇常數(shù);N為2的整數(shù)次冪。
周期為N的索引映射函數(shù)描述了映射關(guān)系為cm→cm+1,根據(jù)映射關(guān)系可以生成交織映射矢量。
假設(shè)當(dāng)N=8,k=1時(shí),得到
其含義是交織后的序列u'中的指標(biāo)0(輸入比特u'0)被映射到原始序列u中的指標(biāo)1(即u'0=u1),u'中的指標(biāo)1被映射到u中的指標(biāo)3(即u'1=u3),等等,所產(chǎn)生的交織圖樣即為
通過使用規(guī)則的數(shù)學(xué)方法容易地生成二次算術(shù)交織器,但是在交織后,其比特之間的距離特性卻不十分明顯。這些二次交織器與隨機(jī)選取的交織器的統(tǒng)計(jì)特性具有相似性,同時(shí)相比較隨機(jī)交織器而言,其實(shí)現(xiàn)的復(fù)雜度較低,也就更易于實(shí)現(xiàn),所以二次算術(shù)交織器在Turbo碼中得到了廣泛的應(yīng)用,而且還可以通過改變k的值從而獲得其他更好的交織圖樣。即使是在N不等于2的整數(shù)次冪的情況下,也能通過修改以上算法從而達(dá)到產(chǎn)生具有良好統(tǒng)計(jì)特性的類似置換的目的。
本文中所設(shè)計(jì)的交織器長(zhǎng)度為32位。
采用8行4列的行列交織器,根據(jù)行列交織器的設(shè)計(jì)準(zhǔn)則可知交織圖樣為
此類交織器同時(shí)具有隨機(jī)交織器和對(duì)稱交織器的優(yōu)點(diǎn)。將式(7)所得的交織圖樣周期左(右)移N/2位,就可以得到所設(shè)計(jì)的交織器。交織圖樣如式(9)所示
由于本文中所設(shè)計(jì)的交織器長(zhǎng)度為32 bit,可在Matlab命令窗口中直接輸入以下程序:
k=3;N=32;
for i=1:1:31
x(i)=i;
y(i)=mod(k*x(i)*(x(i)+1)/2,N);
end
即可得到對(duì)應(yīng)的交織映射矢量
由此交織映射矢量可得出交織圖樣為
將此交織圖樣向左移動(dòng)16位,可得到所設(shè)計(jì)交織器的交織圖樣為
為了可以流水線處理輸入數(shù)據(jù),即第一幀數(shù)據(jù)寫入完成之后,讀出第一幀數(shù)據(jù)的同時(shí)開始寫入第二幀數(shù)據(jù),這樣第一幀數(shù)據(jù)讀出完成時(shí),第二幀數(shù)據(jù)也寫入完畢,接著同時(shí)進(jìn)行第二幀數(shù)據(jù)的讀出和第三幀數(shù)據(jù)的寫入,這樣依次進(jìn)行下去,最終完成所有數(shù)據(jù)的寫入和讀出。
所設(shè)計(jì)的系統(tǒng)電路頂層原理如圖2所示。
圖2 頂層原理圖(軟件截圖)
詳細(xì)工作過程是count產(chǎn)生順序序列,作為ROM的輸入信號(hào),讀取ROM中的交織表。count模塊輸出經(jīng)reg_g模塊延時(shí)后作為寫地址ROM模塊的輸出作為讀地址,同時(shí)送到兩個(gè)switch模塊中,通過sw_wr信號(hào)控制交替輸出讀寫地址,并送到后面的兩個(gè)RAM模塊中,兩個(gè)RAM模塊的輸出通過switch模塊合并輸出。
交織器的長(zhǎng)度為32 bit,仿真時(shí)輸入兩幀長(zhǎng)的二進(jìn)制數(shù)據(jù),第一幀輸入數(shù)據(jù)依次為8個(gè)0,8個(gè)1,8個(gè)0,8個(gè)1,第二幀輸入數(shù)據(jù)依次為為16個(gè)1,16個(gè)0。
3.2.1 行列交織器的仿真波形
第一幀輸出數(shù)據(jù)應(yīng)為
Data_out=[00110011001100110011001100110011]
圖3 行列交織器第一幀數(shù)據(jù)仿真波形(截圖)
第二幀輸出數(shù)據(jù)應(yīng)為
Data_out=[11110000111100001111000011110000]
實(shí)際仿真所得波形如圖4所示。
圖4 行列交織器第二幀數(shù)據(jù)仿真波形(截圖)
3.2.2 基于二次同余的二次算數(shù)對(duì)稱交織器的仿真波形
第一幀輸出數(shù)據(jù)應(yīng)為
Data_out=[01101001100101100111101010000101]
實(shí)際仿真所得波形如圖5所示。
圖5 二次算術(shù)對(duì)稱交織器第一幀數(shù)據(jù)仿真波形(截圖)
第二幀數(shù)據(jù)的輸出應(yīng)為
Data_out=[10001000100111101001111100011010]
實(shí)際仿真所得波形如圖6所示。
圖6 二次算術(shù)對(duì)稱交織器第二幀數(shù)據(jù)仿真波形(截圖)
由以上數(shù)據(jù)及波形可看出,系統(tǒng)電路仿真輸出的數(shù)據(jù)與理論數(shù)據(jù)相符。
本文具體討論了Turbo碼中的交織技術(shù),利用Quartus II開發(fā)平臺(tái),使用了Verilog語言設(shè)計(jì)與編程,使用Modelsim對(duì)所設(shè)計(jì)的交織器電路進(jìn)行仿真并給出了仿真波形,驗(yàn)證了其邏輯功能的正確性。通過對(duì)兩種交織器的仿真,可知此交織器電路的設(shè)計(jì)可通用,只需修改ROM模塊中存放的交織圖樣,確定交織深度,即可簡(jiǎn)單變?yōu)槠渌N類的交織器。交織器的選擇對(duì)于Turbo碼的性能有著直接影響,在具體的條件下選擇合適的交織器十分重要。
[1]BERROU C,GLAVIEUX A,THAITIMASJSHIMA P.Near shannon limit error-correcting coding and decoding:Turbo Codes(1)[C]//Proc.ICC 1993.Geneva,Switztland:IEEE Press,1993:1064-1070.
[2]劉東華.Turbo碼原理與應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2004.
[3]李海清.Turbo交織器的設(shè)計(jì)及相關(guān)技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2008.
[4]田曉燕.Turbo碼編譯碼方法的研究與實(shí)現(xiàn)[D].河北:河北大學(xué),2005.
[5]SHU Lin,DANIEL J C.Error control coding[M].2nd ed.晏堅(jiān),何元智,潘亞漢,等,譯.北京:機(jī)械工業(yè)出版社,2007.