1 涉及術語解釋
1.1 三模冗餘
三模冗餘系統簡稱TMR(Triple Modular Redundancy),是最常用的一種容錯設計技術.三個模組同時執行相同的操作,以多數相同的輸出作為表決系統的正確輸出,通常稱為三取二.三個模組中只要不同時出現兩個相同的錯誤,就能掩蔽掉故障模組的錯誤,保證系統正確的輸出.由於三個模組是互相獨立的,兩個模組同時出現錯誤是極小概率事件,故可以大大提高系統的可信性。
1.2 Single-Event Upset,SEU
Single-Event Upset (SEU)是指單個空間高能帶電粒子擊中微電子器件靈敏部位後,由於電離作用產生額外電荷,使器件邏輯狀態發生瞬態改變的現象。如果某個重要的程式,邏輯狀況發生變化後,會對裝置產生較大影響。由於三模冗餘技術的簡單性以及高可靠性,它是一個被廣泛使用的針對於單粒子翻轉(Single-Event Upset,SEU)現象的容錯技術。
1.3 SRAM 、FLASH FPGA與反熔絲FPGA
從使用的角度進行說明,SRAM FPGA目前是市場主流,工藝簡單,邏輯容量大,可重配置。每次斷電後,程式消失,上電時需要重新從外部儲存器進行載入。
反熔絲FPGA主要用於軍工、航天等可靠性要求極高的場景,工藝複雜,邏輯容量小,可靠性極高,只能配置一次。
本文提到的三模冗餘儲存、燒錄、載入控制系統,使用反熔絲FPGA作為主控完成。
1.4 QSPI FLASH
本文提到的處理器主系統使用QSPI介面 FLASH儲存軟體配置程式,進行寫操作時必須先進行擦除,然後才能完成寫入,且擦除的最小單位是一個扇區(sector),讀出資料則沒有大小限制。
本文的FLASH使用QSPI介面,該介面有4條資料線,1條使能線,1條時鐘線,屬於典型的高速序列同步通訊介面,速率較快。與之對應的有BPI介面,BPI介面屬於並行資料介面,資料線與地址線分離,管腳數目龐大,正在逐漸被QSPI等序列介面取代。
2 三模冗餘方案
某型號衛星觀測相機使用了大容量的SRAM型FPGA作為主控器件,該FPGA程式需要儲存在QSPI 介面的FLASH中,本文提到的處理器主系統即使用SRAM FPGA晶片。為了防止儲存在QSPI介面FLASH中的bit資料發生SEU,引起SRAM FPGA的錯誤工作,同時進行線上更新,我們對FLASH記憶體儲的資料、處理器主系統的程式載入進行三模冗餘設計。
圖 2‑1 三模冗餘簡化設計框圖
l FLASH 0/1/2 :三片FLASH分別儲存3份SRAM FPGA的軟體配置項;
l UART :串列埠負責對反熔絲FPGA進行除錯與狀態監測、控制反熔絲FPGA對FLASH 0/1/2 進行程式燒錄;
l Power :受反熔絲FPGA的控制,用於控制SRAM FPGA的上電、下電;
l 反熔絲FPGA:作為該系統的高可靠主控裝置,負責執行UART收到的控制指令、執行FLASH的擦除、讀寫、執行SRAM FPGA的啟動控制;
l 處理器主系統:是本發明要服務的裝置。
系統上電後,反熔絲FPGA開始執行,程式碼內部的三個FLASH控制器首先通過讀取FLASH器件的dummy值對FLASH的讀寫時序進行調節、校驗,校驗通過後再接收相同的讀地址,並對應發出SPI讀操作,FPGA讀取三片FLASH儲存單元中的資料,三份資料被資料比較模組兩兩異或,比較其內容的一致性,若存在資料錯誤,則用正確資料覆蓋錯誤資料,並記錄錯誤BIT資訊,最後將統計到的錯誤資料輸出。
在比較的過程中,如果檢查到某片FLASH資料有錯誤,需要對其錯誤的扇區進行擦除,並寫入正確的資料,那麼這裡就需要首先對正確的資料進行備份,反熔絲FPGA內部的SRAM資源十分有限,無法用作備份,因此使用FLASH 0 20MB地址處的64KB區域進行正確資料的備份。
圖 2‑2 三模冗餘校驗過程
流程圖提到的程式碼邊界是指SRAM FPGA配置程式的邊界,比如我們FLASH的大小實際是32MB,而SRAM FPGA的配置程式實際是6MB,那麼對應的程式邊界就是6MB,我們在進行三模冗餘時,只需要對應的比較6MB的資料即可,可以大大的節約時間。