1 引 言
20世紀(jì)70年代誕生的1553B總線是一種主從式多冗余度總線對(duì)總線硬件有嚴(yán)格的規(guī)定,可靠性和實(shí)時(shí)性好,傳輸速率達(dá)到1 Mb/s,對(duì)于大多數(shù)的應(yīng)用都能滿足,通過(guò)幾十年的發(fā)展,已經(jīng)成為當(dāng)今軍用電子總線的首選。而由德國(guó)BOSCH公司開(kāi)發(fā)的CAN總線,采用多主方式,最高速率為1 Mb/s,由于其在汽車(chē)電子系統(tǒng)中的卓越表現(xiàn),現(xiàn)在受到了越來(lái)越多的用戶的關(guān)注和認(rèn)可。這兩種總線都是傳輸速率高、可靠性高、實(shí)時(shí)性能好的總線,但是他們都存在一定的不足。1553B總線的任一次數(shù)據(jù)傳輸都是由主節(jié)點(diǎn)發(fā)出命令開(kāi)始,從節(jié)點(diǎn)接到命令后解析并執(zhí)行,同時(shí)把相應(yīng)狀態(tài)反饋給主節(jié)點(diǎn),這使得網(wǎng)絡(luò)上的數(shù)據(jù)傳輸率大大降低,并使主節(jié)點(diǎn)控制器非常繁忙,而且在下端出現(xiàn)異常時(shí),數(shù)據(jù)不能立即上傳,必須等待主節(jié)點(diǎn)的傳輸命令,靈活性較差。而CAN總線為多主競(jìng)發(fā)總線,能較好解決這個(gè)問(wèn)題。但是CAN總線也存在很多不足,例如他無(wú)法和1553B總線一樣給出一個(gè)比較確定的響應(yīng)時(shí)間,而且沒(méi)有雙冗余或多冗余結(jié)構(gòu)設(shè)計(jì),這使得他的可靠性和實(shí)時(shí)性不如1553B,而在軍用電子中,可靠性和實(shí)時(shí)性是最重要的。因此軍用電子系統(tǒng)中,1553B總線得到了廣泛的應(yīng)用,但同時(shí)1553B總線硬件成本非常高,相同條件下是CAN總線的幾百倍,對(duì)于測(cè)試系統(tǒng)來(lái)說(shuō)是很難承受的,所以在現(xiàn)在的測(cè)控系統(tǒng)中對(duì)于控制仍舊采用1553B總線,對(duì)于測(cè)試采用CAN總線,而這兩者之間的信息交互就成了整個(gè)系統(tǒng)的關(guān)鍵,促使了對(duì)1553B和CAN總線轉(zhuǎn)換卡的設(shè)計(jì)與實(shí)現(xiàn)。
2 設(shè)計(jì)思想
1553B總線的幀結(jié)構(gòu)有2種,其實(shí)命令字和狀態(tài)字共用一種幀結(jié)構(gòu)。而這兩種幀僅僅是同步頭不同,如圖1所示。
1553B的幀中,開(kāi)始3位為同步位,數(shù)據(jù)字是上跳沿,而命令字和狀態(tài)字為下降沿,4~19位為數(shù)據(jù)位,數(shù)
據(jù)字中為傳輸?shù)臄?shù)據(jù),而命令字和狀態(tài)字中為命令或狀態(tài)位,最后一位為奇偶校驗(yàn)位。而在CAN總線中,
只有一種幀結(jié)構(gòu),僅僅是是否采用擴(kuò)展幀而已,其幀結(jié)構(gòu)如圖2所示。
其中幀起始由單個(gè)顯位組成,仲裁場(chǎng)由標(biāo)識(shí)符和RTR位組成,一共12位,控制場(chǎng)由2個(gè)保留位和4個(gè)DLC位組成,數(shù)據(jù)場(chǎng)由0到8個(gè)字組成,每個(gè)字8位,CRC場(chǎng)由15位的CRC序列和1位標(biāo)識(shí)位組成,ACK場(chǎng)由1位ACK間隙和一位ACK界定符組成,最后的幀結(jié)束由連續(xù)的7個(gè)隱性位組成。
由此可見(jiàn),1553B和CAN總線不但幀結(jié)構(gòu)不同,命令體系不一樣,而且不同的1553B與CAN總線之間的轉(zhuǎn)換方法也是不一樣的,因此1553B與CAN總線之間的轉(zhuǎn)換不僅僅是幀結(jié)構(gòu)的轉(zhuǎn)換,還涉及到兩個(gè)系統(tǒng)之間命令的解析,所以采用軟件的方式可以更加靈活的實(shí)現(xiàn)這兩種總線的轉(zhuǎn)換。
而要實(shí)現(xiàn)轉(zhuǎn)換就需要在CAN和1553B總線端點(diǎn)之間需要搭建一個(gè)能夠運(yùn)行并合理調(diào)度多個(gè)應(yīng)用程序的平臺(tái)。綜合整個(gè)轉(zhuǎn)換板的考慮,采用帶操作系統(tǒng)的ARM9處理器來(lái)實(shí)現(xiàn)這個(gè)平臺(tái)是比較合適的。cAN總線部分,可以設(shè)計(jì)成一般的主節(jié)點(diǎn),而對(duì)于1553B總線部分,由于1553B有3種不同的端點(diǎn),為了擴(kuò)展轉(zhuǎn)換板的功能,可以把轉(zhuǎn)換板的這個(gè)端點(diǎn)設(shè)計(jì)成為可以通過(guò)不同的配置來(lái)實(shí)現(xiàn)不同功能,因此這需要1553B端點(diǎn)的協(xié)議和上層應(yīng)用程序可配置,為此可以采用FPGA和ARM共同工作的方式來(lái)實(shí)現(xiàn)這個(gè)端點(diǎn)。而為了實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,可以通過(guò)從ARM9上擴(kuò)展串口和LCD接口來(lái)實(shí)現(xiàn)。
3 轉(zhuǎn)換卡的設(shè)計(jì)實(shí)現(xiàn)
3.1 轉(zhuǎn)化卡硬件的選擇
轉(zhuǎn)換卡的硬件是整個(gè)轉(zhuǎn)換卡功能的基礎(chǔ),其實(shí)現(xiàn)框圖如圖3所示。而在轉(zhuǎn)換卡的硬件設(shè)計(jì)中,器件的選擇決定了設(shè)計(jì)的實(shí)際方案和電路。對(duì)于CAN節(jié)點(diǎn),采用了PHILIPS公司的SJA1000T CAN總線控制器和TJA1050CAN總線收發(fā)器來(lái)共同實(shí)現(xiàn)。對(duì)于1553B節(jié)點(diǎn),實(shí)現(xiàn)協(xié)議部分功能的FPGA采用ALTERA的EP1C3T144,收發(fā)器和變壓器采用了HOLT公司的HI-1567和PD2725,他們與ARM9共同完成了1553B端點(diǎn)協(xié)議。最后的核心處理器ARM9則采用ATMEL的AT91RM9200T,他擁有180 MHz的頻率,4個(gè)PIO接口,不但能夠與FPGA共同完成1553B端點(diǎn)功能,滿足1553B對(duì)實(shí)時(shí)性的要求,而且還能運(yùn)行需要的操作系統(tǒng)和應(yīng)用程序,完成整個(gè)轉(zhuǎn)化工作。而對(duì)于用于實(shí)時(shí)監(jiān)控,LCD芯片采用了EPSON的S1D13506擴(kuò)展芯片,而串口則采用了傳統(tǒng)的MAX3232。以上的這些芯片構(gòu)成了整個(gè)轉(zhuǎn)換卡的框架,通過(guò)他們就構(gòu)成了轉(zhuǎn)換卡的硬件。
在這種方案中,RAM采用了雙口RAM,1553B和ARM9共用一個(gè)口,這樣CAN總線出來(lái)的數(shù)據(jù)和1553B總線過(guò)來(lái)的數(shù)據(jù)不用轉(zhuǎn)存就可以直接通過(guò)另外一段輸出或者緩沖等待發(fā)送。S1D13506芯片是一個(gè)多功能擴(kuò)展芯片,他還有多種功能擴(kuò)展,可以擴(kuò)展出音頻和視頻接口。
3.2 轉(zhuǎn)換卡軟件實(shí)現(xiàn)方式
在整個(gè)的轉(zhuǎn)換卡實(shí)現(xiàn)中面臨的最大問(wèn)題就是轉(zhuǎn)換的實(shí)時(shí)性和緩沖數(shù)據(jù)管理,為此轉(zhuǎn)換卡通過(guò)使用實(shí)時(shí)性非常好的搶占式多任務(wù)操作系統(tǒng)RTLinux來(lái)解決。他不但能滿足系統(tǒng)對(duì)實(shí)時(shí)性的要求,完成總線兩邊緩沖數(shù)據(jù)管理,還能為應(yīng)用程序和轉(zhuǎn)換程序提供一個(gè)良好的運(yùn)行環(huán)境。轉(zhuǎn)換程序主要完成兩個(gè)功能:把1553B總線來(lái)的數(shù)據(jù)轉(zhuǎn)換成CAN總線的幀結(jié)構(gòu),或者相反;把1553B總線來(lái)的命令解析,轉(zhuǎn)換成CAN總線系統(tǒng)的命令并組成CAN的幀結(jié)構(gòu)發(fā)送。轉(zhuǎn)換卡采用MiniGUI來(lái)為用戶提供實(shí)現(xiàn)實(shí)時(shí)監(jiān)控的圖形界面,這個(gè)圖形界面可以通過(guò)轉(zhuǎn)換卡擴(kuò)展的LCD很好地完成信息交換過(guò)程實(shí)時(shí)監(jiān)視的任務(wù)。最后通過(guò)ARM9的JTAG口可以對(duì)ARM9中運(yùn)行的應(yīng)用程序和轉(zhuǎn)換程序進(jìn)行修改與調(diào)試。
3.3 轉(zhuǎn)換卡轉(zhuǎn)換機(jī)制
設(shè)計(jì)中采用中斷源優(yōu)先級(jí)控制機(jī)制,不同的中斷源設(shè)置不同的中斷等級(jí),以滿足系統(tǒng)對(duì)實(shí)時(shí)性的要求。這種機(jī)制主要是基于下列考慮:
(1)來(lái)自1553B,CAN以及串口的硬中斷請(qǐng)求信號(hào)及來(lái)自應(yīng)用程序的軟中斷信號(hào)都是隨機(jī)的。中斷機(jī)制可以使ARM9能夠?qū)崟r(shí)地響應(yīng)各個(gè)中斷,并做出相應(yīng)的動(dòng)作。實(shí)時(shí)性要求相對(duì)比較高的1553B端點(diǎn)中斷被賦予高優(yōu)先級(jí),可以剝奪CAN,串口等相對(duì)低優(yōu)先級(jí)的中斷的服務(wù)。而CAN被賦予次高優(yōu)先級(jí),應(yīng)用程序以及串口被賦予最低優(yōu)先級(jí)。
(2)1553B和CAN的數(shù)據(jù)傳輸速率是不同的。CAN總線的不同配置,1553B總線控制器的不同調(diào)度都會(huì)引起1553B和CAN總線的數(shù)據(jù)傳輸速率的變化,可能1553B比CAN快,也可能CAN比1553B快。采用中斷方式可以大大降低慢速對(duì)較高速設(shè)備的處理延時(shí)。
同時(shí)在硬件的設(shè)計(jì)中考慮到軟件編程的靈活性,因此所有的中斷信號(hào)都設(shè)計(jì)成可以通過(guò)查詢得到。
3.4 硬件測(cè)試
在硬件完成后,對(duì)整個(gè)硬件進(jìn)行了測(cè)試。首先把1553B端點(diǎn)聯(lián)入1553B總線系統(tǒng)中,他能正確地響應(yīng)總線,通過(guò)示波器觀測(cè)由變壓器和收發(fā)器變換后的信號(hào)和序列,得到的信號(hào)電平和序列都符合既定的要求。然后把1553B端點(diǎn)協(xié)議寫(xiě)入FPGA和ARM,測(cè)試端點(diǎn)的反應(yīng)時(shí)間,即接收命令字到發(fā)出狀態(tài)字之間的間隔,這個(gè)時(shí)間為1.5~2.5μs之間,完全滿足1553B總線的協(xié)議要求。最后把CAN總線、串口、LCD接口都連接上,整個(gè)硬件工作良好。
4 轉(zhuǎn)換卡功能及特點(diǎn)
4.1 轉(zhuǎn)換卡的主要功能
(1)轉(zhuǎn)換卡在一個(gè)既定的協(xié)議下能夠?qū)崿F(xiàn)CAN總線系統(tǒng)與1553B總線系統(tǒng)的信息交互,同時(shí)滿足兩總線系統(tǒng)對(duì)實(shí)時(shí)性的要求。
(2)轉(zhuǎn)換卡可以單獨(dú)作為一個(gè)CAN總線的節(jié)點(diǎn)或者1553B總線端點(diǎn)連入總線系統(tǒng),完成相應(yīng)的節(jié)點(diǎn)功能。
(3)實(shí)現(xiàn)現(xiàn)場(chǎng)調(diào)試和監(jiān)控。應(yīng)用轉(zhuǎn)換卡的LCD擴(kuò)展口和串口,用戶可以通過(guò)LCD顯示屏或者外部計(jì)算機(jī)實(shí)時(shí)監(jiān)視和控制兩總線之間的信息轉(zhuǎn)換。
4.2 硬件主要特點(diǎn)
(1)1553B端點(diǎn)協(xié)議采用FPGA與ARM芯片共同實(shí)現(xiàn),這種設(shè)計(jì)不但可以通過(guò)更改協(xié)議實(shí)現(xiàn)程序把端點(diǎn)配置成遠(yuǎn)程端點(diǎn)、控制器、監(jiān)視器等3種不同功能的端點(diǎn),而且因?yàn)槭峭ㄟ^(guò)ARM9與FPGA共同實(shí)現(xiàn)的總線協(xié)議,所以當(dāng)接收完1553B總線數(shù)據(jù)后可以直接觸發(fā)總線轉(zhuǎn)換程序,從而減少單獨(dú)采用1553B協(xié)議芯片時(shí)對(duì)ARM9的數(shù)據(jù)中斷請(qǐng)求時(shí)間,更好地滿足了控制系統(tǒng)的實(shí)時(shí)性要求。最后這種設(shè)計(jì)與直接購(gòu)買(mǎi)1553B端點(diǎn)協(xié)議芯片相比明顯地減少了硬件成本,有利于1553B總線的推廣和應(yīng)用。
(2)可以兼容不同速率的CAN總線,通過(guò)改變初始化配置,可以實(shí)現(xiàn)不同速率的CAN總線與1553B總線系統(tǒng)通信。轉(zhuǎn)換卡對(duì)ARM9實(shí)現(xiàn)了存儲(chǔ)擴(kuò)展,外擴(kuò)了16 MB FLASH和32 MB RAM,因此當(dāng)總線兩邊數(shù)據(jù)傳輸速率不匹配時(shí),就可以把等待發(fā)送的數(shù)據(jù)放到專門(mén)開(kāi)辟的緩沖區(qū)中存放,等待總線空閑時(shí)再發(fā)送,雖然CAN總線的最快傳輸速率與1553B相同,但是由于1553B是主從式總線,每個(gè)節(jié)點(diǎn)在一個(gè)周期內(nèi)只能傳輸一定的數(shù)據(jù)量,所以他的數(shù)據(jù)傳輸速率有可能還比CAN總線慢,因此數(shù)據(jù)的緩沖是兩方面的。
(3)擴(kuò)展了LCD接口和串口。在現(xiàn)場(chǎng)可以通過(guò)40針接口的LCD或者上層的計(jì)算機(jī)監(jiān)控兩總線之間的信息交互,還可以通過(guò)串口和ARM9的JTAG口實(shí)時(shí)地調(diào)試ARM9中的程序。
(4)良好的實(shí)時(shí)性。在接口中,通過(guò)對(duì)CAN和1553B總線中斷應(yīng)答優(yōu)先級(jí)的設(shè)置,可以非常好地滿足整個(gè)系統(tǒng)對(duì)實(shí)時(shí)性的要求。
5 結(jié) 語(yǔ)
通過(guò)實(shí)際應(yīng)用證明,基于ARM9的1553B和CAN總線轉(zhuǎn)換卡無(wú)論硬件還是軟件都能夠很好地滿足1553B和CAN總線對(duì)實(shí)時(shí)性、可靠性以及速率的要求,在一定的命令體系中能夠很好地完成CAN與1553B總線之間的信息轉(zhuǎn)換。