趙文劍 ,王竹剛
(1.中國科學院大學北京100190;2.中國科學院國家空間科學中心,北京100190)
隨著對高效、高可靠性衛星通信系統需求的增長,傳統的遙測同步和信道編碼系統已經無法滿足實際的要求,在復雜多變的空間通信環境中如何降低系統信息傳輸誤碼率,實現可靠的信息傳輸已經成為遙測系統需要解決的關鍵性問題[1]。依照CCSDS制訂的分包遙測標準[2]體系中同步和信道編碼標準[3-8],文中在FPGA平臺上實現了一套遙測編碼系統。整個遙測同步和信道編碼流程可以概括為:首先,信道編碼使用LDPC碼,它具有接近香農極限的誤碼性能和較高的編碼增益,適用于空間探測、載人航天等空間應用領域[9];然后,數據加擾采用和偽隨機序列做相關運算的方法,它保證了信道的轉變密度,避免了長時間出現‘0’或‘1’[10];其次,加擾后的數據添加相對應的同步碼,構成適合于分包遙測體系傳輸的遙測信道數據訪問單元(Channel Access Data Unit,CADU),再進行物理層的基帶、中頻和射頻處理,最后送入物理信道進行傳輸。
LDPC碼可以獲得較高的編碼增益,在衛星通信場合具有很好的應用前景[11]。本設計中采用了LDPC(2048,1024)碼,又稱1/2碼率LDPC碼。這是一種準循環LDPC碼(Quasi-Cyclic Low Density Parity Check Code,QC-LDPC),可對 1024個信息比特編碼,并輸出2048位碼字,常應用在深空通信場合。該碼的生成矩陣G具有系統循環結構,維數是1024×2048,結構如式(1)

式(1)中,矩陣左邊是一個1024×1024的單位方陣,右邊是8行8列共64個128×128的循環子矩陣塊Bij構成的1024×1024維矩陣。Bij的每一行由其上一行向右循環移位1位構成,第一行是最后一行的循環移位,因此存儲生成矩陣簡化為存儲其生成向量,可以節約大量的存儲資源。
為了保證信道的轉變密度,避免長時間出現‘0’或‘1’,使用生成多項式h(x)=x8+x7+x5+x3+1產生周期為255的偽隨機序列與LDPC編碼之后的比特流相異或,即偽隨機化(Pseudo-Randomizer)。因為異或操作具有結合性,假設原始數據為D,用來加擾的偽隨機序列為P,隨機化后的數據為R,則R⊕P=(D⊕P)⊕P=D⊕(P⊕P)=D⊕0=D。因此,地檢設備解幀時只需用同樣的偽隨機序列再次與除同步碼以外的每一位進行異或,即可恢復原數據[12]。
為了實現幀定界,方便接收端幀同步,經LDPC編碼和偽隨機化后的每幀數據需附加相應的同步碼,依據標準建議,對應LDPC(2048,1024)編碼的同步碼為64比特,其十六進制表示為034776C7272895B0[13]。綜上所述,整個遙測同步和編碼的數據封裝過程如圖1所示。
已知信息碼序列M和式(1)生成矩陣G,可由式(2)求得碼字序列A。

圖1 遙測同步和信道編碼數據封裝過程

其中M為輸入信息序列,I為式(1)中單位矩陣,B為式(1)中的循環矩陣,C為校驗序列,編碼后的碼字序列A由輸入信息序列M和校驗序列C兩部分組成。由式(2)可知,(2048,1024)LDPC碼的編碼實際上僅需要計算校驗序列C=M×B[14]。矩陣B的每個塊矩陣具有循環特性,存儲生成矩陣時只需存儲每個塊矩陣的第一行,依次向右循環移位即可得整個生成矩陣,因此,原本需要1024×1024個存儲空間,現只需128×64個存儲空間。下面推導編碼運算公式:記Bi,j=[bli,j(k)],其中i,j=1,2,…8表示8行8列塊矩陣;k=1,2,……,128表示每個塊矩陣的128列元素;l=0,1,…,127表示每個塊矩陣的行元素向右循環移位的位數。M(j)表示輸入信息的第j比特位;R(n),n=1,2,…1024表示1024個1024維矢量信號。
當輸入第1比特信息M(1)時,M(1)與B第1行全部元素相乘,結果為:

當輸入第2比特信息M(2)時,M(2)與B第2行全部元素相乘,結果為:

當輸入第j比特信息M(j)時,M(j)與B的第j行元素全部相乘,結果為:

其中,“%”表示求余,“/”表示整除所得的商。
綜上,記accv(v=1,2,…,8)表示8個128位校驗碼寄存器,acc表示1024位的校驗碼寄存器則

其中,“{}”表示8個128比特的accv寄存器拼湊為1024比特。
根據式(3)~(6)的計算過程,校驗序列的計算電路設計如圖2所示,利用循環移位寄存器、乘法器及異或累加器為核心實現向量與矩陣的乘法,極大地減少了運算量和資源消耗,有利于編碼器的硬件實現。
圖2工作過程如下:

圖2 LDPC編碼電路
1)初始時刻128位循環移位寄存器cshift1、cshift2…cshift8分別讀入G中B1,1,B1,2…,B1,8的第1行數據其中k=1,2,…,128 。同時與第1位信息位M(1)進入與門做乘法,再由異或門相加后分別存入acc1,acc2,…,acc8;
3)重復步驟2);
4)當M(128)輸入電路并運算完成后,移位寄存器cshift1、cshift2…cshift8分別讀入G中B2,1,B2,2…,B2,8的第1行數據與第129位信息位M(129)進入與門做乘法,結果分別與acc1,acc2,…,acc8中的值相異或后存入acc1,acc2,…,acc8。
重復上述過程直到信息序列M的最后一位M(1024)進入電路運算完成后,取出acc1,acc2,…,acc8中的值,賦值給校驗碼寄存器acc,即acc={acc1,acc2,…,acc8},所得即為LDPC編碼的校驗碼字。
生成多項式h(x)=x8+x7+x5+x3+1產生周期為255的偽隨機序列與LDPC編碼之后的2048比特信息逐位異或,實現幀數據加擾。偽隨機電路使用如圖3所示的線性反饋移位寄存器(Linear Feedback Shifting Register,LFSR)實現:

圖3 偽隨機化電路
初始化時,8位寄存器置‘1’,偽隨機序列的每位輸出與LDPC編碼后碼字相異或同時返回LFSR中參與后一位隨機位的生成運算,一個周期即255個時鐘周期之后,LFSR寄存器呈全‘1’,接著重復上一個周期的輸出,直至整幀數據完全加擾,即完成一幀數據的處理[15]。
偽隨機之后的2048比特信息碼附加64位同步碼構成2112比特標準數據幀。每一幀數據經過LDPC編碼和偽隨機處理后輸出一個時鐘周期的脈沖信號,ASM電路接收到該脈沖后,將64位同步碼打進64位移位寄存器,下一個時鐘即輸出同步碼最高位,同時將偽隨機后生成的信息碼逐位移入64位移位寄存器,從而實現CADU碼流的串行輸出,ASM電路實現如圖4所示。
本設計使用Xilinx公司的xc4vsx55芯片實現,并在ISE14.6環境下使用Verilog HDL完成電路設計、綜合、布局布線及程序下載。本系統的實現結構圖如圖5所示,clk為時鐘信號;rst為系統復位信號,高電平有效;inf_in為串行輸入數據;inf_in_en,輸入數據有效標識信號,高電平有效;tm_out為串行輸出數據;tm_out_en,輸出數據有效標識信號,高電平有效。
設計中遙測同步和信道編碼系統綜合后的FPGA資源使用情況如表1所示,可見,系統在占用較少資源的情況下,實現了同步和編碼功能,大大節省了資源消耗。

圖4 幀同步電路

圖5 遙測同步及信道編碼系統結構

表1 遙測同步及信道編碼系統資源占用
系統吞吐量Throughput的計算公式如式(7)所示,其中n表示一幀待處理信息數據的比特數,c表示完成一幀數據處理所需的主時鐘周期數,T表示系統時鐘[16]。

由表1,當系統工作頻率為150 MHz時,對于1個數據幀,從第1個信息比特輸入,到CADU最后1個比特數據輸出,實驗結果表明一共需2 120個主時鐘周期,即c=2 120。系統中數據幀包含的信息比特數為1 024,則由式(7)計算的吞吐量約為72 Mbps。
文中依照CCSDS分包遙測標準建議,在FPGA平臺上實現了一套遙測同步和信道編碼系統。該系統應對復雜多變的空間環境,具有較高的數據傳輸可靠性,同時硬件實現簡單,數據吞吐量高,在占用資源較少的情況下,能準確完成遙測數據的同步和信道編碼任務,滿足深空通信要求。
[1]Lin S,Costello D J,Jr.差錯控制編碼[M].北京:機械工業出版社,2013.
[2]Packet Telemetry.CCSDS 102.0-B-5.Blue Book.Issue 5[S].2013.
[3]TM Synchronization and Channel Coding.CCSDS 131.0-B-2.Blue Book.Issue 2[s].2013.
[4]CCSDS.CCSDS130.0-G-3Overviewofspacecommunicationsprotocols[S]. Washington D.C.:CCSDS Secretariat,2014.
[5]CCSDS CCSDS 355.0-R-4 Space data link security protocol[S].Washington D.C:CCSDS,2014.
[6]CCSDS.CCSDS 732.0-B-3 AOS space data link protocol[S].Washington D.C:CCSDS Secretariat,2015.
[7]CCSDS.CCSDS 230.1-G-2 TCsynchronization and channel coding--summary of concept and rationale[S].Washington D.C:CCSDS Secretariat,2012.
[8]TM ChannelCoding Profiles.CCSDS 131.4-M-1.Magenta Book.Issue 1[S].2012.
[9]郭經.CCSDS遙測信道編碼標準簡介[J].航天標準化,2012(2):42-45.
[10]馬苗,朱巖.基于CCSDS標準的衛星數據處理軟件設計[J].電子設計工程,2015,23(1):16-20.
[11]雷光雄,王賽宇.基于CCSDS建議的糾錯碼技術研究[J].計算機與網絡,2015(2):19-25.
[12]杜兵團,趙建功.基于CCSDS標準的高速LDPC譯碼算法[J].無線電工程.2013(10):59-66.
[13]易茂祥,張浩,郭紅衛等.m-序列數據擾碼技術及其在SATA中的應用[J].微電子學,2012,42(4):502-505.
[14]謝勇,姚遠程,秦明偉.QC-LDPC碼編碼器的FPGA實現[J].西南科技大學學報,2013,28(1):84-87.
[15]程磊,杜鋒,張健.深空通信中LDPC碼編碼器設計與FPGA實現[J].電子質量,2015(4):34-38.
[16]劉蘭,姚行中,王振宇等.適用于CCSDS的“一幀一密”加/解密方案的FPGA實現[J].計算機工程與應用,2015,51(10):84-88.