基于FPGA和MCU的CAN-VME總線轉(zhuǎn)換設(shè)計(jì)
摘要:為了擴(kuò)展VME總線和CAN總線的應(yīng)用范圍,充分利用兩種總線的不同傳輸特點(diǎn),采用了模塊設(shè)計(jì)方法,提出一種基于FPGA和MCU的總線轉(zhuǎn)換方案。該方案給出了FPGA與上位VME總線部分的VME總線接口設(shè)計(jì),利用MCU控制CPLD擴(kuò)展的多通道CAN節(jié)點(diǎn)完成CAN總線部分的設(shè)計(jì),還給出軟件實(shí)現(xiàn)上的重點(diǎn)、難點(diǎn)和流程。實(shí)現(xiàn)了兩種不同總線的轉(zhuǎn)換,滿足了工業(yè)環(huán)境對兩種總線混合使用的要求。
關(guān)鍵詞:FPGA;MCU;VME總線;CAN總線;工業(yè)環(huán)境
CAN(Controller Area Network控制器局域網(wǎng))以其高性能、高可靠性以及獨(dú)特的設(shè)計(jì)等優(yōu)點(diǎn),為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的支持。CAN總線突出的可靠性、實(shí)時(shí)性和靈活性顯示了它突出的優(yōu)勢,成為公認(rèn)的最有前途的總線標(biāo)準(zhǔn),廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面。VME(Versa Module Eurocard)是一種通用的計(jì)算機(jī)總線,結(jié)合了Motorola公司Versa總線的電氣標(biāo)準(zhǔn)和在歐洲建立的Eurocard標(biāo)準(zhǔn)的機(jī)械形狀因子,是一種開放式架構(gòu)。其獨(dú)特的緊密耦合(Closely coupled)硬件構(gòu)架,為其外圍系統(tǒng)模塊的設(shè)計(jì)提供了良好的基礎(chǔ),使VME總線廣泛地應(yīng)用于工業(yè)控制、軍用系統(tǒng)、航空航天、交通運(yùn)輸和醫(yī)療領(lǐng)域。
本文提出了基于FPGA的VME總線和CAN總線之間的傳輸轉(zhuǎn)換方案,滿足一些特殊工業(yè)環(huán)境的需要,具有一定的研究意義和實(shí)用價(jià)值。
1 轉(zhuǎn)換系統(tǒng)的硬件設(shè)計(jì)
該系統(tǒng)由VME總線接口模塊、CAN總線節(jié)點(diǎn)(8路CAN節(jié)點(diǎn))模塊、復(fù)雜可編程邏輯器模塊、MCU模塊4部分核心模塊構(gòu)成。整個(gè)系統(tǒng)在一個(gè)3U標(biāo)準(zhǔn)的VME板卡上實(shí)現(xiàn),機(jī)構(gòu)緊湊,布局合理。系統(tǒng)的原理框圖如圖1所示。
1.1 VME總線接口模塊
整個(gè)系統(tǒng)實(shí)現(xiàn)是兩種通信之間的轉(zhuǎn)換,所以數(shù)據(jù)的發(fā)送都是由上位主機(jī)發(fā)送的。由于FPGA控制靈活,所以很方便實(shí)現(xiàn)與VME總線的連接。文中FPGA器件選用XILINX公司的XC2S200系列的5PQ208,56 Kb專用存儲(chǔ)器,最高運(yùn)行速度200 MHz,I/O電壓在3.3~5.5 V,地址總線、數(shù)據(jù)總線,/AS,/IACKIN,/IACKOUT,SYS CLK等可以直接與5PQ208連接。
1.2 CAN總線節(jié)點(diǎn)模塊
CAN總線節(jié)點(diǎn)模塊是該系統(tǒng)中的主要模塊,選用Philips公司生產(chǎn)的SJA1000,它負(fù)責(zé)連接總線與8路CAN選通主控制器CPLD之間的數(shù)據(jù)通信,其整個(gè)系統(tǒng)功能如圖2所示。收發(fā)器選用P82C251T。CAN接口原理如圖3所示。
1.3 復(fù)雜可編程邏輯器件(CPLD)模塊
在系統(tǒng)中,由于FPGA的地址總線和數(shù)據(jù)總線是分開的,而SJA1000的地址和數(shù)據(jù)線是分時(shí)復(fù)用的,所以在總線接口上有一定差異,因此選用MAX3000系列可編程邏輯器件EPM3128來進(jìn)行邏輯變換。該CPLD芯片有豐富的宏單元,80個(gè)用戶I/O管腳,管腳間延遲時(shí)間是10 ns,最高速度可達(dá)100 MHz,能夠滿足系統(tǒng)設(shè)計(jì)的需要。可編程邏輯器件在系統(tǒng)中的功能為:轉(zhuǎn)換FPGA與CAN控制器SJA1000之間的地址總線和數(shù)據(jù)總線;通過對FPGA的地址線譯碼,擴(kuò)展CAN控制節(jié)點(diǎn)的通道。
1.4 MCU處理器
由于CAN總線的最高傳輸速度是1 Mb/s,所以該部分選取宏晶STC12C5A60S2,F(xiàn)LASH程序存儲(chǔ)器為56 KB。SRAM為1 280 B,2個(gè)專用的UATR,豐富的CPU資源滿足作為下位機(jī)的CPU控制單元,主要完成兩種總線協(xié)議的轉(zhuǎn)換,負(fù)責(zé)將從FPGA過來的VME總線轉(zhuǎn)換成CAN總線格式,并傳輸?shù)街付–AN節(jié)點(diǎn);同時(shí)也將CPLD選通的CAN通道數(shù)據(jù),轉(zhuǎn)換為FPGA能識別的VME總線格式,并在MCU中斷主機(jī)時(shí),將數(shù)據(jù)反饋給VME主機(jī)。
[!--empirenews.page--]
2 轉(zhuǎn)換系統(tǒng)的軟件設(shè)計(jì)
2.1 軟件設(shè)計(jì)思路
由FPGA構(gòu)建8個(gè)雙口RAM,8路CAN控制器通過這8個(gè)雙口RAM與上位VME總線主機(jī)進(jìn)行數(shù)據(jù)通信,RAM口分別映射到VME總線主機(jī)內(nèi)存地址和
MCU存儲(chǔ)器空間中。系統(tǒng)數(shù)據(jù)傳輸采用MCU中斷主機(jī)(VME主機(jī))和主機(jī)中斷MCU兩種方式,前者通過觸發(fā)主機(jī)外部中斷實(shí)現(xiàn),由雙口RAM里面的中斷控制來決定的,在觸發(fā)中斷后,提示主機(jī)讀取CAN控制器接收到的數(shù)據(jù)以及CAN控制器的工作狀態(tài)。主機(jī)中斷MCU方式是通過MCU的外部中斷管腳實(shí)現(xiàn)的,是由主機(jī)寫入雙口RAM的控制字實(shí)現(xiàn)的。觸發(fā)該中斷后,MCU就從主機(jī)接收要發(fā)送的報(bào)文,并發(fā)送到相應(yīng)的CAN節(jié)點(diǎn)上,并配合主機(jī)配置CAN控制器的控制模式。中斷流程如圖4,圖5所示。
2.2 FPGA的軟件設(shè)計(jì)
在該系統(tǒng)中,數(shù)據(jù)都由VME主機(jī)控制,所以FPGA構(gòu)造雙口RAM(或者8個(gè)區(qū)域即可),使VME主機(jī)和MCU在RAM中完成數(shù)據(jù)傳輸。即主機(jī)要發(fā)送
的數(shù)據(jù)放入RAM中等待MCU提取,同時(shí)MCU發(fā)送的數(shù)據(jù)放入RAM中等待VME主機(jī)提取。
2.3 CAN節(jié)點(diǎn)軟件設(shè)計(jì)
CAN節(jié)點(diǎn)軟件是本系統(tǒng)的重點(diǎn),它包括CAN控制器初始化、報(bào)文發(fā)送和報(bào)文接收3個(gè)部分。
初始化主要完成設(shè)置工作方式、接收方式、屏蔽寄存器、驗(yàn)收代碼寄存器、波特率和中斷寄存器,并且要在復(fù)位模式下進(jìn)行初始化。初始化流程如圖6所示。
報(bào)文發(fā)送就是將代發(fā)的數(shù)據(jù)按照CAN總線協(xié)議的數(shù)據(jù)格式,組成一幀一幀的報(bào)文,送入SJA1000的發(fā)送緩沖區(qū),觸發(fā)SJA1000發(fā)送即可;報(bào)文接收同理。
2.4 MCU轉(zhuǎn)換程序設(shè)計(jì)
微控制器程序設(shè)計(jì)的主要目的是以最快的速度響應(yīng)中斷請求,完成兩種總線數(shù)據(jù)的轉(zhuǎn)換和傳輸。編程時(shí)采用模塊化思想,每個(gè)模塊完成一定的功能。編程采用Keil公司的Keil μVision3編程工具,設(shè)計(jì)分為:初始化系統(tǒng)、使能中斷、查詢總線,隨時(shí)準(zhǔn)備響應(yīng)MCU中斷主機(jī)(VME主機(jī))和主機(jī)中斷MCU兩種中斷觸發(fā),并且完成VME總線和CAN總線之間的重組和交換,及時(shí)將轉(zhuǎn)換后的信息相應(yīng)地傳送給VME主機(jī)或者發(fā)送到CAN節(jié)點(diǎn)上。流程如圖7所示。
3 測試分析
測試過程由VME總線端和CAN總線端互相發(fā)送數(shù)據(jù)包。其中,測試了5組由VME總線發(fā)送到CAN總線的數(shù)據(jù)包;5組由CAN總線發(fā)送到VME總線的數(shù)據(jù)包,記錄如表1所示。由表1測試結(jié)果所示,該系統(tǒng)中CAN總線節(jié)點(diǎn)都設(shè)置在1 Mb/s的速率下,系統(tǒng)可以準(zhǔn)確地接受和發(fā)送數(shù)據(jù)包。系統(tǒng)正確率之所以會(huì)隨通信速度的提高而提高,主要原因在于系統(tǒng)在不同的通信速度時(shí),數(shù)據(jù)包發(fā)送頻率、發(fā)送的最小延時(shí)間隔都不相同。如果需要進(jìn)一步的提升數(shù)據(jù)發(fā)送的正確率,需要系統(tǒng)在硬件設(shè)計(jì)和PCB板制作上分別努力,才能保證盡可能小的干擾,盡可能大的提高系統(tǒng)的穩(wěn)定性和抗干擾性。
4 結(jié)語
該系統(tǒng)充分利用了VME總線和CAN總線的優(yōu)點(diǎn),在FPGA和MCU的基礎(chǔ)上實(shí)現(xiàn)相應(yīng)的電路的連接和軟件的設(shè)計(jì),成功地完成兩種不同總線之間的轉(zhuǎn)換,擴(kuò)展了兩種總線的應(yīng)用范圍。