王新華,甄子洋,楊一棟,龔華軍
(南京航空航天大學自動化學院,南京 210016)
光傳操縱系統(tǒng)被譽為繼電傳操縱后的第3代操縱系統(tǒng),是21世紀飛行操縱必然的發(fā)展趨勢[1-5]。光傳操縱系統(tǒng)(Fly-By-Light,F(xiàn)BL)是指在飛機的飛行控制、發(fā)動機控制和航空電子系統(tǒng)中采用光纖作為信號傳輸?shù)拿浇椤9鈧鞑倏v系統(tǒng)由于采用了光纖作為傳輸媒介,與電傳飛行控制系統(tǒng)相比具有如下優(yōu)點:1)可以有效地防御電磁干擾(EMI)及由雷擊或閃電引起的電磁沖擊(EMP),對核爆炸等引起的電磁脈沖不敏感;2)由于光纖一般由SiO2晶體制成,纖芯很細,因而可以極大地減少系統(tǒng)的重量和尺寸;3)光纖傳輸頻帶寬、容量大;4)光纖的抗腐蝕性和熱防護品質(zhì)優(yōu)良。
隨著對飛機性能要求的不斷提高,數(shù)字控制技術(shù)已經(jīng)廣泛應用于飛行控制系統(tǒng),它以較少的硬件提供較高的故障檢測覆蓋率,能消除容差積累,提供完善的信號選擇和性能監(jiān)控,且設計具有很強的靈活性。但是數(shù)字控制系統(tǒng)由于部件增多,因此故障率較高,一般單一通道數(shù)字控制回路難以滿足飛機可靠性的要求。為了實現(xiàn)飛機操縱系統(tǒng)的安全可靠性,除了設法降低元部件本身的故障率外,在現(xiàn)有條件下,一條重要的途徑是采用余度技術(shù)。目前技術(shù)條件下飛行控制計算機之間的數(shù)據(jù)通信有兩種方式:數(shù)據(jù)總線和交叉通道數(shù)據(jù)鏈路(Cross Channel Data Link,CCDL)方式。其中交叉通道數(shù)據(jù)鏈路硬件結(jié)構(gòu)比較簡單,易于實現(xiàn),減少了對數(shù)據(jù)總線的依賴,因此電氣隔離性能好,一個通道的單點故障不會波及其他通道和其他部件,容易滿足整個系統(tǒng)的可靠性及安全性要求。美國F-18、F-16飛行控制系統(tǒng)均采用了類似的方式[6-7]。
基于串口RS232協(xié)議的三余度光傳飛行控制半物理仿真驗證系統(tǒng)是為了驗證光纖技術(shù)工程化實現(xiàn)的可行性而開發(fā)的地面半物理驗證平臺[8]。通過此平臺,可以驗證光交叉通道數(shù)據(jù)鏈路(OCCDL),光傳余度管理算法和策略等功能。但是計算機串行協(xié)議的最高速率僅為961.2 kb/s,已遠不能滿足未來戰(zhàn)機的需求,而且光器件的數(shù)據(jù)傳輸容量也遠遠高于此速率,還有進一步提高的可能。為此,本文設計了一種基于FPGA的高速交叉通道數(shù)據(jù)鏈路,以進一步提高信息交換的傳輸速率和可靠性。
三余度光傳飛控計算機之間總共用6條多模光纖來實現(xiàn)雙向通信[6-10],信號都是通過PCI接口卡收發(fā)。由于每臺計算機都要與另外兩臺計算機相互通信,所以每個PCI卡需要兩條通道,即通道a和通道b,每條通道既要進行發(fā)送,又要進行接收。
光交叉通道數(shù)據(jù)鏈路PCI接口卡的設計方案如圖1所示。其中PLX9054的PCI端口負責與PCI總線連接,完成所有的本地總線與PCI總線的轉(zhuǎn)接工作。本地端口與FPGA連接,F(xiàn)PGA模塊中綜合邏輯時序控制器用于實現(xiàn)每個通道的數(shù)據(jù)傳輸。PLX9054有讀/寫的控制線,C模式下有單周期讀/寫時序和突發(fā)周期讀寫時序。每個時序都有對應的引腳,將這些引腳與FPGA相連,由FPGA來控制實現(xiàn)讀/寫的時序。三態(tài)總線控制器用于FPGA與PLX9054雙向數(shù)據(jù)總線的控制。

圖1 光傳交叉通道數(shù)據(jù)鏈路接口卡框圖Fig.1 Structure of the optical cross channel data link interface card
PLX9054內(nèi)部的FIFO用來緩存數(shù)據(jù),實現(xiàn)PCI總線與本地總線之間的異步接收。但往往由于PLX9054本地總線傳輸速率較慢,為保證可靠性,需要在PLX9054本地端擴充FIFO,用于臨時存儲數(shù)據(jù)。本接口卡用4個FIFO模塊,分別對應兩個通道的讀FIFO和寫FIFO。
本接口卡是采用完全相同的兩個通道a和b,每個通道各有收/發(fā)兩路。飛控計算機在處理完需要發(fā)送給其他飛控計算機數(shù)據(jù)后,分別加以發(fā)送,先后順序可以由軟件控制,也可以隨機選擇發(fā)送。而主要需要解決的是在接收的時候,計算機需判別是哪個通道的信號,這就需要在FPGA中設計中斷寄存器來告知計算機接收信號的通道號。
以上功能以及串/并、并/串轉(zhuǎn)換功能均由FPGA來實現(xiàn)。
通過上述分析,要完成本接口卡各部分硬件的協(xié)調(diào)工作,關(guān)鍵是設計FPGA的內(nèi)部邏輯電路。在此給出了本設計的FPGA內(nèi)部邏輯框圖,如圖1所示。采用Altera公司的FLEX10K30A,該芯片最高傳輸速率超過77 MHz,相應配套的 EEPROM是 EPC2LC20;有30000個邏輯門,有效RAM達到12 kb,可用I/O引腳147個,完全能滿足上述設計。在程序?qū)崿F(xiàn)上采用了VHDL語言進行邏輯編程。
2.1.1 綜合邏輯時序控制器
PLX9054的讀寫過程是:當PLX9054需要向本地端FPGA讀寫數(shù)據(jù)時,首先發(fā)出LHOLD高電平信號請求本地端FPGA,本地端FPGA收到后立即應答LHOL-DA高電平信號;PLX9054收到應答后,置ADS#一個時鐘周期低電平以表示新的一輪訪問開始;訪問開始后,本地端FPGA立即置READY#為低電平以表示此時數(shù)據(jù)總線上的讀寫數(shù)據(jù)有效;當讀寫數(shù)據(jù)還有最后一個時,PLX9054置BLAST#為低電平;FPGA發(fā)現(xiàn)BLAST#為低電平時,在下一個時鐘周期置READY#為高電平以表示此時數(shù)據(jù)總線上的讀寫數(shù)據(jù)無效。由于PLX9054存在單周期和突發(fā)周期兩種時序,綜合考慮后,設計一個包含兩種狀態(tài)的狀態(tài)機,如圖2所示。

圖2 狀態(tài)機工作機理Fig.2 Working process of state machine
2.1.2 中斷管理控制器
設計中斷控制器的關(guān)鍵在于判斷兩個接收FIFO緩存區(qū)中是否有數(shù)據(jù),可以通過FIFO模塊的empty輸出信號來判斷。本接口卡將中斷控制器設置為8位的寄存器,其中設置最低位、第2位分別表示第1、2通道的FIFO是否有數(shù)據(jù),高電平表示有數(shù)據(jù),低電平表示無數(shù)據(jù)。最高位設置為中斷信號位,低電平表示產(chǎn)生中斷信號;反之不產(chǎn)生中斷信號。產(chǎn)生中斷信號的條件是兩個FIFO中至少一個有數(shù)據(jù)。其流程見圖3。

圖3 中斷控制器流程圖Fig.3 Working process of interrupt controller
2.1.3 FIFO 緩存器
收發(fā)數(shù)據(jù)FIFO緩存器采用IP核復用的方式設計,以減少設計人力和風險,縮短設計周期。本系統(tǒng)采用Altera公司的固IP核來設計FIFO收發(fā)數(shù)據(jù)緩存器,進行相關(guān)配置后生成如下IP核,如圖4所示。

圖4 FIFO收發(fā)數(shù)據(jù)緩存器Fig.4 Data buffer with FIFO
2.1.4 三態(tài)總線控制器
本系統(tǒng)使用三態(tài)總線控制器用來控制本地雙向數(shù)據(jù)總線以進行雙向的分時傳輸。三態(tài)總線控制器采用Altera公司的固IP核,并根據(jù)需要對一些參數(shù)進行配置。
2.1.5 串并轉(zhuǎn)換模塊
由于本地總線是并行總線,而光纖只能傳輸串行數(shù)據(jù),因此必須設計并→串及串→并轉(zhuǎn)換模塊。本系統(tǒng)并→串轉(zhuǎn)換模塊的傳輸協(xié)議采用標準RS-232協(xié)議,即1個起始位,8位數(shù)據(jù)位,1位停止位,其中起始位規(guī)定為低電平,停止位為高電平。
并→串轉(zhuǎn)換模塊的設計思想是首先判斷FIFO緩存器中是否有并行數(shù)據(jù),若有則取出并行數(shù)據(jù)并存儲在轉(zhuǎn)換寄存器中,同時發(fā)送起始位;之后連續(xù)發(fā)送8位數(shù)據(jù),依次由低到高傳輸,并計數(shù);由計數(shù)值知道是否完成了8位數(shù)據(jù)傳輸,若完成則發(fā)送停止位,同時計數(shù)器歸零,可以開始下一輪傳輸。
光電模塊采用成熟的多模光纖、光/電和電/光變換芯片。本系統(tǒng)的光/電、電/光轉(zhuǎn)換模塊分別采用Agilent公司的一對產(chǎn)品HFBR2412和HFBR1414,該產(chǎn)品的轉(zhuǎn)換速率最高為155 Mb/s。另外需要邏輯與非門和反向器等,分別用SN75451和74LS14。該轉(zhuǎn)換電路經(jīng)過單獨測試,其傳輸速度達到了4 Mb/s。
本系統(tǒng)運用Altera公司提供的FPGA編程工具Quartus6.0進行編程,然后綜合、仿真、布局布線、時序分析、優(yōu)化,得到正確的結(jié)果后,將生成的網(wǎng)表文件下載到FLEX10K30A(或EPC2LC20)中,在物理上實現(xiàn)了上述功能。為了驗證FPGA邏輯功能的正確性,建立了如圖5所示仿真結(jié)構(gòu)。圖5中虛線部分分別表示輸出的并行數(shù)據(jù)與輸入的并行數(shù)據(jù)相連進行測試。
首先在單周期下,判斷讀寫及FIFO緩存器的時序是否正確,并判斷寫入與讀出數(shù)據(jù)是否完全一致,中斷信號是否輸出正確。其仿真結(jié)果見圖6a。對突發(fā)周期下讀寫及FIFO緩存器的時序、中斷進行仿真,仿真圖見圖6b。將上述仿真圖與PLX9054讀寫時序圖對比后可知,接口時序邏輯完全符合時序要求,且寫入的數(shù)據(jù)與讀出的數(shù)據(jù)完全一致,驗證了FIFO緩存器的功能,同時當接收FIFO中存有數(shù)據(jù)時,中斷輸出端interr為低電平,產(chǎn)生了中斷信號,符合設計要求。

圖5 FPGA邏輯控制模塊仿真結(jié)構(gòu)圖Fig.5 Simulation structure of FPGA logic control module

圖6 FPGA邏輯控制模塊仿真時序圖Fig.6 FPGA logic control module simulation timing diagram
此外,本文還進行了光通信PCI接口卡的設備驅(qū)動程序的開發(fā),通常開發(fā)PCI設備驅(qū)動程序有多種模式,在Windows環(huán)境下,主要采用WDM(Windows Driver Model)模式。本系統(tǒng)選擇DriverStudio3.0作為開發(fā)WDM驅(qū)動程序的工具,DriverStudio是一整套開發(fā)、調(diào)試和檢測Windows平臺下設備驅(qū)動程序的工具軟件包[11]。它把DDK(Device Development Kit)封裝成完整的C++函數(shù)庫,根據(jù)具體硬件通過向?qū)煽蚣艽a,并且提供了一套完整的調(diào)試和性能測試工具(SoftICE、Diver Monitor)等。Driver Studio支持Windows多種操作系統(tǒng)下的驅(qū)動軟件開發(fā),并且在不同的操作系統(tǒng)下,開發(fā)者所寫的驅(qū)動軟件代碼完全不用修改,只需要在不同的操作系統(tǒng)下重新編譯即可。
本設計使用的是Visual C++環(huán)境,在Windows2000下開發(fā)和調(diào)試本卡的設備驅(qū)動程序。在本卡驅(qū)動程序設計中,關(guān)鍵兩點是PCI的中斷服務程序和PCI總線的數(shù)據(jù)交換(讀、寫)。利用Driver Wizards這個向?qū)砩蒔CI結(jié)構(gòu)的驅(qū)動程序的框架。在此框架的基礎上增減一些代碼,包括配置空間的訪問模塊、中斷模塊、讀寫模塊等。
驅(qū)動程序中INF文件是指設備信息文件:在支持即插即用機制(Plug&Play)操作系統(tǒng)中,當為指定硬件設備安裝驅(qū)動程序時,系統(tǒng)會根據(jù)INF文件中包含的檢測和安裝設備的信息來決定設備使用的資源,并為該設備安裝相應的驅(qū)動程序。Driver Studio會自動為開發(fā)者定制一個INF文件,所要做的工作是對制造商、設備類型、設備名稱等基本信息加以修改,并添加一些附加信息,如提供者、設備版本號、安裝時需自動復制的文件等信息。
另外,利用Driver Wizards生成驅(qū)動程序框架的時候,同時生成一個測試程序,經(jīng)過修改可以用于接口卡的測試。驅(qū)動程序加載以后,它的許多進程處于空閑狀態(tài),實際上需要用戶應用測試程序去調(diào)用激活。測試程序利用Win32 API直接調(diào)用驅(qū)動程序,實現(xiàn)驅(qū)動程序和應用程序的信息交互。
在啟動操作系統(tǒng)后,將提示發(fā)現(xiàn)新硬件,在設備管理器會發(fā)現(xiàn)PCI卡的配置信息。系統(tǒng)將為其分配相關(guān)資源,然后把配套開發(fā)的驅(qū)動程序裝好,就可以使用該設備了。將該光交叉通道數(shù)據(jù)鏈路PCI接口卡的a通道和b通道的光發(fā)送和光接收模塊交叉連接,其數(shù)據(jù)傳輸結(jié)果如圖7所示。

圖7 光交叉通道數(shù)據(jù)鏈路接口卡數(shù)據(jù)傳輸測試結(jié)果Fig.7 OCCDL interface card data transmission test results
本文從實際應用出發(fā),給出了以PCI總線控制器PLX9054和FPGA為核心的雙向高速數(shù)據(jù)傳輸接口卡設計的方法,實現(xiàn)了基于FPGA的PLX9054邏輯控制模塊和串并數(shù)據(jù)轉(zhuǎn)換模塊的設計,研制了光電轉(zhuǎn)換模塊的硬件電路,最后編寫了接口卡驅(qū)動程序和測試程序。經(jīng)過測試,可以在4 Mbps的速率下可靠地完成數(shù)據(jù)的傳輸,可以滿足飛控計算機之間余度數(shù)據(jù)交換的要求。該接口卡的成功開發(fā),為后續(xù)光傳三余度半物理仿真驗證平臺的開發(fā)奠定了基礎。
[1]溫瑾,楊一棟,王新華.光傳飛行控制系統(tǒng)中WDM技術(shù)的開發(fā)研究[J].電光與控制,2004,11(2):10-14.
[2]楊一棟,劉曉里.光傳飛行控制[M].北京:國防工業(yè)出版社,2006.
[3]齊勁松,王偉,吳成富,等.三余度飛控計算機交叉數(shù)據(jù)鏈系統(tǒng)設計[J].測控技術(shù),2007,26(5):73-75.
[4]ANUMOLU P,PIRICH R.Fiber optic considerations for insertion into legacy avionics platforms[C]//IEEE Pro-ceedings of Avionics,F(xiàn)iber-Optics and Photonics Technology Conference,IEEE,2007:24-25.
[5]李玉飛,蘇媛.光傳飛行控制系統(tǒng)研究[J].航空科學技術(shù),2009(5):7-11.
[6]CORRIGAN J,SHAW B,JONES J.Demonstration results of fly-by-light flight control system architectures for tactical military aircraft[J].Proceedings of SPIE,1996,2840:77-88.
[7]TISPSUWANPOM V,SANGRAYUB A,SUESUT T,ed al.Development of PLC fiber-optic network for redundant system[C]//New York:IEEE Proceedings of ICIT,2002:303-306.
[8]王新華.分布式三余度光傳綜合火力/飛行控制系統(tǒng)研究[D].南京:南京航空航天大學,2003.
[9]TODD J R.A review of the fly-by-light optical Aileron trim flight demonstration system[C]//New York:AIAA/IEEE/SAE,Proceedings of 17th DASC,1998:D33/1-D33/3.
[10]朱家強,張京城.基于FC光傳總線的分布式容錯系統(tǒng)組通信協(xié)議[J].航空學報,2008,29(S):229-234.
[11]彭杰,汪國有,張?zhí)煨?PCI9054本地總線控制可編程邏輯設計[J].計算機仿真,2003,20(9):74-76.