陳世淼,倪淑燕,廖育榮
(1.航天工程大學研究生院,北京 101407;2.航天工程大學電子與光學工程系,北京 101407)
隨著電子科學技術的發展,衛星正在逐漸往小型化、集成化和模塊化方向發展[1-2],其中立方體衛星是近年來微小衛星領域的熱點。立方體衛星是用來進行簡單的太空觀察的星標準立方體模塊或其組合體的小衛星,具有成本低、周期短、可批量生產的優勢。目前,立方體衛星主要應用于對地觀測和技術試驗,并逐步在導航增強、空間安全和深空探測領域推廣。立方體衛星由于體積、能源的限制,與大型衛星的性能仍有較大差距,所以在進行立方體衛星設計時,要選擇能耗更低、功能密度更高的部組件[3-4]。目前,衛星上常用的X86、PowerPC 和SPARC 架構處理器功耗較高、功能密度低,常用的CAN、MIL-STD-1553B、IEEE 1394、SpaceWire 功耗較高、數據傳輸過程復雜,在立方體衛星上應用時會造成成本、能源和運算能力的浪費,性價比低。
針對以上問題,提出了一種適用于立方體衛星的基于SmartFusion2 芯片的I2C 總線多主多從通信設計。SmartFusion2是一種將ARM和FPGA結合的處理器,具有高安全性、高可靠性和低功耗等特點[5-7],通過其FPGA 的強大功能可以完成復雜系統的設計和實現,極大地提高立方體衛星的功能密度和適應性[8-10]。I2C 總線具有設計簡單靈活、成本低和穩定性高的特點[11-13],適合作為立方體衛星上的總線來連接各部組件進行通信。在立方體衛星上應用Smart Fusion2 片上芯片和I2C 總線,將在提高其功能密度,降低成本方面,具有較高的實用價值。
I2C 總線是一種兩線制、雙向通信、同步的串行總線[13],由數據線SDA 和時鐘線SCL 構成通信線路,各個設備可以通過連接到總線上實現數據通信,各設備之間通過地址來區分[14-15]。SDA 引腳一般通過外部設備拉高。SDA 引腳上的數據變化可能僅在SCL 的低電平內發生,在SCL 引腳處于高電平期間,SDA 引腳上電平的變化將產生啟動信號或結束信號。I2C 總線在傳輸過程中的3 種信號為啟動信號、結束信號和應答信號。圖1為信號電平變化圖。

圖1 信號電平變化圖
啟動信號:在SCL 處于高電平的條件下,SDA 由高電平到低電平的跳變將產生啟動信號。
結束信號:在SCL 處于高電平的條件下,SDA 由低電平到高電平的跳變將產生結束信號。
應答信號:所有的地址和數據字節都發送完成后,接收設備將在第九個時鐘周期發送一個零響應來確認它收到了每一個字節。這個零響應就是應答信號。
I2C 總線主要有兩種信息傳輸模式——寫入數據和讀取數據。該設計為了簡化程序設計,封裝了一種寫讀模式——將寫入數據和讀取數據用一個重復的啟動信號連接起來的一種信息傳輸模式。3 種傳輸模式的傳輸過程如下,傳輸幀格式如圖2 所示。

圖2 傳輸幀格式
I2C 主機通過監視SDA 線路來判斷總線是否處于空閑狀態。當總線空閑時,I2C 主機通過發送一個起始位來啟動數據傳輸,之后是目標從設備的7 位串行地址和指示數據傳輸方向的讀/寫位。目標從機收到數據后發送一個確認信號來告訴主機已經完成對地址的接收。發送數據設備進行數據傳輸時每次傳輸一個字節的數據,接收設備接收到數據后,將發送一個確認位。當主機發送或傳輸完所有的數據后,將發送一個停止位來結束數據傳輸。在寫讀模式下,數據寫入完成后,將再次發送一個起始位來進行讀取模式,讀取完成后由一個停止位來結束寫讀模式。
該設計選擇的是M2S090TS-1FGG484,處理器采用ACTEL 的第四代65 工藝的片上系統產品:基于flash 架構,能夠滿足工業、軍事、航空、通信和醫療領域的高安全性、高可靠性和低功耗的片上SoC 系統。
SmartFusion2 系列具有高的安全性、可靠性和低功耗特性,具體表現在:
1)采用了基于flash的最先進設計保護功能,可防止篡改、克隆和偽造,采用了先進的加密標準AES-256、安全散列算法SHA-256、384 位橢圓曲線密碼引擎,徹底改變了FPGA 在安全性應用中的有效性。
2)具有零故障率(FIT)的SEU 免疫能力,在內部Cortex-M3、SRAM、以太網控制器、CAN 控制器、USB等模塊中均采用了EDAC 校驗功能。
3)靜態功耗小于10 mW,在采用flash freeze 模式時,功耗可降至1 mW,喚醒時間小于100 μs。
SmartFusion2片上系統芯片被廣泛應用于軍工和航空領域,歐洲空中客車公司的A380大型客機上采用了大量SmartFusion2(每架超過1 000只)。該產品不在美國公禁運之列,所以可采購到軍級產品,適用于衛星。并且該處理器在國防科大的微納衛星天拓三號上進行了應用,已在軌飛行2.5年,在軌運行穩定可靠。
該設計選擇的是SmartFusion2 開發板,其內部集成了166 MHz 的ARM Cortex-M3 硬核處理器,在SRAM、PLL 等普通外設的基礎上,集成了高速乘法器、DDR2/3、CAN、USB 以及千兆以太等高級外設。圖3 是SmartFusion2 的FPGA 邏輯資源圖。

圖3 SmartFusion2的FPGA邏輯資源圖
該設計通過使用SmartFusion2 安全評估開發板上的4 個I2C 外設來實現I2C 的多主多從信息傳輸,SmartFusion2 SoC FPGA開發板在MSS上提供兩個I2C 外設,此外還可以通過FPGA 上的I2CIP核來實現另外兩個I2C外設。I2C 的連接方式如圖4所示,其中MSS I2C_0 和MSS I2C_1 由MSS提供,Core I2C_0 和Core I2C_1 由開發板上的FPGA模塊生成,MSS I2C_0 和Core I2C_0是主機,MSS I2C_1 和CoreI2C_1 是從機。通過UART 接口將開發板與PC 機相連,可通過PC 機實現對主從組合、從地址、要讀取的字節數和I2C 傳輸方式的選擇。

圖4 I2C主機從機連接圖
該程序主要通過上位機軟件給開發板傳輸指令,從而進行寫入和讀取操作。在執行寫入操作時,由于I2C 緩沖器可以最多存放1 024 個字節的數據,所以主機一次最多發送1 024 個字節的數據給從機,從機收到數據后將其存儲在緩沖器里,并且根據收到數據的長度覆蓋緩沖器的部分或所有數據。在執行讀取操作時,主機讀取從機緩沖器里的數據并將其顯示到上位機軟件。在執行寫讀模式時,主機先將數據發送給從機,然后再讀取從機數據并顯示到上位機軟件。表1 為程序用到的主要函數。

表1 主要函數
該設計在SmartFusion2 安全評估開發板上運行,為了實現I2C 的多主多從設計,需要對開發板的一些跳線進行連接。在斷電狀態下將跳線J3 的引腳1 和引腳2 連接,將跳線J8 的引腳1 和引腳2 連接,將開發板的J18 通過USB 與PC 機連接來實現開發板與PC 機的通信。為了實現4 個I2C 外設之間的通信,需要將4 個外設的SCL 和SDA 分別用飛線連接,4 個外設的SCL 和SDA 管腳如表2 所示。

表2 SCL和SDL管腳表
該設計可以通過串口執行以下操作:設置和讀取MSS I2C 從機和Core I2C 從機的外部地址;MSS I2C主機或Core I2C 主機對MSS I2C 從機或Core I2C 從機執行讀取或者寫入數據操作;MSS I2C 主機或Core I2C主機對MSS I2C 從機或Core I2C 從機執行寫讀數據操作。程序的運行過程中還會執行錯誤檢測和超時功能,寫入地址、寫入數據和寫讀數據成功后,串口將返回0x00,表示寫入成功,0xFF 表示寫入失敗。
MSS I2C 主機的默認地址是0x20,Core I2C 主機的默認地址是0x30,MSS I2C 從機的默認外部地址是0x21,Core I2C 從機的默認外部地址是0x31。表3 為地址設置和讀取的指令,圖5 為串口調試的結果。

表3 地址的設置和讀取指令

圖5 地址設置和讀取指令調試
MSS I2C 從機中默認存儲的數據是0x11223344 5566778899AABBCCDDEEFF,Core I2C從機中默認儲存的數據是0Xffeeddccbbaa998877665544332211。當寫入I2C 從機的數據長度小于從機原來儲存數據的長度時,寫入的數據將替代相應位置的原數據,其他位置數據不變。表4 為讀取和寫入數據的指令,圖6 為指令的調試圖。

圖6 讀取和寫入數據指令調試

表4 讀取和寫入數據指令表
I2C 主機執行寫讀操作時需要輸入從機地址、寫入讀取的數據長度和數據,該過程是寫入數據和讀取數據的結合。表5 是寫讀模式的指令,圖7 是寫讀數據的指令調試過程。

圖7 寫讀數據指令調試

表5 寫讀數據指令表
該設計以SmartFusion2 片上系統芯片為核心,通過芯片上的FPGA 擴展了I2C 外設,成功實現了I2C總線多主多從設備的讀取數據、寫入數據和寫讀數據。在進行立方體衛星設計時,采用設計簡單靈活的I2C 總線有利于降低成本、減少功耗、簡化設計。SmartFusion2 片上系統芯片是ARM 和FPGA 的結合,具有較高的靈活性,可通過FPGA 擴展立方體衛星所需功能,提高立方體衛星集成度。由此可見SmartFusion2 片上系統芯片和I2C 總線在立方體衛星研究領域具有較廣的應用前景。接下來需要進一步開展的工作是進行SmartFusion2 片上系統芯片與立方體衛星部組件的通信調試,提高在立方體衛星平臺上應用時的可靠性、實時性。