董杰
摘要 本文以無人作戰(zhàn)平臺(tái)電子設(shè)備數(shù)據(jù)信息安全為應(yīng)用背景,提出一種基于RS485串行接口和CPLD的FPGA程序遠(yuǎn)程動(dòng)態(tài)加載設(shè)計(jì)方案。該方案中FPGA程序數(shù)據(jù)分為兩個(gè)版本并通過不同方式進(jìn)行加載:普通程序本地存儲(chǔ),上電直接加載用于保證設(shè)備一般功能的正常使用;核心程序外部存儲(chǔ),需要時(shí)通過遠(yuǎn)程動(dòng)態(tài)加載,利用FPGA基于SRAM結(jié)構(gòu)的易失性,實(shí)現(xiàn)重要程序數(shù)據(jù)斷電自動(dòng)清除,有效確保電子設(shè)備中重要數(shù)據(jù)的安全。
【關(guān)鍵詞】無人作戰(zhàn)平臺(tái) 數(shù)據(jù)安全 RS485 串行接口 FPGA遠(yuǎn)程動(dòng)態(tài)配置
1 引言
無人作戰(zhàn)平臺(tái)能夠在危險(xiǎn)復(fù)雜環(huán)境中執(zhí)行情報(bào)監(jiān)視與偵察、目標(biāo)攻擊、通信中繼和電子干擾等任務(wù),在軍事領(lǐng)域應(yīng)用越來越廣泛。然而,由于其作戰(zhàn)區(qū)域廣闊,執(zhí)行任務(wù)復(fù)雜多樣,對(duì)全天時(shí)、高速通信鏈路的依賴較高,從而存在著失控和被敵截獲風(fēng)險(xiǎn)。為了保證我方信息安全,除了增強(qiáng)平臺(tái)本身的自主性和抗欺騙等能力之外,其搭載的任務(wù)載荷設(shè)備必須具備重要數(shù)據(jù)自動(dòng)銷毀功能。
傳統(tǒng)的數(shù)據(jù)自毀方案一般是通過多種形式進(jìn)行數(shù)據(jù)失控監(jiān)測(cè),在滿足自毀觸發(fā)條件時(shí),通過軟件、硬件、物理等多種自毀方式,對(duì)設(shè)備非易失性存儲(chǔ)器中的程序、數(shù)據(jù)或存儲(chǔ)器本身進(jìn)行破壞,保證信息安全,但其自毀功能的實(shí)現(xiàn)是基于設(shè)備本身及其外圍通信、電源等保障電路均可正常工作,在無人作戰(zhàn)平臺(tái)上,由于其任務(wù)環(huán)境的復(fù)雜性,很可能會(huì)出現(xiàn)電源中斷、通信失聯(lián)等突發(fā)性故障,若采用上述自毀方案,則存在數(shù)據(jù)自毀功能失效的風(fēng)險(xiǎn)。
利用器件本身基于SRAM結(jié)構(gòu)的易失性實(shí)現(xiàn)數(shù)據(jù)斷電自動(dòng)清除,是設(shè)備實(shí)現(xiàn)自動(dòng)銷密的一種切實(shí)可行的實(shí)現(xiàn)方案,其突出的優(yōu)點(diǎn)是可靠性高、電路結(jié)構(gòu)簡(jiǎn)單,不需要額外的狀態(tài)監(jiān)測(cè)和電源保障電路,特別適用于對(duì)設(shè)備小型化要求較高的應(yīng)用場(chǎng)合。
本文針對(duì)某無人作戰(zhàn)平臺(tái)任務(wù)載荷設(shè)備,利用FPGA基于SRAM結(jié)構(gòu)的易失性(斷電即丟失邏輯數(shù)據(jù)),設(shè)計(jì)了一種通過RS485串口進(jìn)行FPGA程序遠(yuǎn)程動(dòng)態(tài)加載、斷電自動(dòng)清除的方案。依據(jù)設(shè)備需要完成的功能,將軟件程序分為基本和核心兩個(gè)版本,任務(wù)載荷設(shè)備上的非易失性存儲(chǔ)器中只存放基本版程序數(shù)據(jù),保證設(shè)備在一般使用情況下,加電后基本功能可正常工作。核心版程序數(shù)據(jù)則保存在專用的數(shù)據(jù)加載設(shè)備中,當(dāng)執(zhí)行的作戰(zhàn)任務(wù)需要使用核心功能時(shí),在任務(wù)準(zhǔn)備階段,由數(shù)據(jù)加載設(shè)備通過RS485串行接口對(duì)任務(wù)設(shè)備進(jìn)行核心版程序遠(yuǎn)程動(dòng)態(tài)加載,當(dāng)設(shè)備斷電后,核心版程序數(shù)據(jù)自動(dòng)清除,從而可保證了我方重要信息安全。
由于任務(wù)設(shè)備斷電后核心程序數(shù)據(jù)即會(huì)自動(dòng)清除,因此在每次執(zhí)行任務(wù)前需對(duì)核心程序進(jìn)行遠(yuǎn)程動(dòng)態(tài)加載,這一過程需要占用任務(wù)準(zhǔn)備時(shí)間,因此在設(shè)計(jì)過程中,必須考慮動(dòng)態(tài)加載過程的操作便捷性、加載耗時(shí)和加載成功率。
2 硬件電路設(shè)計(jì)
系統(tǒng)設(shè)備在硬件組成上可分為數(shù)據(jù)加載設(shè)備和平臺(tái)任務(wù)設(shè)備兩部分,其硬件設(shè)計(jì)原理框圖見圖1。
數(shù)據(jù)加載設(shè)備是我方基地保障設(shè)備的組成部分,存儲(chǔ)核心功能程序數(shù)據(jù),并在需要時(shí)對(duì)平臺(tái)任務(wù)設(shè)備進(jìn)行程序注入。平臺(tái)任務(wù)設(shè)備配置于無人作戰(zhàn)平臺(tái)上,其程序遠(yuǎn)程加載配置電路主要由FPGA、CPLD、基本功能程序存儲(chǔ)器和電源儲(chǔ)能/濾波電路組成。
任務(wù)設(shè)備與數(shù)據(jù)加載設(shè)備之間的通信采用RS-485串行通信接口,利用差分線形式傳輸。該接口具備較強(qiáng)的抗干擾性能和較高的傳輸速率,最大通信速率可達(dá)lOMbps,在點(diǎn)對(duì)點(diǎn)傳輸模式下,IMbps傳輸速率下可靠傳輸距離可達(dá)150m。由于設(shè)備間的通信流程單一,均由數(shù)據(jù)加載設(shè)備發(fā)起,任務(wù)設(shè)備被動(dòng)響應(yīng),為簡(jiǎn)化接口連線,通信采用半雙工模式,數(shù)據(jù)的收發(fā)共用一組差分線。
在本設(shè)計(jì)方案中,為實(shí)現(xiàn)CPLD對(duì)FPGA的加載配置控制,除常規(guī)的配置管腳外.還增加了CpuSt信號(hào),該信號(hào)由FPGA的microblaze軟核應(yīng)用程序控制,當(dāng)軟核應(yīng)用程序正常運(yùn)行后,將該信號(hào)置高。增加該信號(hào)是由于當(dāng)FPGA設(shè)計(jì)中配置了microblaze軟核時(shí),其配置加載過程除了常規(guī)的配置復(fù)位、初始化、加載配置數(shù)據(jù)和器件啟動(dòng)外,還存在一個(gè)軟核應(yīng)用程序啟動(dòng)過程,而此過程是在DONE信號(hào)被拉高之后進(jìn)行,因此,CPLD在加載完配置數(shù)據(jù)后,除需檢測(cè)DONE電平外,還要檢測(cè)CpuSt信號(hào),在CpuSt置高前,持續(xù)輸出CCLK時(shí)鐘,以保證用戶的軟核程序的正常啟動(dòng)運(yùn)行。
電源儲(chǔ)能/濾波電路保證當(dāng)核心版程序注入完成后,設(shè)備不會(huì)因突發(fā)電源干擾或平臺(tái)電源切換導(dǎo)致核心版程序意外丟失。
3 遠(yuǎn)程加載邏輯設(shè)計(jì)
CPLD作為任務(wù)載荷設(shè)備的FPGA加載流程的核心控制器件,完成串行數(shù)據(jù)收發(fā)、加載指令解析、FPGA程序加載控制等功能。FPGA的加載配置流程分為FPGA上電加載配置流程和遠(yuǎn)程加載配置流程,工作流程示意圖如圖2。
任務(wù)設(shè)備上電后,CPLD即啟動(dòng)FPGA上電加載配置流程,從PROM中加載民用版程序,在執(zhí)行完FPGA的基本配置加載過程后,繼續(xù)保持CCLK時(shí)鐘輸出,保證MicroBlaze軟核啟動(dòng)。上電加載時(shí)序邏輯如圖3。
FPGA上電加載配置的工作步驟如下:
(1) CPLD上電復(fù)位后,控制PROG B輸出寬度為500ns的負(fù)脈沖,清除FPGA配置存儲(chǔ)器,同時(shí)控制PROM RST為低電平,對(duì)PROM進(jìn)行復(fù)位;
(2)在PROG B負(fù)脈沖結(jié)束后,等待一段時(shí)間,將INIT B置高,同時(shí)結(jié)束對(duì)PROM的復(fù)位并打開PROM使能,打開CCLK時(shí)鐘,此時(shí),F(xiàn)PGA在CCLK時(shí)鐘作用下,從PROM中加載配置數(shù)據(jù);
(3)此后,CPLD實(shí)時(shí)檢測(cè)INIT B、DONE和CpuSt信號(hào)的狀態(tài),當(dāng)配置數(shù)據(jù)輸出完畢,CRC校驗(yàn)正確后,DONE信號(hào)變高,此時(shí)可將PROM CE信號(hào)拉高關(guān)閉PROM使能,并繼續(xù)保持CCLK時(shí)鐘輸出,當(dāng)MicroBlaze軟核啟動(dòng)完成后,CpuSt信號(hào)變高,結(jié)束CPLD上電加載流程;
(4)如果配置數(shù)據(jù)輸出完畢,CRC校驗(yàn)錯(cuò)誤,F(xiàn)PGA會(huì)將INIT B拉低,CPLD檢測(cè)到INIT B下降沿后,CPLD進(jìn)行全局復(fù)位,并重新開始上電加載流程。
當(dāng)任務(wù)設(shè)備上電加載配置完成后,CPLD轉(zhuǎn)入等待接收遠(yuǎn)程加載指令狀態(tài)。當(dāng)收到地面保障設(shè)備發(fā)送的遠(yuǎn)程加載啟動(dòng)命令后,進(jìn)行FPGA程序遠(yuǎn)程加載配置,時(shí)序邏輯見圖4。
FPGA程序遠(yuǎn)程加載配置的工作步驟如下:
(1)收到遠(yuǎn)程加載啟動(dòng)命令后,首先控制PROG B輸出寬度為500ns的負(fù)脈沖,清除FPGA配置存儲(chǔ)器,負(fù)脈沖結(jié)束后,等待一段時(shí)間,將INIT B置高,此時(shí),通過串口發(fā)送加載啟動(dòng)確認(rèn)回傳,并打開加載超時(shí)計(jì)數(shù)器
(2)此后,每收到1幀串口數(shù)據(jù),將數(shù)據(jù)按比特位倒序后輸出,同時(shí)產(chǎn)生1個(gè)CCLK時(shí)鐘,并將超時(shí)計(jì)數(shù)器清零;
(3) CPLD實(shí)時(shí)檢測(cè)INIT B、DONE和CpuSt信號(hào)的狀態(tài),當(dāng)配置數(shù)據(jù)輸出完畢,CRC校驗(yàn)正確后,DONE信號(hào)變高,此時(shí)將CCLK時(shí)鐘連續(xù)輸出,當(dāng)MicroBlaze軟核啟動(dòng)完成后,CpuSt信號(hào)變高,結(jié)束CPLD上電加載流程;
(4)當(dāng)CPLD檢測(cè)到INIT B下降沿或者超時(shí)計(jì)數(shù)器溢出時(shí),CPLD進(jìn)行全局復(fù)位,并重新開始上電加載流程。
為防止加載過程意外中斷而導(dǎo)致CPLD加載邏輯異常,在加載過程中需要進(jìn)行異常超時(shí)判斷處理,當(dāng)連續(xù)一段時(shí)間未收到加載數(shù)據(jù)或加載狀態(tài)未發(fā)生變化,則CPLD自動(dòng)退出遠(yuǎn)程加載流程并復(fù)位,重新開始上電加載流程,確保遠(yuǎn)程加載因意外中斷后,任務(wù)設(shè)備可迅速恢復(fù)其初始狀態(tài)。
4 實(shí)際應(yīng)用表現(xiàn)
任務(wù)設(shè)備FPGA采用spartan-6系列低功耗器件XC6LX75,其配置bit流文件大小為19719712bit,在串行通信傳輸過程中報(bào)文按8bit數(shù)據(jù)位組成1個(gè)字節(jié)傳輸,加上lbit起始位和lbit停止位,共lObit,因此,加載過程中實(shí)際傳輸?shù)腷it流大小為24649640bit,在IMbps傳輸速率下,完成一次遠(yuǎn)程加載的時(shí)間約為25s。
在試驗(yàn)室環(huán)境下,我們分別進(jìn)行了遠(yuǎn)程加載測(cè)試和電源轉(zhuǎn)換測(cè)試,測(cè)試結(jié)果分別見表l和表2。
5 結(jié)束語
本文給出了一種利用器件本身基于SRAM結(jié)構(gòu)的易失性實(shí)現(xiàn)數(shù)據(jù)斷電自動(dòng)銷毀的方案,在該方案中,一般程序數(shù)據(jù)本地存儲(chǔ),核心程序數(shù)據(jù)遠(yuǎn)程加載,可實(shí)現(xiàn)重要數(shù)據(jù)在設(shè)備斷電后自動(dòng)清除,能有效保障無人作戰(zhàn)平臺(tái)電子設(shè)備重要數(shù)據(jù)信息安全;同時(shí),在一般應(yīng)用場(chǎng)合或設(shè)備異常斷電重啟后,亦可保障設(shè)備基本功能的使用。本設(shè)計(jì)方案已在工程實(shí)踐中得到驗(yàn)證,遠(yuǎn)程動(dòng)態(tài)加載工作方式有效、可靠,可廣泛應(yīng)用于各種無人平臺(tái)搭載的電子設(shè)備上。
參考文獻(xiàn)
[1]李瑜,張文玉,無人作戰(zhàn)平臺(tái)指揮控制技術(shù)[J].指揮信息系統(tǒng)與技術(shù),2011(06).
[2]盧正添,李濤,胡曉勤,趙奎,曾金全,彭凌西,一種數(shù)據(jù)自毀方法[J].計(jì)算機(jī)應(yīng)用研究,2009 (01).
[3]李璟,劉宏偉,舒燕君,馬闖,關(guān)鍵領(lǐng)域嵌入式容錯(cuò)機(jī)自毀功能[J],清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2011 (SI).
[4]劉祥,宋克柱,張嗣峰,基于串行通信的遠(yuǎn)程FPGA在線配置[J].核電子學(xué)與探測(cè)技術(shù),2010,30 (06):774-777.
[5]李燕春,基于CPLD的FPGA快速動(dòng)態(tài)重構(gòu)設(shè)計(jì)[J].電訊技術(shù),2008,48 (07):87-89.
[6] Spartan-6 FPGA Configuration UserGuide[Z].X ilinx Inc, 2011.