倪淑燕,程凌峰,陳世淼,程乃平
(1.航天工程大學(xué)電子與光學(xué)工程系,北京 101416;2.航天工程大學(xué) 研究生院,北京 101416)
微小衛(wèi)星具有質(zhì)量輕、體積小、發(fā)射周期短、性能高、成本低等諸多優(yōu)點(diǎn),在通信、遙感、導(dǎo)航、軍事等各領(lǐng)域得到廣泛應(yīng)用[1],是全球航天發(fā)展的熱點(diǎn)。隨著芯片技術(shù)的發(fā)展,微小衛(wèi)星平臺(tái)電子設(shè)備呈現(xiàn)小型化、集成化、智能化的發(fā)展趨勢(shì)。文獻(xiàn)[2]通過(guò)進(jìn)行高功能密度星務(wù)軟件架構(gòu)設(shè)計(jì)來(lái)提高衛(wèi)星的集成度;文獻(xiàn)[3]將衛(wèi)星各個(gè)模塊的硬件進(jìn)一步集成來(lái)提高衛(wèi)星的集成度。
該文進(jìn)行了微小衛(wèi)星綜合電子系統(tǒng)研究時(shí),采用SmartFusion2 的M2S050TS 處理器作為星載處理器,該處理器由ARM(Advanced RISC Machine,高級(jí)精簡(jiǎn)指令集計(jì)算機(jī))和FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)兩部分組成。為提高衛(wèi)星集成度,通過(guò)處理器的FPGA 模塊進(jìn)行星載總線IP 核的設(shè)計(jì)[4-7],實(shí)現(xiàn)星載總線的擴(kuò)展,不再需要額外增加芯片來(lái)實(shí)現(xiàn)星載總線架構(gòu),減少了硬件的體積和質(zhì)量,提高了衛(wèi)星的集成度[8-10]。
星載總線是綜合電子系統(tǒng)信息處理和交互的紐帶[11],能夠完成衛(wèi)星在軌運(yùn)行時(shí)星載計(jì)算機(jī)和各分系統(tǒng)的數(shù)據(jù)交換[12]。CAN 總線具有強(qiáng)抗干擾性、高實(shí)時(shí)性、高傳輸速率和低成本的優(yōu)點(diǎn)[13],從二十一世紀(jì)初便被廣泛應(yīng)用在航天領(lǐng)域。文中項(xiàng)目采用高低速結(jié)合的總線設(shè)計(jì)方式,利用CAN 總線連接星載計(jì)算機(jī)與各部組件,實(shí)現(xiàn)低速星務(wù)數(shù)據(jù)傳輸,對(duì)于測(cè)控?cái)?shù)據(jù),則采用RS422 異步串口實(shí)現(xiàn)高速遙測(cè)數(shù)據(jù)傳輸[14-15]??偩€通信架構(gòu)如圖1 所示。
文中設(shè)計(jì)選擇SmartFusion2 系列的M2S050TS-1FGG484 處理器,該處理器是ACTEL 公司第四代工藝的片上系統(tǒng)產(chǎn)品,基于Flash 架構(gòu),能夠滿足工業(yè)、軍事、航空、通信和醫(yī)療領(lǐng)域的高安全性、高可靠性和低功耗的SoC(System on Chip,系統(tǒng)級(jí)芯片)需求。實(shí)現(xiàn)圖1 所示的星載總線通信架構(gòu),需要四個(gè)CAN 控制器和兩個(gè)RS422 異步串口,此外還需要兩個(gè)RS422 異步串口進(jìn)行設(shè)備的調(diào)試和地測(cè)。由于處理器自帶的接口不能滿足上述星載總線通信架構(gòu)需求,文中設(shè)計(jì)利用SmartFusion2 處理器的FPGA 實(shí)現(xiàn)了獨(dú)立的CAN 控制器和RS422異步串口的擴(kuò)展。擴(kuò)展后通信網(wǎng)絡(luò)硬件架構(gòu)如圖2 所示。
基于以上設(shè)計(jì)方案,進(jìn)行了SJA1000 CAN 控制器和RS422 異步串口的擴(kuò)展,程序在Libero IDE 集成環(huán)境中開(kāi)發(fā),并通過(guò)Modelsim 軟件進(jìn)行測(cè)試驗(yàn)證。
綜合電子計(jì)算機(jī)板采用SJA1000 芯片作為CAN總線控制器,并搭配TJA1040 總線驅(qū)動(dòng)芯片,用來(lái)擴(kuò)展三路CAN總線。外擴(kuò)CAN總線模塊的FPGA設(shè)計(jì)原理如圖3所示,包括AHB(Advanced High-performance Bus,高級(jí)高性能總線)時(shí)序轉(zhuǎn)換模塊和SJA1000 時(shí)序轉(zhuǎn)換模塊。其中,AHB 時(shí)序轉(zhuǎn)換模塊主要用于將MSS 對(duì)外訪問(wèn)的AHB 總線時(shí)序轉(zhuǎn)換為L(zhǎng)ocal 總線時(shí)序(片選、讀寫(xiě)使能、地址數(shù)據(jù)總線)。SJA1000 時(shí)序轉(zhuǎn)換模塊主要用于將Local 總線時(shí)序轉(zhuǎn)換為SJA1000芯片的讀寫(xiě)時(shí)序。
從功能劃分上,SmartFusion2 芯片上的ARM 內(nèi)核負(fù)責(zé)CAN 總線數(shù)據(jù)的發(fā)送和解析,而且ARM 對(duì)外訪問(wèn)的FIC(Fiber Interface Card,光纖接口卡)接口是AHB Lite 總線,因此AHB 時(shí)序轉(zhuǎn)換模塊可將AHB Lite 總線時(shí)序轉(zhuǎn)換為常用的Local 總線時(shí)序,便于模塊設(shè)計(jì)。圖4 和圖5 為MSS 控制器的FIC 接口寫(xiě)、讀操作時(shí)序圖。
FPGA 采用AHB Lite 和Corememctrl 軟核進(jìn)行AHB 時(shí)序轉(zhuǎn)化,其中轉(zhuǎn)換時(shí)序邏輯如圖6 所示。
SJA1000 芯片的ALE、CS、RD、WR、AD7-AD0 等控制信號(hào)直接連接在FPGA 芯片上,因此SJA1000時(shí)序轉(zhuǎn)換模塊只有滿足讀寫(xiě)時(shí)序要求,才能完成對(duì)SJA1000 芯片的訪問(wèn)。SJA1000 芯片原理如圖7所示。
SJA1000 芯片的地址總線和數(shù)據(jù)總線復(fù)用,需要控制ALE 信號(hào),切換地址總線和數(shù)據(jù)總線,具體的讀操作時(shí)序和寫(xiě)操作時(shí)序分別如圖8 和圖9所示。
采用Modelsim 測(cè)試軟件對(duì)AHB 時(shí)序轉(zhuǎn)換模塊和SJA1000 時(shí)序轉(zhuǎn)換模塊進(jìn)行功能仿真,用于驗(yàn)證FPGA 能否輸出正確的SJA1000 訪問(wèn)時(shí)序。在CAN總線的測(cè)試流程中,首先發(fā)送數(shù)據(jù)0x55 和0xAA,然后進(jìn)行數(shù)據(jù)的接收。仿真結(jié)果表明,AHB時(shí)序轉(zhuǎn)換為L(zhǎng)ocal 時(shí)序的仿真過(guò)程與圖4-6 一致,可以證明FPGA 模塊成功進(jìn)行了時(shí)序的轉(zhuǎn)換。Local 時(shí)序轉(zhuǎn)換為SJA1000 時(shí)序的仿真結(jié)果與圖8 和圖9 一致,可以證明FPGA成功進(jìn)行了時(shí)序轉(zhuǎn)換和數(shù)據(jù)收發(fā)。以上仿真結(jié)果說(shuō)明,F(xiàn)PGA擴(kuò)展的SJA1000模塊合理有效。
外擴(kuò)串口模塊的FPGA 設(shè)計(jì)原理如圖10 所示,該模塊包括AHB 時(shí)序轉(zhuǎn)換模塊和串口時(shí)序轉(zhuǎn)換模塊。其中,AHB 時(shí)序轉(zhuǎn)換模塊主要用于將MSS 對(duì)外訪問(wèn)的AHB 總線時(shí)序轉(zhuǎn)換為L(zhǎng)ocal 總線時(shí)序(片選、讀寫(xiě)使能、地址數(shù)據(jù)總線)。串口時(shí)序轉(zhuǎn)換模塊主要用于將Local 總線時(shí)序轉(zhuǎn)換為串口發(fā)送緩存和接收的讀寫(xiě)時(shí)序,并進(jìn)行串并轉(zhuǎn)換。
擴(kuò)展RS422 異步串口時(shí)采用的AHB 時(shí)序轉(zhuǎn)換模塊與擴(kuò)展CAN 總線時(shí)一致[17],已經(jīng)在前文進(jìn)行了介紹,故此處不再贅述。
串口時(shí)序轉(zhuǎn)換模塊內(nèi)部具有發(fā)送緩存的功能,ARM 將發(fā)送數(shù)據(jù)寫(xiě)入到串口緩存后,由FPGA 按照串口協(xié)議轉(zhuǎn)換成串行數(shù)據(jù)后輸出[18]。串口時(shí)序轉(zhuǎn)換模塊內(nèi)部還具有接收緩存的功能,F(xiàn)PGA 將接收的串行數(shù)據(jù)按照串口協(xié)議轉(zhuǎn)換成字節(jié)數(shù)據(jù)后,保存在接收緩存內(nèi),用于ARM 讀取。
在串口通信的協(xié)議層中,規(guī)定的傳輸單位為一個(gè)字符,包括一個(gè)起始位、八個(gè)數(shù)據(jù)位、一個(gè)奇偶校驗(yàn)位、一個(gè)停止位,只有通信雙方的數(shù)據(jù)包格式一致才能正常收發(fā)數(shù)據(jù)[16]。
采用Modelsim 測(cè)試軟件對(duì)AHB 時(shí)序轉(zhuǎn)換模塊和串口時(shí)序轉(zhuǎn)換模塊進(jìn)行功能仿真,用于驗(yàn)證FPGA能夠輸出正確的串口收發(fā)時(shí)序。仿真過(guò)程中采用自發(fā)自收的工作模式,將AHB 時(shí)序轉(zhuǎn)換為L(zhǎng)ocal 時(shí)序的仿真結(jié)果與圖4-6 對(duì)比可以證明FPGA 模塊成功進(jìn)行了時(shí)序的轉(zhuǎn)換。同時(shí),仿真結(jié)果成功進(jìn)行了數(shù)據(jù)的收發(fā),表明FPGA 擴(kuò)展的RS422 異步串口模塊合理有效。
結(jié)合某微小衛(wèi)星綜合電子系統(tǒng)研究需求,在文中FPGA 擴(kuò)展星載總線的基礎(chǔ)上進(jìn)行了星務(wù)軟件的開(kāi)發(fā)。星務(wù)軟件以μC/OS-II 操作系統(tǒng)為基礎(chǔ),實(shí)現(xiàn)了遙測(cè)、遙控、時(shí)間管理、設(shè)備管理、姿態(tài)控制等功能,其中總線通信功能是以上功能運(yùn)行的基礎(chǔ)。目前,該星務(wù)軟件已經(jīng)通過(guò)搭建半實(shí)物衛(wèi)星系統(tǒng)進(jìn)行了模飛測(cè)試,測(cè)試過(guò)程中,星上數(shù)據(jù)交互正常,進(jìn)一步說(shuō)明了該設(shè)計(jì)合理有效,滿足設(shè)計(jì)需求。
文中通過(guò)SmartFusion2 芯片的FPGA 模塊進(jìn)行了星載總線的擴(kuò)展,實(shí)現(xiàn)了“兩級(jí)雙冗余CAN+RS422”的星載總線通信架構(gòu)設(shè)計(jì),解決了星載處理器資源無(wú)法滿足星載總線架構(gòu)需求的問(wèn)題。與傳統(tǒng)方法采用外擴(kuò)總線的方式相比,該設(shè)計(jì)充分利用了SmartFusion2 芯片“ARM+FPGA”的優(yōu)勢(shì),通過(guò)FPGA實(shí)現(xiàn)了總線的內(nèi)部擴(kuò)展,簡(jiǎn)化了電路設(shè)計(jì),減小了星載計(jì)算機(jī)的體積和質(zhì)量,提高了微小衛(wèi)星平臺(tái)的集成度。后續(xù)將通過(guò)FPGA 進(jìn)行其他功能的擴(kuò)展,如星上數(shù)據(jù)的壓縮處理、可見(jiàn)光圖像檢測(cè)等,這對(duì)于微小衛(wèi)星一體化、小型化、集成化發(fā)展具有重要意義。