陳世淼,倪淑燕,廖育榮
(1.航天工程大學研究生院,北京 101407;2.航天工程大學電子與光學工程系,北京 101407)
隨著電子科學技術的發(fā)展,衛(wèi)星正在逐漸往小型化、集成化和模塊化方向發(fā)展[1-2],其中立方體衛(wèi)星是近年來微小衛(wèi)星領域的熱點。立方體衛(wèi)星是用來進行簡單的太空觀察的星標準立方體模塊或其組合體的小衛(wèi)星,具有成本低、周期短、可批量生產(chǎn)的優(yōu)勢。目前,立方體衛(wèi)星主要應用于對地觀測和技術試驗,并逐步在導航增強、空間安全和深空探測領域推廣。立方體衛(wèi)星由于體積、能源的限制,與大型衛(wèi)星的性能仍有較大差距,所以在進行立方體衛(wèi)星設計時,要選擇能耗更低、功能密度更高的部組件[3-4]。目前,衛(wèi)星上常用的X86、PowerPC 和SPARC 架構處理器功耗較高、功能密度低,常用的CAN、MIL-STD-1553B、IEEE 1394、SpaceWire 功耗較高、數(shù)據(jù)傳輸過程復雜,在立方體衛(wèi)星上應用時會造成成本、能源和運算能力的浪費,性價比低。
針對以上問題,提出了一種適用于立方體衛(wèi)星的基于SmartFusion2 芯片的I2C 總線多主多從通信設計。SmartFusion2是一種將ARM和FPGA結合的處理器,具有高安全性、高可靠性和低功耗等特點[5-7],通過其FPGA 的強大功能可以完成復雜系統(tǒng)的設計和實現(xiàn),極大地提高立方體衛(wèi)星的功能密度和適應性[8-10]。I2C 總線具有設計簡單靈活、成本低和穩(wěn)定性高的特點[11-13],適合作為立方體衛(wèi)星上的總線來連接各部組件進行通信。在立方體衛(wèi)星上應用Smart Fusion2 片上芯片和I2C 總線,將在提高其功能密度,降低成本方面,具有較高的實用價值。
I2C 總線是一種兩線制、雙向通信、同步的串行總線[13],由數(shù)據(jù)線SDA 和時鐘線SCL 構成通信線路,各個設備可以通過連接到總線上實現(xiàn)數(shù)據(jù)通信,各設備之間通過地址來區(qū)分[14-15]。SDA 引腳一般通過外部設備拉高。SDA 引腳上的數(shù)據(jù)變化可能僅在SCL 的低電平內(nèi)發(fā)生,在SCL 引腳處于高電平期間,SDA 引腳上電平的變化將產(chǎn)生啟動信號或結束信號。I2C 總線在傳輸過程中的3 種信號為啟動信號、結束信號和應答信號。圖1為信號電平變化圖。
圖1 信號電平變化圖
啟動信號:在SCL 處于高電平的條件下,SDA 由高電平到低電平的跳變將產(chǎn)生啟動信號。
結束信號:在SCL 處于高電平的條件下,SDA 由低電平到高電平的跳變將產(chǎn)生結束信號。
應答信號:所有的地址和數(shù)據(jù)字節(jié)都發(fā)送完成后,接收設備將在第九個時鐘周期發(fā)送一個零響應來確認它收到了每一個字節(jié)。這個零響應就是應答信號。
I2C 總線主要有兩種信息傳輸模式——寫入數(shù)據(jù)和讀取數(shù)據(jù)。該設計為了簡化程序設計,封裝了一種寫讀模式——將寫入數(shù)據(jù)和讀取數(shù)據(jù)用一個重復的啟動信號連接起來的一種信息傳輸模式。3 種傳輸模式的傳輸過程如下,傳輸幀格式如圖2 所示。
圖2 傳輸幀格式
I2C 主機通過監(jiān)視SDA 線路來判斷總線是否處于空閑狀態(tài)。當總線空閑時,I2C 主機通過發(fā)送一個起始位來啟動數(shù)據(jù)傳輸,之后是目標從設備的7 位串行地址和指示數(shù)據(jù)傳輸方向的讀/寫位。目標從機收到數(shù)據(jù)后發(fā)送一個確認信號來告訴主機已經(jīng)完成對地址的接收。發(fā)送數(shù)據(jù)設備進行數(shù)據(jù)傳輸時每次傳輸一個字節(jié)的數(shù)據(jù),接收設備接收到數(shù)據(jù)后,將發(fā)送一個確認位。當主機發(fā)送或傳輸完所有的數(shù)據(jù)后,將發(fā)送一個停止位來結束數(shù)據(jù)傳輸。在寫讀模式下,數(shù)據(jù)寫入完成后,將再次發(fā)送一個起始位來進行讀取模式,讀取完成后由一個停止位來結束寫讀模式。
該設計選擇的是M2S090TS-1FGG484,處理器采用ACTEL 的第四代65 工藝的片上系統(tǒng)產(chǎn)品:基于flash 架構,能夠滿足工業(yè)、軍事、航空、通信和醫(yī)療領域的高安全性、高可靠性和低功耗的片上SoC 系統(tǒng)。
SmartFusion2 系列具有高的安全性、可靠性和低功耗特性,具體表現(xiàn)在:
1)采用了基于flash的最先進設計保護功能,可防止篡改、克隆和偽造,采用了先進的加密標準AES-256、安全散列算法SHA-256、384 位橢圓曲線密碼引擎,徹底改變了FPGA 在安全性應用中的有效性。
2)具有零故障率(FIT)的SEU 免疫能力,在內(nèi)部Cortex-M3、SRAM、以太網(wǎng)控制器、CAN 控制器、USB等模塊中均采用了EDAC 校驗功能。
3)靜態(tài)功耗小于10 mW,在采用flash freeze 模式時,功耗可降至1 mW,喚醒時間小于100 μs。
SmartFusion2片上系統(tǒng)芯片被廣泛應用于軍工和航空領域,歐洲空中客車公司的A380大型客機上采用了大量SmartFusion2(每架超過1 000只)。該產(chǎn)品不在美國公禁運之列,所以可采購到軍級產(chǎn)品,適用于衛(wèi)星。并且該處理器在國防科大的微納衛(wèi)星天拓三號上進行了應用,已在軌飛行2.5年,在軌運行穩(wěn)定可靠。
該設計選擇的是SmartFusion2 開發(fā)板,其內(nèi)部集成了166 MHz 的ARM Cortex-M3 硬核處理器,在SRAM、PLL 等普通外設的基礎上,集成了高速乘法器、DDR2/3、CAN、USB 以及千兆以太等高級外設。圖3 是SmartFusion2 的FPGA 邏輯資源圖。
圖3 SmartFusion2的FPGA邏輯資源圖
該設計通過使用SmartFusion2 安全評估開發(fā)板上的4 個I2C 外設來實現(xiàn)I2C 的多主多從信息傳輸,SmartFusion2 SoC FPGA開發(fā)板在MSS上提供兩個I2C 外設,此外還可以通過FPGA 上的I2CIP核來實現(xiàn)另外兩個I2C外設。I2C 的連接方式如圖4所示,其中MSS I2C_0 和MSS I2C_1 由MSS提供,Core I2C_0 和Core I2C_1 由開發(fā)板上的FPGA模塊生成,MSS I2C_0 和Core I2C_0是主機,MSS I2C_1 和CoreI2C_1 是從機。通過UART 接口將開發(fā)板與PC 機相連,可通過PC 機實現(xiàn)對主從組合、從地址、要讀取的字節(jié)數(shù)和I2C 傳輸方式的選擇。
圖4 I2C主機從機連接圖
該程序主要通過上位機軟件給開發(fā)板傳輸指令,從而進行寫入和讀取操作。在執(zhí)行寫入操作時,由于I2C 緩沖器可以最多存放1 024 個字節(jié)的數(shù)據(jù),所以主機一次最多發(fā)送1 024 個字節(jié)的數(shù)據(jù)給從機,從機收到數(shù)據(jù)后將其存儲在緩沖器里,并且根據(jù)收到數(shù)據(jù)的長度覆蓋緩沖器的部分或所有數(shù)據(jù)。在執(zhí)行讀取操作時,主機讀取從機緩沖器里的數(shù)據(jù)并將其顯示到上位機軟件。在執(zhí)行寫讀模式時,主機先將數(shù)據(jù)發(fā)送給從機,然后再讀取從機數(shù)據(jù)并顯示到上位機軟件。表1 為程序用到的主要函數(shù)。
表1 主要函數(shù)
該設計在SmartFusion2 安全評估開發(fā)板上運行,為了實現(xiàn)I2C 的多主多從設計,需要對開發(fā)板的一些跳線進行連接。在斷電狀態(tài)下將跳線J3 的引腳1 和引腳2 連接,將跳線J8 的引腳1 和引腳2 連接,將開發(fā)板的J18 通過USB 與PC 機連接來實現(xiàn)開發(fā)板與PC 機的通信。為了實現(xiàn)4 個I2C 外設之間的通信,需要將4 個外設的SCL 和SDA 分別用飛線連接,4 個外設的SCL 和SDA 管腳如表2 所示。
表2 SCL和SDL管腳表
該設計可以通過串口執(zhí)行以下操作:設置和讀取MSS I2C 從機和Core I2C 從機的外部地址;MSS I2C主機或Core I2C 主機對MSS I2C 從機或Core I2C 從機執(zhí)行讀取或者寫入數(shù)據(jù)操作;MSS I2C 主機或Core I2C主機對MSS I2C 從機或Core I2C 從機執(zhí)行寫讀數(shù)據(jù)操作。程序的運行過程中還會執(zhí)行錯誤檢測和超時功能,寫入地址、寫入數(shù)據(jù)和寫讀數(shù)據(jù)成功后,串口將返回0x00,表示寫入成功,0xFF 表示寫入失敗。
MSS I2C 主機的默認地址是0x20,Core I2C 主機的默認地址是0x30,MSS I2C 從機的默認外部地址是0x21,Core I2C 從機的默認外部地址是0x31。表3 為地址設置和讀取的指令,圖5 為串口調(diào)試的結果。
表3 地址的設置和讀取指令
圖5 地址設置和讀取指令調(diào)試
MSS I2C 從機中默認存儲的數(shù)據(jù)是0x11223344 5566778899AABBCCDDEEFF,Core I2C從機中默認儲存的數(shù)據(jù)是0Xffeeddccbbaa998877665544332211。當寫入I2C 從機的數(shù)據(jù)長度小于從機原來儲存數(shù)據(jù)的長度時,寫入的數(shù)據(jù)將替代相應位置的原數(shù)據(jù),其他位置數(shù)據(jù)不變。表4 為讀取和寫入數(shù)據(jù)的指令,圖6 為指令的調(diào)試圖。
圖6 讀取和寫入數(shù)據(jù)指令調(diào)試
表4 讀取和寫入數(shù)據(jù)指令表
I2C 主機執(zhí)行寫讀操作時需要輸入從機地址、寫入讀取的數(shù)據(jù)長度和數(shù)據(jù),該過程是寫入數(shù)據(jù)和讀取數(shù)據(jù)的結合。表5 是寫讀模式的指令,圖7 是寫讀數(shù)據(jù)的指令調(diào)試過程。
圖7 寫讀數(shù)據(jù)指令調(diào)試
表5 寫讀數(shù)據(jù)指令表
該設計以SmartFusion2 片上系統(tǒng)芯片為核心,通過芯片上的FPGA 擴展了I2C 外設,成功實現(xiàn)了I2C總線多主多從設備的讀取數(shù)據(jù)、寫入數(shù)據(jù)和寫讀數(shù)據(jù)。在進行立方體衛(wèi)星設計時,采用設計簡單靈活的I2C 總線有利于降低成本、減少功耗、簡化設計。SmartFusion2 片上系統(tǒng)芯片是ARM 和FPGA 的結合,具有較高的靈活性,可通過FPGA 擴展立方體衛(wèi)星所需功能,提高立方體衛(wèi)星集成度。由此可見SmartFusion2 片上系統(tǒng)芯片和I2C 總線在立方體衛(wèi)星研究領域具有較廣的應用前景。接下來需要進一步開展的工作是進行SmartFusion2 片上系統(tǒng)芯片與立方體衛(wèi)星部組件的通信調(diào)試,提高在立方體衛(wèi)星平臺上應用時的可靠性、實時性。