宿凌超,雷 茂,秦明偉,姚遠程
(1.西南科技大學 信息工程學院,綿陽 621010;2.特殊環(huán)境機器人技術四川省重點實驗室,綿陽 621010)
伴隨現代計算機技術、深空遠距離衛(wèi)星通信系統(tǒng)以及數據傳輸網絡的高速發(fā)展,數據存儲及傳輸系統(tǒng)追求的目標也愈發(fā)提高。
信道編碼也稱為差錯控制編碼,被視為現代通信系統(tǒng)的基石,伴隨著時間推移,信道編碼技術不斷躍進,向香農理論極限逼近[1]。信道編碼的實質是發(fā)送端對原始數據增添部分冗余信息,依靠新增冗余信息與原始數據承載的關聯性,接收機可以有效地檢測和校正傳輸過程中隨機錯誤的產生[2,3]。而級聯編碼的初始定義是由Forney早于20世紀60年代提出的。RS-CC碼是以卷積碼為內碼結合RS外碼而構成的級聯碼,此種級聯式信道編碼方案性能較為優(yōu)良,針對于高斯白噪聲信道下特別適用,在諸多應用領域被廣泛認可并采用。
服務于廣播電視領域的主流數字衛(wèi)星大多使用到DVB-S傳輸協(xié)議,該協(xié)議自上世紀末期被制定以來,在世界范圍內得到了廣泛應用。實際傳輸過程中衛(wèi)星信號存在嚴重衰減,會導致地面接收機產生較高的誤碼率,采用DVB-S協(xié)議中的信道編碼具有一定的糾錯能力,可以有效提高信息傳輸的可靠性[8]。
現代工程領域涉及諸多被廣泛采納的仿真技術,在計算機仿真回路中接入實物進行實驗被稱之為半實物仿真技術,實驗結果普遍更加接近實際情況,仿真獲取的系統(tǒng)參數對實踐進行具有相當價值的指導意義。
RS碼是一種多元BCH碼,但RS碼生成多項式的根和碼元符號均來自于伽瓦羅域GF(2m)。DVB標準中外編碼采用的是RS(204,188),本質上為其原碼RS(255,239)的截斷碼。此RS碼編碼后的碼字總長度為204 Byte,其中信息字段為188 Byte,16個校驗Byte,有效糾錯字節(jié)能力為t=n-2/k=(204-188)/2=8Byte。故而RS(204,188)編碼器的功能是首先對輸入端188個信息碼字進行編碼,隨后并入16個監(jiān)督碼元形成204個碼字輸出。RS碼歸屬為循環(huán)碼的子類,其編碼方式與一般循環(huán)碼大體相同。編碼器的結構如圖1所示,通過多項乘法器來實現。圖中R0,R1,...R14,R15,均為8位寄存器,它們構成一個8位寄存器鏈:⊕為GF(28)域上的加法器,?為GF(28)域上的乘法器,K1,K2兩個控制數據選擇器的MUX。該編碼器的實質為一個由時鐘驅動的8位寄存器及輸入來實現編碼的除法器。其運行過程為:
圖1 RS編碼器實現結構
1)初始狀態(tài)時,R0,R1,...R14,R15,選擇器K1和K2均選擇下方的輸入作為輸出;
2)第一階段,依據時鐘沿觸發(fā),使m(x)(信息碼元)的各系數從高到低依次序輸入。這一階段輸出端口將信息元直接輸出,同時信息元依次進入多項式乘法器,在第187個節(jié)拍后完成得到余數;
3)第二階段,m(x)輸入置零,選擇器K1和K2均選擇上方的輸入作為輸出。此情況下,乘法器轉換為單純的移位寄存器,整個編碼器的輸出即為校驗多項式r(x)的各系數。
卷積交織的實質是按照特定規(guī)律將待發(fā)送數據拆散,接收端再使之復現原本的順序。其作用是將連續(xù)的干擾離散化,從而避免大量連續(xù)的有用數據出現錯誤。DVB-S標準是依據Forney提出的構造法展開卷積交織操作,交織器輸入端設計為I路通道,I被稱為交織深度,數值選取為12,M定義為單元深度,取值為17,而N=M×I=204為交織器的約束長度或寬度。普遍情況下,N的值應該與分組碼碼字長度對等或者為碼字長度的整數倍。卷積交織實現結構如圖2所示。I路分支接收到RS編碼器輸出的數據后,每路通道的輸出會呈現出不同一的時延,根據理論推導第1條支路不存在明顯時延,通道2的數據需要歷時M個周期后輸出...第i條通道時延M×(i-1)個周期后輸出。
圖2 卷積交織實現框圖
1.3.1 卷積編碼器設計
收縮卷積編碼(2,1,7)是DVB標準采納的內編碼,可以糾正傳輸中的零星、隨機錯誤,(2,1,7)卷積碼編碼器的特點是;輸入數據位寬為1bit,輸出數據位寬為2bit,卷積碼約束長度L=7,(2,1,7)卷積編碼結構如圖3所示。其編碼結構相對簡單,依據結構框圖闡述其詳細的編碼方式。
鉆井液方面標準化建設工作走上了穩(wěn)步發(fā)展之路,近幾年來,一大批鉆井液方面的行業(yè)標準制訂并頒布執(zhí)行,對鉆井工程專業(yè)產生了積極而深遠的影響。通過宣傳、貫徹、執(zhí)行標準,規(guī)范了鉆井液技術行為,推動了我國鉆井液處理劑市場的健康發(fā)展以及鉆井整體技術工藝水平的提高。
圖3 (2,1,7)卷積編碼結構圖
如圖3所示,卷積編碼器的輸出序列為并行輸出,分別用X,Y表示,其生成多項式可以表示為:
簡單表示為:G1(x)=1111001=(171)8,G2(x)=1111001=(171)8。該卷積編碼器涵蓋m個移位寄存器,即m=6,存在的有效狀態(tài)數為2m=64。2m=64涉及的所有狀態(tài)表示為S0,S1,S2…S63,Si=i是十進制表示方法,Si=b1b2b3b4b5b6是二進制表示方法,(bi=0或1)。對于任意兩個狀態(tài),狀態(tài)間轉換關系不是一成不變的。假設當前的編碼狀態(tài)為Si=b1b2b3b4b5b6,若輸入信息元b0。后轉化為狀態(tài)Sj=b1b2b3b4b5,i與j的關系為:
1.3.2 刪余卷積碼設計
對于實時數據的編碼效率以及傳輸速率的要求愈來愈高,在本DVB-S協(xié)議通信系統(tǒng)中引入收縮卷積編碼的處理方式,在一定程度上可以有效解決這些問題。
卷積編碼器輸出端的并行數據序列分別為X和Y,刪余模塊執(zhí)行截短刪余操作,接收編碼器輸出的兩路數據以及數據有效信號,具體存在1/2,2/3,4/5,5/6,7/8五種刪余模式,詳細表述如表1所示。
表1 不同碼率對應的刪余模式和發(fā)送序列
RS譯碼器的首要目標旨在確定錯誤發(fā)生點所在的數據包,一般情況下滿足e≤t,譯碼器對于發(fā)生錯誤的碼字展開誤碼糾錯;若e>t,表明譯碼算法的理論糾錯能力已不能應對實際誤碼情況,繼續(xù)進行糾錯會導致更多錯誤信息產生。多數情況下,編譯碼能夠正確糾正錯誤信息的前提是e≤t,例如RS(204,188)中,t=n-k/2=(204-188)/2=8Byte,如果實際傳輸過程中,高斯信道中出現差錯字節(jié)數超過8,RS譯碼器會放棄譯碼操作。對于RS譯碼流程,目前已流傳出許多可實現算法,最為廣泛采用的是RiBM算法和Euclid算法。RS譯碼器實現架構如圖4所示,譯碼器采用了四級流水線的操作來提高譯碼速度。RS譯碼器包含:伴隨式計算模塊、關鍵方程求解模塊、錢搜索模塊、Forney算法模塊、FIFO模塊和譯碼失敗知識模塊六個部分組成。
圖4 RS解碼器實現結構
基于實現交織器的基本思路構想,卷積解交織可以視為交織的逆反過程,兩者的大體結構基本一致。其原理如圖5所示。延遲分支通道共計為I條,輸入端數據在標記為i通道中產生的時延大致為M×(12-i)個周期,依此操作進行有序處理便可以獲取交織前數據的正常順序。
圖5 解交織原理圖
采用倒序排列的處理方式對于多路通道進行操作,與前文介紹交織器相類比,解交織器中1號支路將與交織器第12通道(末尾的支路)的延遲量相等同,時延為M×11,即解交織器中標定序號為i的通道與卷積交織器第13-i通道時延一樣。
Viterbi譯碼作為卷積解碼算法的一種,它將編碼過程同碼的網格圖中一條路徑對應,找出一條與接受序列距離最小者作為發(fā)送數據。譬如當序列長度為L,網格中有2L種不同路徑與2L種編碼器輸入相對應,比較網格中2L條路徑和接受序列的漢明距離,在每個狀態(tài)下,比較兩條路徑之間的間距,間距最小的一條保留作為幸存路徑,這樣,就只剩下一半的路徑,就行考察后面的比特位,得出總的漢明間距最小的路徑作為發(fā)送序列。Viterbi譯碼器實現結構如圖6所示,具體實現流程描述如下:
圖6 Viterbi譯碼器實現結構
1)接收碼按收縮卷積碼以M個為一組進行分組,計算分支度量(采用歐式距離),如果分支度量太大則需進行重新分組,此次分組只需進行移位操作,最多只需要移動M-1次,譯碼算法中采用3比特軟判決方式。
2)按照收縮卷積碼刪除規(guī)律,在刪除處用符號“#”補齊,以收縮率為3/4的卷積碼為例,譯碼器以4bit碼元為一組進行分組,以便恢復到1/2碼率,及愛的那發(fā)端序列為0010,1000,0110,加入“#”后的序列變成:00#10#,10#00#,01#11#,“#”不參與分支度量計算。
3)計算5到10個約束長度,獲得最佳路徑。
4)最佳路徑被正確獲取后,回溯獲得編碼比特值,深度35~70(本例取48)
系統(tǒng)發(fā)送端卷積編碼器輸出結果需要刪余部分比特信息,接收端卷積譯碼器輸出必須將碼率恢復到1/2,為使碼率到達需求值,解刪余操作必不可少,具體處理措施為在前端被刪余位置處進行補0。如果卷積編碼后的碼率已經為1/2,補0操作可以直接省略。當編碼碼率大于1/2,執(zhí)行必要的補0操作使碼率得以規(guī)復。此時補0操作會觸發(fā)相應的標志信號給予譯碼器,譯碼器收到提示所輸入信息不執(zhí)行歐幾里得度量的計算,僅是實現占位,若進行了補0操作,需要給出標志信息位。
系統(tǒng)測試采用計算機主板和FPGA開發(fā)板級聯,兩板之間通信采用PCI-E2.0高速傳輸協(xié)議,測試結果使用C#編寫的軟件顯示。
系統(tǒng)中包含兩條通信鏈路:
1)上位機將信息比特數據、噪聲數據和配置參數發(fā)送到FPGA,并且將信息比特數據和噪聲數據存儲到DDR3A中;
2)FPGA將DDR3A中的數據完成編碼等操作并存儲到DDR3B中,在實驗結束后上傳到上位機進行性能分析和誤碼率統(tǒng)計。通過單次、多次實驗下發(fā)1種、8種數據對系統(tǒng)整體耗時進行了測試,實驗結果如表2所示。從測試結果中可以看出,本系統(tǒng)單次1種數據耗時僅10秒,而通過MATLAB仿真卻需要近20分鐘。
表2 測試所需時長統(tǒng)計
測試結果與基于DVB-S協(xié)議的級聯碼MATLAB仿真系統(tǒng)運算結果進行對比,從而分析其性能誤差,從而驗證所設計的系統(tǒng)的可靠性。
通過仿真系統(tǒng)多次實驗,下發(fā)不同信噪比的噪聲數據以及不同的碼率下所統(tǒng)計得到的誤碼率性能與相同信噪比下MATLAB仿真系統(tǒng)得到的性能對比,繪制對比曲線圖。
圖7為系統(tǒng)級聯碼RS(204,188)+CC(2,1,7)及其2/3、3/4、5/6、7/8刪余下的級聯碼在-7:7dB下的性能與MATLAB仿真性能對比,系統(tǒng)支持調制方式為QPSK,實測表明該級聯編譯碼半實物仿真測試系統(tǒng)的性能較為良好,在信噪比為3dB時,誤碼率為10-6,與MATLAB內置工具Simulink所搭建的通信模型性能基本一致,部分信噪比下半實物仿真結果優(yōu)于MATLAB??傮w偏差控制在0.5dB內。
圖7 MATLAB與FPGA級聯算法誤碼率對比曲線圖
系統(tǒng)基于半實物仿真技術實現了DVB-S協(xié)議的信道編譯碼算法性能驗證,依據DVB-S標準,完成了級聯編譯碼涉及的上位機軟件代碼,以及所有下位機模塊的代碼編寫、仿真驗證,最終在XC7VX690T芯片上實現了級聯編碼器的板級性能測試。
級聯測試表明:系統(tǒng)的級聯信道編解碼器能正確地運行操作,對數據處理速度快、實時性好,其編譯碼性能與按照DVB-S協(xié)議所規(guī)建的Simulink仿真模型的誤碼率性能大體相同,可靠性好,可以實現對信息數據在AWGN信道中完成信道編譯碼的整個過程處理的實時分析,實現了系統(tǒng)設計的預期功能。
信道編譯碼對提高通信系統(tǒng)性能具有重要意義,編譯碼技術在通信系統(tǒng)有廣闊的前景,通過此系統(tǒng),可以降低研究人員對此的仿真所需時間,有助于研究人員對信道編譯碼的研究工作,可用于對基于DVB-S協(xié)議的信道編譯碼性能分析驗證。并且此系統(tǒng)開發(fā)方式靈活,設計采用模塊化設計,可實現后續(xù)算法的擴展升級。