劉 蕾,常 亮,李華旺
(1.中國(guó)科學(xué)院上海微系統(tǒng)所 上海 200050;2.上海微小衛(wèi)星工程中心 上海 200120)
隨著電子技術(shù)的進(jìn)步和芯片集成化技術(shù)的發(fā)展,衛(wèi)星平臺(tái)電子設(shè)備呈現(xiàn)小型化、集約化、智能化的發(fā)展趨勢(shì)。SoC(System On a Chip)作為一種新的系統(tǒng)集成技術(shù),可以將一個(gè)單板系統(tǒng)甚至整個(gè)控制系統(tǒng)的功能集成在一塊芯片中實(shí)現(xiàn),不僅可以提高星載電子設(shè)備集成度,減小體積重量,提高功能密度,而且可以提高性能和系統(tǒng)的總體可靠[1-2]。
本文采用基于Flash為基礎(chǔ)的SmartFusion2系列FPGA芯片作為星載計(jì)算機(jī)平臺(tái),該芯片將可配置模擬部件、大容量Flash內(nèi)存構(gòu)件、全面的時(shí)鐘生成和管理電路,以及基于Flash的高性能可編程邏輯模塊集成在單片器件中。與此同時(shí),F(xiàn)PGA內(nèi)部集成了高效的ARM內(nèi)核——Cortex-M3,可以直接替換傳統(tǒng)的MCU+FPGA組合。
星載計(jì)算機(jī)作為衛(wèi)星平臺(tái)的核心部件,采用總線網(wǎng)絡(luò)與星載其他電子設(shè)備進(jìn)行互連通信,實(shí)現(xiàn)對(duì)衛(wèi)星的多模塊控制、星上資源的優(yōu)化與重組、整星綜合信息處理等工作。本系統(tǒng)采用CAN總線將各個(gè)單機(jī)模塊連接在一起,構(gòu)建一個(gè)可以有效的支持分布式控制的串行通信網(wǎng)絡(luò)。
綜合電子艙內(nèi)部集成了多個(gè)模塊,以Cortex-m3微控制器作為主控制單元,各單機(jī)模塊傳送的數(shù)據(jù)通過特定的通信接口將控制信號(hào)送給星載計(jì)算機(jī)微控制器模塊,并進(jìn)行統(tǒng)一的數(shù)據(jù)處理與任務(wù)調(diào)度。系統(tǒng)平臺(tái)包含大容量存儲(chǔ)管理單元模塊,大容量存儲(chǔ)管理單元由獨(dú)立的處理器接受載荷的數(shù)據(jù)并存儲(chǔ)到4G bits的flash,根據(jù)中央處理單元的要求對(duì)大容量存儲(chǔ)單元進(jìn)行操作,為存儲(chǔ)載荷的有效數(shù)據(jù)提供了保障。
衛(wèi)星系統(tǒng)功能與信息流如圖1所示。
微控制器模塊是綜合電子艙的核心模塊,主要負(fù)責(zé)集中完成星上的數(shù)據(jù)處理、衛(wèi)星飛行控制任務(wù)和姿態(tài)軌道數(shù)據(jù)處理等?;谏逃闷骷martFusion2為平臺(tái)的星載計(jì)算機(jī),集成FPGA、ARM?CortexTM-M3處理器硬核,以及可編程模擬資源于一體的器件,能夠?qū)崿F(xiàn)完全可定制系統(tǒng)設(shè)計(jì)和IP保護(hù)能力,而且便于實(shí)現(xiàn)軟硬件協(xié)同設(shè)計(jì)[3]。
圖1 衛(wèi)星信息流框圖Fig.1 Information flow diagram of the satellite
FPGA模塊提供的資源如圖2所示,主要包括:500000邏輯門單元,大于1 Mbit的RAM模塊,可用I/O引腳數(shù)大于300個(gè)。FPGA內(nèi)嵌的處理器內(nèi)核是CortexTM-M3,主頻為166 MHZ,支持的外設(shè)有10/100/Mbps的網(wǎng)絡(luò),USB2.0接口、CAN2.0控制器接口、UART串行調(diào)試接口等。存儲(chǔ)單元主要存儲(chǔ)系統(tǒng)的應(yīng)用程序代碼及記錄數(shù)據(jù),由NOR FLASH存儲(chǔ)器和DDR SDRAM組成。主內(nèi)存是系統(tǒng)運(yùn)行時(shí)代碼執(zhí)行的區(qū)域,也是應(yīng)用程序臨時(shí)變量和中間數(shù)據(jù)的存放空間,它的讀寫速度直接影響到了系統(tǒng)的計(jì)算效率,因此需要盡量提高主內(nèi)存的訪問速度和空間大小。本系統(tǒng)中使用DDR SDRAM作為系統(tǒng)的主內(nèi)存,保證內(nèi)存訪問時(shí)間和內(nèi)存容量不會(huì)成為影響系統(tǒng)性能的瓶頸[4-5]。
由于星載計(jì)算機(jī)本身處在惡劣的工作環(huán)境,在系統(tǒng)設(shè)計(jì)開發(fā)時(shí)必須首要考慮其本身的可靠性及容錯(cuò)能力,所以為保證通信接口的可靠性,本系統(tǒng)采用冗余備份模式設(shè)計(jì)CAN接口模塊。硬件邏輯結(jié)構(gòu)如圖3所示,CAN總線冗余設(shè)計(jì)采用控制器冗余模式,由兩個(gè)CAN收發(fā)器、兩個(gè)CAN控制器和單CPU組成。兩條數(shù)據(jù)通道完全獨(dú)立、互不影響。與此同時(shí),雙CAN模塊采用熱備份工作模式,主用設(shè)備和備用設(shè)備同時(shí)處于上電運(yùn)行狀態(tài),且同步進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)處理和計(jì)算。但是備份設(shè)備的數(shù)據(jù)處理不起作用,僅當(dāng)主用設(shè)備失效時(shí),CPU才會(huì)選擇快速響應(yīng)備用設(shè)備的中斷,并接收備用設(shè)備的數(shù)據(jù)。
圖2 微控制器模塊架構(gòu)圖Fig.2 Microcontroller module of the satellite
圖3 雙冗余CAN總線模塊系統(tǒng)結(jié)構(gòu)圖Fig.3 Redundant technology for the CAN bus
基于SmartFusion2的SoC設(shè)計(jì)平臺(tái)僅在APB_1總線上掛載了單一CAN2.0控制接口,為實(shí)現(xiàn)硬件冗余設(shè)計(jì),利用了SoC提供的FPGA可編程邏輯資源實(shí)現(xiàn)了獨(dú)立的SJA1000 CAN控制器。
如圖4所示,由VHDL語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)SJA1000 CAN IP軟核的設(shè)計(jì)并生成系統(tǒng)可配置的動(dòng)態(tài)模塊,主控單元Cortex-M3通過高級(jí)外設(shè)總線(APB3)總線接口將數(shù)據(jù)輸出,CAN總線控制器經(jīng)過一個(gè)SRAM(報(bào)文緩沖器)與從設(shè)備實(shí)現(xiàn)通信并對(duì)數(shù)據(jù)報(bào)文進(jìn)行預(yù)處理。
HDL程序在Libero IDE集成環(huán)境中完成,使用VHDL硬件描述語(yǔ)言編寫代碼,并編寫相關(guān)的測(cè)試代碼進(jìn)行功能驗(yàn)證。
CAN總線控制器的功能配置和行為由主控制器Cortex-M3設(shè)置的C程序完成,在SoftConsole集成開發(fā)環(huán)境中完成。
圖4 IP核實(shí)現(xiàn)CAN備用節(jié)點(diǎn)結(jié)構(gòu)圖Fig.4 Redundant CAN node implemented by the IP core
根據(jù)SJA1000設(shè)計(jì)的CAN控制器和微控制器自帶的CAN控制器構(gòu)成了CAN總線上的雙冗余備份模式。兩者在內(nèi)存中的映射起始地址分別為:0x40015000u和0x70000000u。由于兩種CAN控制器的IP核不同,需要根據(jù)每個(gè)控制器采用的協(xié)議設(shè)計(jì)CAN設(shè)備的驅(qū)動(dòng)程序。
1)單節(jié)點(diǎn)驅(qū)動(dòng)設(shè)計(jì)
Cortex-M3內(nèi)部集成的CAN控制器對(duì)如圖5所示,控制器從CAN總線上接收和發(fā)送串行數(shù)據(jù),并將數(shù)據(jù)傳遞給報(bào)文處理器。報(bào)文處理器基于當(dāng)前的過濾設(shè)置以及報(bào)文對(duì)象存儲(chǔ)器中的標(biāo)識(shí)符,將合適的報(bào)文內(nèi)容載入與之對(duì)應(yīng)的報(bào)文對(duì)象。報(bào)文處理器還負(fù)責(zé)根據(jù)CAN總線的事件產(chǎn)生中斷;報(bào)文對(duì)象存儲(chǔ)器是一組32個(gè)完全相同的存儲(chǔ)模塊,可為每個(gè)報(bào)文對(duì)象保存其當(dāng)前的配置、狀態(tài)以及實(shí)際數(shù)據(jù)。用戶可直接配置報(bào)文對(duì)象存儲(chǔ)器完成數(shù)據(jù)的發(fā)送和接收配置。
CAN總線節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括CAN節(jié)點(diǎn)初始化、報(bào)文發(fā)送和報(bào)文接收。使用控制器之前,需設(shè)置CAN的工作時(shí)鐘(40 MHz)并配置用于傳輸CAN信息的GPIO管腳。
2)冗余程序設(shè)計(jì)
系統(tǒng)使用了兩條完全獨(dú)立的CAN總線數(shù)據(jù)通道,實(shí)現(xiàn)了物理層、數(shù)據(jù)鏈路層的全面冗余。獨(dú)立的控制器能夠檢測(cè)到自己通道的故障,但CAN協(xié)議規(guī)范定義的數(shù)據(jù)鏈路層和部分物理層并不完整,需要通過軟件冗余模塊來實(shí)現(xiàn)總線狀態(tài)的監(jiān)控、網(wǎng)絡(luò)故障的診斷和標(biāo)識(shí)處理。
圖5 CAN控制器主節(jié)點(diǎn)框圖Fig.5 Schema of the main CAN node
在熱冗余的情況下,本地節(jié)點(diǎn)主控制器同時(shí)打開兩個(gè)總線控制器的中斷。當(dāng)網(wǎng)絡(luò)其他節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀/請(qǐng)求幀時(shí),如果一個(gè)CAN控制器到它相對(duì)應(yīng)的總線上的任一環(huán)節(jié)發(fā)生故障,則相應(yīng)的總線控制器不會(huì)產(chǎn)生中斷,控制器收到的數(shù)據(jù)則是另一個(gè)沒有產(chǎn)生故障的總線上的數(shù)據(jù)。如果本地兩個(gè)總線控制器同時(shí)接收到同一個(gè)報(bào)文,并分別向主控制器Cortex-M3申請(qǐng)中斷。當(dāng)有一個(gè)總線控制器申請(qǐng)成功時(shí),則在中斷服務(wù)程序中關(guān)閉中斷,進(jìn)行數(shù)據(jù)處理。如果接收到的報(bào)文有效,主控制器則對(duì)數(shù)據(jù)進(jìn)行處理,處理完畢后,加入低延時(shí)、清除所有的中斷并在退出前打開所有的中斷。另一個(gè)CAN總線控制器的中斷,如果是同時(shí)到達(dá)的則被清除,如果是稍后到達(dá)的,則會(huì)因?yàn)橹袛嗵幚沓绦虻难訒r(shí)也同樣會(huì)被清除。如果接收到的報(bào)文無效,主控制器將清除本次控制器申請(qǐng)的中斷,退出中斷處理函數(shù)。此時(shí),另一個(gè)CAN總線控制器的中斷會(huì)被響應(yīng),主控制器會(huì)判斷接收到的報(bào)文是否有效,并采取相應(yīng)措施。
本文的設(shè)計(jì)創(chuàng)新點(diǎn)在于提出了基于SoC技術(shù)與IP核復(fù)用技術(shù)的星載計(jì)算機(jī)CAN網(wǎng)絡(luò)模塊冗余設(shè)計(jì),與傳統(tǒng)的星載計(jì)算機(jī)外擴(kuò)兩片CAN控制器的冗余設(shè)計(jì)方案相比,本設(shè)計(jì)充分利用SoC技術(shù)實(shí)現(xiàn)內(nèi)置兩路CAN控制器,簡(jiǎn)化電路設(shè)計(jì)、節(jié)省了星載計(jì)算機(jī)單板體積且采用公開開放免費(fèi)的軟IP以及自行開發(fā)的軟IP核達(dá)到降低成本的目的降低了成本。
[1]王峰,郭金生,李暉.商用現(xiàn)貨器件在衛(wèi)星中的應(yīng)用[J].航天器工程,2013(8):22.WANG Feng,GUO Jin-sheng,LI Hui.Overview of COTS in application of satellites[J].Spacecraft Engineering,2013(8):22.
[2]Mr.Anjan d, Mrs.Ashwini.s.shivannavar, Dr.M.Z Kurian.Design and implementation of IP Core based architecture of telecommand System on chip(Soc) on FPGA[J].International Journal of Advanced Research in Computer Engineering&Technology(IJARCET),2014(5):3.
[3]湯磊,魏少軍,仇玉林.軟/硬件協(xié)同設(shè)計(jì)方法學(xué)研究的現(xiàn)狀與分析[J].固體電子學(xué)研究與進(jìn)展,2003(5):3-4.TANG Lei,WEI Shao-jun,QIU Yu-lin.The actualities and analysis of HW/SW Co-Design methodology researches[J].Research&Progress of SSE,2003(5):3-4.
[4]周衛(wèi)東,郝燕玲.冗余組合導(dǎo)航系統(tǒng)的軟件設(shè)計(jì)及可靠性分析[J].計(jì)算機(jī)工程,2007(1):33.ZHOU Wei-dong,HAO Yan-ling.Design for fault-tolerant integrated navigation and analysis of software reliability[J].Computer Engineering,2007(1):33.
[5]明月偉,寧洪,鄧勝蘭.面向星載操作系統(tǒng)的控制流錯(cuò)誤檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用,2014(5):34.MING Yue-wei,NING Hong,DENG Sheng-lan.Control flow checking method for on-board operating system[J].Journal of Computer Applications,2014(5):34.
[6]宋瑞雪,李文新,王彬,等.基于SOPC的CANopen節(jié)點(diǎn)的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013(3):34.SONG Rui-xue,LI Wen-xin,WANG Bin,et al.Design of CANopen node based on SOPC[J].Computer Engineering and Design,2013(3):34.
[7]郭曉松,王振業(yè),于傳強(qiáng),等.基于CAN總線的容錯(cuò)冗余技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制,2009(1):21.GUO Xiao-song,WANG Zhen-ye,YU Chuan-qiang,et al.Research of the fault tolerant redundant technology based on CAN Bus[J].Computer Measurement&Control,2009(1):21.