楊蕊姣,李志宇,陳 喆
(1.南京航空航天大學 自動化學院,江蘇 南京 210016;2.南京航空航天大學 無人機研究院,江蘇 南京 210016)
飛控計算機是整個飛行控制系統的核心部件,它的可靠運行是無人機安全的保障,它的微小故障都有可能引發災難性的后果。為了尋求提高飛控計算機可靠性的有效途徑,在國內外已進行了大量的研究工作,并且表明:除了選擇高質量的元部件之外,提高飛控計算機可靠性的根本途徑是采用余度技術[1]。采用余度技術的設計方法容易實現且高效,能有效抑制系統的隨機故障,使系統的可靠性大幅度提高。本設計即是基于三余度飛控計算機。
在三余度飛控計算機中,飛控計算機內核之間進行數據交換是系統工作的基礎,只有進行實時、高質量的數據傳輸,才能及時地交流信息、分析數據、發現故障、解除故障,從而保證整個系統可靠穩定地運行。鑒于飛控計算機工作過程中需要交換的數據量大,對傳輸的實時性要求高[2],本文提出了一種采用共享內存技術進行三余度飛控計算機數據交叉傳輸的方法。
本文中設計的飛控計算機內核部分采用混合余度的設計方案,可以有效彌補相似余度和非相似余度兩種結構存在的不足,其三個通道分別是PowerPC工作通道、x86工作通道和PowerPC監控通道。其中PowerPC工作通道作為主通道,x86通道作為備用通道。正常情況下,由PowerPC工作通道的輸出信號控制執行機構動作;當PowerPC工作通道出現故障時,PowerPC監控通道將PowerPC工作通道切斷,使x86工作通道接入系統;若是PowerPC監控通道判斷出PowerPC工作通道、x86工作通道都出現故障,則由PowerPC監控通道輸出控制信號控制執行機構動作。
飛控計算機的3個通道互相獨立,通道之間的數據交叉傳輸通過三片雙口RAM來實現,每兩個通道間使用一片雙口RAM,從而實現飛控計算機3個通道間兩兩通信。三片雙口RAM的片選信號及讀寫控制邏輯由三片CPLD完成,系統結構如圖1所示。

圖1 系統總體結構圖Fig.1 Overall structure of the system
正常工作時,PowerPC工作通道、x86工作通道和PowerPC監控通道共同進行任務周期同步,同步完成后,三通道同時采集傳感器數據,進行控制律解算,并把重要數據寫進對應的雙口RAM里,各個通道讀取其它兩個通道的數據,和自身數據進行比較,運用特定的算法判定自身和其它兩通道是否工作正常。雙口RAM的應用,為飛控計算機內核直接的數據交換提供了一種簡單可靠的手段,其集成度高且數據交換更為快速、穩定,雙端口RAM可以作為系統RAM的一部分進行訪問,占用系統資源比較少[3]。
3.1.1 雙口RAM簡介
雙端口RAM選用美國IDT公司研發的IDT7006,其存儲容量為16K*8b,存儲速度最高可達15ns,地址總線允許訪問內部所有地址空間。IDT7006的內部邏輯如圖2所示。其主要性能特點有:具有兩套完全獨立的數據總線、地址總線以及控制總線,能夠實現異步雙尋址訪問;雙片選,允許不需要外部邏輯的深度擴展;具有兩套獨立的BUSY信號,用來避免雙機讀寫同一地址空間時發生爭用,保證雙機有序訪問RAM存儲空間[4]。

圖2 IDT7006的內部邏輯圖Fig.2 Internal logic diagram of IDT7006
3.1.2 雙口RAM連接及地址分配
雙口RAM的地址線A13~A0,連接到PC104總線的低14位地址線上;數據線D7~D0,連接到PC104總線的低8位數據線上;是雙口RAM的片選信號,由PC104總線的高六位地址線A19~A14經過CPLD譯碼得到;是雙口RAM的讀寫控制信號,由PC104總線讀寫控制信號smemw和smemr經過CPLD進行邏輯運算得到。
PowerPC板卡 PC104總線空間為 0X3000000~0X30FFFFF,x86板卡 RAM空間可用地址為 0XD0000~0XEFFFF,綜合PowerPC板卡及x86板卡的內存空間,設定本系統外擴雙口RAM的地址空間為0XD0000~0XDBFFF,3片雙口RAM的內存地址分別為0XD0000~0XD3FFF,0XD4000~0XD7FFF,0XD8000~0XDBFFF。
3.1.3 雙口RAM讀寫仲裁方式
對于雙口RAM的讀寫操作,選用合適的仲裁方式極為重要。數據交換的仲裁如果處理不當,通信雙方便會發生沖突。比如當PowerPC工作通道對雙口RAM的一個存儲單元進行寫操作時,x86工作通道也對這個單元寫入數據,就必然導致寫操作的錯誤[5]。
為了有效協調通信雙方的讀寫操作,雙口RAM IDT7006自身提供了BUSY信號仲裁的方法,因PC104總線具有等待輸入信號,可以很方便地應用這種方法。雙口RAM兩端信號分別接到PC104總線的IOCHRDY信號上,當左端PC104總線對雙口RAM進行讀寫操作時,雙口RAM的右忙信號會通知右端PC104總線RAM正在被訪問,則右端總線的IOCHRDY自動插入等待狀態;同理,右端PC104總線對雙口RAM進行讀寫操作時,左端PC104總線插入等待狀態。
由于本設計需要完成雙口RAM的選通及讀寫控制,而CPLD在組合邏輯方面具有優勢[6],故本設計選用可編程邏輯器件EPM7128S來實現PC104總線和雙口RAM的接口電路。EPM7128S是美國Altera公司開發的是第二代高性能CMOS EEPROM器件,具有128個宏單元,2500個可用編程門電路,計數器工作頻率可達147 MHZ,并且可以通過JTAG接口實現在線編程。本設計PC104總線最大頻率只有8MHZ,并且一個任務周期的時間為20ms,EPM7128S可以滿足系統需求。
下面以A片CPLD為例說明PC104總線、CPLD及雙口RAM的連接關系,A片CPLD跨接在PowerPC工作通道和x86工作通道之間,用來控制兩邊總線對雙口RAM A的讀寫。根據功能需求,對CPLD A的IO管腳進行輸入輸出設置。其中輸入信號包括:兩通道PC104總線的高6位地址線PC1_A[19:14]、x86_A[19:14], 讀 寫 信 號 線 PC1_smemw、x86_smemw、PC1_smemr、x86_smemr, 地 址 使 能 信 號 線PC1_aen、x86_aen,IO 通 道 就 緒 信 號 線 PC1_IOCHRDY、x86_IOCHRDY,以及雙口RAM的忙信號線BUSY。CPLD的輸出信號包括:雙口RAM A的片選信號線oe、ce及讀寫控制線r/w。各個部件的連接關系如圖3所示。

圖3 CPLD A接口電路Fig.3 Interface circuit of CPLD A
CPLD正確的邏輯控制是本系統可正常工作的前提,下面以CPLD A為例說明CPLD內部的邏輯關系,CPLD A內部邏輯圖如圖4所示。工作原理為:PC104總線地址信號A19~A14與雙口RAM基地址在CPLD中進行比較,當與某片雙口RAM基地址相等并且此時RAM空閑,地址信號使能,相應的片選信號ce置為低電平,進行該雙口RAM的讀寫訪問;總線的讀寫控制信號smemr和smemw經過CPLD,產生讀寫信號,控制雙口RAM的r/w信號。

圖4 CPLD A內部邏輯圖Fig.4 Internal logic diagram of CPLD A
利用QuartusⅡ軟件對CPLD A芯片進行時序仿真,得出仿真結果如圖5所示。

圖5 CPLD A時序仿真圖Fig.5 Timing simulation diagram of CPLD A
由圖5可見,當PC104總線的地址信號 A19~A13為110100時,與第1片雙口RAM的基地址0XD0000的高六位相等,該雙口RAM的片選信號ce變為低,選中該片雙口RAM;PC104總線讀信號smemr為低時,讀有效,oe信號變為低,r/w變為高,雙口RAM可進行讀操作;PC104總線寫信號smemw為低時,寫有效,r/w變為低,雙口RAM可進行寫操作。同理,當A19~A13取相應值時,可實現對其它兩片雙口RAM的控制。
文中提出了一種基于雙口RAM[7]的內存共享技術進行混合三余度飛控計算機數據交換的方法,有效地解決了多機數據傳輸中的速度瓶頸問題。經過仿真驗證,得出的波形符合預期效果。后序將結合實際的硬件電路設計對該方法進一步驗證。此外,系統中所設計的PC104總線與雙口RAM的接口電路,簡單實用且邏輯控制可編程實現,具有較好的可移植性。
[1]張錦.三余度飛控計算機系統軟件的研究與設計[D].西安:西北工業大學,2006.
[2]楊林芳.無人機容錯飛行控制系統研究[D].南京:南京航空航天大學,2007.
[3]鄒向陽,李鋒,劉戎.基于雙口RAM的雙CPU之間的實時雙向通信[J].微計算機信息,2008(32):99-100,168.ZOU Xiang-yang,LI Feng,LIU Rong.Real-time and double direction communication between double CPU based on dual-port RAM[J].Microcomputer Information,2008(32):99-100,168.
[4]韓鈞,康怡.雙口RAM在DSP與單片機數據通信中的應用[J].電力系統通信,2006(8):56-58.HAN Jun,KANG Yi.Application of Dual-port RAM in data communication of DSP and MCU[J].Telecommunications for Electric Power System,2006(8):56-58.
[5]姜平,周根榮,肖紅升,等.基于雙口RAM的多機數據通信技術[J].儀表技術與傳感器,2010(11):105-107.JIANG Ping,ZHOU Gen-rong,XIAO Hong-sheng,etal.Multi-computer Data Communication Technology Based on Dual-port RAM[J].Instrument Technique and Sensor,2010(11):105-107.
[6]王琴,全書海.基于CPLD的雙口RAM設計與應用[J].武漢理工大學學報:信息與管理工程版,2005(4):66-70.WANG Qin,QUAN Shu-hai.Design and application of dualport RAM-based on CPLD[J].Journal of WUT:Information&Management Engineering,2005(4):66-70.
[7]馬旭.基于MPC8313E和FPGA的雙口RAM驅動開發[J].電子科技,2013(1):110-111.MA Xu.Development of dual port RAM drive based on MPC8313E and FPGA[J].Electronic Science and Technology,2013(1):110-111.