鄭翹楚
(中國電子科技集團公司第五十四研究所,河北石家莊,050081)
深空通信指的是地球與太陽系九大行星之間的通信、所有行星表面的區域通信、還有地球與太陽系外星球之間的通信。它的一個典型特點就是傳輸距離特別的遠,指定的遠程通信系統所能獲得的數據速率越大,其通信距離的平方也就越小。Turbo碼在AWGN信道和Rayleigh衰落下仍然具有接近信道容量的糾錯能力,對于遠距離傳輸的深空通信具有非常好的應用前景。因此本文進行了基于FPGA的Turbo碼編譯碼器在深空通信中的應用分析。
由于Turbo碼在低信噪比下擁有優于其他方法的與Shannon限相似的性能,故在很短的時間內就引起了相關研究者們的關注,并有助于進行理論研究,其他方面也逐漸步入實際應用。
具有高效和高可靠性特點的深空通信系統是進行流暢的通信業務的重要保障。其中信息傳輸過程中的誤碼率的大小直接影響到深空通信的質量。采用信道編碼是消除或降低信息傳輸錯誤概率的有效手段之一。這里采用Turbo碼譯碼器實現深空通信。Turbo碼譯碼器的組成部分包括MAP譯碼器模塊、交織器與解交織器模塊、時序控制模塊三個部分,由于篇幅其中MAP譯碼器交織器兩個模塊不再進行詳細描述,這里主要是對循環譯碼的實現進行闡述,本文設計采用的交織器具有一樣的交織序列與解交織序列,同時采用的兩個MAP譯碼器并非一起使用,所以,要完成Turbo碼的譯碼只需使用一個MAP譯碼器,為了使循環譯碼可以更容易實現,與編碼器中所使用的交織器略有區別,Turbo碼譯碼器中所使用的是包括兩個使能信號的交織器,即輸入與輸出使能,而Turbo碼譯碼器與編碼器所采用的交織序列是一樣的。下圖是Turbo碼譯碼器的整體結構示意圖,這里對譯碼器的結構進行了相應的簡化,以便于其實現,同時,將分量譯碼器所輸出的對數似然概率進行循環迭代,通過其仿真圖可知,它具有非常不錯的譯碼效果。

圖1 Turbo譯碼器的總體結構圖
卷積碼將k個信息比特編成n個比特,但k和n通常很小,特別適合以串行形式進行傳輸,時延小,考慮深空通信特點采用卷積碼譯碼實現解調器輸出信息的決定,以下針對深空通信特點進行譯碼器的設計。地址為計數器的輸出,由時序控制模塊向所有RAM塊傳送,并通過所輸出的所有使能信號對運算過程進行控制。由于所采取的是分塊并行譯碼法,各子譯碼器的譯碼延時有了很大程度的降低,與傳統的譯碼器相比,在譯碼延時方面有比較大的改進。1號譯碼器運行延時為N+2個時鐘,交織解交織模塊與譯碼模塊是同時進行的,所以2號譯碼模塊讀入數據所需時間即為交織器輸出時間,因為交織器存在一個時鐘的延時,故與2號譯碼模塊相比,1號譯碼模塊處理時間相對要少1個時鐘。當1號譯碼模塊與2號譯碼模塊進行一次工作,則一次迭代完成,那么完成一次迭代譯碼需2N+5個時鐘延時。由于譯碼器中包含多個變量,要將所有變量列出很難,clk表示時鐘,a[0..7]代表的是,即譯碼器接收端量化的信息序列,b1[0..7]代表的是,b2[0..7]代表的是,即譯碼器接收端量化的校驗序列,L2代表2號分量譯碼器的對數似然概率,代表完成四次迭代所輸出的數據。因為譯碼過程存在的延時較大,因此要在通過該圖將輸入與輸出間的關系找出并不容易,不過對似然比L2進行查看發現,由其符號位可獲得譯碼數據。通過分析可知譯碼所輸出的數據無誤。下面對采用不同譯碼算法的Turbo碼性能進行了MatlAB平臺的仿真,圖形如下所示,仿真結果表明,四種算法中,MAP算法性能最好。

圖2 不同解碼算法的Turbo碼性能影響
本設計由恰當的分割模塊和參數化設計,加上所采取的設計方法綜合了自下往上及自上往下兩種方式,然后連接所有模塊并進行調試,從而形成了完整的設計文件。
軟輸入/輸出SISO譯碼雖然使譯碼性能得到了提升,但硬件的實現也隨之變得更加難了,這也就阻礙了FPGA的實現。要將該問題解決掉,第一步要弄清楚譯碼器中帶有符號小數的量化方式與運算過程。一般情況下,帶有符號小數運算的FPGA有兩種二進制運算實現方式,即定點制與浮點制,雖然相比定點數,浮點數無論是在精度方面還是數據范圍方面均更優一些,然而卻在實現上就沒那么容易了,此設計所采取的方式為定點二進制。這里所采用的是帶有符號的八位定點數據。左邊數的首位、第2~5位、第6~8位分別為符號位、整數位、小數位。若首位是1,則表示是負數,若首位是0,則表示是正數。設計里的帶符號定點數只包含三種運算,即+法、-法、兩數的對比,接下來主要介紹一下帶符號定點數進行+-法運算的函數add_sub模塊:這個函數做什么運算主要由輸入決定,且將結果輸出,所得結果的符號位為最高位。函數僅有一個體現數據寬度的參數,即datawidth。dina[]與dinb[]是代表兩個輸入數據的輸入端口,下圖為函數的實現結構示意圖。

圖3 add_sub函數模塊的實現結構圖

表1 add_sub函數模塊的邏輯判斷規則
該函數的實現主要是借助一個lpm_add_sub模塊,可隨意對其數據寬度進行設置,這里所采用的是八位的數據。該函數主要是對加減法運算進行選擇,且決定權在于輸入add_sub的值,如果add_sub為l,那么計算為dina+dinb;如果add_sub為0,那么計算為dina-dinb。另外,數據還可能存在溢出的現象,通過所輸出的溢出信號、輸入數據的符號位、運算類型,對所選輸出結果進行控制。Selecter為選擇器模塊,通過兩個輸入端,即overflow與add_sub對輸出結果進行控制。如果overflow為0,那么則無溢出,直接將結果輸出;如果overflow為1,那么就有溢出信號,由實際情況分別將各最值輸出,MAX與MIN分別表示的是向上與向下溢出;如何對選擇邏輯進行判斷見表1,其中MAX與MIN分別為7Fh與80h。
通過分析,設計時將add_sub函數看作一個模塊,在接下來的譯碼器設計中進行調用就比較方便了。圖4表示在不同迭代次數時Turbo碼性能的Matlab仿真結果,由此可以判斷該設計方案是可取的。

圖4 不同迭代次數時的Turbo碼性能
深空通信信道可實現最優AWGN信道的建模,它具有比較充足的頻帶資源,但是探測設備尺寸不夠,且傳輸距離過遠,因此它的功率資源受到了極大的限制。深空通信信道為具有代表性的傳輸信道,且其可靠性被有效性所取代。但是,由于深空探測技術的不斷發展,對于傳輸速率的要求也隨之更加嚴格,故編譯碼器的實現也變得非常的困難。因此,改進信道編譯碼算法可在一定的程度上完善深空通信網絡技術。
[1]康旭輝,安凱.基于FPGA實現的深空通信中Turbo碼編譯碼器[J].重慶郵電學院學報(自然科學版),2006,02:187-191.
[2]郭世欣,張輝,任明祿.深空通信中Turbo碼的編譯碼技術[J].山西電子技術,2007,01:66-67+76.
[3]張桂華,姬紅兵,胡家佺,李會蓮.深空通信中Turbo編譯碼設計與性能仿真[J].系統仿真學報,2008,17:4676-4680.
[4]趙旦峰,朱鐵林,劉淵.幀長可配置Turbo碼編譯碼器的設計與實現[J].電訊技術,2010,09:1-5.
[5]謝智東,劉波,張北江.深空通信中的信道編碼技術[J].數字通信世界,2010,09:78-82.
[6]喻文芳,周輝.Turbo碼編譯碼原理及其性能分析[J].裝備指揮技術學院學報,2003,03:57-60