本發(fā)明涉及一種mvb事件仲裁方法,特別是一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法。該方法可根據(jù)信道容量自適應(yīng)調(diào)整事件優(yōu)先級,保障實(shí)時(shí)性要求高的事件信息優(yōu)先發(fā)送,縮短仲裁時(shí)延,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能。而且采用fpga設(shè)計(jì)一個(gè)嵌入式事件仲裁器,實(shí)時(shí)對mvb網(wǎng)絡(luò)并發(fā)事件進(jìn)行有效仲裁。
背景技術(shù):
多功能車輛總線mvb(multifunctionvehiclebus)是列車通信網(wǎng)絡(luò)(traincommunicationnetwork-tcn)國際標(biāo)準(zhǔn)之一,因其結(jié)構(gòu)簡單、實(shí)時(shí)性、安全性和可靠性高而在普通軌道列車、動(dòng)車以及高鐵上得到了廣泛應(yīng)用。mvb通信服務(wù)包含兩類數(shù)據(jù),即過程數(shù)據(jù)和消息數(shù)據(jù),實(shí)現(xiàn)消息數(shù)據(jù)通信的關(guān)鍵是采用事件輪詢機(jī)制,而事件仲裁是事件輪詢機(jī)制的核心。
現(xiàn)有事件仲裁方法都是基于協(xié)議的基本算法進(jìn)行改進(jìn),目的是為了提高mvb網(wǎng)絡(luò)的實(shí)時(shí)性能。有方法依據(jù)設(shè)備的優(yōu)先級或重要性來分配物理地址,越重要的設(shè)備(優(yōu)先級高)分配越小的地址,從而縮小仲裁延時(shí)。并通過定義16種事件優(yōu)先級類型,來縮小沖突域,減小碰撞概率。也有方法在有限深度條件下運(yùn)用哈夫曼算法,生成任意條件下的最優(yōu)二叉樹,并進(jìn)行設(shè)備地址分配,有效縮短了仲裁時(shí)延。還有方法采用粒子群優(yōu)化來分配設(shè)備地址和擴(kuò)展優(yōu)先級,從而減小總線主的事件巡回次數(shù)。
可見,現(xiàn)有事件仲裁方法僅通過理論來分析仲裁延時(shí)、碰撞次數(shù)等性能,而沒有對方法的硬件實(shí)現(xiàn)進(jìn)行描述,無法滿足實(shí)際應(yīng)用需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有方法離線而無法實(shí)際應(yīng)用等問題,提出一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法,可根據(jù)信道容量自適應(yīng)調(diào)整優(yōu)先級數(shù),保障實(shí)時(shí)性要求高的信息優(yōu)先發(fā)送,縮短仲裁時(shí)延,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能,使設(shè)計(jì)的事件仲裁器能實(shí)際應(yīng)用。
本發(fā)明一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法包括事件仲裁優(yōu)化算法和仲裁器設(shè)計(jì)兩個(gè)部分。事件仲裁優(yōu)化算法根據(jù)信道容量自適應(yīng)調(diào)整優(yōu)先級數(shù),保障實(shí)時(shí)性要求高的信息優(yōu)先發(fā)送,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能,為仲裁器設(shè)計(jì)提供依據(jù)。仲裁器設(shè)計(jì)基于fpga采用模塊化設(shè)計(jì)方法完成事件仲裁優(yōu)化算法的硬件實(shí)現(xiàn),具體包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊。
所述的事件仲裁優(yōu)化算法是為了滿足非周期數(shù)據(jù)的實(shí)時(shí)性,對基本事件仲裁方法進(jìn)行優(yōu)化,根據(jù)信道容量來設(shè)置優(yōu)先級數(shù),且按實(shí)時(shí)性要求來分配優(yōu)先級,即實(shí)時(shí)性高的具有高優(yōu)先級。當(dāng)總線主檢測到碰撞后,發(fā)出組事件請求幀,并根據(jù)當(dāng)前的信道容量,來設(shè)置優(yōu)先級的個(gè)數(shù),再根據(jù)事件的重要程度來設(shè)置懸掛事件優(yōu)先級的高低,如若數(shù)據(jù)信息為報(bào)警、急剎車、緊急事件等具有嚴(yán)格時(shí)限要求的緊急事件信息時(shí),設(shè)定最高優(yōu)先級,且其設(shè)備地址分給對應(yīng)的小偶數(shù)(如xxx0,xx00,xx10,x000,x100等)。最后,采用基本事件仲裁的折半查找對設(shè)備地址進(jìn)行搜索。該優(yōu)化方法能減少碰撞,縮短仲裁延時(shí),提高消息數(shù)據(jù)的實(shí)時(shí)性能。
所述的仲裁器設(shè)計(jì)是基于fpga采用模塊化設(shè)計(jì)方法計(jì)來完成事件仲裁優(yōu)化算法的硬件實(shí)現(xiàn),具體包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊。時(shí)鐘模塊為解碼、編碼和仲裁模塊提供基準(zhǔn)時(shí)鐘,其頻率為3mhz,由輸入時(shí)鐘模塊的24mhz分頻而來。編碼模塊主要在仲裁模塊的邏輯控制下,發(fā)送相應(yīng)的一般事件請求、組事件請求、單個(gè)事件請求以及事件讀取請求主幀,具體包括主幀分界符、4位功能碼、12位地址、8位校驗(yàn)碼以及結(jié)束分界符。而解碼器主要在仲裁模塊的邏輯控制下,接收相應(yīng)的時(shí)間標(biāo)示符響應(yīng)、事件數(shù)據(jù)以及碰撞從幀,具體包括從幀分界符、16位正確的從幀、8位校驗(yàn)碼以及結(jié)束分界符。緩存模塊主要在仲裁模塊的邏輯控制下,緩存接收的事件信息,以及緩存要發(fā)送的一般事件請求、組事件請求以及事件讀取請求幀信息。仲裁模塊是事件仲裁器的核心,完成各個(gè)模塊的邏輯控制,有序地進(jìn)行事件請求發(fā)送以及應(yīng)答接收,實(shí)現(xiàn)事件仲裁功能。
由以上敘述可見本發(fā)明一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法包含事件仲裁優(yōu)化算法和仲裁器設(shè)計(jì)兩個(gè)部分。事件仲裁優(yōu)化算法根據(jù)信道容量自適應(yīng)調(diào)整優(yōu)先級數(shù),保障實(shí)時(shí)性要求高的信息優(yōu)先發(fā)送,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能,為仲裁器設(shè)計(jì)提供依據(jù)。仲裁器設(shè)計(jì)基于fpga采用模塊化設(shè)計(jì)方法完成事件仲裁優(yōu)化算法的硬件實(shí)現(xiàn),具體包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊,實(shí)時(shí)對mvb網(wǎng)絡(luò)并發(fā)事件進(jìn)行有效仲裁。
附圖說明
圖1為本發(fā)明的事件仲裁優(yōu)化算法流程
圖2為本發(fā)明的仲裁器組成結(jié)構(gòu)
圖3為本發(fā)明的仲裁器電路連接
圖4為本發(fā)明的仲裁器控制有限狀態(tài)機(jī)
圖5為本發(fā)明的并發(fā)事件數(shù)與碰撞次數(shù)關(guān)系圖
圖6為本發(fā)明的并發(fā)事件數(shù)與報(bào)文延時(shí)關(guān)系圖
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)說明,本發(fā)明一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法包括事件仲裁優(yōu)化算法和仲裁器設(shè)計(jì)兩個(gè)部分。事件仲裁優(yōu)化算法根據(jù)信道容量自適應(yīng)調(diào)整優(yōu)先級數(shù),保障實(shí)時(shí)性要求高的信息優(yōu)先發(fā)送,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能,為仲裁器設(shè)計(jì)提供依據(jù)。仲裁器設(shè)計(jì)基于fpga采用模塊化設(shè)計(jì)方法完成事件仲裁優(yōu)化算法的硬件實(shí)現(xiàn),具體包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊。
所述的時(shí)間仲裁優(yōu)化算法為了滿足非周期數(shù)據(jù)的實(shí)時(shí)性,對基本事件仲裁方法進(jìn)行優(yōu)化,根據(jù)信道容量來設(shè)置優(yōu)先級數(shù),且按實(shí)時(shí)性要求來分配優(yōu)先級,即實(shí)時(shí)性高的具有高優(yōu)先級。首先,計(jì)算信道的當(dāng)前容量:
其中r為已掛起的事件集合的個(gè)數(shù),r=1,2,...,4096??梢姡S著并發(fā)事件數(shù)量的增多,信道容量以對數(shù)函數(shù)的趨勢急速加大。于是,考慮到仲裁的時(shí)延,根據(jù)當(dāng)前容量來分配并發(fā)事件的優(yōu)先級。在事件請求幀中,保留了4位用作設(shè)置事件優(yōu)先級,即最多可設(shè)置16個(gè)優(yōu)先級。設(shè)置優(yōu)先級如下:
然后,當(dāng)總線主檢測到碰撞后,發(fā)出組事件請求幀,先根據(jù)式(1)得出隊(duì)列中當(dāng)前的信道容量,根據(jù)式(2)來設(shè)置優(yōu)先級的個(gè)數(shù),再根據(jù)事件的重要程度來設(shè)置懸掛事件優(yōu)先級的高低,如若數(shù)據(jù)信息為報(bào)警、急剎車、緊急事件等具有嚴(yán)格時(shí)限要求的緊急事件信息時(shí),設(shè)定最高優(yōu)先級,且其設(shè)備地址分給對應(yīng)的小偶數(shù)(如xxx0,xx00,xx10,x000,x100等)。
最后,分配優(yōu)先級完成后,采用基本事件仲裁的折半查找算法對設(shè)備地址進(jìn)行搜索。該優(yōu)化方法能減少碰撞,縮短仲裁延時(shí),提高消息數(shù)據(jù)的實(shí)時(shí)性能。具體優(yōu)化流程如圖1所示。
算法開始先判斷周期相是否結(jié)束,如果周期相沒結(jié)束,繼續(xù)判斷,直到周期相結(jié)束。此時(shí),根據(jù)式(1)和(2)計(jì)算得到網(wǎng)絡(luò)事件優(yōu)先級個(gè)數(shù)n,即優(yōu)先級為0,1,2,...,n-1,且0表示優(yōu)先級最高,n-1為最低。并開始一個(gè)新的事件巡回,將0即“0000”寫入一般事件請求幀的4個(gè)保留位中,并向網(wǎng)絡(luò)廣播一般事件請求幀,其f_code=9。在確認(rèn)時(shí)間內(nèi),如果沒有收到任何幀即寂靜,則結(jié)束此次事件巡回。若在確定時(shí)間內(nèi)接收到數(shù)據(jù)幀,則設(shè)置優(yōu)先級個(gè)數(shù)n以及事件pr=0,根據(jù)接收到的數(shù)據(jù)幀判斷響應(yīng)個(gè)數(shù)。如果在確認(rèn)時(shí)間內(nèi),收到了正確的16位從幀數(shù)據(jù),即時(shí)間標(biāo)示符響應(yīng),則表示網(wǎng)絡(luò)中只有一個(gè)相同優(yōu)先級的掛起事件。于是發(fā)出事件讀取請求,即將正確接收到的事件標(biāo)示符響應(yīng)作為事件讀取請求在此發(fā)送至網(wǎng)絡(luò)。并接收相應(yīng)的事件讀取響應(yīng),其格式可以與任何從幀的格式相同。然后優(yōu)先級+1,并判斷是否等于n-1,如果等于則結(jié)束本次事件巡回。否則,跳轉(zhuǎn)至發(fā)送一般事件請求,進(jìn)行再一次事件搜索。而如果在廣播一般事件請求幀后的確認(rèn)時(shí)間內(nèi),收到碰撞,則發(fā)送組事件請求,其f_code=13。此時(shí)需采用事件仲裁算法將設(shè)備地址半分,設(shè)備地址半分后,判斷是否繼續(xù)碰撞,若繼續(xù)收到碰撞,則返回上部執(zhí)行設(shè)備地址半分,直至在確認(rèn)的時(shí)間內(nèi)接收到一個(gè)正確的16位從幀數(shù)據(jù),此時(shí)表明網(wǎng)絡(luò)中僅有一個(gè)相同優(yōu)先級的掛起事件。于是發(fā)出事件讀取請求,即將接收到的事件標(biāo)示符響應(yīng)作為事件讀取請求在此發(fā)送至網(wǎng)絡(luò)。并接收相應(yīng)的事件讀取響應(yīng)。然后優(yōu)先級+1,并判斷是否等于n-1,如果等于則結(jié)束本次事件巡回。否則,跳轉(zhuǎn)至發(fā)送一般事件請求,進(jìn)行再一次事件搜索。上述步驟就是事件仲裁的優(yōu)化算法。
所述的仲裁器設(shè)計(jì)是基于fpga采用模塊化設(shè)計(jì)方法計(jì)來完成事件仲裁優(yōu)化算法的硬件實(shí)現(xiàn),具體包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊,其結(jié)構(gòu)如圖2所示,電路連接如圖3所示。時(shí)鐘模塊為解碼、編碼和仲裁模塊提供基準(zhǔn)時(shí)鐘,其頻率為3mhz,由輸入時(shí)鐘模塊的24mhz分頻而來。如圖3所示,其輸入clock_24m為外部輸入24mhz時(shí)鐘通過內(nèi)部的8分頻產(chǎn)生3mhz輸出時(shí)鐘clock_3m,并分別與仲裁模塊的輸入clock_in、編碼器模塊的輸入clock_in以及解碼器的輸入clock_in分別連接,提供基準(zhǔn)時(shí)鐘。其另外一個(gè)輸入為外部系統(tǒng)復(fù)位信號reset,低有效,為時(shí)鐘模塊提供復(fù)位初始化,正常工作時(shí)為高電平。此外,輸入信號div_in為分頻使能信號,高有效,與仲裁模塊的div_en連接,平時(shí)為低電平。
編碼模塊主要在仲裁模塊的邏輯控制下,發(fā)送相應(yīng)的一般事件請求、組事件請求、單個(gè)事件請求以及事件讀取請求主幀,具體包括主幀分界符、4位功能碼、12位地址、8位校驗(yàn)碼以及結(jié)束分界符。編碼器模塊的一個(gè)輸入為復(fù)位信號reset_in,低電平有效,為編碼器模塊提供復(fù)位初始化,正常工作時(shí)為高電平。其另一個(gè)輸入時(shí)鐘信號clock_in來自時(shí)鐘模塊,為編碼器模塊提供基準(zhǔn)3mhz時(shí)鐘。仲裁器邏輯控制輸入信號t_send與仲裁模塊的tx_en連接,在其控制下,基于時(shí)鐘節(jié)拍,將與緩存模塊data_out[15…0]連接的輸入數(shù)據(jù)tdata[15…0]串行發(fā)送到輸出mvb_out,即將數(shù)據(jù)發(fā)往mvb總線。當(dāng)一幀數(shù)據(jù)發(fā)送結(jié)束后,向仲裁模塊輸出發(fā)送結(jié)束標(biāo)志t_ok,與仲裁模塊的tx_ok連接,高有效,平時(shí)為低電平。
解碼器主要在仲裁模塊的邏輯控制下,接收相應(yīng)的時(shí)間標(biāo)示符響應(yīng)、事件數(shù)據(jù)以及碰撞從幀,具體包括從幀分界符、16位正確的從幀、8位校驗(yàn)碼以及結(jié)束分界符。一個(gè)輸入為來自外部mvb總線的數(shù)據(jù)mdata_in,另一個(gè)輸入為復(fù)位信號reset_in,低電平有效,為解碼器提供復(fù)位初始化,正常工作時(shí)為高電平。輸入時(shí)鐘信號clock_in來自時(shí)鐘模塊,為編碼器提供基準(zhǔn)3mhz時(shí)鐘。仲裁邏輯控制輸入信號rev_en與仲裁模塊rev_en連接,啟動(dòng)編碼器,在時(shí)鐘的節(jié)拍下,對輸入的數(shù)據(jù)mdata_in進(jìn)行解碼,并把具體的事件信息數(shù)據(jù)輸出至rdata[15…0],其與緩存模塊的data_in[15…0]連接。當(dāng)一幀數(shù)據(jù)接收完畢后,項(xiàng)仲裁模塊輸出接收結(jié)束標(biāo)志rev_end,與仲裁模塊rev_end連接,高有效,平時(shí)為低電平。
緩存模塊主要在仲裁模塊的邏輯控制下,緩存接收的事件信息,以及緩存要發(fā)送的一般事件請求、組事件請求以及事件讀取請求幀信息。其一個(gè)輸入為復(fù)位信號reset_in,低電平有效,為緩存模塊提供復(fù)位初始化,正常工作時(shí)為高電平。輸入數(shù)據(jù)控制信號r_data和輸出控制信號t_data分別和仲裁模塊的read_en和tx_en連接。輸入數(shù)據(jù)信號data_in[15…0]和輸出數(shù)據(jù)信號data_out[15…0]分別與解碼模塊的rdata_out[15…0]和編碼模塊的tdata[15…0]連接。
仲裁模塊是事件仲裁器的核心,完成各個(gè)模塊的邏輯控制,有序地進(jìn)行事件請求發(fā)送以及應(yīng)答接收,實(shí)現(xiàn)事件仲裁功能。一個(gè)輸入為復(fù)位信號reset_in,低電平有效,為仲裁模塊提供復(fù)位初始化,正常工作時(shí)為高電平。其另一個(gè)輸入時(shí)鐘信號clock_in來自時(shí)鐘模塊,為仲裁模塊提供基準(zhǔn)3mhz時(shí)鐘。在低有效的輸入仲裁使能信號arbitr_en的控制下,啟動(dòng)仲裁過程。此時(shí)使能div_en信號,其與時(shí)鐘模塊的div_in連接,從而啟動(dòng)時(shí)鐘模塊。并根據(jù)算法分別使能rev_en、revd_en、tx_en、txd_en,它們分別與解碼模塊的rev_en、緩存模塊的r_data、編碼模塊的t_send、緩存模塊的t_data連接。實(shí)現(xiàn)整個(gè)仲裁器的邏輯控制,具體采用有限狀態(tài)機(jī)來實(shí)現(xiàn),如圖4所示。首先,初始化設(shè)備數(shù)、設(shè)備地址,將其依次存入存儲(chǔ)器單元,并計(jì)算其優(yōu)先級個(gè)數(shù),先輪詢優(yōu)先級為0的事件,然后處于空閑idle狀態(tài)。當(dāng)周期相結(jié)束(t_spo=‘1’)時(shí),跳轉(zhuǎn)到t_gene狀態(tài)。在t_gene狀態(tài)中,主設(shè)備發(fā)送f_code=9的一般事件請求幀開始事件巡回,然后跳轉(zhuǎn)到r_wait狀態(tài)。在r_wait狀態(tài)中,等待有事件報(bào)告的從設(shè)備響應(yīng),此時(shí),有三種跳轉(zhuǎn)情況。如果設(shè)備沒有事件報(bào)告,狀態(tài)為寂靜(r_sil=‘1’),則結(jié)束該次事件巡回,并跳轉(zhuǎn)到空閑idle狀態(tài),等待下一次的巡回。如果只有一個(gè)設(shè)備報(bào)告事件,狀態(tài)為正確(rp_ok=‘1’),則跳轉(zhuǎn)到t_tag狀態(tài)。在t_tag狀態(tài)中,主設(shè)備接收到從設(shè)備發(fā)送的單一的事件標(biāo)識符響應(yīng),檢查f_code正確后,主設(shè)備重新發(fā)送事件標(biāo)識符響應(yīng)幀作為主幀,接著跳轉(zhuǎn)到r_sdata狀態(tài)。在r_sdata狀態(tài)中,設(shè)備發(fā)送事件讀出響應(yīng),用來讀出事件,接著跳轉(zhuǎn)到空閑idle狀態(tài),等待下一次的巡回。如果有多個(gè)設(shè)備同時(shí)報(bào)告事件,狀態(tài)為碰撞(r_coll),則跳轉(zhuǎn)到t_grup狀態(tài)。在t_grup狀態(tài)中,主設(shè)備發(fā)送一個(gè)f_code=13的組事件請求幀,然后跳轉(zhuǎn)到t_half狀態(tài)。在t_half狀態(tài)中,采用事件仲裁算法將設(shè)備地址半分(從偶地址開始),若繼續(xù)碰撞(r_coll),則繼續(xù)將設(shè)備地址半分,直到收到一個(gè)正確的16位事件標(biāo)識符響應(yīng)從幀(rp_ok=‘1’),則跳轉(zhuǎn)到t_sing狀態(tài)。在t_sing狀態(tài)中,主設(shè)備發(fā)送一個(gè)f_code=14的單個(gè)事件請求幀,接著跳轉(zhuǎn)到r_gdata狀態(tài)。在r_gdata狀態(tài)中,設(shè)備發(fā)送事件讀出響應(yīng),用來讀出事件。然后如果有繼續(xù)需要搜索的其他設(shè)備地址,則跳轉(zhuǎn)到t_grup狀態(tài),繼續(xù)進(jìn)行事件請求;如果沒有事件報(bào)告,狀態(tài)為寂靜(r_sil=‘1’),則跳轉(zhuǎn)到空閑idle狀態(tài),等待下一次的巡回。
為了驗(yàn)證本發(fā)明一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法性能,設(shè)一條mvb總線,基本周期大小為1ms,設(shè)備地址從000000到1010001連續(xù)分配,電氣長度為2.0km,含有2個(gè)中繼器,從幀最大響應(yīng)時(shí)間為42.7s。在非周期調(diào)度過程中,優(yōu)化方案下并發(fā)事件數(shù)c與報(bào)文延時(shí)t(ms)和碰撞次數(shù)n的實(shí)驗(yàn)結(jié)果,如圖5、6所示。由圖中可知,相對于mvb典型事件仲裁算法,本發(fā)明方法通過信道容量自適應(yīng)調(diào)整優(yōu)先級的事件仲裁算法避免仲裁過程的碰撞次數(shù),使非周期信息調(diào)度過程實(shí)時(shí)性得到了較大提高,報(bào)文延時(shí)平均降低了11%,驗(yàn)證了本發(fā)明方法的有效性。
可見本發(fā)明一種基于fpga的mvb事件仲裁優(yōu)化與設(shè)計(jì)方法,根據(jù)信道容量自適應(yīng)調(diào)整優(yōu)先級數(shù),保障實(shí)時(shí)性要求高的信息優(yōu)先發(fā)送,提高mvb網(wǎng)絡(luò)事件仲裁的服務(wù)性能。所設(shè)計(jì)的仲裁器包括解碼模塊、編碼模塊、仲裁模塊、時(shí)鐘模塊和緩存模塊,能實(shí)時(shí)對mvb網(wǎng)絡(luò)并發(fā)事件進(jìn)行有效仲裁。