本發(fā)明屬于ARINC航空總線接口領(lǐng)域,具體地,涉及一種航空總線協(xié)議中命令處理系統(tǒng)及方法。
背景技術(shù):
隨著航空電子系統(tǒng)的發(fā)展對機載數(shù)據(jù)總線不斷提出新的要求,基于通用計算機和工業(yè)測控領(lǐng)域的底板數(shù)據(jù)總線無法滿足軍用電子系統(tǒng)對高可靠性、高故障容忍度、高容錯性等系統(tǒng)要求,提出了一種新型的底板總線—ARINC659總線。
ARINC659底板總線是一種具有總線傳輸時間確定性和半雙工傳輸特性的線性多點串行數(shù)據(jù)總線,它采用表驅(qū)動協(xié)議(TDP),無總線沖突和訪問時延,支持四余度實時熱后備,具有高可靠性,采用四條雙-雙配置總線,且收發(fā)過程自校驗,具有很強的容錯能力和故障隔離能力。
幀描述語言如表1所示,ARINC659協(xié)議算法的核心思想就是通過一張命令表來規(guī)定所有LRM(在線可更換模塊)的行為順序。該算法將總線時間劃分為一個一個大小不一的窗口(Window),定義每一個窗口的長度,并且規(guī)定每個LRM在該窗口時間的行為——發(fā)送、接收、空閑等。每一個窗口由幀描述語言定義,形成命令表。
表1幀描述語言表
如圖2所示,存放在表命令存儲器中的調(diào)度表定義了每一個窗口的長度,同時還定義了在這個窗口時間總線上的哪一個LRM發(fā)送、接收或者忽略總線??偩€的發(fā)送調(diào)度表被組織成循環(huán)幀的形式,整個發(fā)送計劃表的長度是一個固定長度,這個長度等于獨立的窗口長度之和。
如何有效的設(shè)計與處理ARINC659命令以及提高總線處理速度為本發(fā)明最需要解決的問題。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種航空總線協(xié)議中命令處理系統(tǒng)及方法,其結(jié)構(gòu)簡單,成本低,滿足ARINC659總線的協(xié)議命令傳輸時間的確定性,同時滿足ARINC659總線的實時性功能。
根據(jù)本發(fā)明的一個方面,提供一種航空總線協(xié)議中命令處理系統(tǒng),其特征在于,其包括:
命令區(qū)主控模塊,用于產(chǎn)生命令表讀取信號以及讀取信號地址;
命令表讀取模塊,與所述命令區(qū)主控模塊相連,用于讀取命令數(shù)據(jù);
表存儲器,與所述命令表讀取模塊相連,用于存儲命令數(shù)據(jù);
譯碼模塊,與所述命令表讀取模塊相連,用于對命令數(shù)據(jù)進行譯碼,產(chǎn)生相應(yīng)的命令標志和使能信號,同時在所述譯碼模塊中會對命令的接收和發(fā)送時序進行控制,保證命令窗口的時間執(zhí)行結(jié)束;
命令寄存器,與所述譯碼模塊相連,用于載入命令標志;
DMA控制器,與所述命令寄存器相連,用于取出數(shù)據(jù)信息和發(fā)送數(shù)據(jù)信息;
IMM模塊,與所述DMA控制器相連,用于寫入數(shù)據(jù)信息;
ARINC659協(xié)議控制器,與所述IMM模塊相連,用于接收和處理數(shù)據(jù)信息。
本發(fā)明還提供一種航空總線協(xié)議中命令處理方法,其特征在于,其包括以下步驟:
步驟一,取指步驟,命令區(qū)主控模塊產(chǎn)生命令表讀取信號以及讀取信號地址,并通過命令表讀取模塊從表存儲器中讀取出命令數(shù)據(jù);
步驟二,譯碼步驟,命令區(qū)主控模塊將讀取出的命令數(shù)據(jù)傳輸至譯碼模塊進行譯碼,產(chǎn)生相應(yīng)的命令標志和使能信號,同時在所述譯碼模塊中會對命令的接收和發(fā)送時序進行控制,保證命令窗口的時間執(zhí)行結(jié)束;
步驟三,載入步驟,命令寄存器載入命令標志;
步驟四,執(zhí)行步驟,命令寄存器將數(shù)據(jù)和同步脈沖信號發(fā)送到ARINC659總線上,同時將命令標志和使能信號傳遞給DMA控制器;
步驟五,命令寄存器通過DMA控制器從IMM模塊中取出發(fā)送數(shù)據(jù)傳遞給ARINC659協(xié)議控制器,并將從ARINC659總線上收到的數(shù)據(jù)通過DMA控制器寫入IMM模塊中。
優(yōu)選地,所述譯碼模塊完成譯碼后,如果當前ARINC659總線不忙,所述譯碼模塊產(chǎn)生有效的載入信號,將命令標志載入命令寄存器;如果當前ARINC659總線處在忙狀態(tài)時,所述譯碼模塊等待ARINC659總線不忙后再產(chǎn)生有效的載入信號,將譯碼命令載入命令寄存器。
優(yōu)選地,所述執(zhí)行步驟開始時如果需要占用ARINC659總線,則產(chǎn)生ARINC659總線忙信號,當處在命令執(zhí)行階段且當前ARINC659總線忙時,則產(chǎn)生下一條指令的讀取信號,對下一條指令進行處理,從而實現(xiàn)流水線的操作,提升命令的執(zhí)行速度。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:本發(fā)明結(jié)構(gòu)簡單,成本低,滿足ARINC659總線的協(xié)議命令傳輸時間的確定性,同時滿足
ARINC659總線的實時性功能。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為本發(fā)明航空總線協(xié)議中命令處理系統(tǒng)的結(jié)構(gòu)示意圖。
圖2為現(xiàn)有技術(shù)中基于時間確定性原則命令的示意圖。
圖3為本發(fā)明的具體實施方式中命令區(qū)主控模塊的取指操作的狀態(tài)圖。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明的保護范圍。
如圖1所示,本發(fā)明航空總線協(xié)議中命令處理系統(tǒng)包括:
命令區(qū)主控模塊,用于產(chǎn)生命令表讀取信號以及讀取信號地址;
命令表讀取模塊,與所述命令區(qū)主控模塊相連,用于讀取命令數(shù)據(jù);
表存儲器,與所述命令表讀取模塊相連,用于存儲命令數(shù)據(jù);
譯碼模塊,與所述命令表讀取模塊相連,用于對命令數(shù)據(jù)進行譯碼,產(chǎn)生相應(yīng)的命令標志和使能信號,同時在所述譯碼模塊中會對命令的接收和發(fā)送時序進行控制,保證命令窗口的時間執(zhí)行結(jié)束;
命令寄存器,與所述譯碼模塊相連,用于載入命令標志;
DMA(直接存儲器存取)控制器,與所述命令寄存器相連,用于取出數(shù)據(jù)信息和發(fā)送數(shù)據(jù)信息;
IMM(英特爾移動模塊)模塊,與所述DMA控制器相連,用于寫入數(shù)據(jù)信息;
ARINC659協(xié)議控制器,與所述IMM模塊相連,用于接收和處理數(shù)據(jù)信息。
本發(fā)明航空總線協(xié)議中命令處理方法包括以下步驟:
步驟一,取指步驟,命令區(qū)主控模塊產(chǎn)生命令表讀取信號以及讀取信號地址,并通過命令表讀取模塊從表存儲器中讀取出命令數(shù)據(jù);
步驟二,譯碼步驟,命令區(qū)主控模塊將讀取出的命令數(shù)據(jù)傳輸至譯碼模塊進行譯碼,產(chǎn)生相應(yīng)的命令標志和使能信號,同時在所述譯碼模塊中會對命令的接收和發(fā)送時序進行控制,保證命令窗口的時間執(zhí)行結(jié)束;
步驟三,載入步驟,命令寄存器載入命令標志;
步驟四,執(zhí)行步驟,命令寄存器將數(shù)據(jù)和同步脈沖信號發(fā)送到ARINC659總線上,同時將命令標志和使能信號傳遞給DMA控制器;
步驟五,命令寄存器通過DMA控制器從IMM模塊中取出發(fā)送數(shù)據(jù)傳遞給ARINC659協(xié)議控制器,并將從ARINC659總線上收到的數(shù)據(jù)通過DMA控制器寫入IMM模塊中。
所述譯碼模塊完成譯碼后,如果當前ARINC659總線不忙,所述譯碼模塊產(chǎn)生有效的載入信號,將命令標志載入命令寄存器;如果當前ARINC659總線處在忙狀態(tài)時,所述譯碼模塊等待ARINC659總線不忙后再產(chǎn)生有效的載入信號,將譯碼命令載入命令寄存器,這樣減少ARINC659總線的負載。
所述執(zhí)行步驟開始時如果需要占用ARINC659總線,則產(chǎn)生ARINC659總線忙信號,當處在命令執(zhí)行階段且當前ARINC659總線忙時,則產(chǎn)生下一條指令的讀取信號,對下一條指令進行處理,從而實現(xiàn)流水線的操作,提升命令的執(zhí)行速度,這個執(zhí)行效率高。
命令表的處理算法的設(shè)計分為四個過程,下面對設(shè)計中的關(guān)鍵過程取指步驟的操作進行詳細的設(shè)計說明。
如圖3所示,命令區(qū)主控模塊的取指操作主要通過狀態(tài)機控制下一個子窗口讀取命令。
reg_command_control(命令表取指初始狀態(tài)):當前BIU(基本信息單元)處于同步狀態(tài)時,或者失步狀態(tài)下接收到正確版本的長同步消息,則進入windows_next_read(讀取下一個子窗口命令狀態(tài))命令表窗口讀取狀態(tài)。
windows_next_read:產(chǎn)生有效的使能信號。如果當前總線處在忙狀態(tài),進入wait_load_command(等待總線空閑狀態(tài));如果不忙進入command_excute(命令載入執(zhí)行狀態(tài))狀態(tài)。
command_excute:當前指令載入結(jié)束后,進入windows_next_read下一命令表窗口讀取狀態(tài)。當命令譯碼為end(結(jié)束)指令時,BIU直接進入init(初始)狀態(tài)。
wait_load_command:當總線空閑,進入命令載入執(zhí)行狀態(tài)command_excute,或者其他無空閑跳轉(zhuǎn)指令時,進入下一個子窗口讀取狀態(tài)windows_next_read,并產(chǎn)生有效的load(載入)指令信號。如果當前BIU狀態(tài)進入失步狀態(tài),則進入init初始狀態(tài)。
以上發(fā)明內(nèi)容,可采用FPGA(現(xiàn)場可編程門陣列)來實現(xiàn),也可以開發(fā)專用的ARINC659控制器芯片來實現(xiàn)。同時根據(jù)需要,也可以將FPGA或ARINC659控制器芯片放置在目標系統(tǒng)應(yīng)用板上(如系統(tǒng)主板)。
采用FPGA或開發(fā)專用的ARINC659控制器芯片來實現(xiàn),其工作分為硬件設(shè)計和軟件設(shè)計。
利用本發(fā)明提供的方法,能準確根據(jù)命令表的內(nèi)容進行ARINC659命令的解析與傳輸,本發(fā)明主要針對ARINC659內(nèi)部的小型處理器進行分析與設(shè)計,主要目的為了滿足ARINC659總線協(xié)議命令傳輸?shù)臅r間確定性問題,什么時間執(zhí)行哪種命令,這種命令執(zhí)行多長時間,命令執(zhí)行與執(zhí)行之間的時間間隔等問題進行了邏輯設(shè)計。經(jīng)過測試,基于FPGA的ARINC659控制器能完全滿足ARINC659總線實時性的功能。
綜上所述,本發(fā)明結(jié)構(gòu)簡單,成本低,滿足ARINC659總線的協(xié)議命令傳輸時間的確定性,同時滿足ARINC659總線的實時性功能。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。