本發(fā)明涉及一種集成電路,特別涉及fpga電路和其配置文件處理方法。
背景技術:
隨著技術的進步,對星載信號處理能力的要求越來越高,fpga也越來越多地應用到航天領域,成為星載信號處理和控制的關鍵部件。目前,從fpga在星載型號產品中的使用情況來看,單粒子效應成為了影響大規(guī)模fpga可用性和可靠性的主要因素。
宇航級大規(guī)模fpga都是基于sram型,sram型fpga在應用于可靠性有較高要求的場合時必須通過配置文件回讀的方式進行檢錯,但是其內部寄存器易受單例子效應影響而產生錯誤。因此,針對大規(guī)模fpga進行抗單粒子效應的研究非常重要且迫切。
技術實現(xiàn)要素:
在第一方面,本發(fā)明實施例提供一種fpga電路。該電路包括配置存儲器,用于存儲有fpga配置文件,配置文件包括配置數(shù)據(jù)和ecc碼;硬件ecc解碼器,利用ecc碼對配置數(shù)據(jù)進行糾錯和檢錯;單粒子翻轉控制器,用于回讀配置文件,并且利用硬件ecc解碼器對回讀的配置文件進行檢查和糾錯。
優(yōu)選地,單粒子翻轉控制器從配置存儲器中按塊讀取配置文件,傳輸?shù)絜cc解碼器中進行ecc檢測或糾錯;配置文件進過ecc檢測或糾錯后,被寫回到配置存儲器中。
ecc碼可以是漢明、bch、rs碼或其它形式的編碼。
優(yōu)選地,配置文件包括多組數(shù)據(jù)和ecc編碼的校驗位。
在第二方面,本發(fā)明實施例提供一種fpga電路的配置文件處理方法,該方法包括從配置存儲器中按塊讀取配置文件,將配置文件進行ecc檢測或糾錯;配置文件進行ecc檢測或糾錯后,被寫回到配置存儲器中。
通過使用ecc檢查和糾錯,可使fpga支持單粒子翻轉的能力得到大大的增強,從而使fpga可以應用到宇航、航空或其他對設備出錯比較敏感的領域,因此具有廣泛和重大的意義。
附圖說明
圖1是帶有ecc校驗碼的一種配置文件結構;
圖2示意了根據(jù)本發(fā)明實施例的帶有ecc糾錯校驗功能的fpga芯片;
圖3示意了帶有ecc校驗功能的fpga設計及下載流程;
具體實施方式
下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
本發(fā)明實施例在fpga配置文件中添加ecc碼的配置架構,并且fpga器件在運行過程中基于ecc碼執(zhí)行fpga配置文件的回讀、檢查并糾錯。通過使用該架構,可使fpga支持單粒子翻轉的能力得到大大的增強。
圖1描述了帶有ecc校驗碼的一種配置文件結構。其中fpga配置文件以配置鏈的長度為單位,加入ecc校驗碼。在圖1中,每一個組數(shù)據(jù)data對應了每一條配置存儲器鏈,每一條配置存儲器鏈有一個ecc編碼的校驗位。整個配置fpga芯片的配置文件包含了若干組數(shù)據(jù)和對應的配置存儲器鏈。
圖2是本發(fā)明實施例的fpga芯片原理示意圖。如圖2所示,fpga芯片包括配置存儲器、硬件ecc(errorcorrectingcode,即錯誤檢查和糾正)解碼器和單粒子翻轉(singleeventupset,下文簡稱seu)控制器。
配置存儲器可以存儲有如圖1所示的fpga配置文件。配置文件是定制 fpga器件功能的二進制文件,用于控制fpga內部可編程的內部邏輯、內部寄存器和i/o寄存器初始化,i/o驅動器使能等。用戶用圖形或者語言描述所需要的功能,開發(fā)系統(tǒng)把它轉成最后的配置文件。在一個例子中,fpga使用sram單元來存儲配置文件,通常fpga中的sram是易失的,尤其在航天等領域中受單粒子效應影響fpga芯片而產生錯誤。每次上電之前,配置文件必須重新下載到fpga中。在運行過程中也有必要回讀配置文件進行檢查并糾錯。為此,配置文件中除配置數(shù)據(jù)外,還預先結合有ecc碼,以便在寫入或回讀過程中對配置文件進行ecc糾錯。
ecc解碼器基于配置文件中的ecc碼,對回讀的配置數(shù)據(jù)檢測和糾錯。ecc碼例如有漢明碼及其改進碼。ecc碼解碼的原理是在配置文件中加入一些冗余碼,使這些數(shù)據(jù)源碼與冗余碼之間根據(jù)某種規(guī)則建立一定的關系,一旦回讀時配置文件因為某種原因(例如單粒子效應)而出現(xiàn)某些錯誤時,數(shù)據(jù)源碼與檢驗碼之間的關系被破壞,就形成非法編碼。ecc解碼方式具有糾正單比特翻轉和檢測多比特翻轉的能力。
seu控制器用于在運行過程中執(zhí)行fpga配置文件的回讀、檢查并糾錯。在一個例子中,seu控制器可以包括fpga配置文件回讀控制器、fpga配置文件比較、判斷控制器和fpga配置文件寫回控制器等。
在操作中,seu控制器進入檢測糾錯模式,對配置存儲器中發(fā)出讀指令(參見圖標1)。
配置存儲器中第一條配置鏈的配置數(shù)據(jù)和其相應的校驗碼被讀出,送到硬件ecc解碼器進行檢測或糾錯(參見圖標2)。若經(jīng)過ecc硬件檢測后,發(fā)現(xiàn)該條配置鏈數(shù)據(jù)或ecc檢驗碼中有1比特錯誤,則進入流程3(參見圖標3);若沒有錯誤或者有2比特及以上的錯誤,則進入流程4(參見圖標4)。
將糾錯過的配置鏈的配置數(shù)據(jù)按照讀取的地址,寫回到配置存儲器中(參見圖標3)。
若ecc硬件解碼器發(fā)送無錯信號,seu控制器則調整狀態(tài),對下一條配置 鏈數(shù)據(jù)進行同樣的操作;若發(fā)送2比特及以上的錯誤,seu控制器會向系統(tǒng)級發(fā)出相應的警報,可對fpga進行重配置或加載(參見圖標4),對下一個配置文件塊進行同樣的檢測;如此時依然檢測有錯誤發(fā)生,則表明這個出錯的配置文件塊已經(jīng)超出了ecc編碼的糾錯能力范圍,錯誤被誤糾了,沒有真正的解決出錯問題,這時會向seu控制器發(fā)出狀態(tài)結果(參見圖標4),控制器會根據(jù)這一結果向系統(tǒng)級發(fā)出相應的請求。
通過使用這種新型的fpga配置架構,可使基于sram的fpga器件在運行過程中一直執(zhí)行fpga配置文件的回讀、檢查并糾錯的過程。通過使用ecc的方式,確保每一塊fpga配置文件都是正確的。通過使用該架構,可使fpga支持單粒子翻轉的能力得到大大的增強,從而使fpga可以應用到宇航、航空或其他對設備出錯比較敏感的領域,因此具有廣泛和重大的意義。
圖3示意了帶有ecc校驗功能的fpga設計及下載流程圖。如圖3所示,fpga的設計流程大致包括電路設計與輸入、功能仿真、綜合、綜合后仿真、實現(xiàn)。
首先在電路設計與輸入階段,利用硬件描述語言hdl將所設計的功能描述給eda軟件。
在綜合階段,將hdl語言等設計輸入翻譯為由與、或、非門、ram以及寄存器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)設計約束對速度和面積進行邏輯優(yōu)化。
在實現(xiàn)階段,根據(jù)所選芯片的型號,將綜合輸出的邏輯網(wǎng)表適配到fpga器件上。
在碼流生成的過程中,根據(jù)配置文件的塊、組的信息加入與之相應的ecc的檢驗碼。以配置鏈的長度為單位,加入ecc校驗碼。
最后,加入了ecc校驗碼的配置文件,基于例如jtag的配置方式下載到配置芯片中。
fpga上電以后首先進入配置模式(configuration),在最后一個配置數(shù) 據(jù)載入到fpga以后,進入初始化模式(initialization),在初始化完成后進入用戶模式(user-mode)。在配置模式和初始化模式下,fpga的用戶i/o處于高阻態(tài)(或內部弱上拉狀態(tài)),當進入用戶模式下,用戶i/o就按照用戶設計的功能工作。
前文結合漢明碼敘述了本發(fā)明的實施例,漢明碼的特點在于糾錯一比特,檢測兩比特。顯然,本發(fā)明不限于此,還可以擴展到可糾錯多比特的編碼方式,如bch、rs或其它糾錯編碼。bch碼是用于校正多個隨機錯誤模式的多級、循環(huán)、錯誤校正、變長數(shù)字編碼。rs(reed-solomon)碼是一類糾錯能力很強的特殊的非二進制bch碼。
以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。