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的數據即可,可以大大的節約時間。