摘要:本文在對(duì)SpaceWire總線協(xié)議、SpaceWire節(jié)點(diǎn)的總體框架進(jìn)行深入分析的基礎(chǔ)上,設(shè)計(jì)了支持熱插拔的基于CPCI接口的高速SpaceWire數(shù)據(jù)總線的節(jié)點(diǎn)通訊板卡的硬件系統(tǒng),重點(diǎn)介紹了支持熱插拔的CPCI接口電源電路分析、FPGA與PCI9056接口模塊時(shí)序分析和在Windriver軟件環(huán)境下的驅(qū)動(dòng)程序的開發(fā),為SpaceWire上位機(jī)底層驅(qū)動(dòng)接口的開發(fā)以及今后SpaceWire總線在其它任務(wù)中的應(yīng)用打下了良好的基礎(chǔ)。本文網(wǎng)絡(luò)版地址:http://www.eepw.com.cn/article/247468.htm
關(guān)鍵詞: SpaceWire節(jié)點(diǎn);高速串行總線;熱插拔;CPCI接口;PCI9056 DOI: 10.3969/j.issn.1005-5517.2014.5.014
引言
隨著航天技術(shù)的進(jìn)步和衛(wèi)星與高空探測(cè)技術(shù)的發(fā)展, 需要一種高速、可擴(kuò)展、低功耗、低成本的通用通訊鏈路接口來滿足星載高速數(shù)據(jù)傳輸要求。SpaceWire 總線標(biāo)準(zhǔn)就是一種高速的、點(diǎn)對(duì)點(diǎn)、全雙工的串行總線網(wǎng)絡(luò), 以IEEE1355-1995和LVDS 兩個(gè)商業(yè)標(biāo)準(zhǔn)相結(jié)合而提出的一種星載數(shù)據(jù)總線。本文在研究SpaceWire 總線協(xié)議的基礎(chǔ)上,分析了基于CPCI接口的SpaceWire節(jié)點(diǎn)通訊板卡的硬件實(shí)現(xiàn)架構(gòu),并著重分析CPCI接口電路電源管理功能、PCI橋接電路以及上位機(jī)軟件驅(qū)動(dòng)的生成原理。
1 SpaceWire概述
SpaceWire 是為更好地滿足星載設(shè)備間高速數(shù)據(jù)傳輸需求而提出一種高速的(2Mbit/s至400Mbit/s,目前實(shí)現(xiàn)的宇航級(jí)節(jié)點(diǎn)設(shè)備之間的速度為200Mbit/s)、點(diǎn)對(duì)點(diǎn)、全雙工的串行總線網(wǎng)絡(luò),在2003年1月正式成為歐空局標(biāo)準(zhǔn)。它的提出主要致力于航天器內(nèi)有效載荷系統(tǒng)數(shù)據(jù)和控制信息的處理, 以滿足未來高性能高速數(shù)據(jù)傳輸為目標(biāo), 提供了一種統(tǒng)一的用來連接傳感器、數(shù)據(jù)處理單元、大容量存儲(chǔ)器、遙測(cè)子系統(tǒng)以及電地支持設(shè)備EGSE ( electronic ground support equipment ) 的基礎(chǔ)架構(gòu)。
SpaceWire 標(biāo)準(zhǔn)具體包括了鏈路、節(jié)點(diǎn)和路由三方面的內(nèi)容。本文著重討論節(jié)點(diǎn)的功能,所謂SpaceWire節(jié)點(diǎn), 是指?jìng)鬏敯牧鞒鲈O(shè)備或者流向設(shè)備, 可以是處理器、存儲(chǔ)單元、傳感器、電地支持設(shè)備( EGSE ) 或連接在SpaceWire總線網(wǎng)絡(luò)上的其它單元。
2 SpaceWire節(jié)點(diǎn)通訊板卡硬件設(shè)計(jì)
EMBC1000-CPCISPW是歐比特公司自主研制的完全遵循并實(shí)現(xiàn)ECSS-E-ST-50-12C協(xié)議規(guī)范的航天設(shè)備間的高速SpaceWire數(shù)據(jù)總線的,支持熱插拔的CPCI接口的節(jié)點(diǎn)終端通訊板卡(本板卡實(shí)現(xiàn)了200Mbit/s的速率)。此SpaceWire總線節(jié)點(diǎn)通訊板卡可以嵌入在航天子系統(tǒng)中,將航天子系統(tǒng)中與其它SpaceWire網(wǎng)絡(luò)之間連接,保證航天子系統(tǒng)之間高速、實(shí)時(shí)、確定、可靠地進(jìn)行數(shù)據(jù)交換。硬件架構(gòu)如圖l所示,分為FPGA控制模塊、CPCI接口電源管理模塊、MDM9S接口模塊和SRAM緩存模塊。各模塊的功能如下:
FPGA控制模塊:FPGA采用Altera公司的EP3C55F484I7N芯片,時(shí)鐘頻率采用80MHz,同時(shí)為了實(shí)現(xiàn)SpaceWire總線傳輸速率,F(xiàn)PGA內(nèi)部采用了PLL對(duì)時(shí)鐘進(jìn)行了分頻,實(shí)現(xiàn)4路SpaceWire總線通信協(xié)議接口功能,硬件實(shí)現(xiàn)LVDS信號(hào)傳輸,實(shí)現(xiàn)數(shù)據(jù)通訊過程中產(chǎn)生的大量數(shù)據(jù)實(shí)現(xiàn)緩存并與PCI9056通信接口等功能;
SRAM緩存器:4M字節(jié)的SRAM用于實(shí)現(xiàn)存儲(chǔ)SPW總線收發(fā)機(jī)制中產(chǎn)生的大容量高速數(shù)據(jù)的緩存功能;
MDM9S接口模塊:MDM9S接口實(shí)現(xiàn)FPGA的LVDS信號(hào)與外部SPW設(shè)備之間的接口功能;
PCI接口模塊:實(shí)現(xiàn)PCI總線的接口協(xié)議功能,通過CPCI接口實(shí)現(xiàn)FPGA與上位機(jī)軟件間進(jìn)行數(shù)據(jù)的通信,同時(shí)實(shí)現(xiàn)支持熱插拔的板卡的電源管理功能;
電源管理模塊:與PCI9056芯片以及CPCI接口共同完成設(shè)備的電源熱插拔功能。
3 CPCI接口電源電路分析
PCI設(shè)備的熱插拔功能主要用于具備CPCI接口的裝置,熱插拔功能允許板卡隨意從設(shè)備中插拔而不影響裝置操作系統(tǒng)的正常運(yùn)行。電源芯片電路如圖2所示,LTC1643L是一個(gè)允許CPCI型設(shè)備進(jìn)行安全插入和拔出的電源管理控制器,將系統(tǒng)的CPCI插槽電源接入到SpaceWire板卡,圖中IRF7413是一個(gè)N型MOS管,用于控制3.3V和5V的電源通斷供應(yīng),而-12V和+12V電源由片上開關(guān)供應(yīng),所有的電壓的上升時(shí)間可以達(dá)到一個(gè)可編程的速率,同時(shí)該芯片還具備電源過流故障時(shí)的短路保護(hù)。
PCI9056的引腳BD_SEL#是CPCI接口中最小的插針之一,BD_SEL#連接LTC1643L的使能引腳,低電平時(shí)有效開啟LTC1643L工作并同時(shí)給板卡供電。R10是一個(gè)0.018歐姆,0.5W,精度為1%的精密電阻,用于過流保護(hù)的電壓檢測(cè)電阻。當(dāng)板卡發(fā)生故障導(dǎo)致電流超過額定值之后,R10兩端的壓差將增大,SENSE引腳將此過流信息反饋至LTC1643L電源管理器,同時(shí)切斷電源供應(yīng),起到電源過流保護(hù)的功能。
4 PCI橋接電路分析
在SpaceWire總線節(jié)點(diǎn)終端系統(tǒng)與航電計(jì)算機(jī)系統(tǒng)之間實(shí)現(xiàn)PCI通訊大致有兩個(gè)方式,其一就是采用可編程器件作為一個(gè)獨(dú)立的模塊實(shí)現(xiàn)PCI協(xié)議,另一種方式就是采用專用PCI協(xié)議芯片。本系統(tǒng)的設(shè)計(jì)出于性能穩(wěn)定性和結(jié)構(gòu)簡(jiǎn)易性方面的考慮,選擇用PLX公司生產(chǎn)的PCI9056集成芯片,該芯片可以設(shè)置成多種傳輸模式,完成SpaceWire總線節(jié)點(diǎn)與航電設(shè)備之間的通信橋接功能。
在PCI9056與本地FPGA之間的通信分為直接主模式(Direct Master Mode)、直接從模式(Direct Slave Mode)和DMA模式。由于PCI通信要求達(dá)到SpaceWire總線網(wǎng)絡(luò)的2Mbit/ s至400Mbit/s通訊速率(本板卡實(shí)現(xiàn)了200Mbit/s),這里采用的芯片時(shí)鐘頻率為66MHz,傳輸模式為直接從模式,工作時(shí)序如圖3所示,PCI9056為主芯片,F(xiàn)PGA為從芯片。
行高效的數(shù)據(jù)通信,F(xiàn)PGA內(nèi)部劃出了一部分內(nèi)存以配置成雙口RAM的形式完成PCI9056對(duì)SpaceWire數(shù)據(jù)的收發(fā)以及相應(yīng)控制寄存器的控制傳輸。
5 Windriver軟件的驅(qū)動(dòng)生產(chǎn)
通過PLXMON軟件對(duì)PCI9056的配置芯片進(jìn)行配置后,可以利用Windows操作系統(tǒng)中WinDriver自動(dòng)生成PCI驅(qū)動(dòng)程序,步驟如下:首先啟動(dòng)WinDriver Wizard,從開始菜單,選擇“程序 | WinDriver | Driver Wizard”;然后在Driver Wizard 菜單,單擊“File New Project”菜單來新建一個(gè)工程,從即插即用列表中選擇顯示卡,通過生產(chǎn)商的名字來選定。單擊“Memory”標(biāo)簽。該顯示卡的三個(gè)內(nèi)存范圍顯示出來。內(nèi)存范圍中的BAR2映射的是FPGA內(nèi)的RAM緩存塊和專用寄存器,根據(jù)FPGA內(nèi)核對(duì)這些緩存塊和寄存器的可讀寫定義,可以在BAR2映射的區(qū)域里進(jìn)行讀寫,若寫進(jìn)去的數(shù)值跟讀出來的數(shù)值一致,表面CPCI接口通信正常。最后一步為生成驅(qū)動(dòng)代碼:?jiǎn)螕簟癇uild | Generate code”菜單, Driver Wizard 將產(chǎn)生操作硬件資源的函數(shù),可以在用戶模式下在應(yīng)用程序中直接使用這些函數(shù),這個(gè)向?qū)н€會(huì)產(chǎn)生一個(gè)樣本程序來使用這些函數(shù)操作硬件,上層界面的開發(fā)可以直接調(diào)用這些API函數(shù)。
6 總結(jié)
本文是珠海歐比特公司為面向我國航天應(yīng)用研發(fā)的一款SpaceWire總線節(jié)點(diǎn)終端板卡的一個(gè)實(shí)際應(yīng)用設(shè)計(jì)方案,并根據(jù)此方案完成了對(duì)每個(gè)功能模塊的結(jié)構(gòu)和功能分析,歐比特公司此已經(jīng)對(duì)方案設(shè)計(jì)申請(qǐng)了專利保護(hù)。此方案對(duì)今后SpaceWire總線在其它任務(wù)中的應(yīng)用具有重要的借鑒意義。
參考文獻(xiàn):
[1] EMBC3000-CPCISPW型SpaceWire節(jié)點(diǎn)通訊板卡使用說明書.歐比特控制工程股份有限公司.2013.
[2] 康詠岐.面向航天應(yīng)用的SpaceWire節(jié)點(diǎn)單元的IP核設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2005,22(9):120-123。
[3] 陳健飛,曹松.SpaceWire總線接口終端的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息:2010,26(82):123-124。
[4] LTC1643L datasheet,PCI-Bus Hot Swap Controller,LINEAR TECHNOLOGY.
[5] PCI 9056 Data Book, PLX TECHNOLOGY.