張偉健,鄭 毅,耿 林,吳 洋
(華北光電技術研究所,北京 100015)
激光技術的發展使軍事在作戰的形式發生了重大變化。為了能更逼真的模擬戰場環境,提升我軍的作戰素質,科研人員開發了一套模擬真實作戰場環景的信息交流系統。在系統中,當武器射擊時半導體激光器會發射出與瞄準線平行的編碼紅外脈沖激光束[1],激光發射器打出一束激光代表武器打出一顆子彈,不同的激光光束命中身體不同部位的光電接收器,會上報不同的戰損信息,從而實現了戰爭中敵我作戰場景的模擬。使用帶有編碼信息激光光束代替子彈,在節約成本的同時,使軍事演練中包含了更多的科技元素,同時也減少了士兵在軍演中意外情況的發生,提升了軍演的安全性。
環境復雜、信息量大、干擾強是戰場環境的基本特征。為了能夠安全有效地傳遞戰場實時的信息,我們要求攜帶信息的載體具有抗干擾能力強且能夠傳遞大量的信息的特性。激光具有發散角小,相干性強的特性[2],這使得脈沖編碼激光信號被截獲的可能性很低[3]。同時可變的脈沖激光振幅,脈寬,脈沖間隔等特性使激光能夠攜帶大量信息。基于這些特性,脈沖激光能在復雜的戰場,承擔“信使”這一重任。常見的激光脈沖編碼方式有脈沖重頻編碼、PCM編碼、等差周期脈沖編碼等,其中PCM編碼方是使用最廣泛的一種脈沖編碼方式[4]。
PCM編碼指的是對固定頻率的激光脈沖信號進行調制的方法,編碼調制的目的是讓本該產生脈沖信號的位置不再產生脈沖信號,使相鄰脈沖間的間隔各不相同,從而攜帶信息[5]。PCM碼是在精確頻率碼的基礎上,對相應的激光脈沖選擇發射或者不發射,實現不同的脈沖間隔編碼[6]。
文中使用的激光脈沖的編碼方式是循環不重復碼,循環不重復碼是PCM碼的一種。具有循環不重復的特性的碼應該具有如下特點:
(1)將一組m位循環不重復碼連續重復發送n遍后,形成一個元素個數為A=m×n的行向量;
(2)將m位的循環不重復碼循環右移排成一列,得到一個B=m×m的矩陣;
(3)將p組循環不重復碼執行(1)操作,得到C=p×mn的矩陣;
(4)在行向量A中任意截取連續的m位,m位與其他非本行的任意截取的連續的m位均不相同,同時又均能在矩陣B找到。

使用循環不重復碼能在大量干擾存在的情況下提升脈沖激光的解碼成功率,從而將信息傳遞到指揮部,以便指揮部能準確得知戰場的作戰信息,及時調整作戰方案,有利于提高了軍事演習的質量。

圖1 循環不重復碼流程圖

圖2 11位循環不重復碼
編碼脈沖激光攜帶用戶ID和裝備類型這倆種信息,發射端使用串口實現命令的發射與接收,控制命令由PC端產生。串口發送的數據幀格式如圖3所示。
如果PC端通過串口將控制命ff11010205發送到FPGA后,激光器會發射攜帶用戶ID為1,裝備類型為2信息的脈沖激光。為了增加解碼的成功率,每個字段會重復發送三遍,發射部分的FPGA結構如圖4所示。

幀頭0幀頭1數據0數據1校驗ff11用戶ID裝備類型

圖4 發射端FPGA結構圖
發射編碼脈沖的動作由以上三個模塊協同完成,uart_byte模塊用來接收來自PC端的控制指令,發出帶有信息的脈沖激光;baud_set設置碼元的傳輸速率;cmd_analysis模塊將協議中信息轉換成相應的碼型;laser_driver模塊在信號C_CLK的上升沿賦值給,一位一位的發送出去。裝備類型和用戶ID會分別存儲到寄存器ctrl_code_device和ctrl_code_type中。使用11位循環不重復碼將信息編碼,用戶ID為11010101100和裝備類型為11000110101,modelsim的仿真結果如圖5所示。

圖5 發射端功能仿真圖
由仿真結果可以脈沖激光的信息可以準確的存儲在寄存器ctrl_code_device和ctrl_code_type中。
將激光信號接收,并成功解碼是系統中關鍵性的一步。在PC端的控制下,激光發射器發射帶有編碼信息的脈沖激光經過大氣傳輸損耗,最終會被探測器接收。接收到的光信號經過光電轉換模塊,將光信號轉變為電信號,再對轉換后的電信號進行一系列的展寬、整型等處理,再交給解碼電路進行解碼。解碼電路的FPGA結構如圖6所示。

圖6 接收端FPGA結構圖
解碼主要由三部分構成laser_recod、find_code、module_value三個模塊組成。分別介紹三個模塊的功能。
laser_recod模塊的主要功能是將采集的所有脈沖信號存儲起來。該模塊可以由狀態機來實現,共有四個狀態,分別為idle,time_ms_ok,data_get,time_us_ok。其中idle表示狀態機的初始態,time_ms_ok 1ms計數完成的狀態,data_get表示數據存儲完成的狀態,time_us_ok表示延時。狀態機如圖7所示。

圖7 Laser_code狀態機
find_code模塊實現的功能是將編碼的信息在碼表中找到相應的地址并存儲到RAM,以便后續模塊根據RAM中的地址信息確定用戶的ID以及裝備的具體類型。為了提高解碼成功率,增強系統的魯棒性,解碼電路會解碼三次,ta_find,tb_find,tc_find表示用戶ID解碼三次,da_find,db_find,dc_find表示裝備類型解碼三次。所有的碼型都存儲在RAM中。該模塊狀態機如圖8所示。

圖8 Find_code狀態機
module_value模塊根據RAM中的地址,在碼表中找到用戶的具體的ID信息,及裝備的類型信息。實現三個模塊的功能即可實現一次解碼操作,我們以用戶ID為11011001010和裝備類型11001010011為例,使用modelsim成功解碼,仿真圖如圖9所示。

圖9 解碼模塊仿真波形圖
從仿真波形圖可以看出,解碼電路做了三次解碼操作,得到了脈沖激光中所表示的信息,成功解碼。
本文使用循環不重復碼作為激光脈沖編碼、解碼的核心方法,利用循環不重復碼的特點,提高了系統抗干擾的能力,大大提升了解碼的成功率,提升軍演質量;使用FPGA作為編碼、解碼的核心處理單元,利用FPGA本身的特性,使系統易于擴展,設計更加靈活[6],同時FPGA的并行特點使信息處理速度更快,信息的實時性得到提高。