抗單粒子翻轉的sram型fpga刷新電路及刷新方法
【專利摘要】抗單粒子翻轉的SRAM型FPGA刷新電路及刷新方法,涉及現場可編程門陣列的空間抗單粒子翻轉領域,解決現有SRAM型FPGA刷新電路及方法利用外部控制器實現對配置命令和配置數據的重新加載,存在電路復雜度高,控制器存在不穩定性等問題,采用兩片相同的存儲器,BOOT存儲了完整的配置文件,配置文件中包含了用戶要實現的功能模塊和FGPA實現自身刷新的刷新模塊,SCRUB存儲了編輯后的配置文件,FPGA加載完第一片存儲器后,刷新模塊啟動進入刷新模式,通過周期性地讀取SCRUB存儲器中的配置文件,實現FPGA正常工作下的周期刷新。本發明有效地降低FPGA刷新的功耗和電路復雜度。
【專利說明】抗單粒子翻轉的SRAM型FPGA刷新電路及刷新方法
【技術領域】
[0001]本發明涉及現場可編輯門陣列【技術領域】,具體涉及利用兩片存儲器實現一種SRAM型FPGA抗單粒子翻轉的刷新電路及方法。
【背景技術】
[0002]基于靜態隨機存儲器(staticrandomaccessmemory, SRAM)的FPGA因其功能配置方面的多樣性與可重復性,應用體積小與研發周期短等顯著特點,被廣泛應用到航天領域,盡管相較于專用集成電路和反熔絲構型的FPGA更容易受到單粒子(singleeventeffect,SEE)的影響,但其突出的優越性使其仍然承擔著空間環境下飛行器的姿控、數傳和圖像處理等艱巨任務,并且逐步演變成一種趨勢
[0003]由于空間高能粒子影響較大,SRAM型FPGA內部配置存儲器的邏輯狀態常常由于粒子撞擊而翻轉,即發生單粒子翻轉。如果翻轉發生在存儲器中,使能信號被重置;如果發生在邏輯功能區,可能導致航天器功能中斷,無論發生哪種可能都會對航天器產生巨大影響。
[0004]Xilinx公司第一代VirtexFPGA開始,關于SRAM型FPGA的容錯研究不斷開,抗福照設計和三模冗余(TMR)設計不斷應用。TMR設計的應用已不能滿足FPGA長時間的可靠性,內部的單粒子翻轉的積累可能導致TMR的錯誤,為了糾正FPGA需要按照一定的頻率清除所有翻轉位,一種方法是比特流的回讀,當檢測到翻轉位時進行重加載,這個方法需要消耗大量的時間。另外一種簡單的抗SEU的方法是忽略回讀檢測步驟,只重新加載整個CLB幀塊和BRAM內聯幀塊,這種方法叫做刷新,刷新本質上要求較少的系統資源,但是這意味著配置邏輯很大的時間是在“寫模式”,一次完整刷新的周期需要被設定的相對較短。刷新允許系統修復配置存儲器上的所有SEU而不打斷系統正常運行。通常的刷新方法是利用外部控制器實現對配置命令和配置數據的重新加載,該方法電路復雜度高,控制器也存在一定的不穩定性,有必要提出一種電路復雜度低、功耗低、可靠性更高的抗單粒子翻轉電路。
【發明內容】
[0005]本發明為解決現有SRAM型FPGA刷新電路及方法利用外部控制器實現對配置命令和配置數據的重新加載,存在電路復雜度高,控制器存在不穩定性等問題,提供一種抗單粒子翻轉的SRAM型FPGA刷新電路及刷新方法。
[0006]抗單粒子翻轉的SRAM型FPGA刷新電路,包括BOOT存儲器和SCRUB存儲器;所述BOOT存儲器用于存儲用戶功能模塊,SCRUB存儲器用于存儲對BOOT存儲器中的配置文件重新編輯后的配置文件,所述BOOT存儲器通過數據線和控制線實現對FPGA的加載;加載完成后,FPGA內部的刷新電路周期性的控制1/0 口,所述1/0 口與SCRUB存儲器的控制端連接;控制SCRUB存儲器中的配置文件周期性加載到FPGA中。
[0007]抗單粒子翻轉的SRAM型FPGA刷新電路的刷新方法,該方法由以下步驟實現:
[0008]步驟一、采用燒寫器將完整的配置文件燒寫到BOOT存儲器,同時刷新配置文件燒寫到SCRUB存儲器;
[0009]步驟二、對刷新電路上電后,FPGA清除內部配置數據,等待初始化完成;
[0010]步驟三、FPGA初始化成功后,BOOT存儲器開始配置數據,經過Tl毫秒后,BOOT存儲器配置完成,FPGA正常工作,FPGA內的刷新模塊功能啟動;所述Tl為FPGA完成一次完整配置的時間;
[0011]步驟四、T2毫秒后,FPGA進入自動刷新模塊,刷新模塊控制相應I/O 口,周期性地控制SCRUB存儲器工作,所述SCRUB存儲器內的刷新配置文件將加載到FPGA中;所述T2為等待刷新的時間;
[0012]步驟五、T3毫秒后,刷新配置文件加載完成,FPGA內的刷新模塊控制SCRUB存儲器停止工作,完成一次刷新;所述T3為完成一次刷新配置需要的時間;
[0013]步驟六、重復執行步驟四和步驟五,FPGA實現周期刷新。
[0014]本發明的有益效果:本發明所述的SRAM型FPGA電路,復雜度低、功耗低、可靠性高的抗單粒子翻轉刷新電路。
[0015]一、本發明所述的刷新功能模塊集成在FPGA內部,不需要外部控制器,僅增加一片SCRUB存儲器,簡化了傳統刷新電路,降低了電路功耗。并且FPAG整體發生單粒子翻轉的概率極低,而刷新模塊利用片內資源很少,幾乎可以忽略,其發生單粒子翻轉的概率近乎于0,電路容錯性提聞;
[0016]二、本發明所述的BOOT存儲器和SCRUB存儲器共用一條8位數據線,控制線獨立。SCRUB存儲器存儲了對BOOT存儲器中配置文件重新編輯的配置文件,該配置文件不會影響FPGA正常工作并且省略回讀功能;
[0017]三、本發明所述的存儲器是具有可單次編程(OTP)架構的存儲器,該類存儲器具有很高的抗輻照特性,在航天飛行器中具有很高的繼承性。同時配置文件通過燒寫器燒寫,不會發生JTAG下載時CRC校驗錯誤的問題,大大減小了對刷新配置文件修改的復雜度。
[0018]四、本發明所述的刷新電路可以應用于任何支持動態刷新功能的FPGA芯片上。
【專利附圖】
【附圖說明】
[0019]圖1為本發明所述的抗單粒子翻轉的SRAM型FPGA刷新電路的刷新原理圖;
[0020]圖2為本發明所述的抗單粒子翻轉的SRAM型FPGA刷新電路中SCRUB存儲器中配置文件重新編輯流程圖;
[0021]圖3為本發明所述的抗單粒子翻轉的SRAM型FPGA刷新電路的刷新方法的流程圖。
【具體實施方式】
[0022]【具體實施方式】一、結合圖1和圖2說明本實施方式,抗單粒子翻轉的SRAM型FPGA刷新電路;包括BOOT存儲器和SCRUB存儲器。BOOT存儲器存儲了用戶功能模塊,上電通過數據線和控制線完成FPGA的正常加載,當加載完成后FPGA刷新模塊會周期性控制其相應的1/0 口,該1/0 口與SCRUB存儲器的控制端相連,使SCRUB存儲器中的配置文件周期性地加載到FPGA中,SCRUB存儲器存儲的文件是對BOOT存儲器中配置文件修改后的配置文件,該文件在加載前已經將可能影響FPGA正常工作的配置指令重新設定或刪除,所以FPGA —直保持正常工作,如果FPGA刷新模塊發生單粒子翻轉,可以通過重加載方式保證FPGA正常工作,整個過程FPGA —直處于寫狀態。
[0023]本實施方式中的刷新功能模塊集成在FPGA自身內部,不需要外部控制器,僅增加一片SCRUB存儲器,簡化了傳統刷新電路。該刷新電路可以應用于任何支持動態刷新的FPGA芯片上;所述的BOOT存儲器和SCRUB存儲器共用一條8位數據線,控制線獨立。其中,BOOT存儲器存儲了完整的配置文件,而SCRUB存儲器存儲了對BOOT存儲器中配置文件重新編輯的配置文件,具體步驟結合圖2 ;
[0024]本實施方式中,兩片存儲器和FPGA系統時鐘全部共用外部晶振,保證FPGA刷新時序的穩定性,還包括外部重加載電路,通過置低FPGA重配置信號實現FPGA重啟。FPGA刷新模塊功能僅僅是對兩個I/O 口的周期控制,保證SCRUB存儲器內配置文件正確的加載到FPGA中。由于FPAG整體發生單粒子翻轉的概率極低,而刷新模塊利用片內資源很少,幾乎可以忽略,其發生單粒子翻轉的概率近乎于0,電路容錯性提高。
[0025]本實施方式中兩片存儲器采用具有可單詞編程(OTP)架構的存儲器,該類存儲器配置文件通過燒寫器燒寫,不會發生JTAG下載時CRC校驗錯誤的問題,大大減小了對刷新配置文件修改的復雜度,同時該類存儲器具有很高的抗輻照特性,在航天飛行器中具有很高的繼承性和可靠性。
[0026]【具體實施方式】二、結合圖3說明本實施方式,本實施方式為【具體實施方式】一所述的抗單粒子翻轉的SRAM型FPGA刷新電路的刷新方法,該方法由以下步驟實現:
[0027]—、利用燒寫器將完整配置文件燒寫到BOOT存儲器,同時將刷新配置文件燒寫到SCRUB存儲器;
[0028]二、系統上電,FPGA清楚內部配置數據,等待初始化完成;
[0029]三、FPGA初始化成功,BOOT存儲器開始配置數據,配置方式選用Salve SelectMap方式;
[0030]四、T1毫秒后,BOOT存儲器數據配置完成,使能信號被置低,片選信號被置高,該存儲器被禁止,內部地址計數器清空,數據輸出口處于高阻態。FPGA正常工作,刷新模塊功能啟動;
[0031]五、T2毫秒后,FPGA進入自動刷新模式,刷新模塊控制相應1/0 口,周期性地將SCRUB存儲器使能端置高,片選信號置低,SCRUB存儲器開始工作,將刷新配置文件將加載到FPGA中;
[0032]六、T3毫秒后,刷新配置文件加載完成,FPGA刷新模塊將SCRUB存儲器使能信號置低,片選信號置高,整個加載過程FPGA正常工作,完成一次刷新;
[0033]七、不斷重復第五步和第六步,FPGA實現(T2+T3)毫秒地周期刷新。
[0034]八、如果刷新模塊功能出錯,可以通過重加載方式重啟FPGA,重新運行以上步驟實現FPGA刷新。
[0035]其中,T1表示FPGA完成一次完整配置所需要的時間;Τ2表示等待刷新時間;Τ3表完成一次刷新配置所需時間,該時間T3基本等于T1, (Τ2+Τ3)表示兩次刷新間隔時間。
[0036]本實施方式中刷新時間取決于配置時鐘的頻率和配置文件位位流的大小。現實中最小化后的刷新周期與刷新時間基本相等,保證了系統平均在每個翻轉間隙執行至少10次刷新操作。
【權利要求】
1.抗單粒子翻轉的SRAM型FPGA刷新電路,其特征是,包括BOOT存儲器和SCRUB存儲器;所述BOOT存儲器用于存儲用戶功能模塊,SCRUB存儲器用于存儲對BOOT存儲器中的配置文件重新編輯后的配置文件,所述BOOT存儲器通過數據線和控制線實現對FPGA的加載;加載完成后,FPGA內部的刷新電路周期性的控制I/O 口,所述I/O 口與SCRUB存儲器的控制端連接;控制SCRUB存儲器中的配置文件周期性加載到FPGA中。
2.根據權利要求1所述的一種抗單粒子翻轉的SRAM型FPGA刷新電路,其特征在于,還包括外部重加載電路,當FPGA內刷新模塊發生單粒子翻轉時,通過重加載電路使FPGA正常工作。
3.根據權利要求1所述的一種抗單粒子翻轉的SRAM型FPGA刷新電路,其特征在于,所述BOOT存儲器和SCRUB存儲器共用八位的數據線,控制線獨立使用。
4.根據權利要求1所述的一種抗單粒子翻轉的SRAM型FPGA刷新電路,其特征在于,所述SCRUB存儲器用于存儲對BOOT存儲器中的配置文件重新編輯后的配置文件,SCRUB存儲器中重新編輯的配置文件的步驟為: 步驟A、ISE軟件生成配置文件,重新編輯生成的比特流頭文件,重新設定FAR寄存器值,保留CLB幀塊的配置數據; 步驟B、刪除生成的比特流頭文件的配置文件中BRAM幀塊配置數據,重新設定FAR寄存器值,保留BRAM內聯幀塊數據; 步驟C、刪除CRC校驗寄存器比特流文件并重新編輯配置比特流尾文件,獲得重新編輯后的配置文件。
5.使用權利要求1-4任意一項權利要求所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征是,該方法由以下步驟實現: 步驟一、采用燒寫器將完整的配置文件燒寫到BOOT存儲器,同時刷新配置文件燒寫到SCRUB存儲器; 步驟二、對刷新電路上電后,FPGA清除內部配置數據,等待初始化完成; 步驟三、FPGA初始化成功后,BOOT存儲器開始配置數據,經過Tl毫秒后,BOOT存儲器配置完成,FPGA正常工作,FPGA內的刷新模塊功能啟動;所述Tl為FPGA完成一次完整配置的時間; 步驟四、T2毫秒后,FPGA進入自動刷新模塊,刷新模塊控制相應I/O 口,周期性地控制SCRUB存儲器工作,所述SCRUB存儲器內的刷新配置文件將加載到FPGA中;所述T2為等待刷新的時間; 步驟五、T3毫秒后,刷新配置文件加載完成,FPGA內的刷新模塊控制SCRUB存儲器停止工作,完成一次刷新;所述T3為完成一次刷新配置需要的時間; 步驟六、重復執行步驟四和步驟五,FPGA實現周期刷新。
6.根據權利要求5所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征在于,步驟三中,所述BOOT存儲器配置完成,將BOOT存儲器的使能信號置低,片選信號置高,BOOT存儲器停止工作。
7.根據權利要求5所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征在于,步驟四中,所述FPGA內部刷新模塊周期性的將SCRUB存儲器使能端置高,片選信號置低,SCRUB存儲器開始工作。
8.根據權利要求5所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征在于,步驟五中,刷新配置文件加載完成,FPGA內部刷新模塊將SCRUB存儲器的使能信號置低,片選信號置高,SCRUB存儲器停止加載工作,加載過程中FPAG正常工作,完成一次刷新。
9.根據權利要求5所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征在于,當FPGA內部刷新模塊功能出錯,則通過外部重加載電路重新啟動FPGA,實現對FPGA的刷新。
10.根據權利要求5所述的一種抗單粒子翻轉的SRAM型FPGA的刷新電路的刷新方法,其特征在于,所述BOOT存儲器、SCRUB存儲器和FPGA的時鐘共用外部晶振,實現FPGA刷新時序的穩定 性。
【文檔編號】G11C11/413GK104051002SQ201410250530
【公開日】2014年9月17日 申請日期:2014年6月6日 優先權日:2014年6月6日
【發明者】馮汝鵬, 徐偉, 鄭曉云, 樸永杰, 王紹舉, 徐拓奇, 金光 申請人:中國科學院長春光學精密機械與物理研究所