基于軟核處理器的fpga多鏡像升級加載方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及FPGA升級加載領(lǐng)域,尤其涉及一種FPGA多鏡像升級加載方法及裝置。
【背景技術(shù)】
[0002]目前,F(xiàn)PGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)的程序升級方式主要有兩種:使用FPGA編程器通過FPGA的燒錄軟件對FPGA進行程序升級;通過應(yīng)用軟件將FPGA的程序文件下發(fā)給FPGA,F(xiàn)PGA通過內(nèi)部RSU功能進行程序自升級。
[0003]這兩種方式都存在一定的局限性,第一種升級方式的缺點:升級速度非常慢、不能進行遠程升級、只支持單鏡像程序文件升級;第二種升級方式的優(yōu)缺點:優(yōu)點支持遠程升級、缺點是升級速度慢,只支持單鏡像程序文件升級。
[0004]隨著FPGA的技術(shù)不斷的發(fā)展,F(xiàn)PGA能夠完成的外設(shè)功能越來越豐富,在同一片F(xiàn)PGA中可以完成不同功能的應(yīng)用,但是受FPGA自身資源的限制,不能把FPGA自身所支持的功能完全放在同一個鏡像程序中,而且在同一個鏡像程序中包含過多功能時,對整個系統(tǒng)的穩(wěn)定性、時序、功耗均有較大的影響。為了解決上述問題,可按不同的應(yīng)用場景進行功能劃分,在同一FPGA中采用不同的鏡像文件來完成不同的功能,達到優(yōu)化時序、降低功耗、提尚系統(tǒng)的穩(wěn)定性等目的。
【發(fā)明內(nèi)容】
[0005]為了解決當(dāng)前FPGA程序升級速度慢和鏡像個數(shù)少的問題,實現(xiàn)基于不同應(yīng)用場景的FPGA多鏡像快速升級及靈活加載,本發(fā)明提供了一種基于軟核處理器的FPGA多鏡像升級加載方法及裝置。
[0006]一方面,本發(fā)明提供一種基于軟核處理器的FPGA多鏡像升級加載方法,所述方法包括如下步驟:
[0007]上位機選擇需要升級的鏡像文件,通過接口下發(fā)升級開始命令,F(xiàn)PGA內(nèi)部的協(xié)議棧解析出命令信息后發(fā)送給FPGA的軟核處理器模塊,所述FPGA的軟核處理器模塊根據(jù)命令得到升級鏡像的文件名和文件長度,然后發(fā)送FPGA已經(jīng)準備好升級的消息包給所述上位機;
[0008]所述上位機收到回包后,開始下發(fā)鏡像文件數(shù)據(jù);
[0009]所述FPGA的軟核處理器模塊通過設(shè)置FPGA的控制模塊,將所述上位機下發(fā)的鏡像文件數(shù)據(jù)通過控制模塊存儲到外部緩存模塊中;
[0010]鏡像文件數(shù)據(jù)下發(fā)完成后,所述FPGA的軟核處理器模塊通過控制模塊通知CPLD的軟核處理器模塊,并將鏡像文件的文件名、文件長度傳給CPLD;
[0011 ] CPLD就緒后,所述FPGA的軟核處理器模塊通過所述FPGA的控制模塊將需要升級的鏡像文件數(shù)據(jù)從FPGA的外部緩存模塊讀出,然后通過主外部總線接口發(fā)送給CPLD,所述CPLD的軟核處理器模塊通過外部總線接口讀取數(shù)據(jù),然后發(fā)給存儲控制塊,完成升級鏡像文件的存儲;
[0012]所有數(shù)據(jù)都寫入CPLD外部存儲模塊后,CPLD設(shè)置當(dāng)前鏡像文件為下次的加載文件,并更新升級完成寄存器的狀態(tài),所述FPGA的軟核處理器模塊查詢到該寄存器狀態(tài)后,通過接口通知上位機升級操作完成;
[0013]升級完成后,實現(xiàn)FPGA的加載。
[0014]進一步地,所述FPGA的軟核處理器模塊通過設(shè)置FPGA控制模塊中的主控制塊,將所述上位機下發(fā)的鏡像文件數(shù)據(jù)通過控制模塊中的緩存控制塊存儲到外部緩存模塊中。
[0015]進一步地,鏡像文件數(shù)據(jù)下發(fā)完成后,所述FPGA的軟核處理器模塊通過控制模塊中的主外部存儲接口控制塊通知CPLD的軟核處理器模塊。
[0016]進一步地,所述升級完成后,實現(xiàn)FPGA的加載的方法具體包括:
[0017]FPGA鏡像文件升級完成后,CPLD主動從外部存儲模塊中讀取剛升級的鏡像文件,將鏡像文件發(fā)送給FPGA的配置模塊,實現(xiàn)FPGA的加載。
[0018]另一方面,本發(fā)明提供一種基于軟核處理器的FPGA多鏡像升級加載裝置,所述裝置包括:上位機、接口收發(fā)模塊、FPGA模塊、外部緩存模塊、外部存儲模塊、CPLD模塊;其中,
[0019]所述上位機,用于人機交互,進行程序升級和鏡像切換控制;
[0020]所述接口收發(fā)模塊,用于上位機和FPGA模塊之間的雙向通信交互;
[0021 ]所述FPGA模塊,用于內(nèi)部集成軟核處理器和各自定義功能模塊;
[0022]所述外部緩存模塊,用于臨時存放系統(tǒng)待處理的數(shù)據(jù);
[0023]所述外部存儲模塊,用于保存FPGA的程序文件數(shù)據(jù);
[0024]所述CPLD模塊,外部掛載存儲器用來存儲FPGA的程序文件,與FPGA模塊進行通信完成程序升級。
[0025]進一步地,所述FPGA模塊包括:協(xié)議棧模塊、控制模塊、軟核處理器模塊、配置模塊;其中,
[0026]所述協(xié)議棧模塊,用于解析接口傳輸?shù)臄?shù)據(jù),將命令數(shù)據(jù)傳輸給軟核處理器模塊,將鏡像文件數(shù)據(jù)傳輸給控制模塊;
[0027]所述控制模塊,用于與協(xié)議棧模塊、軟核處理器模塊、外部緩存模塊、CPLD模塊進行數(shù)據(jù)交換與控制;
[0028]所述軟核處理器模塊,用于FPGA內(nèi)部任務(wù)的調(diào)度、文件系統(tǒng)管理、控制命令的解析和分發(fā)以及工作流程控制;
[0029]所述配置模塊,用于接收到FPGA的程序文件數(shù)據(jù)后,進入初始化狀態(tài),然后進入用戶狀態(tài),執(zhí)行相應(yīng)的用戶應(yīng)用操作。
[0030]進一步地,所述FPGA的控制模塊包括:主控制塊、緩存控制塊、主外部存儲接口控制塊;其中,
[0031]所述主控制塊,用于大數(shù)據(jù)量傳輸,總線的切換和復(fù)用;
[0032]所述緩存控制塊,用于與主控制塊數(shù)據(jù)交互,對外部緩存模塊進行讀寫訪問;
[0033]所述主外部存儲接口控制塊,用于與主控制塊進行數(shù)據(jù)交互,控制外部總線與CPLD進行數(shù)據(jù)傳輸。
[0034]進一步地,所述CPLD模塊包括:存儲控制塊、軟核處理器模塊、加載模塊;其中,
[0035]所述存儲控制塊,用于與軟核處理器模塊、加載模塊、FPGA模塊、外部存儲模塊進行數(shù)據(jù)交互,對升級程序文件數(shù)據(jù)和升級命令數(shù)據(jù)進行控制、轉(zhuǎn)發(fā)、存儲;
[0036]所述軟核處理器模塊,用于CPLD內(nèi)部任務(wù)的調(diào)度、文件系統(tǒng)管理、控制命令的解析和分發(fā)以及工作流程控制;
[0037]所述加載模塊,用于接收存儲控制塊發(fā)送的FPGA程序文件數(shù)據(jù),控制外部總線,發(fā)送程序文件數(shù)據(jù)給FPGA內(nèi)部的配置模塊。
[0038]進一步地,所述存儲控制塊包括:從外部存儲接口控制子塊、存儲控制子塊;其中,
[0039]所述從外部存儲接口控制子塊,用于與FPGA進行總線交互,接收FPGA的升級程序文件數(shù)據(jù)和升級命令數(shù)據(jù),將程序文件數(shù)據(jù)轉(zhuǎn)發(fā)給存儲控制子塊,將命令數(shù)據(jù)轉(zhuǎn)發(fā)給CPLD的軟核處理器模塊;
[0040]所述存儲控制子塊,用于接收從外部存儲接口控制子塊的數(shù)據(jù),將數(shù)據(jù)存儲到外部存儲模塊中,并接收軟核處理器模塊的控制命令,從外部存儲模塊中讀取FPGA的程序文件數(shù)據(jù),將程序文件數(shù)據(jù)發(fā)送給加載模塊。
[0041 ]本技術(shù)方案中,基于軟核處理器的FPGA多鏡像升級加載方法及裝置是采用單FPGA的方式,內(nèi)部嵌入軟核處理器和各控制塊來實現(xiàn)接口功能、實現(xiàn)程序文件緩存功能、實現(xiàn)同CPLD完成芯片級的互聯(lián)總線接口功能等。采用單CPLD實現(xiàn)FPGA的多鏡像程序文件升級管理和FPGA程序文件選擇加載啟動功能等。
[0042]本技術(shù)方案中,遠程升級實現(xiàn)方法由FPGA和CPLD共同完成。
[0043]本技術(shù)方案中,基于軟核處理器的FPGA多鏡像升級加載方法及裝置的主要功能是完成FPGA的多鏡像程序升級,以及根據(jù)相關(guān)配置選擇相應(yīng)的鏡像文件給FPGA進行加載。加載方法為:
[0044]FPGA的多鏡像加載主要由CPLD協(xié)助完成,首先CPLD正常運行后,CPLD通過讀取外部存儲存儲器的配置信息選擇相應(yīng)的FPGA鏡像文件,然后將鏡像文件數(shù)據(jù)從外部存儲模塊中讀出,發(fā)送給FPGA的配置模塊,實現(xiàn)FPGA的加載啟動。
[0045]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
[0046](1)、遠程升級時間大大縮短,單個鏡像文件升級過程在2秒內(nèi)完成。而以前采用編程器對FPGA進行程序升級方法大約在3分鐘左右,采用帶有RSU功能的遠程升級方式大約在40秒左右。
[0047](2)、該裝置支持多鏡像功能,根據(jù)外部存儲空間的大小支持2個和2個以上的FPGA鏡像文件。實現(xiàn)將多個FPGA的應(yīng)用程序一次性燒寫到裝置中,在實際應(yīng)用中可以通過設(shè)置來選擇不同的鏡像文件進