王 杰,李志強,朱文明,湯吉波
星載測控數(shù)傳一體化平臺中CAN總線接口的FPGA實現(xiàn)
王 杰1,2,李志強1,2,朱文明1,2,湯吉波1,2
(1.解放軍理工大學(xué)通信工程學(xué)院,南京 210007;2.衛(wèi)星通信與導(dǎo)航協(xié)同創(chuàng)新中心,南京 210007)
測控數(shù)傳一體化是一種新的測控模式,該模式采用空間數(shù)據(jù)系統(tǒng)咨詢委員會(CCSDS)的高級在軌系統(tǒng)(AOS)建議,將測控與數(shù)傳功能合二為一,能夠有效提高衛(wèi)星的有效載荷比。針對應(yīng)用于測控數(shù)傳一體化應(yīng)答機中的CAN總線,以FPGA為主控制器,SJA1000為CAN通信控制器實現(xiàn)其硬件接口電路,并采用VHDL語言進行CAN總線接口模塊的設(shè)計與實現(xiàn),仿真與測試結(jié)果表明,在該硬件平臺上CAN總線的通信速率能達到500 Kbps,較好地滿足了系統(tǒng)需求。
測控數(shù)傳一體化;FPGA;CCSDS;CAN總線
CAN(Controller Area Network)即控制器局域網(wǎng),是一種有效支持分布式控制與實時控制的串行通信網(wǎng)絡(luò)。目前,由于其低成本、高可靠性、實時性、抗干擾能力強等特點,CAN總線在航空航天領(lǐng)域得到了越來越廣泛的應(yīng)用[1]。文獻2在闡述微納衛(wèi)星測控通信統(tǒng)一系統(tǒng)的星上模塊設(shè)計時簡要介紹了CAN總線在微小衛(wèi)星上的應(yīng)用,論證了在微小衛(wèi)星上應(yīng)用CAN總線方案的可行性[2]。
為了滿足衛(wèi)星測控的多任務(wù)需求,新型的測控數(shù)傳一體化應(yīng)答機具備三種工作模式,工作模式的切換要求電路具有可重構(gòu)性,因此選用可重復(fù)編程的FPGA作為主控制器,增強了硬件電路設(shè)計的靈活性和可擴展性。為限制硬件電路的體積、功耗,CAN總線接口模塊的設(shè)計也通過FPGA實現(xiàn)[3]。文獻3闡述了基于FPGA的CAN總線通信節(jié)點設(shè)計,由于應(yīng)用場合的不同,該設(shè)計方案不滿足星上數(shù)據(jù)傳輸?shù)膶崟r性要求且處理機制需要進一步完善。
在此背景下,本文針對應(yīng)用于測控數(shù)傳一體化應(yīng)答機中的CAN總線,采用VHDL語言進行CAN總線接口模塊的設(shè)計與實現(xiàn),實現(xiàn)星上CAN通信數(shù)據(jù)的高速、實時、可靠傳輸。
星載測控數(shù)傳一體化應(yīng)答機工作模式如圖1所示,測控數(shù)傳一體化應(yīng)答機包含非相干擴頻測控模式、數(shù)傳模式和測控數(shù)傳一體化模式,可根據(jù)指令完成工作模式的切換。
圖1 測控數(shù)傳一體化應(yīng)答機工作模式
非相干擴頻測控模式上、下行鏈路采用的調(diào)制方式都為PCM-CDMA-BPSK。數(shù)傳模式上行鏈路采用非相干擴頻測控體制,下行鏈路采用PCM-DQPSK調(diào)制方式。測控數(shù)傳一體化模式內(nèi)部集成了非相干擴頻測控功能與高速遙測功能,上行鏈路仍采用非相干擴頻測控體制,與非相干擴頻測控體制相比,主要區(qū)別在于下行鏈路,測控數(shù)傳一體化模式將2路下行發(fā)射通道改為1路測控數(shù)傳綜合信道[4],調(diào)制方式為PCM-BPSK,下行信息速率可達10 Mbps。該模式采用CCSDS AOS建議中定義的數(shù)據(jù)幀格式先將遙測信息、數(shù)傳信息以TDM方式合路,測量信息采用CCSDSAOS建議的插入業(yè)務(wù)與遙測信息、數(shù)傳信息合路為下行信息幀通過測控數(shù)傳綜合信道下行傳輸,這樣可以同時滿足遙測參數(shù)多樣化以及遙測實時性越來越高的要求。
隨著遙測參數(shù)多樣化以及遙測實時性要求越來越高,考慮將高速、高可靠性的CAN總線引入衛(wèi)星系統(tǒng)工程中,實現(xiàn)星上數(shù)據(jù)的高速率、高可靠性、實時傳輸以及衛(wèi)星整體結(jié)構(gòu)的優(yōu)化。衛(wèi)星上應(yīng)用的CAN總線網(wǎng)絡(luò)如圖2所示。
CAN總線傳輸模式為主從模式,實現(xiàn)形式為一主多從,星載計算機作為主節(jié)點,衛(wèi)星各分系統(tǒng)及分系統(tǒng)內(nèi)部各設(shè)備作為從節(jié)點,主節(jié)點對從節(jié)點數(shù)據(jù)通信進行統(tǒng)一調(diào)度,禁止從節(jié)點之間的相互通信,各個節(jié)點有不同的節(jié)點地址,用以區(qū)分各節(jié)點的優(yōu)先級解決總線沖突,節(jié)點地址越小優(yōu)先級越高,同時通過對節(jié)點標識符的報文濾波即可實現(xiàn)點對點、一點對多點及全局廣播多種通信方式。
圖2 CAN總線網(wǎng)絡(luò)
針對CAN總線在測控數(shù)傳一體化應(yīng)答機中的應(yīng)用,CAN總線主要完成測控數(shù)傳一體化應(yīng)答機與星載計算機的通信,負責傳輸指令數(shù)據(jù)、遙測數(shù)據(jù)。指令數(shù)據(jù)由主節(jié)點發(fā)送給從節(jié)點,后經(jīng)從節(jié)點發(fā)送給各執(zhí)行機構(gòu)執(zhí)行指令,如發(fā)射機的開關(guān)、工作模式的切換等。遙測數(shù)據(jù)的傳輸是由主節(jié)點發(fā)送遙測請求指令給從節(jié)點,從節(jié)點接收到遙測請求指令后,返回該從節(jié)點的遙測數(shù)據(jù)。
測控數(shù)傳一體化應(yīng)答機中CAN總線硬件接口電路設(shè)計與文獻3中的硬件接口電路類似,考慮到衛(wèi)星的工作環(huán)境,采用A、B總線互為冗余備份的方式以提高系統(tǒng)的可靠性,同時將CAN通信控制器SJA1000以軟核方式集成到FPGA中,無需在FPGA與SJA1000之間進行電平轉(zhuǎn)換,在硬件電路上僅保留CAN收發(fā)器PCA82C250[5],極大程度上減小了硬件電路的體積、功耗,進一步提高了系統(tǒng)的可靠性。
CAN總線接口模塊按功能進行模塊化設(shè)計與實現(xiàn),實現(xiàn)框圖如圖3所示。筆者主要完成CAN通信控制器SJA1000底層驅(qū)動模塊的設(shè)計與實現(xiàn),底層驅(qū)動模塊主要進行對SJA1000內(nèi)部寄存器的讀寫操作,SJA1000初始化模塊完成芯片在復(fù)位模式下相應(yīng)寄存器的參數(shù)配置,初始化完成后,電路通過控制模塊切換到中斷處理模塊。若未檢測到中斷,電路工作在查詢發(fā)送狀態(tài),與應(yīng)用層組幀發(fā)送模塊交互獲取報文,通過讀寫模塊將報文寫入SJA1000發(fā)送緩沖器并發(fā)送。若檢測到接收中斷,電路工作在中斷接收狀態(tài),讀寫模塊從SJA1000接收緩沖器中讀取報文,并通過接收處理模塊將數(shù)據(jù)送到應(yīng)用層,由應(yīng)用層的幀解析模塊完成數(shù)據(jù)幀類型的判斷[6]。
3.1初始化處理
CAN總線工作的正常與否與總線狀態(tài)密切相關(guān),初始化模塊是保證CAN總線具有正常工作狀態(tài)的關(guān)鍵,故考慮采用讀取ROM表的方式實現(xiàn)CAN通信控制器SJA1000的參數(shù)配置,以提高芯片參數(shù)配置的可靠性以及后期維護的便利性[7]。根據(jù)需要定義位寬為19 bit,深度可變的ROM表,數(shù)據(jù)格式如表1所示,在復(fù)位模式下進行SJA1000的初始化,需要配置模式寄存器MOD、時鐘分頻寄存器CDR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0、BTR1、輸出控制寄存器OCR以及中斷使能寄存器IER等[8]。
圖3 CAN總線接口模塊實現(xiàn)框圖
表1 ROM表數(shù)據(jù)格式
系統(tǒng)上電后,采用軟件復(fù)位方式產(chǎn)生一個復(fù)位脈沖復(fù)位CAN總線接口??臻e等待SJA1000進入復(fù)位模式,配置CDR使SJA1000工作于PeliCAN模式,同時將接收輸入比較器旁路以減少內(nèi)部傳輸延遲,增加正常通信的總線長度。接收器采用雙驗收濾波器模式,配置ACR、AMR使該從節(jié)點只接收主節(jié)點的數(shù)據(jù)。
采用ISO11898 CAN高速應(yīng)用標準,通過配置BTR0、BTR1將CAN通信波特率設(shè)置為500 Kbps。最后配置OCR使SJA1000工作于正常輸出模式,輸出引腳配置為推挽輸出。進入工作模式后,配置IER開啟所需中斷[9]。
3.2發(fā)送報文處理
采用查詢控制方式實現(xiàn)報文的發(fā)送,主要采用狀態(tài)機完成單幀發(fā)送流程,狀態(tài)轉(zhuǎn)換圖如圖4所示。檢測到應(yīng)用層發(fā)送請求后,周期查詢狀態(tài)寄存器,并判斷發(fā)送緩沖區(qū)是否鎖定、上次發(fā)送是否完成以及是否正在接收報文,當總線處于允許發(fā)送狀態(tài)時,單幀發(fā)送模塊與CAN應(yīng)用層組幀發(fā)送模塊交互獲取長度為11字節(jié)的標準數(shù)據(jù)幀,再與讀寫模塊交互將報文寫入SJA1000的發(fā)送緩沖器,最后置位命令寄存器的發(fā)送請求TR標志位完成報文的發(fā)送[10]。
圖4 發(fā)送模塊狀態(tài)機
3.3接收報文處理
由于星上數(shù)據(jù)量較大,且為了滿足星上數(shù)據(jù)通信實時性的要求,故采用中斷控制方式實現(xiàn)報文的接收,單幀接收過程在一個中斷子程序中完成,同樣采用狀態(tài)機完成單幀接收流程,狀態(tài)轉(zhuǎn)換圖如圖5所示。如果SJA1000已接收一個報文并且該報文已通過驗收濾波器并存放在接收FIFO里,就會產(chǎn)生一個接收中斷,主控制器FPGA檢測到接收中斷后能立即作用將收到的報文發(fā)送到FPGA內(nèi)部的存儲器,然后通過置位命令寄存器的釋放接收緩沖器RRB標志位完成報文的接收。
圖5 接收模塊狀態(tài)機
3.4中斷處理
在本文的CAN總線接口模塊設(shè)計中,中斷處理模塊是底層驅(qū)動模塊的核心,提供發(fā)送、接收標志以及中斷、異常狀態(tài)處理功能。區(qū)別于文獻3中在接收處理之前進行異常狀態(tài)處理,本文將中斷處理以及異常狀態(tài)處理作為一個單獨的模塊,簡化了各個模塊的功能以及復(fù)雜度,使得各模塊功能更加明確。
CAN通信控制器SJA1000進入工作模式后,開啟需要處理的中斷源:總線錯誤中斷BEI、仲裁丟失中斷ALI、數(shù)據(jù)溢出中斷DOI以及接收中斷RI。初始化完成后,中斷處理模塊不斷檢測SJA1000中斷輸出INT管腳電平,檢測到低電平就執(zhí)行中斷處理進程,檢測到高電平就執(zhí)行查詢總線狀態(tài)進程,中斷處理流程如圖6所示。
圖6 中斷處理模塊流程圖
(1)中斷處理:SJA1000允許同時產(chǎn)生多個中斷,因此需要考慮多個中斷同時產(chǎn)生的情況,首先定義中斷寄存器的8個中斷源優(yōu)先級從高位到低位逐漸降低,屏蔽其中4個與異常狀態(tài)相關(guān)的中斷源,按照優(yōu)先級順序依次對BEI、ALI、DOI與RI進行處理,BEI、ALI是PeliCAN模式下新增的中斷源,通過讀取錯誤代碼捕捉寄存器ECC、仲裁丟失寄存器ALC獲取總線錯誤類型和位置信息以及仲裁丟失的位置信息完成對BEI、ALI的處理。DOI的處理需要通過置位命令寄存器的CDO標志位清除數(shù)據(jù)溢出中斷。最后處理RI,產(chǎn)生一個接收標志啟動接收模塊。
(2)異常狀態(tài)處理:需處理的異常狀態(tài)包括總線關(guān)閉狀態(tài)以及總線錯誤計數(shù)器超過錯誤報警限制EWLR后的總線出錯狀態(tài),針對異常狀態(tài)的處理,底層驅(qū)動模塊產(chǎn)生一個錯誤標志送給應(yīng)用層,請求應(yīng)用層復(fù)位整個CAN底層驅(qū)動模塊。
3.5控制模塊
控制模塊通過各個模塊的指示信號實現(xiàn)模塊間的切換,從而避免了各個模塊之間信號復(fù)雜的相互交互。控制模塊實現(xiàn)對其他模塊的控制,僅在其他模塊電路需要工作時,才切換到相應(yīng)的模塊,從而達到降低功耗的目的。
3.6仿真與驗證
采用VHDL語言進行電路設(shè)計,使用ISE軟件進行電路的功能仿真、邏輯綜合、布局布線和物理驗證等設(shè)計。需要對CAN底層驅(qū)動模塊的單幀發(fā)送、單幀接收、中斷處理以及各模塊之間的切換等過程進行仿真測試以及硬件驗證。
硬件測試時將星上用于冗余備份的兩個CAN總線接口電路作為CAN總線網(wǎng)絡(luò)上的兩個節(jié)點,一個作為主節(jié)點,另一個作為從節(jié)點,進行單幀發(fā)送、接收測試。硬件測試平臺如圖7所示。
圖7 硬件測試平臺
圖8 CAN數(shù)據(jù)幀
圖8為指令數(shù)據(jù)經(jīng)過SJA1000成幀處理后在物理線路上傳輸?shù)膶嶋H波形,符合CAN協(xié)議中定義的CAN數(shù)據(jù)幀結(jié)構(gòu)[11],測試結(jié)果表明在該硬件平臺上,CAN總線通信速率可以達到500 Kbps,同時將應(yīng)用層發(fā)送的數(shù)據(jù)幀與自環(huán)測試接收的數(shù)據(jù)幀進行比對,測試該通信速率下CAN總線數(shù)據(jù)傳輸?shù)恼`碼率,圖9為主從節(jié)點雙向收發(fā)測試時通過基于RTL級的在線調(diào)試工具Identify[12]獲取的誤碼率測試結(jié)果,遍歷發(fā)送各指令數(shù)據(jù)、遙測數(shù)據(jù)測試誤碼率,數(shù)據(jù)幀錯誤計數(shù)器始終為0,滿足星上數(shù)據(jù)傳輸?shù)目煽啃砸蟆?/p>
本文按功能進行模塊化設(shè)計,能夠簡化各模塊的功能,相比較之前的CAN總線通信節(jié)點的設(shè)計實現(xiàn),在處理機制上作了改進,優(yōu)化了程序設(shè)計的結(jié)構(gòu),實現(xiàn)的功能更加全面,且在項目要求的CAN通信波特率為500 Kbps時誤碼率較低,滿足星上數(shù)據(jù)傳輸?shù)目煽啃?、實時性要求。將CAN總線應(yīng)用于測控數(shù)傳一體化應(yīng)答機及整星上,可以實現(xiàn)星上數(shù)據(jù)的高速、實時、可靠傳輸以及衛(wèi)星整體結(jié)構(gòu)的優(yōu)化。
圖9誤碼率測試
[1] 李正軍.現(xiàn)場總線及其應(yīng)用技術(shù)[M].機械工業(yè)出版社,2005.
[2] 徐璐,陳金樹.微納衛(wèi)星測控通信統(tǒng)一系統(tǒng)的研究與實現(xiàn)[J].微計算機信息,2007,23(2):96-98.
[3] 張培坤,高偉,宋宗喜,陳楚君.基于FPGA的CAN總線通信節(jié)點設(shè)計[J].儀表技術(shù)與傳感器,2012,(12):68-70.
[4] 于志堅,丁溯泉,羅倫.航天測控與數(shù)傳接收綜合信道構(gòu)想[J].遙測遙控,2002,23(4):8-11.
[5] PCA82C250 CAN controller interface Data sheet.Philips Semiconductor Corporation,1997.
Im p lementation of CAN Bus Interface in FPGA Based on TT&C Platform
WANG Jie1,2,LIZhi-qiang1,2,ZHUWen-ming1,2,TANG Ji-bo1,2
(1.Institute of Communication Engineering,PLA University of Science and Technology,Nanjing 210007,China;2.Satellite Communication and Navigation Collaborative Innovation Center,Nanjing 210007,China)
Integration of TT&C system is a new mode which adopts CCSDS Advanced Orbiting Systems,can effectively improve the utility of satellite payload.Aimed at the application of CAN bus in TT&C transponder,CAN interface circuit is based on core controller FPGA and CAN controller SJA1000.The design and implementation of CAN bus interfacemodule is described by using VHDL,simulation and test results show that CAN communication rate can achieve 500 Kbps,preferablymeet the system requirements.
TT&C;FPGA;CCSDS;CAN bus
TN47
:A
:1673-5692(2015)06-593-05
10.3969/j.issn.1673-5692.2015.06.006
2015-07-30
2015-09-26