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

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

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

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

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

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

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

表3 地址的設(shè)置和讀取指令

圖5 地址設(shè)置和讀取指令調(diào)試
MSS I2C 從機(jī)中默認(rèn)存儲的數(shù)據(jù)是0x11223344 5566778899AABBCCDDEEFF,Core I2C從機(jī)中默認(rèn)儲存的數(shù)據(jù)是0Xffeeddccbbaa998877665544332211。當(dāng)寫入I2C 從機(jī)的數(shù)據(jù)長度小于從機(jī)原來儲存數(shù)據(jù)的長度時,寫入的數(shù)據(jù)將替代相應(yīng)位置的原數(shù)據(jù),其他位置數(shù)據(jù)不變。表4 為讀取和寫入數(shù)據(jù)的指令,圖6 為指令的調(diào)試圖。

圖6 讀取和寫入數(shù)據(jù)指令調(diào)試

表4 讀取和寫入數(shù)據(jù)指令表
I2C 主機(jī)執(zhí)行寫讀操作時需要輸入從機(jī)地址、寫入讀取的數(shù)據(jù)長度和數(shù)據(jù),該過程是寫入數(shù)據(jù)和讀取數(shù)據(jù)的結(jié)合。表5 是寫讀模式的指令,圖7 是寫讀數(shù)據(jù)的指令調(diào)試過程。

圖7 寫讀數(shù)據(jù)指令調(diào)試

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