本發明專利技術公開了一種適用于航天領域基于FPGA的高可靠性嵌入式最小CPU核設計方法。該方法包括如下步驟:預先用仿匯編語言編寫程序,轉換為Binary格式的機器碼,并寫入PROM中;根據程序讀取PROM中的數據;將讀到的數據進行指令和目標源拆分,識別指令類型和目標源,進行數據的算數邏輯運算,并把運算結果放入指定的地方,最后根據指令進行對外數據的讀寫操作。與現有技術相比,其有益效果是:占用極小的FPGA資源,比現有的80C51核減小10倍以上資源開銷,特別適合在航天領域中FPGA資源有限的情況下應用;工程運用效果好,可以對外進行數據的讀寫,實現422和1553B通信;采用仿匯編語言編寫,程序可靠性高。
【技術實現步驟摘要】
一種適用于航天領域基于FPGA的高可靠性嵌入式最小CPU核設計方法
本專利技術涉及基于FPGA的嵌入式CPU核領域的軟件,尤其適用于航天FPGA的小資源、高可靠性的技術要求。
技術介紹
航天領域由于其工作地點的特殊性,產品的質量和可靠性要求極高,不允許出現任何故障。在太空中,由于高能粒子的沖擊和持續輻照,對元器件的等級要求極高,FPGA由于其本身工藝設計的原因,目前能上天的FPGA可用資源有限,而用80C51核由于占用資源太多而不能應用。目前航天領域大多數型號任務采用FPGA+單片機+片外RAM+片外PROM的體系架構,這種體系架構用到的元器件較多,應用時要考慮每個元器件的質量等級和可靠性指標,可靠性會降低。
技術實現思路
本專利技術要解決的問題是提供一種基于FPGA的高可靠性嵌入式最小CPU核設計方法,它能夠解決適用于航天領域FPGA的資源有限的問題,能增加航天器的可靠性。為解決上述技術問題,本專利技術的一種基于FPGA的高可靠性嵌入式最小CPU核設計方法,其包括如下步驟:步驟a:根據定義的指令,預先用仿匯編語言編寫程序,轉換為Binary格式的機器碼,并寫入PROM中;步驟b:根據程序讀取PROM中的數據;步驟c:將讀到的數據進行指令和目標源拆分,識別指令類型和目標源,進行數據的算數邏輯運算,并把運算結果放入指定的地方,最后根據指令進行對外數據的讀寫操作。上述步驟a包含有如下步驟:步驟a1:根據定義的指令,用仿匯編語言編寫程序;步驟a2:將編譯后的執行代碼轉換為Binary格式的機器碼;步驟a3:根據程序大小,寫入片內ROM或片外PROM中。所述步驟b包含有如下步驟:步驟b1:根據程序指令,確定要訪問的PROM的地址;步驟b2:讀取PROM中地址相對應的數據。所述步驟c包含有如下步驟:步驟c1:將讀到的數據進行指令和目標源拆分;步驟c2:識別指令類型和目標源操作目標源,進行數據的算數邏輯運算,并把運算結果放入指定的地方;步驟c3:根據指令進行對外數據的讀寫操作。本專利技術通過一種基于FPGA的高可靠性嵌入式最小CPU核設計方法,與現有技術相比,其有益效果是:占用極小的FPGA資源,比現有的80C51核減小10倍以上資源開銷,特別適合在航天領域中FPGA資源有限的情況下應用;工程運用效果好,可以對外進行數據的讀寫,可實現422和1553B通訊;采用仿匯編語言編寫,程序可靠性高;與現有航天的體系架構相比,減少元器件開銷,節省成本。附圖說明以下將結合附圖和實施例對本專利技術作進一步詳細說明。圖1是本專利技術的最小CPU核的內部數據流圖;圖2是本專利技術的指令和目標源解析圖;圖3是本專利技術Binary格式數據流的定義。具體實施方式適用于本專利技術需要有下面幾個條件:1、計算機配置和軟件條件需配置一臺內存大于512M,硬盤存儲空間大于1G的計算機,需要安裝FPGA仿真和燒寫軟件。2、存儲空間條件一般航天領域的FPGA軟件為了抵抗SEU(單粒子反轉,SingleEventUpset)效應對程序的影響,在航天器發射之前進行FPGA反熔絲固化,固化好的程序將不能進行修改。而Binary格式的機器碼一般存放在PROM(可編程只讀存儲器,ProgramReadOnlyMemory)中,為了抵抗SEU效應對程序的影響,用于存放代碼的PROM在航天器發射之前進行燒結固化,固化好的程序將不能在原PROM基礎上進行修改。因此只需要可適用于航天領域的FPGA和PROM,存儲空間條件較易滿足,本專利技術能適用于大多數的航天領域。鑒于上述兩個條件航天領域一般都滿足,故本專利技術可以應用到大多數的航天領域中FPGA的嵌入式CPU核設計。具體實施例如下:本實施例采用C語言編寫一段程序(一個簡單的1553B通訊程序),根據圖2的指令和目標源的解析用仿匯編語言將C語言程序轉換為Binary格式的機器碼,并寫入PROM中,并依據設計在FPGA軟件內部的CPU核,對注入的代碼進行指令和目標源拆分,識別指令類型和目標源,然后進行數據的讀寫操作。其方法的具體步驟如下:C語言程序如下:步驟a1:根據圖2的指令和目標源的解析,根據C語言程序用仿匯編語言編寫程序。這一步是整個設計中的重要步驟,該步驟是整個數據的來源,編寫后的代碼確保是正確的,代碼的精簡度與整個程序的效率密切相關。代碼如下:步驟a2:根據圖2的指令和目標源的解析,使用自制的轉換格式軟件,將編譯后的執行代碼轉換為Binary格式的機器碼。值得注意的是,指令和目標源拼成一個8位無符號數,操作數為16位無符號數,機器碼如下:0D00A0110D00001909AD010085FFAF5515004503000D01001003800D00801007800D13001000800D52581002800D19801007800D00801008800D00001009800DA0021068A10D004010A8A10D808F100180步驟a3:根據機器碼大小,寫入片內ROM或片外PROM中。如機器碼存在片內的ROM中,則讀寫速度更快,最快可接受70M的時鐘驅動。如寫入片外PROM,則根據PROM芯片的讀寫周期進行操作。步驟b1:根據程序指令,確定要訪問的PROM的地址;初始化狀態下,默認訪問PROM首地址中的指令內容,并設置相應的PC指針。步驟b2:讀取PROM中地址相對應的數據。數據從圖1中的DATA_in端口被讀入,每次讀取8位數據。步驟c1:將讀到的數據進行指令和目標源拆分。根據圖3的機器碼定義,在圖1的CONTROLFSM模塊把讀到的8位的數據(圖1中的Pc0)進行拆分,高5位是指令,低3位為目標源。步驟c2:識別指令類型和目標源,進行數據的算數邏輯運算,并把運算結果放入指定的地方。根據圖2的指令和目標源的解析和圖1的最小CPU核的內部數據流圖,進行不同的操作。在算數邏輯運算中,如目標源為圖1的REG模塊中的內部R0~R3寄存器中16位數據,則不需要再從PROM中讀取操作數,直接把寄存器中的數據通過MUXA.a端口放到ALU模塊的A口。除此之外,所有指令都需要再從PROM中讀取16位的操作數(圖1中的Pc1,Pc2),在ALU模塊中參與算數邏輯運算,運算結果通過ALU模塊的C口根據指令分別送往REG模塊和CONTROLFSM模塊。如指令的目標源為REG模塊中的內部R0~R3寄存器或A和S,則運算結果送往REG模塊,這條指令的PC地址加1;如指令的目標源為@ADDR或#DATA,則運算結果送往CONTROLFSM模塊,這條指令的PC地址加3。步驟c3:根據指令進行對外數據的讀寫操作。在CONTROLFSM模塊中,根據指令和目標源的不同進行對外數據的讀寫操作。在讀操作時,如目標源為@ADDR,則需要先把@ADDR的值存放在對外地址線上,再讀一遍該地址中的數據;如目標源為#DATA,則直接再從PROM中讀取16位的操作數即可;如目標源為R0~R3寄存器或A和S,則不需要對外讀取數據。在寫操作時,如指令類型為MOVA,則需識別目標源類型:目標源為@ADDR,則把@ADDR的值存放在對外地址線上,然后把ALU模塊的C口數據進行對外寫操作;目標源為R0~R3寄存器,則把把ALU模塊的C口數據送往REG模塊,不需要對外寫操本文檔來自技高網...

【技術保護點】
一種適用于航天領域基于FPGA的高可靠性嵌入式最小CPU核設計方法,其特征在于:包括如下步驟:步驟a:預先用仿匯編語言編寫程序,轉換為Binary格式,并寫入PROM中;步驟b:根據程序讀取PROM中的數據;步驟c:將讀到的數據進行指令和目標源拆分,識別指令類型和目標源,進行數據的算數邏輯運算,并把運算結果放入指定的地方,最后根據指令進行對外數據的讀寫操作。
【技術特征摘要】
1.一種適用于航天領域基于FPGA的高可靠性嵌入式最小CPU核設計方法,其特征在于:包括如下步驟:步驟a:預先用仿匯編語言編寫程序,轉換為Binary格式,并寫入PROM中;步驟a1:根據定義的指令,用仿匯編語言編寫程序;步驟a2:將編譯后的執行代碼轉換為Binary格式的機器碼;步驟a3:根據程序大小,寫入PROM中;步驟b:根據程序讀取PROM中的數據;步驟c...
【專利技術屬性】
技術研發人員:施未勛,徐建萍,周振宇,宋曉東,
申請(專利權)人:上海航天測控通信研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。