摘?要:以Xilinx公司的ISE為開(kāi)發(fā)平臺(tái),采用Xilinx Spartan2e XC2S200-5PQ2081芯片,實(shí)現(xiàn)了MVB1類(lèi)設(shè)備控制器" title="設(shè)備控制器">設(shè)備控制器的功能,并搭建了測(cè)試模型,在Modelsim中仿真了其收/發(fā)幀及報(bào)文分析等功能,得到了符合IEC61375協(xié)議的幀波形。
關(guān)鍵詞:MVB控制器專(zhuān)用芯片? FPGA? MVB1類(lèi)設(shè)備控制器
?
??? MVB(多功能車(chē)輛總線)控制器是MVB上的核心處理器,它獨(dú)立于物理層和功能設(shè)備,為在總線上的各個(gè)設(shè)備提供通訊接口和通訊服務(wù)。在MVB協(xié)議結(jié)構(gòu)層次中,MVB控制器完成鏈路層的功能,依靠物理層發(fā)送和接收具有電氣特征的電信號(hào),同時(shí)為網(wǎng)絡(luò)層提供過(guò)程數(shù)據(jù)(包括監(jiān)視數(shù)據(jù))、消息數(shù)據(jù)的變量接口。該接口采用TM(共享通訊存儲(chǔ)器)實(shí)現(xiàn),即應(yīng)用層的CPU和鏈路層的MVB控制器一致地訪問(wèn)TM,即對(duì)端口中所有數(shù)據(jù)的讀和寫(xiě)在一次不可分割的操作中完成[1-2]。
目前國(guó)外廠商壟斷著對(duì)MVB控制器芯片的制造,致使在國(guó)內(nèi)購(gòu)買(mǎi)MVB控制器芯片價(jià)格昂貴。用FPGA替代MVB控制器專(zhuān)用芯片,是一個(gè)很好的解決方案。FPGA作為一種可編程邏輯器件,可以完成數(shù)字集成電路的大多數(shù)功能,由于其內(nèi)部有豐富的可編程資源,使模塊的修改、驗(yàn)證、功能擴(kuò)展都十分方便。應(yīng)用FPGA還可以在內(nèi)部實(shí)現(xiàn)與應(yīng)用處理器的接口轉(zhuǎn)換,簡(jiǎn)化外圍電路[3]。另外,F(xiàn)PGA低廉的價(jià)格也是其替代專(zhuān)用集成電路的一大優(yōu)勢(shì)。
在MVB中大量應(yīng)用具有過(guò)程數(shù)據(jù)傳輸和設(shè)備狀態(tài)數(shù)據(jù)傳輸能力的1類(lèi)設(shè)備。1類(lèi)設(shè)備邏輯不支持CPU或微處理器的操作。它主要作為傳感器執(zhí)行單元,只進(jìn)行數(shù)據(jù)的采集和傳輸,不進(jìn)行處理,因此可以單獨(dú)用FPGA和簡(jiǎn)單外圍電子電路實(shí)現(xiàn)網(wǎng)絡(luò)傳輸和控制功能,不需要CPU[4~5]。在設(shè)計(jì)好MVB1類(lèi)設(shè)備控制器的基礎(chǔ)上,可根據(jù)需要采用模塊復(fù)用技術(shù)把MVB1類(lèi)設(shè)備控制器擴(kuò)展為MVB2、3、4或5類(lèi)設(shè)備控制器[6]。
1 總體結(jié)構(gòu)
設(shè)計(jì)中采用自頂向下的方法。自頂向下的設(shè)計(jì)是從系統(tǒng)級(jí)開(kāi)始,把系統(tǒng)劃分為若干個(gè)基本單元,然后再把每個(gè)單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?,直到可以直接用EDA元件庫(kù)中的基本元件實(shí)現(xiàn)為止。MVB1類(lèi)設(shè)備控制器的頂層結(jié)構(gòu)主要包括發(fā)送模塊" title="發(fā)送模塊">發(fā)送模塊、接收模塊" title="接收模塊">接收模塊和MVB1類(lèi)模式控制模塊" title="控制模塊">控制模塊[7-8],如圖1所示。當(dāng)MVB1類(lèi)設(shè)備被16位主幀輪詢時(shí),1類(lèi)設(shè)備控制器先判斷該主幀的第11至4位是否與設(shè)備所配置的設(shè)備地址相同,如果相同則表明該設(shè)備被尋址,需響應(yīng)從幀或接收其他從設(shè)備響應(yīng)的從幀。
?
?
1.1 發(fā)送模塊
??? 發(fā)送模塊實(shí)現(xiàn)的功能是把MVB1類(lèi)設(shè)備控制器從TM中提取的數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換,加上幀頭、起始位和CRC校驗(yàn)后再經(jīng)過(guò)曼徹斯特編碼發(fā)送到MVB上。
1.2 接收模塊
接收模塊的功能主要有兩部分:譯碼,即對(duì)MVB1類(lèi)設(shè)備控制器從MVB上檢測(cè)到的曼徹斯特碼進(jìn)行解碼,串并轉(zhuǎn)換后存儲(chǔ)在緩沖區(qū)中;線路檢測(cè),主要檢測(cè)線路上的各種錯(cuò)誤(包括CRC校驗(yàn)、幀長(zhǎng)檢測(cè)、曼徹斯特碼違規(guī)等),并向MVB1類(lèi)模式控制模塊提交錯(cuò)誤報(bào)告。
1.3 MVB1類(lèi)設(shè)備控制模塊
MVB1類(lèi)設(shè)備控制模塊包括報(bào)文超時(shí)單元、報(bào)文錯(cuò)誤處理單元、主幀寄存器單元、TM控制單元" title="控制單元">控制單元和主控單元,如圖2所示。
?
1.3.1 報(bào)文超時(shí)單元
在主幀結(jié)束后的一定時(shí)間,接收模塊沒(méi)有報(bào)告收到正確的從幀,本單元產(chǎn)生應(yīng)答超時(shí)信號(hào);接收模塊沒(méi)有報(bào)告接收到正確的主幀,本單元產(chǎn)生線路超時(shí)信號(hào)。
1.3.2 報(bào)文錯(cuò)誤控制單元
接收模塊報(bào)告收到正確主幀時(shí),請(qǐng)求主幀寄存器單元向接收模塊發(fā)讀主幀命令,對(duì)錯(cuò)誤主幀不處理。收到正確的從幀時(shí),請(qǐng)求主控單元發(fā)存儲(chǔ)從幀命令,對(duì)錯(cuò)誤從幀不處理。無(wú)應(yīng)答超時(shí)下收到多個(gè)主幀,只應(yīng)用最后一個(gè)。兩個(gè)主幀間有多個(gè)從幀,只對(duì)第一個(gè)從幀處理。
1.3.3 主幀寄存器單元
當(dāng)報(bào)文分析單元收到正確的主幀后產(chǎn)生讀取主幀rd_mf信號(hào),通知接收模塊把緩沖區(qū)的主幀數(shù)據(jù)送入數(shù)據(jù)總線供本單元讀入到MFR(主幀寄存器)中;比較MFR與設(shè)備地址,如果相同則產(chǎn)生設(shè)備尋址信號(hào)device_sele送往主控單元,表示選中該設(shè)備以期進(jìn)行下一步操作。
1.3.4 TM訪問(wèn)控制單元
TM訪問(wèn)控制單元的功能包括:產(chǎn)生對(duì)TM的讀寫(xiě)控制和片選信號(hào);判斷f_code(主幀高四位),如果在0~4之間,表明該主幀是過(guò)程數(shù)據(jù)請(qǐng)求,如果為15,表明該主幀是設(shè)備狀態(tài)請(qǐng)求。當(dāng)主幀是過(guò)程數(shù)據(jù)請(qǐng)求時(shí),如果主幀的低四位在0~7之間,表明主幀訪問(wèn)的是源端口(產(chǎn)生source信號(hào)),控制器從TM中提取從幀經(jīng)發(fā)送模塊發(fā)送出去;如果是在8~15之間,表明主幀訪問(wèn)的是宿端口(產(chǎn)生sink信號(hào)),控制器等待接收其他從設(shè)備發(fā)送的從幀數(shù)據(jù)。對(duì)端口15的寫(xiě)操作將觸發(fā)同步信號(hào)strobe_n有效。當(dāng)主幀是設(shè)備狀態(tài)請(qǐng)求時(shí),由本單元內(nèi)部產(chǎn)生設(shè)備狀態(tài)報(bào)文響應(yīng)從幀數(shù)據(jù),經(jīng)發(fā)送模塊發(fā)送。狀態(tài)機(jī)如圖3所示。
?
?
狀態(tài)機(jī)在IDLE狀態(tài)且read_mf信號(hào)有效時(shí),跳轉(zhuǎn)到RECEIVE_MF狀態(tài)。此時(shí)若收到source信號(hào),則跳轉(zhuǎn)到SEND_SF_READY狀態(tài),準(zhǔn)備發(fā)送從幀;如果收到sink信號(hào),則跳轉(zhuǎn)到RECEIVE_SF_READY狀態(tài),準(zhǔn)備接收從幀。狀態(tài)機(jī)在SEND_SF_READY狀態(tài),收到send_slave_frame信號(hào),跳轉(zhuǎn)到SEND_SF,發(fā)送從幀。此時(shí)TM訪問(wèn)控制單元實(shí)現(xiàn)兩種功能:f_code為0~4時(shí)對(duì)外部TM發(fā)出讀請(qǐng)求;f_code為15時(shí),產(chǎn)生DSR_RD響應(yīng)設(shè)備狀態(tài)請(qǐng)求。對(duì)TM的讀請(qǐng)求包括TMCS_N與TMRD_N,如圖4所示,當(dāng)f_code為0~4之間時(shí),TMCS有效,表示對(duì)外部TM中進(jìn)行讀/寫(xiě)操作。本單元定義了計(jì)數(shù)器counter用來(lái)產(chǎn)生讀請(qǐng)求TMRD_N,如圖4中當(dāng)f_code為0010時(shí),要從TM讀取4個(gè)word的從幀,計(jì)數(shù)器從此狀態(tài)初計(jì)數(shù),計(jì)到1、3、5、7時(shí)TMRD_N為低電平。外部TM每接到一個(gè)TMRD_N信號(hào),提取一個(gè)字的數(shù)據(jù)到數(shù)據(jù)總線。當(dāng)計(jì)數(shù)器計(jì)到7時(shí),已經(jīng)從TM中提取了正確長(zhǎng)度的從幀,狀態(tài)機(jī)跳轉(zhuǎn)到SEND_SF_OVER狀態(tài),表示讀從幀結(jié)束。f_code為15時(shí),counter計(jì)數(shù)到1產(chǎn)生低脈沖信號(hào)DSR_RD,同時(shí)產(chǎn)生設(shè)備狀態(tài)響應(yīng)。TMRD_N有效時(shí),本單元將向發(fā)送模塊發(fā)送receive_data信號(hào),通知它準(zhǔn)備接收數(shù)據(jù)總線上的數(shù)據(jù)。狀態(tài)機(jī)在RECEIVE_SF_READY狀態(tài)時(shí),如果收到應(yīng)答超時(shí)或者從幀錯(cuò)誤信號(hào),則跳回到IDLE狀態(tài),準(zhǔn)備重新接收下一主幀請(qǐng)求;如果收到save_slave_frame信號(hào),則跳轉(zhuǎn)到RECEIVE_SF狀態(tài)準(zhǔn)備接收從幀。狀態(tài)機(jī)在RECEIVE_SF時(shí),TM訪問(wèn)控制單元向外部TM發(fā)出寫(xiě)請(qǐng)求。寫(xiě)請(qǐng)求信號(hào)包括TMCS_N和TMWR_N信號(hào),其時(shí)序圖如圖4所示。同樣,寫(xiě)請(qǐng)求TMWR_N的產(chǎn)生與讀請(qǐng)求類(lèi)似。當(dāng)向TM中寫(xiě)入正確長(zhǎng)度的從幀數(shù)據(jù)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到RECEIVE_SF_OVER狀態(tài),表示寫(xiě)從幀操作結(jié)束。當(dāng)TMWR_N信號(hào)有效時(shí),本單元向解碼模塊發(fā)送rd_sf信號(hào),表示要從該模塊提取從幀到數(shù)據(jù)總線上。在SEND_SF_OVER或RECEIVE_SF_OVER狀態(tài)將直接跳回IDLE。
?
1.3.5 主控單元
產(chǎn)生read_mf信號(hào),作為T(mén)M訪問(wèn)控制單元讀取主幀寄存器的使能信號(hào)。
??? 如果收到TM控制單元送來(lái)的source信號(hào),則在本單元內(nèi)產(chǎn)生send_slave_frame信號(hào)送往TM控制單元和發(fā)送模塊,通知TM控制單元從TM中提取數(shù)據(jù)到數(shù)據(jù)總線上,再由發(fā)送模塊提取數(shù)據(jù)到發(fā)送FIFO中以發(fā)送;如果收到TM控制單元送來(lái)的sink信號(hào),并且報(bào)文錯(cuò)誤,處理單元報(bào)告收到正確的從幀,在本單元內(nèi)部將產(chǎn)生save_slave_frame信號(hào)送往TM控制單元,通知TM控制單元準(zhǔn)備接收從幀并存儲(chǔ)到TM中。主控單元各個(gè)信號(hào)的產(chǎn)生時(shí)序圖如圖5所示。
?
1.4 總線復(fù)用器
為了節(jié)省資源,在MVB1類(lèi)設(shè)備控制器頂層模塊定義了總線復(fù)用器,用來(lái)實(shí)現(xiàn)各個(gè)模塊的總線共享。為了避免總線沖突,同一時(shí)刻只能有一個(gè)模塊向總線發(fā)送數(shù)據(jù)以供其他模塊接收,總線在空閑時(shí)呈高阻態(tài)。各個(gè)模塊訪問(wèn)總線機(jī)制采用多路選擇器的方式,如圖6所示。
?
當(dāng)TMRD_N有效時(shí),控制器從TM中提取的數(shù)據(jù)經(jīng)存儲(chǔ)器輸出數(shù)據(jù)總線data_out_buffer_mem被輸入到控制器內(nèi)部公共數(shù)據(jù)總線上,以供發(fā)送模塊接收。當(dāng)DSR_RD信號(hào)有效時(shí),由TM控制模塊產(chǎn)生16位從幀數(shù)據(jù),經(jīng)數(shù)據(jù)總線data_out_buffer_tmc發(fā)送到公共數(shù)據(jù)總線上供發(fā)送模塊接收。當(dāng)rd_sf或rd_mf信號(hào)有效時(shí),接收模塊FIFO中的數(shù)據(jù)經(jīng)數(shù)據(jù)總線data_out_buffer_decoder被送至公共數(shù)據(jù)總線上以供TM或TM控制模塊接收。
2 測(cè)試
MVB1類(lèi)設(shè)備控制器的測(cè)試模型如圖7所示。測(cè)試MVB1類(lèi)設(shè)備控制器的功能包括:測(cè)試是否能收到正確的主幀;收到正確主幀后,如果主幀是過(guò)程數(shù)據(jù)請(qǐng)求,并且訪問(wèn)的是源端口,能否從TM提取數(shù)據(jù)發(fā)送到MVB上;如果訪問(wèn)的是宿端口,能否正確接收其他從設(shè)備發(fā)送到MVB上的從幀,再發(fā)送到MVB總線上。為了進(jìn)行有效測(cè)試,如圖7所示定義了可以調(diào)用發(fā)送主/從幀命令的測(cè)試模型mcu_model、提供發(fā)送主/從幀數(shù)據(jù)的模型tm_model及MVB1類(lèi)設(shè)備外部TM模型。
?
圖8、圖9為部分仿真波形。發(fā)送模塊1發(fā)送主幀0c50。由圖8可知,MVB1類(lèi)設(shè)備控制器檢測(cè)到發(fā)送模塊1發(fā)送的主幀后,通過(guò)總線data_out_buffer_mem從外部TM中提取一個(gè)字長(zhǎng)的數(shù)據(jù)到數(shù)據(jù)總線上經(jīng)發(fā)送模塊2發(fā)送。由仿真圖可以看出TMCS_N及TMRD_N有效。
?
??? 發(fā)送模塊1發(fā)送主幀0c5f后再發(fā)送16 位從幀數(shù)據(jù)。由圖9可知控制器檢測(cè)到發(fā)送模塊1發(fā)送的主幀后,又收到16位的從幀數(shù)據(jù),并通過(guò)總線data_in_buffer_mem把數(shù)據(jù)送到TM中。由于是對(duì)端口15的操作,由圖中可以看出TMCS_N、TMWR_N及同步信號(hào)strobe_n有效。
本文在研究MVB的基礎(chǔ)上,用FPGA實(shí)現(xiàn)了MVB1類(lèi)設(shè)備控制器的設(shè)計(jì),具體描述了1類(lèi)設(shè)備控制器各個(gè)模塊的功能及設(shè)計(jì)方法。經(jīng)過(guò)仿真驗(yàn)證,該1類(lèi)設(shè)備控制器能夠成功收發(fā)幀數(shù)據(jù),對(duì)報(bào)文進(jìn)行分析,并且由于該1類(lèi)設(shè)備控制器采用了自頂向下的設(shè)計(jì)原則,設(shè)計(jì)的各個(gè)子模塊功能相互獨(dú)立,因此易于擴(kuò)展。當(dāng)設(shè)計(jì)MVB2、3、4或5類(lèi)設(shè)備控制器時(shí),可以在本設(shè)計(jì)的基礎(chǔ)上采用模塊(發(fā)送模塊、接收模塊)復(fù)用的方法,從而有效地節(jié)省資源。經(jīng)過(guò)實(shí)踐證明使用該設(shè)計(jì)比購(gòu)買(mǎi)專(zhuān)用處理芯片MVB控制器大大節(jié)省了成本。
參考文獻(xiàn)
[1] ?ADTRANZ. Multifunction vehicle bus controller data sheet(Revision)[Z]. Switzerland: Adtranz.1997.
[2] ?IEC61357-1 Part 1. Train communication network[S],1999.
[3] ?蔡穎.MVB網(wǎng)絡(luò)接口單元的SOC解決方案.沿海企業(yè)與科技,2005,(4):139-140.
[4] ?JIMENEZ J, JOSE M. Comparison of two designs for the?multifunction vehicle bus IEEE transactions on computeraided design of integrated circuits and systems : accepted?for future publication. Volume PP,? Issue 99, 2005:1-1.
[5] ?王鋒.基于FPGA的MVB1類(lèi)設(shè)備網(wǎng)卡的設(shè)計(jì)[J]. 機(jī)車(chē)電傳動(dòng),2004,(6):21-23.
[6] ?BONSEN, G A. The multifunction vehicle bus (MVB)?factory communication systems. 1995.WFCS ’95, Proceed-
?ings., 1995 IEEE International Workshop on 4-6 Oct.?1995 Page(s):27-34.
[7] ?JIMENEZ J, MARTIN J L, CUADRADO C et al. A topdown design for the train communication network industrial ?technology.2003 IEEE International Conference on Volume?2,10-12 Dec. 2003 Page(s):1000-1005.
[8] ?International electrotechnical commission, IEC 61375-3,Clause 3: Multifunction Vehicle Bus, 1999.
?
《電子技術(shù)應(yīng)用》2007年第2期