張偉健,鄭 毅,耿 林,吳 洋
(華北光電技術(shù)研究所,北京 100015)
激光技術(shù)的發(fā)展使軍事在作戰(zhàn)的形式發(fā)生了重大變化。為了能更逼真的模擬戰(zhàn)場(chǎng)環(huán)境,提升我軍的作戰(zhàn)素質(zhì),科研人員開發(fā)了一套模擬真實(shí)作戰(zhàn)場(chǎng)環(huán)景的信息交流系統(tǒng)。在系統(tǒng)中,當(dāng)武器射擊時(shí)半導(dǎo)體激光器會(huì)發(fā)射出與瞄準(zhǔn)線平行的編碼紅外脈沖激光束[1],激光發(fā)射器打出一束激光代表武器打出一顆子彈,不同的激光光束命中身體不同部位的光電接收器,會(huì)上報(bào)不同的戰(zhàn)損信息,從而實(shí)現(xiàn)了戰(zhàn)爭(zhēng)中敵我作戰(zhàn)場(chǎng)景的模擬。使用帶有編碼信息激光光束代替子彈,在節(jié)約成本的同時(shí),使軍事演練中包含了更多的科技元素,同時(shí)也減少了士兵在軍演中意外情況的發(fā)生,提升了軍演的安全性。
環(huán)境復(fù)雜、信息量大、干擾強(qiáng)是戰(zhàn)場(chǎng)環(huán)境的基本特征。為了能夠安全有效地傳遞戰(zhàn)場(chǎng)實(shí)時(shí)的信息,我們要求攜帶信息的載體具有抗干擾能力強(qiáng)且能夠傳遞大量的信息的特性。激光具有發(fā)散角小,相干性強(qiáng)的特性[2],這使得脈沖編碼激光信號(hào)被截獲的可能性很低[3]。同時(shí)可變的脈沖激光振幅,脈寬,脈沖間隔等特性使激光能夠攜帶大量信息?;谶@些特性,脈沖激光能在復(fù)雜的戰(zhàn)場(chǎng),承擔(dān)“信使”這一重任。常見的激光脈沖編碼方式有脈沖重頻編碼、PCM編碼、等差周期脈沖編碼等,其中PCM編碼方是使用最廣泛的一種脈沖編碼方式[4]。
PCM編碼指的是對(duì)固定頻率的激光脈沖信號(hào)進(jìn)行調(diào)制的方法,編碼調(diào)制的目的是讓本該產(chǎn)生脈沖信號(hào)的位置不再產(chǎn)生脈沖信號(hào),使相鄰脈沖間的間隔各不相同,從而攜帶信息[5]。PCM碼是在精確頻率碼的基礎(chǔ)上,對(duì)相應(yīng)的激光脈沖選擇發(fā)射或者不發(fā)射,實(shí)現(xiàn)不同的脈沖間隔編碼[6]。
文中使用的激光脈沖的編碼方式是循環(huán)不重復(fù)碼,循環(huán)不重復(fù)碼是PCM碼的一種。具有循環(huán)不重復(fù)的特性的碼應(yīng)該具有如下特點(diǎn):
(1)將一組m位循環(huán)不重復(fù)碼連續(xù)重復(fù)發(fā)送n遍后,形成一個(gè)元素個(gè)數(shù)為A=m×n的行向量;
(2)將m位的循環(huán)不重復(fù)碼循環(huán)右移排成一列,得到一個(gè)B=m×m的矩陣;
(3)將p組循環(huán)不重復(fù)碼執(zhí)行(1)操作,得到C=p×mn的矩陣;
(4)在行向量A中任意截取連續(xù)的m位,m位與其他非本行的任意截取的連續(xù)的m位均不相同,同時(shí)又均能在矩陣B找到。
使用循環(huán)不重復(fù)碼能在大量干擾存在的情況下提升脈沖激光的解碼成功率,從而將信息傳遞到指揮部,以便指揮部能準(zhǔn)確得知戰(zhàn)場(chǎng)的作戰(zhàn)信息,及時(shí)調(diào)整作戰(zhàn)方案,有利于提高了軍事演習(xí)的質(zhì)量。
圖1 循環(huán)不重復(fù)碼流程圖
圖2 11位循環(huán)不重復(fù)碼
編碼脈沖激光攜帶用戶ID和裝備類型這倆種信息,發(fā)射端使用串口實(shí)現(xiàn)命令的發(fā)射與接收,控制命令由PC端產(chǎn)生。串口發(fā)送的數(shù)據(jù)幀格式如圖3所示。
如果PC端通過(guò)串口將控制命ff11010205發(fā)送到FPGA后,激光器會(huì)發(fā)射攜帶用戶ID為1,裝備類型為2信息的脈沖激光。為了增加解碼的成功率,每個(gè)字段會(huì)重復(fù)發(fā)送三遍,發(fā)射部分的FPGA結(jié)構(gòu)如圖4所示。
幀頭0幀頭1數(shù)據(jù)0數(shù)據(jù)1校驗(yàn)ff11用戶ID裝備類型
圖4 發(fā)射端FPGA結(jié)構(gòu)圖
發(fā)射編碼脈沖的動(dòng)作由以上三個(gè)模塊協(xié)同完成,uart_byte模塊用來(lái)接收來(lái)自PC端的控制指令,發(fā)出帶有信息的脈沖激光;baud_set設(shè)置碼元的傳輸速率;cmd_analysis模塊將協(xié)議中信息轉(zhuǎn)換成相應(yīng)的碼型;laser_driver模塊在信號(hào)C_CLK的上升沿賦值給,一位一位的發(fā)送出去。裝備類型和用戶ID會(huì)分別存儲(chǔ)到寄存器ctrl_code_device和ctrl_code_type中。使用11位循環(huán)不重復(fù)碼將信息編碼,用戶ID為11010101100和裝備類型為11000110101,modelsim的仿真結(jié)果如圖5所示。
圖5 發(fā)射端功能仿真圖
由仿真結(jié)果可以脈沖激光的信息可以準(zhǔn)確的存儲(chǔ)在寄存器ctrl_code_device和ctrl_code_type中。
將激光信號(hào)接收,并成功解碼是系統(tǒng)中關(guān)鍵性的一步。在PC端的控制下,激光發(fā)射器發(fā)射帶有編碼信息的脈沖激光經(jīng)過(guò)大氣傳輸損耗,最終會(huì)被探測(cè)器接收。接收到的光信號(hào)經(jīng)過(guò)光電轉(zhuǎn)換模塊,將光信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào),再對(duì)轉(zhuǎn)換后的電信號(hào)進(jìn)行一系列的展寬、整型等處理,再交給解碼電路進(jìn)行解碼。解碼電路的FPGA結(jié)構(gòu)如圖6所示。
圖6 接收端FPGA結(jié)構(gòu)圖
解碼主要由三部分構(gòu)成laser_recod、find_code、module_value三個(gè)模塊組成。分別介紹三個(gè)模塊的功能。
laser_recod模塊的主要功能是將采集的所有脈沖信號(hào)存儲(chǔ)起來(lái)。該模塊可以由狀態(tài)機(jī)來(lái)實(shí)現(xiàn),共有四個(gè)狀態(tài),分別為idle,time_ms_ok,data_get,time_us_ok。其中idle表示狀態(tài)機(jī)的初始態(tài),time_ms_ok 1ms計(jì)數(shù)完成的狀態(tài),data_get表示數(shù)據(jù)存儲(chǔ)完成的狀態(tài),time_us_ok表示延時(shí)。狀態(tài)機(jī)如圖7所示。
圖7 Laser_code狀態(tài)機(jī)
find_code模塊實(shí)現(xiàn)的功能是將編碼的信息在碼表中找到相應(yīng)的地址并存儲(chǔ)到RAM,以便后續(xù)模塊根據(jù)RAM中的地址信息確定用戶的ID以及裝備的具體類型。為了提高解碼成功率,增強(qiáng)系統(tǒng)的魯棒性,解碼電路會(huì)解碼三次,ta_find,tb_find,tc_find表示用戶ID解碼三次,da_find,db_find,dc_find表示裝備類型解碼三次。所有的碼型都存儲(chǔ)在RAM中。該模塊狀態(tài)機(jī)如圖8所示。
圖8 Find_code狀態(tài)機(jī)
module_value模塊根據(jù)RAM中的地址,在碼表中找到用戶的具體的ID信息,及裝備的類型信息。實(shí)現(xiàn)三個(gè)模塊的功能即可實(shí)現(xiàn)一次解碼操作,我們以用戶ID為11011001010和裝備類型11001010011為例,使用modelsim成功解碼,仿真圖如圖9所示。
圖9 解碼模塊仿真波形圖
從仿真波形圖可以看出,解碼電路做了三次解碼操作,得到了脈沖激光中所表示的信息,成功解碼。
本文使用循環(huán)不重復(fù)碼作為激光脈沖編碼、解碼的核心方法,利用循環(huán)不重復(fù)碼的特點(diǎn),提高了系統(tǒng)抗干擾的能力,大大提升了解碼的成功率,提升軍演質(zhì)量;使用FPGA作為編碼、解碼的核心處理單元,利用FPGA本身的特性,使系統(tǒng)易于擴(kuò)展,設(shè)計(jì)更加靈活[6],同時(shí)FPGA的并行特點(diǎn)使信息處理速度更快,信息的實(shí)時(shí)性得到提高。