陳 巍,盧忠仁,陳曉翔,林嘉宇
(1.國防科技大學電子科學與工程學院,長沙410073;2.武警沈陽指揮學院,沈陽110113)
傳輸領域正在經歷急速發展階段,新的需求層出不窮,促使新的業務不斷產生,導致信道頻帶越來越寶貴。QAM調制方式有效緩解了通信傳輸中的帶寬壓力。QAM調制信號的幅度和相位都攜帶有信息。以32QAM為例,一個碼元可以攜帶5bit的信息,這大大提高了信道利用率。所以QAM調制方式被廣泛應用于傳輸領域。
V.32協議ITU-T制定的9600bps高速modem的標準調制協議,它定義了8狀態32QAM網格編碼調制的編譯碼方式。在這個協議中,運用了以“集合劃分映射”思想為基礎的格狀編碼調制技術,簡稱TCM。TCM克服了傳統信道編碼的缺點,把調制與編碼結合起來,在保持頻帶利用率基本不變的條件下,增加信道中傳輸信號集中的信號狀態數目,利用其冗余度進行抗干擾編碼,從而提高能量利用率,可獲得3~6dB的功率增益,是一種高效調制方法。但是V.32協議有一個缺點就是在解調過程中用到了維特比譯碼,而高速Viterbi譯碼器的實現難度很大,所以該標準常用于低速數據傳輸系統的設計。該方案設計針對的不是高速數據傳輸系統,而是語音通信系統,語音的傳送速率不會超過9.6k,因此可以使用V.32協議進行調制[1]。
網格編碼調制[2](Trellis Coded Modulation)技術將糾錯編碼和調制技術有機結合,將編碼的冗余度用于調制信號集中的那些最易出錯,即距離最近的符號代碼,其基本原理如圖1所示。TCM利用碼率為k/(K+1)的格狀碼(卷積碼),將每一碼段映射為具有2(k+1)個調制信號集中的一個信號。在接收端,信號經反映射后變換為卷積碼的碼序列,再送入Viterbi譯碼器譯碼以得到原始信號。

圖1 TCM編碼器一般方框圖
該部分實現分為調制模塊和解調模塊兩個部分。
調制模塊包括差分編碼、卷積編碼以及32QAM調制三個部分(如圖 2)[3]。
將待發送的數據分成連續的4位一組的數據組,每個數據組的Q3Q4比特具有90度旋轉不變性,不需要進行差分編碼。Q1Q2比特無上述特性,它們在360度的旋轉周期上按00 01 10 11的四進制碼配置,應進行模四的自然碼差分編碼。差分編碼后的Y1和Y2兩位用作隱藏式卷積碼編碼器的輸入,生成冗余位Y0。Y0的值可以根據P、Q分量的幅度及前四位比特的值確定。5位編碼比特Y0nY1nY2nY3nY4n共同確定了信號映射的星座點。因為差分編碼的位置在卷積編碼之前,所以這種TCM編碼器對QAM的4重相位模糊透明。根據星座圖,碼變換將代碼Y0Y1Y2Y3Y4變換為適合D/A變換器使用的電平碼。

圖2 32QAM-TCM編碼器硬件結構圖
2.1.1 差分編碼模塊的實現
從調制緩存區按字節讀出數據后,首先將一個字節分成低四位和高四位,按照由低到高的順序每四位一組進行處理。方法是低四位時與0x0f按位與,取高四位時右移四位即可。在進行差分編碼之前,把每組四位中的低兩位(即協議中的Q1Q2)取出提供給差分編碼函數調用。差分編碼使用查表方式進行,Q2Q1被差分函數調用后,左移兩位與前一輸出Y2n-1,Y1n-1組成四位二進制數Q2Q1Y2n-1Y1n-1,然后調用差分編碼查表函數,Q2Q1Y2(n-1)Y1(n-1)的十進制數值就是表中對應的位置,表中對應的十進制數值,轉換為二進制后輸出Y2:bit1 Y1:bit0即為譯碼結果,差分編碼表根據表一制作而成[3]。
2.1.2 卷積編碼的實現
卷積編碼(3,2,3)使用邏輯關系式運算實現。差分編碼完成輸出以后是一個2bit的編碼輸出,Y2:bit1,Y1:bit0,通過和0x02按位與后右移一位分離出Y2,和0x01按位與分離出Y1。三個T寄存器(見V.32協議標準圖2),從左到右分別命名為T2T1T0。寄存器的輸出為當前的狀態輸出,程序中分別記為t2、t1、t0,寄存器的輸入(即為下一時刻)分別記為 t2_left、t1_left、t0_left。三個延時寄存器的初始輸出狀態均設為零。根據邏輯關系式y0=t0,t2_left=t0,t1_left=t28y28y1((t18y2)&t0),t0_left=t18y28(t0&y1),8表示為異或,即可求出y0。然后將輸入的數值左移一位與y0相或,即得到卷積編碼的3bit輸出。

表1 差分編碼表
2.1.3 32QAM調制的實現
正交幅度調制是由兩路正交的抑制載頻的雙邊帶調幅所組成。兩路調制載波相差90度,所以稱為正交調幅。當輸入的基帶信號為多電平時,就構成了多電平正交幅度調制(MQAM)。
經過差分編碼和卷積編碼后,得到Y0Y1Y2Y3Y4五個比特的結果,然后進行星座表查表,得到各個對應星座點的橫坐標與縱坐標的值,這兩個值就是控制正交幅度調制信號的值。在此,將橫坐標和縱坐標分別分為正負4個電平等級(共8個),即 ±1、±2、±3、±4。星座表的制作根據圖 3而定[4]。
調制模塊包括32QAM解調、維特比譯碼以及差分譯碼三個部分。
2.2.1 32QAM解調的實現
解調是調制的逆過程,模擬信號經相干解調后得到兩個幅度值Q、P,根據這兩個幅度值可以進行查星座圖譯碼表得到Y0Y1Y2Y3Y4五個比特的結果。譯碼表也是根據圖3進行星座圖編碼表的反查表獲得。

圖3 適合于V.32 TCM協議的信號星座圖
2.2.2 維特比譯碼的實現
卷積編碼使用維特比算法進行譯碼。由于(3,2,3)卷積碼的約束長度是9,即譯碼輸入序列的碼長不能少于27個比特位,至少要計算到網格圖的第10級分支時才開始輸出。所以在計算第10級分支時輸出此時最小漢明距離對應的第0級子組的譯碼,并且從第10級開始,每輸入一個接收子組,就輸出一個譯碼子組,直到接收序列輸入結束。從輸入緩沖區中每次輸入3bit的數據,共輸入八拍24bit,每拍時鐘均計算每條支路與輸入數據的漢明距離,然后以時刻左側狀態為準,每一個左側狀態只保留一條支路漢明距離最小的支路,將支路號、漢明距離、支路左側狀態分別對應存入數組transfer_way_num[t][]、transfer_HM[t][]、survive_left_state[t][]。將到每個右側狀態左邊連接的支路號存入state_from_transferway[t][]。依次類推,一直到達第九個時鐘,然后進行回溯,算出總漢明距離最小的路徑,輸出2bit的結果,將t0-t1之間支路的右側狀態更新為初始狀態,同時,將能到達t1時刻初始狀態的所有路徑保存。以后,每個時鐘周期輸出3bit的數據,進行一次回溯選擇最優幸存路徑,然后將2bit譯碼輸出,直至譯碼完成[5]。
2.2.3 差分譯碼過程的實現
經過維特比譯碼后,差分譯碼輸入數值為V32協議中的 Y2Y1,然后與前一次輸入 Y2(n-1)Y1(n-1)組成四位二進制數Y2(n-1)Y1(n-1)Y2Y1,再通過差分譯碼查表函數求出Q2Q1。差分解碼后得到Q2Q1,將星座中的Q4Q3左移兩位后再與Q2Q1相或,就可以得到一個碼組。由于調制的時候是按照一個字節的高低四位兩個碼組進行拆分調制的,所以兩個碼組以后就可以進行字節恢復,將高四位字節左移4位,與低四位相或得到一個字節。至此,解調過程全部完成。
以上給出了32QAM調制下高效利用頻帶的多進制TCM編碼方案,用該方案在獲得寬頻帶利用率的同時可取得更加優異的編碼性能。實際證明,采用此種方法能使誤碼率達到10-7,基本上能滿足低速數據傳輸系統的性能要求,有著極其廣闊的應用前景。
[1] UNGERBOECK G.Channel coding with multileve/phase[J].IEEE Trans Information Theory.1982,28(1):55-67.
[2] 樊昌信,曹麗娜.通信原理[M].北京.國防工業出版社,2006.
[3] ITU-T Recommendation V.32.A Family Of 2-Wire,Duplex Modems Operating At Data Signalling Rates Of Up To 9600 bitls For Use On The General Switched Telephone Network And On Leased Telephone-Type Circuits[S].ITU-T.03/93.1993.
[4] 于康友,封化民,李楊,方勇.調制解調器原理、選用與測試[M].北京:電子工業出版社,1994.
[5] 鄭輝.卷積碼的簡化Viterbi譯碼算法[J].電信技術研究,1986(11):24-30.