邱 源,紀丙華,沈 奇,柳宜川,王志國
(1.上海航天電子技術研究所,上海 201109;2.智能計算技術重點實驗室,上海 201109)
宇宙空間充滿了等離子體、電離氣體和各種能量的帶電粒子等多種形態的物質,而且還有各種波長的電磁輻射,所以長期工作于宇宙空間的星載計算機與普通商用計算機不同,比如在處理器選型上,星載計算機多采用了航天專用的CPU芯片,如P1750、TSC695、TSC697、POWERPC等[1-3]。這些芯片內部大多設計了EDAC校驗、冗余設計、錯誤處理、地址保護等高可靠性措施。其中1750系列星載計算機和基于TSC695F系列星載計算機技術已經相對成熟[4-7]。因此星載計算機多采用國產P1750套片和TSC695F處理器完成星上運算,尤其是TSC695F處理器已經作為標準模塊被大多衛星所直接采用[8-12]。
TSC695F處理器性能優異、安全可靠,已經被業界廣泛認可。然而,實際應用中關于TSC695F處理器驅動能力的研究資料卻相對匱乏,因此在工程應用中缺少必要的參考[13-17]。
針對某型衛星星載計算機成品在模擬在軌飛行測試中,基于TSC695F處理器CPU板出現異常復位現象這一問題,展開研究分析,以找到造成CPU板異常復位的原因,提出解決異常復位問題的具體措施,為后續星載計算機單機產品開發提供必要參考[18-19]。
發生異常復位的星載計算機處理器板用到的器件主要有TSC695F、EEPROM、SRAM、FPGA、1553B總線等。由于該電路板上元器件較多,不宜直接與主控CPU芯片相連,為了提高系統的穩定性,保證CPU運行穩定可靠,電路設計時已經考慮到將芯片的驅動能力進行一定的均衡分布[20-24]。具體電路拓撲結構如圖1所示。CPU直接驅動7個芯片,分別是1片32位的SRAM、1片8位的SRAM、4片EEPROM和1片FPGA。其余6片PROM、1片1553B總線和1片隔離驅動芯片通過FPGA間接被CPU控制[25-27]。

圖1 CPU板系統框圖
核心處理器CPU即是采用的ATMEL公司生產的TSC695F芯片,該芯片是一款32位處理器,芯片內部包含EDAC校驗功能,2個異步串口,5個外部輸入的中斷控制器和1個TAP控制器用于JTAG接口的測試電路操作順序。同時該芯片還提供直接訪問PROM和RAM等內存的控制接口。
基于TSC695F處理器的星載計算機在衛星總體單位進行接口測試時,按照既定的操作程序,單機正常運行了一段時間后,CPU檢測到單機EDAC錯誤中斷,然后對軟件執行軟復位操作,隨即CPU出現異常復位現象。為了故障復現,對星載計算機進行多次重復試驗,單機正常工作一段時間后均會發生異常復位現象,并且復位發生前正常工作的時間從4分鐘至數小時不等。
為了找到導致星載計算機異常復位的原因,提取CPU軟件故障處理入口地址數據進行分析,發現造成錯誤的原因是硬件問題導致數據裝載出錯。針對數據裝載出錯的情況,TSC695器件手冊中給出了這類問題的具體說明,如表1所示。

表1 TSC695F器件手冊關于數據裝載錯誤故障說明
從表1可知,數據裝載錯誤具體產生的原因有4種可能情況。為了進一步排查錯誤的具體原因,通過邏輯分析儀對數據時序關系進行捕捉分析,如圖2所示。

圖2 數據裝載錯誤時序圖
由圖2可知,MEXCb信號是處理器檢測到數據裝載出錯時的輸出標識信號,即低電平表示數據發生錯誤。可以看到,發生錯誤的地址信號MHOLDb對應的起始地址為“02001940”。這個地址和TSC695F運用自身故障檢測機制檢出的錯誤地址完全一致。
發生錯誤時的程序代碼如下所示:
200192c: 90 04 80 10 add %l2, %l0, %o0
2001930: 95 2a 20 02 sll %o0, 2, %o2
2001934: d2 05 40 0a ld [%l5 + %o2 ], %o1
2001938: d0 06 00 13 ld [ %i0 + %l3 ], %o0
200193c: 80 a2 40 08 cmp %o1, %o0
2001940:22 80 00 06 be,a 2001958
2001944:a0 04 20 01 inc %l0
printf("Error at %9x‘n", (int)sig + (i+k)*4);
2001948:90 15 a2 c0 or %l6, 0x2c0, %o0
200194c:40 00 00 40 call 2001a4c
2001950:92 05 40 0a add %l5, %o2, %o1
通過對比程序的執行代碼發現,正確的程序區地址和數據應是:
ADDR = 0X02001940 DATA(15:0) =0X0006;
但從邏輯分析儀看到卻是:
ADDR = 0X02001940 DATA(15:0)=0X FF06。
因此可以推測數據裝載錯誤是引起星載計算機異常復位的原因。
為了更準確地說明問題發生的原因,現對測試過程中地址和數據波形進行抓取,部分試驗結果如圖3~4所示。

圖3 正確裝載(地址02000691,正確數據應為BF98)

圖4 錯誤裝載(地址02000691,錯誤數據BF10和B198,正確數據應為BF98)
從圖3中可以看到,在星載計算機正常工作時,地址變量addr為0691時對應的內存數據data[15:0]是BF98,處理器數據裝載正確。當發生異常復位現象時,同一個地址捕捉到的內存數據如圖4所示,讀取地址變量addr為0691的內存數據,發現該地址內的數據變為BF10,再次故障復現時該地址的數據又變為B198。
通過多次的故障復現,總結出異常復位發生時有3個特點:
1)數據發生錯誤地址不固定。在多次問題復現試驗過程中,在“02001940”、“02000650”、“02000691”地址均發生過數據錯誤,因此可排除是某個固定地址引起異常復位。
2)發生錯誤的數據不確定。在多次問題復現試驗過程中,發生的錯誤數據有“EE06”(正確應為“0006”),“FF00”(正確應為“0000”),“BF10”(正確應為“BF98”),“B198” (正確應為“BF98”)等多種數據,因此可確定不是某幾個數據線錯誤造成異常復位。
3)發生錯誤時4個基片不是全錯。在進行多次問題復現試驗時,4個八位數據均錯的現象從未發生,這就意味著SRAM(32位SRAM是由4個8位的SRAM組成)中并非所有的基片都不可以正常工作,因此CPU對SRAM訪問時序沒有問題。
綜上所述,可以斷定CPU數據裝載時,數據位的多位誤碼,導致了“存儲器不可糾正的錯誤(EDAC)”。最終導致CPU軟件進入了錯誤故障模式,而CPU軟件對這類錯誤的處理方式就是讓軟件重新運行,具體的現象就是星載計算機復位。
基于以上分析,CPU直接對SRAM進行訪問控制,在對SRAM讀訪問控制時序完全正確的情況下,SRAM的其中一個基片卻輸出了錯誤數據,因此可以推測CPU提供給SRAM讀訪問控制信號的驅動能力存在問題,為了進一步分析探究異常復位的原因和機理,現對與CPU處理器直接連接即由CPU驅動的芯片數量進行統計分析,統計結果如表2所示,表2給出了由CPU直接驅動的芯片種類與數量。由表2可知,CPU直接驅動7片集成電路芯片,其余8片則通過FPGA間接驅動。

表2 CPU板驅動芯片數量
為了進一步探究CPU的驅動能力與負載的匹配性,就需要結合手冊分析這些與CPU直接相連的芯片輸入電容。因此通過查閱與CPU直接連接的幾種芯片的手冊,獲取到相關芯片電容參數和計算結果如表3所示。由表3可知,CPU負載輸入電容值(地址總線)總數為193pF,輸入/輸出電容值(數據總線)總數為103pF。

表3 CPU負載芯片電容表
現以FPGA的輸入/輸出電容值(10pF)作為一個芯片的基本單位來估算驅動芯片數量。由于SRAM,EEPROM內部都為多基片封裝,內部數據線為8位拼接,所以對于CPU來講可等效于驅動一個芯片,因此,CPU相當于驅動10.3個FPGA芯片的基本單元,驅動能力可以滿足要求。而對于地址線來講,CPU相當于驅動19.3個FPGA芯片的基本單元,容性負載過大致使驅動能力不足。
在問題復現時用示波器抓到SRAM讀操作時的地址線波形,如圖5所示。其中C2為nOE信號,表示CPU發起一次讀控制操作,該信號為低電平有效;C3和C4分別為CPU給出的地址線A[9]和A[10],可以看出A[9]和A[10]在本次讀操作時均發生了地址跳變,但A[9]的地址線爬坡過程相對平緩,而A[10]則出現了一道坎,表明地址線A[10]上的分布電容較大,CPU的驅動電流不足,因而出現地址跳變延時。同時,A[9]和A[10]整個上升過程周期也比較長,大約為20 ns,而nOE信號上升時間則只有大約9 ns。

圖5 CPU讀操作時地址爬坡圖
為了充分驗證分析的合理性,同時對CPU板PCB進行了仿真。將PCB參數、分層結構、層厚、層介質參數等交給專業人員進行仿真,并對地址線、數據線進行復核核算。對CPU地址線A[10]的仿真結果如圖6所示,地址線在上升和下降過程中均存在非單調變化的特性,這與實測波形基本一致。

圖6 CPU地址線A[10]仿真圖
與此同時為了驗證分析的合理性,拆除EEPROM后對CPU板多次長時間測試,均無異常復位現象發生,表明異常復位問題是由于地址線驅動不足引起的SRAM讀操作異常引起的。
為了解決CPU板驅動能力不足的問題,需要對電路進行修改完善。在不改變處理器對各個負載芯片的控制邏輯條件見下,要使電路能正常工作,則需要找到一種能夠在處理器芯片和負載芯片之間充當驅動媒介的芯片。
經過選用元器件的初步篩選,發現規格為B54ACS164245SRH的多用途雙向收發器具有雙向異步通信、信號緩沖、電壓轉換以及冷備份電路保護的功能。其電路結構如圖7所示, 首先,B54ACS164245SRH芯片的輸入輸出端都有單獨的供電端口,具有輸入阻抗高,驅動電流小的優勢,并且可通過方向控制端(DIR)和使能控制端(OE)靈活配置芯片信息流方向(信息流從 A 總線向 B 總線發送,或從 B 總線向 A 總線發送)和工作時間。 此外,該規格芯片具備冷備份的功能(Cold spare),當電源輸入電壓為零時,輸入端 buffers 和輸出端 buffers處于至少1 M 歐姆的高阻狀態,因此B54ACS164245SRH還可作為冷備份保護電路,起到輸入輸出電氣隔離和降低功耗等作用。

圖7 B54ACS164245SRH電路結構圖
TSC695F處理器的星載計算機CPU板異常復位問題是由CPU處理器驅動能力不足造成的,而規格為B54ACS164245SRH是采用CMOS工藝制作的一種具有16比特可雙向傳輸數據的器件,具有輸阻抗高,帶負載能力強的優點。因此如果在CPU板和負載EEPROM之間通過使用B54ACS164245SRH間接通信,則就可以解決CPU板直接驅動負載過多,驅動能力不足的問題。
在CPU板和4片負載EEPROM芯片之間通過插入B54ACS164245SRH電路作為總線驅動器,系統電路如圖8所示,通過利用B54ACS164245SRH輸入阻抗高,帶負載能力強的特點,實現CPU處理器驅動能力的擴展的作用,以提高系統的穩定性和可靠性。

圖8 增加164245芯片后CPU板系統框圖
經測算,修改后CPU驅動地址線相當于驅動8個 FPGA芯片的基本單元,一片164245芯片驅動數據線相當于驅動6.2個FPGA芯片的基本單元,故而可以滿足驅動能力的要求。
針對完善后的CPU處理器電路進行多次測試,均未發生異常復位現象。在星在計算機整機聯測時,CPU數據收發正常,未再發生數據裝載錯誤的問題。
通過對基于TSC695F處理器的星載計算機CPU板異常復位問題進行研究,發現造成星載計算機單機的處理器板異常復位的問題是所掛負載超過了CPU的驅動能力。因此,為了提升星載計算機的可靠性,必須結合芯片驅動能力限度對電路綜合考慮分析,實驗證明通過加入16 245芯片可有效拓展CPU驅動能力,所以在一定程度上可以考慮通過加入驅動芯片拓展CPU的驅動能力解決驅動能力不足的問題。