一種sram型fpga的配置、刷新與程序上注一體化系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng),屬于航天【技術(shù)領(lǐng)域】,目的是克服在空間輻照環(huán)境下SRAM型FPGA的SEU(Single Event Upset,單粒子翻轉(zhuǎn))問題,具備對長時間在軌工作的SRAM型FPGA進(jìn)行程序升級的能力。本發(fā)明包括現(xiàn)場可編程邏輯門陣列SRAM型FPGA、綜合管理反熔絲FPGA、配置程序存儲芯片PROM、在軌升級程序存放芯片EEPORM、RS422接口芯片。本發(fā)明可以有效克服長時間在軌工作的SRAM型FPGA的單粒子翻轉(zhuǎn)問題,可以在不中斷系統(tǒng)工作的情況下,糾正SRAM FPGA內(nèi)部的單粒子翻轉(zhuǎn)以及單粒子累積,同時具備對SRAM FPGA在軌程序升級的功能。具備實時性、可靠性、靈活性、通用性以及低成本的特點。
【專利說明】一種SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于電子設(shè)備可靠性設(shè)計技術(shù)和宇航應(yīng)用【技術(shù)領(lǐng)域】,更具體地,涉及一種靜態(tài)隨機存儲器(Static Random Access Memory, SRAM)型現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)的配置、刷新與程序上注一體化的電路與方法。
【背景技術(shù)】
[0002]SRAM型FPGA因其高密度以及高性能,已經(jīng)成為目前市場上應(yīng)用最廣泛的FPGA之一,由于其可重復(fù)編程以及可重復(fù)配置的特性,近些年來在航天領(lǐng)域開始體現(xiàn)其應(yīng)用價值,并獲得越來越廣泛的應(yīng)用。由于SRAM型FPGA是敏感器件,在軌使用時處于空間輻照環(huán)境,空間高能粒子會對器件產(chǎn)生一系列影響,包括總劑量效應(yīng)(Total 1nizing DoseEffects, TID)和單粒子效應(yīng)(Single Event Effects, SEE)等,而SEE中的單粒子翻轉(zhuǎn)(Single Event Upset, SEU)對SRAM型器件的影響尤為明顯,會造成器件內(nèi)部電路異常而無法正常工作,所以必須考慮單粒子翻轉(zhuǎn)問題,相應(yīng)的技術(shù)研宄也越來越多。
[0003]現(xiàn)有技術(shù)中已有一些相關(guān)的方法,以下對一些已經(jīng)發(fā)表的專利進(jìn)行分析:
[0004](I) 一種SRAM型FPGA SEU運行中修復(fù)的方法
[0005]此專利采用定時動態(tài)刷新(洗滌)的方式,從可編程只讀存儲器(ProgrammableRead-Only Memory, PROM)中提取刷新文件寫入FPGA中,使用反熔絲FPGA控制SRAM型FPGAVirtex5刷新。在上電之后,對Virtex5進(jìn)行全局配置,配置成功后定時刷新Virtex5。
[0006]但是此專利存在以下不足:
[0007](a)不能用指令控制重配,重配置需要硬復(fù)位或者斷電重啟;
[0008](b)不能用指令開關(guān)刷新使能,上電配置成功即開始刷新;
[0009](c)不能根據(jù)星上環(huán)境靈活調(diào)整動態(tài)刷新周期;
[0010](d)不具備在軌升級能力。
[0011](2) 一種基于SRAM型FPGA配置、刷新一體化裝置
[0012]此專利使用Actel公司的RT1020F芯片控制刷新Xilinx公司的XQR2V3000芯片。此專利將配置與刷新結(jié)合,事先將刷新的文件生成好固化在PROM中,配置與刷新文件分區(qū)存儲,使用相同的配置接口時序,由RT1020F芯片控制片選數(shù)據(jù)來確定是重配置還是刷新。
[0013]但是此專利存在以下不足:
[0014](a)配置與刷新文件分區(qū)存放,對存儲空間要求較大,不具靈活性;
[0015](b)無程序上注電路,不具備在軌升級能力。
[0016]還有一種用于FPGA的抗單粒子翻轉(zhuǎn)加固系統(tǒng)及其方法、一種抗SRAMFPGA器件SEU的電路及方法等相關(guān)專利都存在類似的不足。
【發(fā)明內(nèi)容】
[0017]鑒于現(xiàn)有技術(shù)的以上缺陷,本發(fā)明提供了一種SRAM型FPGA配置、刷新與程序上注一體化系統(tǒng),其目的在于實現(xiàn)SRAM型FPGA上電全局配置、緩解空間輻照環(huán)境中運行的SRAM型FPGA內(nèi)部SEU影響和功能在軌升級,具備外存儲器空間需求小,靈活性好,實時性高的特點。
[0018]為了實現(xiàn)上述目的,本發(fā)明提供了一種SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng),所述系統(tǒng)包括:SRAM型FPGA(1-1)、綜合管理FPGA(1_2)、配置程序存儲芯片PROM(l_3)、在軌升級程序存放芯片電可擦除只讀存儲器(Electrically ErasableRead-Only Memory, EEPROM) (1-4)、遙測遙控接口(1-5),其中:
[0019]所述配置程序存儲芯片PROM (1-3)用于存放SRAM型FPGA (1_1)的配置程序,所述配置程序在衛(wèi)星發(fā)射前固化好,上電之后默認(rèn)從所述配置程序存儲芯片PR0M(l-3)中讀取配置程序配置所述SRAM型FPGA(1-1);
[0020]所述在軌升級程序存放芯片EEPR0M(1_4),用于衛(wèi)星在軌運行時,存放在軌更新的程序;所述在軌更新的程序,是由綜合管理FPGA(l-2)接收地面上注的程序包并加入漢明校驗碼之后,寫入所述在軌升級程序存放芯片EEPR0M(l-4)的;所述在軌升級程序存放芯片EEPR0M(l-4)包括兩片EEPR0M,兩片EEPROM采用深度擴(kuò)展的連接方式,數(shù)據(jù)線與地址線共用,通過片選信號CE來選通;
[0021]所述SRAM型FPGA(1-1)的配置方式選用從并模式(Slave Select MAP),其配置口直接與綜合管理FPGA (1-2)相連,由綜合管理FPGA (1-2)控制所述SRAM型FPGA (1_1)的配置加載以及動態(tài)刷新;
[0022]所述遙測遙控接口(1-5),采用RS422電平標(biāo)準(zhǔn),包括RS422差分信號接收器和RS422差分信號驅(qū)動器,所述遙測遙控接口(1-5)用于接收外部發(fā)送過來的遙控指令,同時下傳系統(tǒng)當(dāng)前的遙測狀態(tài)信息;
[0023]所述綜合管理FPGA (1-2),用于實現(xiàn)以下功能:
[0024](a)接收并響應(yīng)地面遙控指令,返回系統(tǒng)遙測狀態(tài)信息;
[0025](b)接收地面上傳的SRAM型FPGA(1-1)程序數(shù)據(jù)包,解析包格式并加入校驗碼之后寫入所述在軌升級程序存放芯片EEPORM(1-4)中;
[0026](c)從所述配置存儲芯片PR0M(1_3)讀數(shù)據(jù)配置加載和動態(tài)刷新SRAM型FPGA(1-1);
[0027](d)從所述在軌升級程序存放芯片EERP0M(1_4)中讀數(shù)據(jù)配置加載和動態(tài)刷新所述 SRAM 型 FPGA(1-1);
[0028](e)對在軌升級程序存放芯片EEPROM(1-4)的校驗回寫。
[0029]本發(fā)明的一個實施例中,所述綜合管理FPGA(1_2)包括如下子模塊:通用異步串口模塊(2-1)、遙測遙控模塊(2-2)、上傳數(shù)據(jù)接收模塊(2-3)、寫EEPROM模塊(2_4)、讀EEPROM模塊(2-5)、EEPROM糾錯模塊(2-6)、讀PROM模塊(2-7)、數(shù)據(jù)分配模塊(2-8)、加載控制模塊(2-9)、刷新控制模塊(2-10)和數(shù)據(jù)選擇模塊(2-11),其中:
[0030]所述通用異步串口模塊(2-1),采用標(biāo)準(zhǔn)UART協(xié)議,用于實現(xiàn)串行數(shù)據(jù)收發(fā);
[0031]所述遙測遙控模塊(2-2),用于接收并解析遙控指令包生成的相應(yīng)的控制信號,送至對應(yīng)的模塊;對于上注程序數(shù)據(jù)包,解析包格式將數(shù)據(jù)送至上傳數(shù)據(jù)接收模塊(2-3);遙測遙控模塊(2-2)還用于收集系統(tǒng)的所有遙測量信息,組合在一起輸出至地面控制臺;
[0032]所述上傳數(shù)據(jù)接收模塊(2-3),用于將上注程序包中的數(shù)據(jù)解析,加入漢明校驗碼,同時對每包數(shù)據(jù)計算一個和校驗,并根據(jù)上注程序數(shù)據(jù)包序號映射計算在軌升級程序存放芯片EEPROM(1-4)的頁地址,將數(shù)據(jù)與頁地址信號一起送至EEPROM寫模塊(2_4);
[0033]所述寫EEPROM模塊(2_4),用于接收緩存的上注程序包數(shù)據(jù)或者EEPROM糾錯模塊(2-6)送入的校驗糾錯之后的數(shù)據(jù),加入漢明編碼之后寫入在軌升級程序存放芯片EEPROM(1-4);
[0034]所述讀EEPROM模塊(2_5),用于實現(xiàn)對在軌升級程序存放芯片EEPROM (1_4)的讀數(shù)據(jù)操作,當(dāng)收到從EEPROM重新配置SRAM型(1_1) FPGA的指令或者從EEPROM中動態(tài)刷新SRAM型FPGA(1-1)時,從在軌升級程序存放芯片EEPROM(1_4)中讀配置數(shù)據(jù);
[0035]所述EEPROM糾錯模塊(2_6),用于響應(yīng)遙測遙控模塊(2_2)生成的EEPROM糾錯使能信號,控制寫EEPROM模塊(2-4)和讀EEPROM模塊(2_5),對寫EEPROM模塊(2_4)和讀EEPROM模塊(2-5)按頁進(jìn)行校驗;
[0036]所述讀PROM模塊(2-7),用于實現(xiàn)對配置程序存儲芯片PR0M(1_3)的讀數(shù)據(jù)操作,當(dāng)系統(tǒng)上電、收到從配置程序存儲芯片PROM (1-3)重新配置SRAM型FPGA (1-1)的指令或者從配置程序存儲芯片PROM(1-3)中動態(tài)刷新SRAM型FPGA(1-1)時,從配置程序存儲芯片PROM(1-3)中讀配置數(shù)據(jù);
[0037]所述數(shù)據(jù)分配模塊(2-8),用于實現(xiàn)對配置以及刷新數(shù)據(jù)源的選取,選擇信號由遙測遙控模塊(2-2)送入,控制選擇使用配置程序存儲芯片PROM(1-3)或者在軌升級程序存放芯片EEPROM(1-4)數(shù)據(jù)對SRAM型FPGA(1-1)進(jìn)行配置;
[0038]所述加載控制模塊(2-9),用于實現(xiàn)對SRAM型FPGA(1-1)的上電配置加載和指令配置加載,配置數(shù)據(jù)源由數(shù)據(jù)分配模塊(2-8)送入;
[0039]所述刷新控制模塊(2-10),用于實現(xiàn)在不影響系統(tǒng)正常工作的情況下,對SRAM型FPGA(1-1)的配置存儲單元進(jìn)行刷新;使SRAM型FPGA (1-1)中發(fā)生SEU的配置存儲單元的存儲值得以糾正,從而恢復(fù)SRAM型FPGA(1-1)原有的功能;
[0040]所述數(shù)據(jù)選擇模塊(2-11),用于選擇SRAM型FPGA(1-1)的配置SelectMAP接口通路,選擇是由加載控制模塊(2-9)接管還是刷新控制模塊接管;當(dāng)系統(tǒng)剛上電、SRAM型FPGA(1-1)配置加載不成功或者外部送入SRAM型FPGA(1-1)重加載指令時,由加載控制模塊(2-9)接管SRAM型FPGA(1-1)配置SelectMAP接口;當(dāng)SRAM型FPGA(1-1)配置加載成功且外部送入刷新使能開指令后,由刷新控制模塊(2-10)接管SRAM型FPGA(1-1)的配置SelectMAP 接口。
[0041]本發(fā)明的一個實施例中,所述刷新控制模塊(2-10)包括刷新文件生成模塊(4-1)、刷新文件命令字ROM(4-2)、以及FPGA刷新端口控制模塊(4_3),其中:
[0042]所述刷新文件生成模塊(4-1),用于實現(xiàn)在輸入的配置數(shù)據(jù)流中提取刷新文件,刷新文件生成模塊(4-1)在收到的配置數(shù)據(jù)流中找配置同步字段,然后開始從刷新文件命令字ROM(4-2)中讀取刷新文件命令頭,生成刷新文件,送至FPGA刷新端口控制模塊(4_3)輸出給FPGA ;
[0043]所述刷新文件命令字ROM (4-2),其內(nèi)部包含兩部分存儲區(qū)域,第一個區(qū)域內(nèi)容為刷新起始和結(jié)束命令,由輸入cmd_addr進(jìn)行尋址;第二個區(qū)域內(nèi)容為起始地址、配置數(shù)據(jù)量以及CRC校驗值,由輸入adrnumcrc_addr進(jìn)行尋址;
[0044]所述FPGA刷新端口模塊(4-3),用于控制SRAM型FPGA (1_1)的配置SelectMAP口,接收到刷新文件生成模塊(4-1)輸出的帶有效信號的刷新數(shù)據(jù)流送至SelectMAP 口的數(shù)據(jù)線,同時將數(shù)據(jù)有效信號反向之后送至CS_B引腳,刷新期間,PROG信號一直為高,F(xiàn)PGA刷新端口控制模塊(4-3)不控PROG信號。
[0045]本發(fā)明的一個實施例中,所述EEPROM糾錯模塊(2_6)對在軌升級程序存放芯片EEPROM(1-4)按頁進(jìn)行校驗,具體檢驗過程如下:
[0046](3-1)判斷EEPROM EDAC使能是否打開,如果使能打開,進(jìn)入下一步(3_2),開始EEPROM數(shù)據(jù)糾正過程;否則,繼續(xù)循環(huán)判斷EDAC使能;
[0047](3-2)糾錯模塊每次從在軌升級程序存放芯片EEPR0M(1_4)中讀取一頁數(shù)據(jù),數(shù)據(jù)讀取過程中同時進(jìn)行判斷(3-3);
[0048](3-3)從在軌升級程序存放芯片EEPR0M(1_4)讀取數(shù)據(jù)過程中,利用漢明碼校驗判斷是否需要糾錯,如果不需要糾錯,則進(jìn)入(3-4),否則進(jìn)入(3-9);
[0049](3-4)如果漢明校驗沒有錯誤,繼續(xù)進(jìn)行和校驗,根據(jù)讀出數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-5);
[0050](3-5)將(3-4)中計算的校驗和與讀出數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-6);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16);
[0051](3-6)清空讀出數(shù)據(jù)緩存,進(jìn)入(3-7);
[0052](3-7)判斷EEPROM校驗是否完成,如果在軌升級程序存放芯片EEPR0M(1_4)內(nèi)部數(shù)據(jù)都已經(jīng)經(jīng)過校驗,則校驗完成,進(jìn)入(3-18),否則繼續(xù)進(jìn)行校驗,進(jìn)入(3-8);
[0053](3-8)在軌升級程序存放芯片EEPROM (1-4)數(shù)據(jù)頁地址加1,轉(zhuǎn)(3_2),循環(huán)進(jìn)入下一頁校驗;
[0054](3-9)在(3-3)中判斷需要糾錯后,如果錯誤是可以糾正的,則進(jìn)入(3_10)進(jìn)行糾錯,否則,轉(zhuǎn)入(3-16);
[0055](3-10)通過漢明碼進(jìn)行糾錯,將數(shù)據(jù)中的錯誤比特糾正后,進(jìn)入(3-11);
[0056](3-11)根據(jù)漢明碼糾錯以后的數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-12);
[0057](3-12)將(3-11)中計算的校驗和與糾錯以后數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-13);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16);
[0058](3-13)將糾錯以后的數(shù)據(jù)寫入數(shù)據(jù)緩存中,等待讀出,在(3-14)中讀出數(shù)據(jù)緩存中的數(shù)據(jù);
[0059](3-14)讀出數(shù)據(jù)緩存中的數(shù)據(jù),讀出同時進(jìn)行(3-15)的操作;
[0060](3-15)用頁寫模式把緩存中讀出的數(shù)據(jù)寫入到在軌升級程序存放芯片EEPROM(1-4)對應(yīng)地址中,寫入完成后進(jìn)入(3-6);
[0061](3-16)如果一次漢明編碼中出現(xiàn)了兩位及兩位以上錯誤,此時EEPROM糾錯模塊(2-6)停止對該頁數(shù)據(jù)的讀操作,并將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,或者在一頁數(shù)據(jù)和校驗對比不通過時,同樣將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,等待(3-17);
[0062](3-17)流程一旦進(jìn)入(3-17)步驟,說明在軌升級程序存放芯片EEPR0M(1_4)存儲的當(dāng)前頁數(shù)據(jù)中出現(xiàn)了不能糾正的錯誤,該頁數(shù)據(jù)只能通過地面上傳才能得以更新;EEPROM糾錯模塊(2-6)則將該頁的起始地址轉(zhuǎn)換成序號,并將包序號寫入錯誤包序號隊列中;遙測遙控模塊從該隊列中讀取錯誤的包序號并下傳地面。
[0063]本發(fā)明的一個實施例中,所述加載控制模塊(2-9)的配置步驟如下:
[0064](9.1)上電后,或需要重新配置時,綜合管理FPGA(l-2)先將SRAM型FPGA(1_1)的引腳PROG_B,INIT_B,RDWR_B拉低,此時置配置程序存儲芯片PROM (1-3)的CE和RESET/0E無效;
[0065](9.2)當(dāng)?shù)却龝r間超過設(shè)定閾值TPOR后,綜合管理FPGA(1_2)將PR0G_B拉高;PR0G_B拉高后,等待一段時間綜合管理FPGA (1-2)將INIT_B拉高;
[0066](9.3) INIT_B拉高后,等待幾個CLK時鐘周期,將SRAM型FPGA (1_1)的CS_B接取反后的配置數(shù)據(jù)有效信號,同時將配置程序存儲芯片PROM(1-3)的RESET/0E和CE使能;
[0067](9.4) SRAM型FPGA (1-1)進(jìn)行配置,如果中間檢測到INIT_B引腳出現(xiàn)低電平,說明有CRC校驗錯誤,回到步驟(9.1)重新配置;
[0068](9.5)如果等待一段時間后發(fā)現(xiàn)INIT_B不為低,但DONE信號一直為0,表示配置不成功,同樣回到(9.1)步驟重新配置;
[0069](9.6)如果檢測到INIT_B為高,DONE為高那么SRAM型FPGA(1-1)配置成功,將配置程序存儲芯片PROM (1-3)的CE及RESET/0E置為無效,配置完成。
[0070]本發(fā)明的一個實施例中,所述FPGA刷新文件生成模塊(4-1)生成FPGA刷新文件的流程為:
[0071](6-1)循環(huán)檢測刷新使能,檢測到刷新使能開則進(jìn)入(6-2),否則繼續(xù)循環(huán)檢測;
[0072](6-2)開始刷新過程,刷新文件生成模塊(4-1)開始接收從配置程序存儲芯片PROM(1-3)或在軌升級程序存放芯片EEPROM(1-4)中連續(xù)讀出配置文件數(shù)據(jù),并同時進(jìn)行(6-3)及后續(xù)操作;
[0073](6-3)對¢-2)中連續(xù)讀出數(shù)據(jù)中進(jìn)行序列檢測,判斷讀出數(shù)據(jù)中是否有啟動命令序列AA995566,檢測到啟動命令后進(jìn)入(6_4),否則繼續(xù)循環(huán)檢測;
[0074](6-4)檢測到啟動命令后,開始對讀出數(shù)據(jù)字節(jié)進(jìn)行計數(shù),計數(shù)到距配置幀數(shù)據(jù)1(5-3)有N (N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入¢-5),否則繼續(xù)計數(shù);
[0075](6-5)開始從刷新文件命令字ROM(4-2)中讀出第一部分N個字節(jié)的刷新啟動命令集(5-8),伴隨數(shù)據(jù)有效信號輸出到FPGA刷新端口控制模塊(4-3),N字節(jié)輸出完成后,進(jìn)入(6-6);
[0076](6_6)N字節(jié)的刷新啟動命令集(5-8)輸出完成后,無縫地將接收到的配置幀數(shù)據(jù)1(5-3)和數(shù)據(jù)有效信號輸出,對應(yīng)為刷新文件的配置幀數(shù)據(jù)1(5-9)和數(shù)據(jù)有效信號,輸出完成后,進(jìn)入(6-7);
[0077](6-7)配置幀數(shù)據(jù)I (5-9)輸出完成以后連續(xù)輸出一個配置幀大小的全O填充數(shù)據(jù)(5-10)及其數(shù)據(jù)有效信號,輸出完成后,無縫切換到(6-8);
[0078](6-8)從刷新文件命令字ROM(4-2)中讀出第一部分刷新結(jié)束命令集(5_11),第一部分刷新文件完成,進(jìn)入出-9);
[0079](6-9)對(6-2)中接收的配置數(shù)據(jù)字節(jié)計數(shù)進(jìn)行判斷,計數(shù)到距配置幀數(shù)據(jù)2(5-5)有N(N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入¢-10),否則繼續(xù)計數(shù);
[0080](6-10)?(6-13)開始第二部分刷新文件的生成,各個流程的操作分別與(6_5)?(6-8),只是對應(yīng)的刷新啟動命令集和配置幀數(shù)據(jù)內(nèi)容對應(yīng)為第二部分刷新文件中的內(nèi)容。完成后進(jìn)入(6_14);
[0081](6-14)過渡階段,標(biāo)志著一次完整的刷新文件生成過程結(jié)束,進(jìn)入(6-15);
[0082](6-15)延時等待,直到距離(6-5)開始的時間等于一個刷新周期,再次進(jìn)入(6-1),循環(huán)以上步驟進(jìn)行周期刷新。
[0083]本發(fā)明的一個實施例中,所述配置程序存儲芯片PROM(l_3)選用Xilinx公司的XQR17V16反熔絲芯片;所述在軌升級程序存放芯片EEPR0M(l-4)選用2片3D_plus公司的3DEE8M08VS8190MB 芯片;所述 SRAM 型 FPGA(1-1)選用 Xilinx 公司的 XQR2V3000 芯片;所述遙測遙控接口(1-5)選用Intersil公司的HS9-26CLV3IRH-Q芯片作為RS422差分信號接收器,選用Intersil公司的HS9-26CLV32RH-Q芯片作為RS422差分信號驅(qū)動器;所述綜合管理FPGA (1-2)選用Actel公司的反熔絲FPGAAX2000。
[0084]和以往傳統(tǒng)技術(shù)相比,本發(fā)明所提出的SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng)具有以下有益效果:
[0085](I)物理上增加了在軌升級程序存放芯片EEPROM,綜合管理FPGA內(nèi)部增加了遙測遙控模塊、上傳數(shù)據(jù)接收模塊、寫EEPROM模塊、讀EEPROM模塊和EEPROM糾錯模塊,可以通過星地鏈路將SRAM型FPGA (1-1)的配置程序打包后以固定的數(shù)據(jù)幀格式從地面上傳,經(jīng)過遙測遙控模塊(2-2)解析出配置程序數(shù)據(jù),上傳數(shù)據(jù)接收模塊對配置程序數(shù)據(jù)實施檢糾錯算法,在加入錯誤校驗數(shù)據(jù)以后,通過寫EEPROM模塊將所有數(shù)據(jù)寫入在軌升級程序存放芯片EEPROM中。從EEPROM配置或刷新SRAM型FPGA時,讀EEPROM模塊從在軌升級程序存放芯片EEPROM中讀出數(shù)據(jù)并進(jìn)行解碼輸出,對SRAM型FPGA進(jìn)行配置。這樣就可以從地面更新升級星上FPGA程序和功能,一顆在軌衛(wèi)星在其數(shù)年或數(shù)十年的工作時間內(nèi),其功能可以根據(jù)客戶需求的變更進(jìn)行改進(jìn)升級,打破了衛(wèi)星一旦上天便無法改變其功能的局面,提高了衛(wèi)星的靈活性和通用性。并且,在沒有進(jìn)行從在軌升級程序存放芯片EEPROM中啟動或者刷新操作時,可以開啟EEPROM檢糾錯功能,通過存儲在在軌升級程序存放芯片EEPROM中的配置程序和錯誤校驗數(shù)據(jù),檢測糾正受SEU影響翻轉(zhuǎn)的比特位,如果不能糾正,則下傳地面,重新上傳對應(yīng)數(shù)據(jù)包,顯著提高了 EEPROM的抗SEU能力;
[0086](2)由于系統(tǒng)中增加了遙測遙控模塊,可以通過地面遙測遙控指令的方式,綜合管理FPGA可以控制SRAM型FPGA從配置程序存儲芯片PROM或者在軌升級程序存放芯片EEPROM中配置和刷新,并且可以設(shè)置SRAM型FPGA刷新開啟或關(guān)閉以及刷新周期,對SRAM型FPGA進(jìn)行動態(tài)刷新,可以減少回讀所需時間及資源消耗,并且根據(jù)星上輻照環(huán)境來靈活調(diào)節(jié)刷新周期,可以在保證不影響SRAM型FPGA正常工作的條件下,達(dá)到降低系統(tǒng)功耗的有益效果;
[0087](3)刷新控制模塊能夠在從配置程序存儲芯片PROM或者在軌升級程序存放芯片EEPROM讀出原始配置數(shù)據(jù)的時序下,配合從刷新文件命令字ROM中讀出數(shù)據(jù),通過數(shù)據(jù)替換的方式,把原始配置數(shù)據(jù)的配置啟動命令集、BRAM配置幀數(shù)據(jù)、填充數(shù)據(jù)和配置結(jié)束命令集替換為刷新文件命令字ROM中讀出的相應(yīng)字段,從配置文件中生成刷新文件,不需要設(shè)置專門用于存儲刷新文件的外存儲器,取得了減少存儲空間,降低板上布線復(fù)雜度和節(jié)約物理空間的效果;
[0088](4)總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,由于配置、刷新可遙控,刷新文件從配置文件提取生成,內(nèi)部程序可升級,取得了提升抗SEU能力、減小存儲需求、控制靈活性好、電路功能可升級等一系列的有益效果。
【專利附圖】
【附圖說明】
[0089]圖1是本發(fā)明的硬件電路連接圖;
[0090]圖2是本發(fā)明中綜合管理FPGA內(nèi)部電路模塊框圖;
[0091]圖3是本發(fā)明中EEPROM糾錯模塊工作流程圖;
[0092]圖4是本發(fā)明中刷新控制模塊組成示意圖;
[0093]圖5是本發(fā)明中SRAM型FPGA配置文件和刷新文件對比圖;
[0094]圖6是本發(fā)明中SRAM型FPGA刷新文件生成流程圖。
【具體實施方式】
[0095]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0096]如圖1所示,本發(fā)明提供了一種SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng),所述系統(tǒng)包括:SRAM型FPGA (1-1)、綜合管理FPGA (1_2)、配置程序存儲芯片PROM(1_3)、在軌升級程序存放芯片EEPORM(1-4)、遙測遙控接口(1-5),具體地:
[0097](I)配置程序存儲芯片PROM(1-3)選用Xilinx公司的XQR17V16反熔絲芯片(容量16Mbit),用于存放SRAM型FPGA(1-1)的配置程序,在衛(wèi)星發(fā)射前固化好,上電之后默認(rèn)從配置程序存儲芯片PROM(1-3)中讀取配置程序配置SRAM型FPGA(1-1)。
[0098](2)在軌升級程序存放芯片EEPROM(1-4)選用2片3D_plus公司的3DEE8M08VS8190MB芯片(容量8Mbit X 2片),用于衛(wèi)星在軌運行時,存放在軌更新的程序。綜合管理FPGA(l-2)接收地面上注的程序包加入漢明校驗碼之后,寫入在軌升級程序存放芯片EEPR0M(l-4)中(兩片EEPROM采用深度擴(kuò)展的連接方式,數(shù)據(jù)線與地址線共用,通過片選信號CE來選通)。
[0099](3) SRAM型FPGA(1-1)選用Xilinx公司的XQR2V3000芯片,配置方式選用從并模式(Slave SelectMAP),配置口直接與綜合管理FPGA (1-2)相連,由綜合管理FPGA (1_2)控制所述SRAM型FPGA(1-1)的配置加載以及動態(tài)刷新。
[0100](4)遙測遙控接口(1-5)采用RS422電平標(biāo)準(zhǔn),選用Intersil公司的HS9-26CLV31RH-Q芯片作為RS422差分信號接收器,選用Intersil公司的HS9-26CLV32RH-Q芯片作為RS422差分信號驅(qū)動器。此RS422接口用于接收外部發(fā)送過來的遙控指令,同時下傳系統(tǒng)當(dāng)前的遙測狀態(tài)信息。
[0101](5)綜合管理FPGA(l-2)選用Actel公司的反熔絲FPGA AX2000,用于實現(xiàn)以下功會K:
[0102](a)接收并響應(yīng)地面遙控指令,返回系統(tǒng)遙測狀態(tài)信息;
[0103](b)實現(xiàn)接收地面上傳的SRAM型FPGA(1-1)程序數(shù)據(jù)包,解析包格式并加入校驗碼之后寫入在軌升級程序存放芯片EEPROM (1-4)中;
[0104](c)實現(xiàn)從配置存儲存儲芯片PROM(l-3)讀數(shù)據(jù)配置加載和動態(tài)刷新SRAM型FPGA(1-1);
[0105](d)實現(xiàn)從在軌升級程序存放芯片EERP0M(1_4)中讀數(shù)據(jù)配置加載和動態(tài)刷新SRAM 型 FPGA(1-1);
[0106](e)實現(xiàn)對在軌升級程序存放芯片EEPROM(1-4)的校驗回寫功能。
[0107]具體地,如圖2所示,所述綜合管理FPGA(1_2)包括如下模塊:通用異步串口模塊(2-1)、遙測遙控模塊(2-2)、上傳數(shù)據(jù)接收模塊(2-3)、寫EEPROM模塊(2_4)、讀EEPROM模塊(2-5) ,EEPROM糾錯模塊(2_6)、讀PROM模塊(2_7)、數(shù)據(jù)分配模塊(2_8)、加載控制模塊(2-9)、刷新控制模塊(2-10)和數(shù)據(jù)選擇模塊(2-11),其中:
[0108](I)通用異步串口模塊(2-1),用于采用標(biāo)準(zhǔn)通用異步收發(fā)器(UniversalAsynchronous Receiver/Transmitter, UART)協(xié)議,實現(xiàn)串行數(shù)據(jù)收發(fā)功能。
[0109](2)遙測遙控模塊(2-2),用于接收并解析遙控指令包生成的相應(yīng)的控制信號,送至對應(yīng)的模塊,對于上注程序數(shù)據(jù)包,解析包格式將數(shù)據(jù)送至上傳數(shù)據(jù)接收模塊(2-3)。遙測遙控模塊(2-2)還收集系統(tǒng)的所有遙測量信息,組合在一起輸出至地面控制臺。
[0110](3)上傳數(shù)據(jù)接收模塊(2-3),用于將上注程序包中的數(shù)據(jù)解析,加入漢明校驗碼,同時對每包數(shù)據(jù)計算一個和校驗,并根據(jù)上注程序數(shù)據(jù)包序號映射計算在軌升級程序存放芯片EEPROM(1-4)的頁地址,將數(shù)據(jù)與頁地址信號一起送至EEPROM寫模塊(2_4)。
[0111](4)寫EEPROM模塊(2_4),用于接收緩存的上注程序包數(shù)據(jù)或者EEPROM糾錯模塊(2-6)送入的校驗糾錯之后的數(shù)據(jù),加入漢明編碼之后寫入在軌升級程序存放芯片EEPROM(1-4)。
[0112](5)讀EEPROM模塊(2_5),用于實現(xiàn)對在軌升級程序存放芯片EEPROM (1_4)的讀數(shù)據(jù)操作,當(dāng)收到從EEPROM重新配置SRAM型FPGA(1-1)或者從EEPROM中動態(tài)刷新SRAM型FPGA(1-1)的指令時,從在軌升級程序存放芯片EEPROM(1-4)中讀配置數(shù)據(jù),控制時序按照芯片手冊要求。
[0113](6)EEPROM糾錯模塊(2_6),用于響應(yīng)遙測遙控模塊(2_2)生成的EEPROM糾錯使能信號,控制寫EEPROM模塊(2-4)和讀EEPROM模塊(2_5),對寫EEPROM模塊(2_4)和讀EEPROM模塊(2-5)按頁進(jìn)行校驗,模塊工作流程圖如圖3所示,具體流程如下。
[0114]EEPROM糾錯模塊(2_6)對在軌升級程序存放芯片EEPR0M(1_4)按頁進(jìn)行校驗(每頁數(shù)據(jù)128byte),圖3中流程中各個步驟解釋如下:
[0115](3-1)判斷EEPROM EDAC使能是否打開,如果使能打開,進(jìn)入下一步(3_2),開始EEPROM數(shù)據(jù)糾正過程;否則,繼續(xù)循環(huán)判斷EDAC使能;
[0116](3-2)糾錯模塊每次從在軌升級程序存放芯片EEPR0M(l-4)中讀取一頁數(shù)據(jù),數(shù)據(jù)讀取過程中同時進(jìn)行判斷(3-3);
[0117](3-3)從在軌升級程序存放芯片EEPR0M(1_4)讀取數(shù)據(jù)過程中,利用漢明碼校驗判斷是否需要糾錯,如果不需要糾錯,則進(jìn)入(3-4),否則進(jìn)入(3-9);
[0118](3-4)如果漢明校驗沒有錯誤,繼續(xù)進(jìn)行和校驗,根據(jù)讀出數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-5);
[0119](3-5)將(3-4)中計算的校驗和與讀出數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-6);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16);
[0120](3-6)清空讀出數(shù)據(jù)緩存,進(jìn)入(3-7);
[0121](3-7)判斷EEPROM校驗是否完成,如果在軌升級程序存放芯片EEPR0M(1_4)內(nèi)部數(shù)據(jù)都已經(jīng)經(jīng)過校驗,則校驗完成,進(jìn)入(3-18),否則繼續(xù)進(jìn)行校驗,進(jìn)入(3-8);
[0122](3-8)在軌升級程序存放芯片EEPR0M(l-4)數(shù)據(jù)頁地址加1,轉(zhuǎn)(3_2)循環(huán),進(jìn)入下一頁校驗;
[0123](3-9)在(3-3)中判斷需要糾錯后,如果錯誤是可以糾正的,則進(jìn)入(3_10)進(jìn)行糾錯,否則,轉(zhuǎn)入(3-16);
[0124](3-10)通過漢明碼進(jìn)行糾錯,將數(shù)據(jù)中的錯誤比特糾正后,進(jìn)入(3-11);
[0125](3-11)根據(jù)漢明碼糾錯以后的數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-12);
[0126](3-12)將(3-11)中計算的校驗和與糾錯以后數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-13);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16);
[0127](3-13)將糾錯以后的數(shù)據(jù)寫入數(shù)據(jù)緩存中,等待讀出,在(3-14)中讀出數(shù)據(jù)緩存中的數(shù)據(jù);
[0128](3-14)讀出數(shù)據(jù)緩存中的數(shù)據(jù),讀出同時進(jìn)行(3-15)的操作;
[0129](3-15)用頁寫模式把緩存中讀出的數(shù)據(jù)寫入到在軌升級程序存放芯片EEPROM(1-4)對應(yīng)地址中,寫入完成后進(jìn)入(3-6);
[0130](3-16)如果一次漢明編碼中出現(xiàn)了兩位及兩位以上錯誤,此時EEPROM糾錯模塊(2-6)立即停止對該頁數(shù)據(jù)的讀操作,并將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,或者在一頁數(shù)據(jù)和校驗對比不通過時,同樣將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,等待(3-17);
[0131](3-17)流程一旦進(jìn)入(3-17)步驟,說明在軌升級程序存放芯片EEPR0M(1_4)存儲的當(dāng)前頁數(shù)據(jù)中出現(xiàn)了無法糾正的錯誤,該頁數(shù)據(jù)只能通過地面上傳才能得以更新;EEPROM糾錯模塊(2-6)則將該頁的起始地址轉(zhuǎn)換成序號,并將包序號寫入錯誤包序號隊列中;遙測遙控模塊從該隊列中讀取錯誤的包序號并下傳地面。
[0132](7)讀PROM模塊(2_7),用于實現(xiàn)對配置程序存儲芯片PROM (1_3)的讀數(shù)據(jù)操作,當(dāng)系統(tǒng)上電、收到從配置程序存儲芯片PROM (1-3)重新配置SRAM型FPGA (1-1)的指令或者從配置程序存儲芯片PROM(1-3)中動態(tài)刷新SRAM型FPGA(1-1)時,從配置程序存儲芯片PROM(1-3)中讀配置數(shù)據(jù),控制時序按照芯片手冊要求。
[0133](8)數(shù)據(jù)分配模塊(2-8),用于實現(xiàn)對配置以及刷新數(shù)據(jù)源的選取,選擇信號由遙測遙控模塊(2-2)送入,控制選擇使用配置程序存儲芯片PROM(1-3)或者在軌升級程序存放芯片EEPR0M(l-4)數(shù)據(jù)對SRAM型FPGA(1-1)進(jìn)行配置。
[0134](9)加載控制模塊(2-9),用于實現(xiàn)對SRAM型FPGA(1-1)的上電配置加載和指令配置加載,配置數(shù)據(jù)源由數(shù)據(jù)分配模塊(2-8)送入。其配置步驟如下:
[0135](9.1)上電后,或需要重新配置時。綜合管理FPGA(1-2)先將SRAM型FPGA(1-1)的引腳PR0G_B,INIT_B,RDWR_B拉低,此時置PROM的CE和RESET/0E無效。
[0136](9.2)當(dāng)?shù)却龝r間超過設(shè)定閾值TPOR后(大于TP0R)后,綜合管理FPGA(1_2)將PR0G_B拉高。PR0G_B拉高后,等待一段時間綜合管理FPGA(1_2)將INIT_B拉高。
[0137](9.3) INIT_B拉高后,等待幾個CLK時鐘周期,將SRAM型FPGA(1-1)的CS_B接取反后的配置數(shù)據(jù)有效信號,同時將配置程序存儲芯片PROM(1-3)的RESET/0E和CE使能。
[0138](9.4)完成步驟(9.3)后,SRAM型FPGA(H)開始配置,如果中間檢測到INIT_B引腳出現(xiàn)低電平,說明有CRC校驗錯誤,必須回到步驟(9.1)重新配置。
[0139](9.5)如果等待一段時間后發(fā)現(xiàn)INIT_B不為低,但DONE信號一直為0,表示配置不成功。那么同樣回到(9.1)步驟重新配置。
[0140](9.6)如果檢測到INIT_B為高,DONE為高那么SRAM型FPGA(1_1)配置成功,可以將配置程序存儲芯片PROM (1-3)的CE及RESET/0E置為無效,配置完成。
[0141](10)刷新控制模塊(2-10),用于實現(xiàn)在不影響系統(tǒng)正常工作的情況下,對SRAM型FPGA(1-1)的配置存儲單元進(jìn)行刷新。使SRAM型FPGA(1-1)中發(fā)生SEU的配置存儲單元的存儲值得以糾正,從而恢復(fù)SRAM型FPGA(1-1)原有的功能。刷新控制模塊(2_10)包括三個子模塊,分別為刷新文件生成模塊(4-1)、刷新文件命令字ROM(4-2)和FPGA刷新端口控制模塊(4-3),如圖4所示,外部送入的數(shù)據(jù)源是配置數(shù)據(jù)流(從配置程序存儲芯片PROM(1-3)讀出的數(shù)據(jù)或者從在軌升級程序存放芯片EEPROM(1-4)中讀出并經(jīng)過漢明解碼的數(shù)據(jù)),經(jīng)過刷新文件生成模塊(4-1)以后輸出刷新文件,所述刷新控制模塊(4-1)具體包括如下子模塊:
[0142]刷新文件生成模塊(4-1),用于實現(xiàn)在輸入的配置數(shù)據(jù)流中提取刷新文件,而不需要專門的存儲器件存儲刷新文件,節(jié)約了資源。刷新文件和原始配置文件組成對比如圖5所示。刷新文件生成模塊(4-1)在收到的配置數(shù)據(jù)流中找配置同步字段,然后開始從刷新文件命令字ROM(4-2)中讀取刷新文件命令頭,生成刷新文件,送至FPGA刷新控制模塊(4-3)輸出給SRAM型FPGA(1-1)。刷新過程分兩階段,對應(yīng)的刷新文件也是兩個部分。第一部分的刷新文件是BRAM配置幀數(shù)據(jù)(5-4)之前的,對應(yīng)圖5中由(5_3)得到的(5_9)部分?jǐn)?shù)據(jù),第二部分的刷新文件是BRAM配置幀數(shù)據(jù)(5-4)之后的部分,對應(yīng)圖5中由(5-5)得到的(5-13)部分?jǐn)?shù)據(jù)。提取兩部分配置數(shù)據(jù),分別加上刷新命令字頭,對應(yīng)圖5中(5-8)和(5-12)部分?jǐn)?shù)據(jù),刷新填充數(shù)據(jù),對應(yīng)圖5中(5-10)和(5-14)部分?jǐn)?shù)據(jù),刷新命令字尾,對應(yīng)圖5中(5-11)和(5-15)部分?jǐn)?shù)據(jù),生成兩部分獨立的刷新文件。刷新命令字頭由刷新文件生成模塊生成地址計數(shù)碼,送至刷新文件命令字ROM讀出對應(yīng)的命令字,插入到刷新文件中。
[0143]刷新文件命令字ROM(4-2),共內(nèi)部包含兩部分存儲區(qū)域,第一個區(qū)域內(nèi)容為刷新起始和結(jié)束命令,由輸入cmd_addr進(jìn)行尋址;第二個區(qū)域內(nèi)容為起始地址、配置數(shù)據(jù)量以及CRC校驗值,由輸入adrnumcrc_addr進(jìn)行尋址。
[0144](10.3)綜合(10.1)、(10.2),F(xiàn)PGA刷新文件生成具體流程如圖6所示,具體流程解釋如下:
[0145](6-1)循環(huán)檢測刷新使能,檢測到刷新使能開則進(jìn)入(6-2),否則繼續(xù)循環(huán)檢測;
[0146](6-2)開始刷新過程,刷新文件生成模塊(4-1)開始接收從配置程序存儲芯片PROM(1-3)或在軌升級程序存放芯片EEPROM(1-4)中連續(xù)讀出配置文件數(shù)據(jù),并同時進(jìn)行(6-3)及后續(xù)操作;
[0147](6-3)對(6-2)中連續(xù)讀出數(shù)據(jù)中進(jìn)行序列檢測,判斷讀出數(shù)據(jù)中是否有啟動命令序列AA995566,檢測到啟動命令后進(jìn)入(6_4),否則繼續(xù)循環(huán)檢測;
[0148](6-4)檢測到啟動命令后,開始對讀出數(shù)據(jù)字節(jié)進(jìn)行計數(shù),計數(shù)到距配置幀數(shù)據(jù)1(5-3)有N (N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入¢-5),否則繼續(xù)計數(shù);
[0149](6-5)開始從刷新文件命令字ROM(4-2)中讀出第一部分N個字節(jié)的刷新啟動命令集(5-8),伴隨數(shù)據(jù)有效信號輸出到FPGA刷新端口控制模塊(4-3),N字節(jié)輸出完成后,進(jìn)入(6-6);
[0150](6_6)N字節(jié)的刷新啟動命令集(5-8)輸出完成后,無縫地將接收到的配置幀數(shù)據(jù)1(5-3)和數(shù)據(jù)有效信號輸出,對應(yīng)為刷新文件的配置幀數(shù)據(jù)1(5-9)和數(shù)據(jù)有效信號,輸出完成后,進(jìn)入(6-7);
[0151](6-7)配置幀數(shù)據(jù)I (5-9)輸出完成以后連續(xù)輸出一個配置幀大小的全O填充數(shù)據(jù)(5-10)及其數(shù)據(jù)有效信號,輸出完成后,無縫切換到(6-8);
[0152](6-8)從刷新文件命令字ROM(4-2)中讀出第一部分刷新結(jié)束命令集(5_11),第一部分刷新文件完成,進(jìn)入出-9);
[0153](6-9)對(6-2)中接收的配置數(shù)據(jù)字節(jié)計數(shù)進(jìn)行判斷,計數(shù)到距配置幀數(shù)據(jù)2(5-5)有N(N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入¢-10),否則繼續(xù)計數(shù);
[0154](6-10)?(6-13)開始第二部分刷新文件的生成,各個流程的操作分別與(6_5)?(6-8),只是對應(yīng)的刷新啟動命令集和配置幀數(shù)據(jù)內(nèi)容對應(yīng)為第二部分刷新文件中的內(nèi)容。完成后進(jìn)入(6_14);
[0155](6-14)過渡階段,標(biāo)志著一次完整的刷新文件生成過程結(jié)束,進(jìn)入(6-15);
[0156](6-15)延時等待,直到距離(6-5)開始的時間等于一個刷新周期,再次進(jìn)入(6-1),循環(huán)以上步驟進(jìn)行周期刷新。
[0157]FPGA刷新端口控制模塊(4-3),用于控制SRAM型FPGA (1-1)的配置SelectMAP 口,接收到刷新文件生成模塊(4-1)輸出的帶有效信號的刷新數(shù)據(jù)流送至SelectMAP 口的數(shù)據(jù)線,同時將數(shù)據(jù)有效信號反向之后送至CS_B引腳。刷新期間,PROG信號一直為高,F(xiàn)PGA刷新端口控制模塊(4-3)不控制PROG信號。
[0158](11)數(shù)據(jù)選擇模塊(2-11),用于選擇SRAM型FPGA(1-1)的配置SelectMAP接口通路,選擇是由加載控制模塊(2-9)接管還是刷新控制模塊(2-10)接管。當(dāng)系統(tǒng)剛上電、SRAM型FPGA (1-1)配置加載不成功或者外部送入SRAM型FPGA (1_1)重加載指令時,由加載控制模塊(2-9)接管SRAM型FPGA(1-1)配置SelectMAP接口;當(dāng)SRAM型FPGA(1-1)配置加載成功且外部送入刷新使能開指令后,由刷新控制模塊(2-10)接管SRAM型FPGA(1-1)配置 SelectMAP 接口。
[0159]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種SRAM型FPGA的配置、刷新與程序上注一體化系統(tǒng),其特征在于,所述系統(tǒng)包括:SRAM型FPGA(1-1)、綜合管理FPGA(1_2)、配置程序存儲芯片PROM(1_3)、在軌升級程序存放芯片EEPORM(1-4)、遙測遙控接口 (1-5),其中: 所述配置程序存儲芯片PROM(1-3)用于存放SRAM型FPGA(1-1)的配置程序,所述配置程序在衛(wèi)星發(fā)射前固化好,上電之后默認(rèn)從所述配置程序存儲芯片PR0M(l-3)中讀取配置程序配置所述SRAM型FPGA(1-1); 所述在軌升級程序存放芯片EEPR0M(l-4),用于衛(wèi)星在軌運行時,存放在軌更新的程序;所述在軌更新的程序,是由綜合管理FPGA(l-2)接收地面上注的程序包并加入漢明校驗碼之后,寫入所述在軌升級程序存放芯片EEPR0M(l-4)的;所述在軌升級程序存放芯片EEPROM(1-4)包括兩片EEPR0M,兩片EEPROM采用深度擴(kuò)展的連接方式,數(shù)據(jù)線與地址線共用,通過片選信號CE來選通; 所述SRAM型FPGA(1-1)的配置方式選用從并模式(Slave Select MAP),其配置口直接與綜合管理FPGA(l-2)相連,由綜合管理FPGA(1-2)控制所述SRAM型FPGA(1_1)的配置加載以及動態(tài)刷新; 所述遙測遙控接口(1-5),采用RS422電平標(biāo)準(zhǔn),包括RS422差分信號接收器和RS422差分信號驅(qū)動器,所述遙測遙控接口(1-5)用于接收外部發(fā)送過來的遙控指令,同時下傳系統(tǒng)當(dāng)前的遙測狀態(tài)信息; 所述綜合管理FPGA(l-2),用于實現(xiàn)以下功能: (a)接收并響應(yīng)地面遙控指令,返回系統(tǒng)遙測狀態(tài)信息; (b)接收地面上傳的SRAM型FPGA(1-1)程序數(shù)據(jù)包,解析包格式并加入校驗碼之后寫入所述在軌升級程序存放芯片EEPORM (1-4)中; (c)從所述配置存儲芯片PROM(1-3)讀數(shù)據(jù)配置加載和動態(tài)刷新SRAM型FPGA (1-1); (d)從所述在軌升級程序存放芯片EERP0M(l-4)中讀數(shù)據(jù)配置加載和動態(tài)刷新所述SRAM 型 FPGA(1-1); (e)對在軌升級程序存放芯片EEPROM(1-4)的校驗回寫。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述綜合管理FPGA(l-2)包括如下子模塊:通用異步串口模塊(2-1)、遙測遙控模塊(2-2)、上傳數(shù)據(jù)接收模塊(2-3)、寫EEPROM模塊(2-4)、讀EEPROM模塊(2_5)、EEPROM糾錯模塊(2_6)、讀PROM模塊(2_7)、數(shù)據(jù)分配模塊(2-8)、加載控制模塊(2-9)、刷新控制模塊(2-10)和數(shù)據(jù)選擇模塊(2-11),其中: 所述通用異步串口模塊(2-1),采用標(biāo)準(zhǔn)UART協(xié)議,用于實現(xiàn)串行數(shù)據(jù)收發(fā); 所述遙測遙控模塊(2-2),用于接收并解析遙控指令包生成的相應(yīng)的控制信號,送至對應(yīng)的模塊;對于上注程序數(shù)據(jù)包,解析包格式將數(shù)據(jù)送至上傳數(shù)據(jù)接收模塊(2-3);遙測遙控模塊(2-2)還用于收集系統(tǒng)的所有遙測量信息,組合在一起輸出至地面控制臺; 所述上傳數(shù)據(jù)接收模塊(2-3),用于將上注程序包中的數(shù)據(jù)解析,加入漢明校驗碼,同時對每包數(shù)據(jù)計算一個和校驗,并根據(jù)上注程序數(shù)據(jù)包序號映射計算在軌升級程序存放芯片EEPR0M(l-4)的頁地址,將數(shù)據(jù)與頁地址信號一起送至EEPROM寫模塊(2_4); 所述寫EEPROM模塊(2-4),用于接收緩存的上注程序包數(shù)據(jù)或者EEPROM糾錯模塊(2-6)送入的校驗糾錯之后的數(shù)據(jù),加入漢明編碼之后寫入在軌升級程序存放芯片EEPROM(1-4); 所述讀EEPROM模塊(2-5),用于實現(xiàn)對在軌升級程序存放芯片EEPROM (1-4)的讀數(shù)據(jù)操作,當(dāng)收到從EEPROM重新配置SRAM型(1_1) FPGA的指令或者從EEPROM中動態(tài)刷新SRAM型FPGA(1-1)時,從在軌升級程序存放芯片EEPROM(1-4)中讀配置數(shù)據(jù); 所述EEPROM糾錯模塊(2-6),用于響應(yīng)遙測遙控模塊(2_2)生成的EEPROM糾錯使能信號,控制寫EEPROM模塊(2-4)和讀EEPROM模塊(2_5),對寫EEPROM模塊(2_4)和讀EEPROM模塊(2-5)按頁進(jìn)行校驗; 所述讀PROM模塊(2-7),用于實現(xiàn)對配置程序存儲芯片PR0M(l-3)的讀數(shù)據(jù)操作,當(dāng)系統(tǒng)上電、收到從配置程序存儲芯片PR0M(l-3)重新配置SRAM型FPGA(1-1)的指令或者從配置程序存儲芯片PROM(1-3)中動態(tài)刷新SRAM型FPGA(1-1)時,從配置程序存儲芯片PROM(1-3)中讀配置數(shù)據(jù); 所述數(shù)據(jù)分配模塊(2-8),用于實現(xiàn)對配置以及刷新數(shù)據(jù)源的選取,選擇信號由遙測遙控模塊(2-2)送入,控制選擇使用配置程序存儲芯片PR0M(l-3)或者在軌升級程序存放芯片EEPROM(1-4)數(shù)據(jù)對SRAM型FPGA(1-1)進(jìn)行配置; 所述加載控制模塊(2-9),用于實現(xiàn)對SRAM型FPGA(1-1)的上電配置加載和指令配置加載,配置數(shù)據(jù)源由數(shù)據(jù)分配模塊(2-8)送入; 所述刷新控制模塊(2-10),用于實現(xiàn)在不影響系統(tǒng)正常工作的情況下,對SRAM型FPGA(1-1)的配置存儲單元進(jìn)行刷新;使SRAM型FPGA (1-1)中發(fā)生SEU的配置存儲單元的存儲值得以糾正,從而恢復(fù)SRAM型FPGA(1-1)原有的功能; 所述數(shù)據(jù)選擇模塊(2-11),用于選擇SRAM型FPGA(1-1)的配置SelectMAP接口通路,選擇是由加載控制模塊(2-9)接管還是刷新控制模塊接管;當(dāng)系統(tǒng)剛上電、SRAM型FPGA(1-1)配置加載或者外部送入SRAM型FPGA(1-1)重加載指令時,由加載控制模塊(2-9)接管SRAM型FPGA(1-1)配置SelectMAP接口 ;當(dāng)SRAM型FPGA(1-1)配置加載成功且外部送入刷新使能開指令后,由刷新控制模塊(2-10)接管SRAM型FPGA(1-1)的配置SelectMAP 接口。
3.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述刷新控制模塊(2-10)包括刷新文件生成模塊(4-1)、刷新文件命令字ROM(4-2)、以及FPGA刷新端口控制模塊(4_3),其中: 所述刷新文件生成模塊(4-1),用于實現(xiàn)在輸入的配置數(shù)據(jù)流中提取刷新文件,刷新文件生成模塊(4-1)在收到的配置數(shù)據(jù)流中找配置同步字段,然后開始從刷新文件命令字ROM(4-2)中讀取刷新文件命令頭,生成刷新文件,送至FPGA刷新端口控制模塊(4_3)輸出給 FPGA ; 所述刷新文件命令字R0M(4-2),其內(nèi)部包含兩部分存儲區(qū)域,第一個區(qū)域內(nèi)容為刷新起始和結(jié)束命令,由輸入cmd_addr進(jìn)行尋址;第二個區(qū)域內(nèi)容為起始地址、配置數(shù)據(jù)量以及CRC校驗值,由輸入adrnumcrc_addr進(jìn)行尋址; 所述FPGA刷新端口模塊(4-3),用于控制SRAM型FPGA (1_1)的配置SelectMAP 口,接收到刷新文件生成模塊(4-1)輸出的帶有效信號的刷新數(shù)據(jù)流送至SelectMAP 口的數(shù)據(jù)線,同時將數(shù)據(jù)有效信號反向之后送至CS_B引腳,刷新期間,PROG信號一直為高,F(xiàn)PGA刷新端口控制模塊(4-3)不控制PROG信號。
4.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述EEPROM糾錯模塊(2_6)對在軌升級程序存放芯片EEPROM(1-4)按頁進(jìn)行校驗,具體檢驗過程如下: (3-1)判斷EEPROM EDAC使能是否打開,如果使能打開,進(jìn)入下一步(3_2),開始EEPROM數(shù)據(jù)糾正過程;否則,繼續(xù)循環(huán)判斷EDAC使能; (3-2)糾錯模塊每次從在軌升級程序存放芯片EEPR0M(l-4)中讀取一頁數(shù)據(jù),數(shù)據(jù)讀取過程中同時進(jìn)行判斷(3-3); (3-3)從在軌升級程序存放芯片EEPROM(1-4)讀取數(shù)據(jù)過程中,利用漢明碼校驗判斷是否需要糾錯,如果不需要糾錯,則進(jìn)入(3-4),否則進(jìn)入(3-9); (3-4)如果漢明校驗沒有錯誤,繼續(xù)進(jìn)行和校驗,根據(jù)讀出數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-5); (3-5)將(3-4)中計算的校驗和與讀出數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-6);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16); (3-6)清空讀出數(shù)據(jù)緩存,進(jìn)入(3-7); (3-7)判斷EEPROM校驗是否完成,如果在軌升級程序存放芯片EEPROM (1-4)內(nèi)部數(shù)據(jù)都已經(jīng)經(jīng)過校驗,則校驗完成,進(jìn)入(3-18),否則繼續(xù)進(jìn)行校驗,進(jìn)入(3-8); (3-8)在軌升級程序存放芯片EEPROM(1-4)數(shù)據(jù)頁地址加1,轉(zhuǎn)(3_2),循環(huán)進(jìn)入下一頁校驗; (3-9)在(3-3)中判斷需要糾錯后,如果錯誤是可以糾正的,則進(jìn)入(3-10)進(jìn)行糾錯,否則,轉(zhuǎn)入(3-16); (3-10)通過漢明碼進(jìn)行糾錯,將數(shù)據(jù)中的錯誤比特糾正后,進(jìn)入(3-11); (3-11)根據(jù)漢明碼糾錯以后的數(shù)據(jù)計算一個校驗和,然后進(jìn)行和校驗判斷(3-12); (3-12)將(3-11)中計算的校驗和與糾錯以后數(shù)據(jù)中的校驗和字段進(jìn)行對比,相同則和校驗通過,進(jìn)入(3-13);不相同表示則和校驗不通過,轉(zhuǎn)入(3-16); (3-13)將糾錯以后的數(shù)據(jù)寫入數(shù)據(jù)緩存中,等待讀出,在(3-14)中讀出數(shù)據(jù)緩存中的數(shù)據(jù); (3-14)讀出數(shù)據(jù)緩存中的數(shù)據(jù),讀出同時進(jìn)行(3-15)的操作; (3-15)用頁寫模式把緩存中讀出的數(shù)據(jù)寫入到在軌升級程序存放芯片EEPR0M(l-4)對應(yīng)地址中,寫入完成后進(jìn)入(3-6); (3-16)如果一次漢明編碼中出現(xiàn)了兩位及兩位以上錯誤,此時EEPROM糾錯模塊(2_6)停止對該頁數(shù)據(jù)的讀操作,并將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,或者在一頁數(shù)據(jù)和校驗對比不通過時,同樣將該頁地址轉(zhuǎn)成包序號存儲到錯誤頁地址隊列中,等待(3-17); (3-17)流程一旦進(jìn)入(3-17)步驟,說明在軌升級程序存放芯片EEPROM(1-4)存儲的當(dāng)前頁數(shù)據(jù)中出現(xiàn)了無法糾正的錯誤,該頁數(shù)據(jù)只能通過地面上傳才能得以更新;EEPROM糾錯模塊(2-6)則將該頁的起始地址轉(zhuǎn)換成序號,并將包序號寫入錯誤包序號隊列中;遙測遙控模塊從該隊列中讀取錯誤的包序號并下傳地面。
5.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述加載控制模塊(2-9)的配置步驟如下: (9.1)上電后,或需要重新配置時,綜合管理FPGA(l-2)先將SRAM型FPGA(1-1)的引腳PR0G_B,INIT_B,RDWR_B拉低,此時置配置程序存儲芯片PROM (1_3)的CE和RESET/0E無效; (9.2)當(dāng)?shù)却龝r間超過設(shè)定閾值TPOR后,綜合管理FPGA (1-2)將PR0G_B拉高;PR0G_B拉高后,等待一段時間綜合管理FPGA (1-2)將INIT_B拉高; (9.3) INIT_B拉高后,等待幾個CLK時鐘周期,將SRAM型FPGA(1-1)的CS_B接取反后的配置數(shù)據(jù)有效信號,同時將配置程序存儲芯片PROM(1-3)的RESET/0E和CE使能; (9.4) SRAM型FPGA(1-1)進(jìn)行配置,如果中間檢測到INIT_B引腳出現(xiàn)低電平,說明有CRC校驗錯誤,回到步驟(9.1)重新配置; (9.5)如果等待一段時間后發(fā)現(xiàn)INIT_B不為低,但DONE信號一直為0,表示配置不成功,同樣回到(9.1)步驟重新配置; (9.6)如果檢測到INIT_B為高,DONE為高那么SRAM型FPGA (1_1)配置成功,將配置程序存儲芯片PROM (1-3)的CE及RESET/0E置為無效,配置完成。
6.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述FPGA刷新文件生成模塊(4-1)生成FPGA刷新文件的流程為: (6-1)循環(huán)檢測刷新使能,檢測到刷新使能開則進(jìn)入(6-2),否則繼續(xù)循環(huán)檢測; (6-2)開始刷新過程,刷新文件生成模塊(4-1)開始接收從配置程序存儲芯片PROM(1-3)或在軌升級程序存放芯片EEPROM(1-4)中連續(xù)讀出配置文件數(shù)據(jù),并同時進(jìn)行(6-3)及后續(xù)操作; (6-3)對¢-2)中連續(xù)讀出數(shù)據(jù)中進(jìn)行序列檢測,判斷讀出數(shù)據(jù)中是否有啟動命令序列AA995566,檢測到啟動命令后進(jìn)入(6_4),否則繼續(xù)循環(huán)檢測; (6-4)檢測到啟動命令后,開始對讀出數(shù)據(jù)字節(jié)進(jìn)行計數(shù),計數(shù)到距配置幀數(shù)據(jù)1(5-3)有N (N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入¢-5),否則繼續(xù)計數(shù); (6-5)開始從刷新文件命令字ROM(4-2)中讀出第一部分N個字節(jié)的刷新啟動命令集(5-8),伴隨數(shù)據(jù)有效信號輸出到FPGA刷新端口控制模塊(4-3),N字節(jié)輸出完成后,進(jìn)入(6-6); (6-6)N字節(jié)的刷新啟動命令集(5-8)輸出完成后,無縫地將接收到的配置幀數(shù)據(jù)1(5-3)和數(shù)據(jù)有效信號輸出,對應(yīng)為刷新文件的配置幀數(shù)據(jù)1(5-9)和數(shù)據(jù)有效信號,輸出完成后,進(jìn)入(6-7); (6-7)配置幀數(shù)據(jù)1(5-9)輸出完成以后連續(xù)輸出一個配置幀大小的全O填充數(shù)據(jù)(5-10)及其數(shù)據(jù)有效信號,輸出完成后,無縫切換到(6-8); (6-8)從刷新文件命令字ROM(4-2)中讀出第一部分刷新結(jié)束命令集(5-11),第一部分刷新文件完成,進(jìn)入出-9); (6-9)對(6-2)中接收的配置數(shù)據(jù)字節(jié)計數(shù)進(jìn)行判斷,計數(shù)到距配置幀數(shù)據(jù)2(5-5)有N (N代表刷新文件啟動命令集(5-8)的字節(jié)數(shù))個字節(jié)的位置時,進(jìn)入(6-10),否則繼續(xù)計數(shù); (6-10)?(6-13)開始第二部分刷新文件的生成,各個流程的操作分別與(6-5)?(6-8),只是對應(yīng)的刷新啟動命令集和配置幀數(shù)據(jù)內(nèi)容對應(yīng)為第二部分刷新文件中的內(nèi)容。完成后進(jìn)入(6_14); (6-14)過渡階段,標(biāo)志著一次完整的刷新文件生成過程結(jié)束,進(jìn)入(6-15); (6-15)延時等待,直到距離(6-5)開始的時間等于一個刷新周期,再次進(jìn)入(6-1),循環(huán)以上步驟進(jìn)行周期刷新。
7.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述配置程序存儲芯片PR0M(l-3)選用Xilinx公司的XQR17V16反熔絲芯片;所述在軌升級程序存放芯片EEPR0M(1_4)選用2片 3D-plus 公司的 3DEE8M08VS8190MB 芯片;所述 SRAM 型 FPGA(1-1)選用 Xilinx 公司的XQR2V3000芯片;所述遙測遙控接口(1-5)選用Intersil公司的HS9-26CLV31RH-Q芯片作為RS422差分信號接收器,選用Intersil公司的HS9-26CLV32RH-Q芯片作為RS422差分信號驅(qū)動器;所述綜合管理FPGA(l-2)選用Actel公司的反熔絲FPGA AX2000。
【文檔編號】G06F9/445GK104484214SQ201410851497
【公開日】2015年4月1日 申請日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月30日
【發(fā)明者】顏露新, 張?zhí)煨? 顏釗, 吳康, 陳立群, 鐘勝 申請人:華中科技大學(xué)