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