趙文劍 ,王竹剛
(1.中國科學院大學北京100190;2.中國科學院國家空間科學中心,北京100190)
隨著對高效、高可靠性衛(wèi)星通信系統(tǒng)需求的增長,傳統(tǒng)的遙測同步和信道編碼系統(tǒng)已經(jīng)無法滿足實際的要求,在復雜多變的空間通信環(huán)境中如何降低系統(tǒng)信息傳輸誤碼率,實現(xiàn)可靠的信息傳輸已經(jīng)成為遙測系統(tǒng)需要解決的關鍵性問題[1]。依照CCSDS制訂的分包遙測標準[2]體系中同步和信道編碼標準[3-8],文中在FPGA平臺上實現(xiàn)了一套遙測編碼系統(tǒng)。整個遙測同步和信道編碼流程可以概括為:首先,信道編碼使用LDPC碼,它具有接近香農(nóng)極限的誤碼性能和較高的編碼增益,適用于空間探測、載人航天等空間應用領域[9];然后,數(shù)據(jù)加擾采用和偽隨機序列做相關運算的方法,它保證了信道的轉(zhuǎn)變密度,避免了長時間出現(xiàn)‘0’或‘1’[10];其次,加擾后的數(shù)據(jù)添加相對應的同步碼,構成適合于分包遙測體系傳輸?shù)倪b測信道數(shù)據(jù)訪問單元(Channel Access Data Unit,CADU),再進行物理層的基帶、中頻和射頻處理,最后送入物理信道進行傳輸。
LDPC碼可以獲得較高的編碼增益,在衛(wèi)星通信場合具有很好的應用前景[11]。本設計中采用了LDPC(2048,1024)碼,又稱1/2碼率LDPC碼。這是一種準循環(huán)LDPC碼(Quasi-Cyclic Low Density Parity Check Code,QC-LDPC),可對 1024個信息比特編碼,并輸出2048位碼字,常應用在深空通信場合。該碼的生成矩陣G具有系統(tǒng)循環(huán)結(jié)構,維數(shù)是1024×2048,結(jié)構如式(1)
式(1)中,矩陣左邊是一個1024×1024的單位方陣,右邊是8行8列共64個128×128的循環(huán)子矩陣塊Bij構成的1024×1024維矩陣。Bij的每一行由其上一行向右循環(huán)移位1位構成,第一行是最后一行的循環(huán)移位,因此存儲生成矩陣簡化為存儲其生成向量,可以節(jié)約大量的存儲資源。
為了保證信道的轉(zhuǎn)變密度,避免長時間出現(xiàn)‘0’或‘1’,使用生成多項式h(x)=x8+x7+x5+x3+1產(chǎn)生周期為255的偽隨機序列與LDPC編碼之后的比特流相異或,即偽隨機化(Pseudo-Randomizer)。因為異或操作具有結(jié)合性,假設原始數(shù)據(jù)為D,用來加擾的偽隨機序列為P,隨機化后的數(shù)據(jù)為R,則R⊕P=(D⊕P)⊕P=D⊕(P⊕P)=D⊕0=D。因此,地檢設備解幀時只需用同樣的偽隨機序列再次與除同步碼以外的每一位進行異或,即可恢復原數(shù)據(jù)[12]。
為了實現(xiàn)幀定界,方便接收端幀同步,經(jīng)LDPC編碼和偽隨機化后的每幀數(shù)據(jù)需附加相應的同步碼,依據(jù)標準建議,對應LDPC(2048,1024)編碼的同步碼為64比特,其十六進制表示為034776C7272895B0[13]。綜上所述,整個遙測同步和編碼的數(shù)據(jù)封裝過程如圖1所示。
已知信息碼序列M和式(1)生成矩陣G,可由式(2)求得碼字序列A。
圖1 遙測同步和信道編碼數(shù)據(jù)封裝過程
其中M為輸入信息序列,I為式(1)中單位矩陣,B為式(1)中的循環(huán)矩陣,C為校驗序列,編碼后的碼字序列A由輸入信息序列M和校驗序列C兩部分組成。由式(2)可知,(2048,1024)LDPC碼的編碼實際上僅需要計算校驗序列C=M×B[14]。矩陣B的每個塊矩陣具有循環(huán)特性,存儲生成矩陣時只需存儲每個塊矩陣的第一行,依次向右循環(huán)移位即可得整個生成矩陣,因此,原本需要1024×1024個存儲空間,現(xiàn)只需128×64個存儲空間。下面推導編碼運算公式:記Bi,j=[bli,j(k)],其中i,j=1,2,…8表示8行8列塊矩陣;k=1,2,……,128表示每個塊矩陣的128列元素;l=0,1,…,127表示每個塊矩陣的行元素向右循環(huán)移位的位數(shù)。M(j)表示輸入信息的第j比特位;R(n),n=1,2,…1024表示1024個1024維矢量信號。
當輸入第1比特信息M(1)時,M(1)與B第1行全部元素相乘,結(jié)果為:
當輸入第2比特信息M(2)時,M(2)與B第2行全部元素相乘,結(jié)果為:
當輸入第j比特信息M(j)時,M(j)與B的第j行元素全部相乘,結(jié)果為:
其中,“%”表示求余,“/”表示整除所得的商。
綜上,記accv(v=1,2,…,8)表示8個128位校驗碼寄存器,acc表示1024位的校驗碼寄存器則
其中,“{}”表示8個128比特的accv寄存器拼湊為1024比特。
根據(jù)式(3)~(6)的計算過程,校驗序列的計算電路設計如圖2所示,利用循環(huán)移位寄存器、乘法器及異或累加器為核心實現(xiàn)向量與矩陣的乘法,極大地減少了運算量和資源消耗,有利于編碼器的硬件實現(xiàn)。
圖2工作過程如下:
圖2 LDPC編碼電路
1)初始時刻128位循環(huán)移位寄存器cshift1、cshift2…cshift8分別讀入G中B1,1,B1,2…,B1,8的第1行數(shù)據(jù)其中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行數(shù)據(jù)與第129位信息位M(129)進入與門做乘法,結(jié)果分別與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產(chǎn)生周期為255的偽隨機序列與LDPC編碼之后的2048比特信息逐位異或,實現(xiàn)幀數(shù)據(jù)加擾。偽隨機電路使用如圖3所示的線性反饋移位寄存器(Linear Feedback Shifting Register,LFSR)實現(xiàn):
圖3 偽隨機化電路
初始化時,8位寄存器置‘1’,偽隨機序列的每位輸出與LDPC編碼后碼字相異或同時返回LFSR中參與后一位隨機位的生成運算,一個周期即255個時鐘周期之后,LFSR寄存器呈全‘1’,接著重復上一個周期的輸出,直至整幀數(shù)據(jù)完全加擾,即完成一幀數(shù)據(jù)的處理[15]。
偽隨機之后的2048比特信息碼附加64位同步碼構成2112比特標準數(shù)據(jù)幀。每一幀數(shù)據(jù)經(jīng)過LDPC編碼和偽隨機處理后輸出一個時鐘周期的脈沖信號,ASM電路接收到該脈沖后,將64位同步碼打進64位移位寄存器,下一個時鐘即輸出同步碼最高位,同時將偽隨機后生成的信息碼逐位移入64位移位寄存器,從而實現(xiàn)CADU碼流的串行輸出,ASM電路實現(xiàn)如圖4所示。
本設計使用Xilinx公司的xc4vsx55芯片實現(xiàn),并在ISE14.6環(huán)境下使用Verilog HDL完成電路設計、綜合、布局布線及程序下載。本系統(tǒng)的實現(xiàn)結(jié)構圖如圖5所示,clk為時鐘信號;rst為系統(tǒng)復位信號,高電平有效;inf_in為串行輸入數(shù)據(jù);inf_in_en,輸入數(shù)據(jù)有效標識信號,高電平有效;tm_out為串行輸出數(shù)據(jù);tm_out_en,輸出數(shù)據(jù)有效標識信號,高電平有效。
設計中遙測同步和信道編碼系統(tǒng)綜合后的FPGA資源使用情況如表1所示,可見,系統(tǒng)在占用較少資源的情況下,實現(xiàn)了同步和編碼功能,大大節(jié)省了資源消耗。
圖4 幀同步電路
圖5 遙測同步及信道編碼系統(tǒng)結(jié)構
表1 遙測同步及信道編碼系統(tǒng)資源占用
系統(tǒng)吞吐量Throughput的計算公式如式(7)所示,其中n表示一幀待處理信息數(shù)據(jù)的比特數(shù),c表示完成一幀數(shù)據(jù)處理所需的主時鐘周期數(shù),T表示系統(tǒng)時鐘[16]。
由表1,當系統(tǒng)工作頻率為150 MHz時,對于1個數(shù)據(jù)幀,從第1個信息比特輸入,到CADU最后1個比特數(shù)據(jù)輸出,實驗結(jié)果表明一共需2 120個主時鐘周期,即c=2 120。系統(tǒng)中數(shù)據(jù)幀包含的信息比特數(shù)為1 024,則由式(7)計算的吞吐量約為72 Mbps。
文中依照CCSDS分包遙測標準建議,在FPGA平臺上實現(xiàn)了一套遙測同步和信道編碼系統(tǒng)。該系統(tǒng)應對復雜多變的空間環(huán)境,具有較高的數(shù)據(jù)傳輸可靠性,同時硬件實現(xiàn)簡單,數(shù)據(jù)吞吐量高,在占用資源較少的情況下,能準確完成遙測數(shù)據(jù)的同步和信道編碼任務,滿足深空通信要求。
[1]Lin S,Costello D J,Jr.差錯控制編碼[M].北京:機械工業(yè)出版社,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]郭經(jīng).CCSDS遙測信道編碼標準簡介[J].航天標準化,2012(2):42-45.
[10]馬苗,朱巖.基于CCSDS標準的衛(wèi)星數(shù)據(jù)處理軟件設計[J].電子設計工程,2015,23(1):16-20.
[11]雷光雄,王賽宇.基于CCSDS建議的糾錯碼技術研究[J].計算機與網(wǎng)絡,2015(2):19-25.
[12]杜兵團,趙建功.基于CCSDS標準的高速LDPC譯碼算法[J].無線電工程.2013(10):59-66.
[13]易茂祥,張浩,郭紅衛(wèi)等.m-序列數(shù)據(jù)擾碼技術及其在SATA中的應用[J].微電子學,2012,42(4):502-505.
[14]謝勇,姚遠程,秦明偉.QC-LDPC碼編碼器的FPGA實現(xiàn)[J].西南科技大學學報,2013,28(1):84-87.
[15]程磊,杜鋒,張健.深空通信中LDPC碼編碼器設計與FPGA實現(xiàn)[J].電子質(zhì)量,2015(4):34-38.
[16]劉蘭,姚行中,王振宇等.適用于CCSDS的“一幀一密”加/解密方案的FPGA實現(xiàn)[J].計算機工程與應用,2015,51(10):84-88.