邱 源,紀(jì)丙華,沈 奇,柳宜川,王志國(guó)
(1.上海航天電子技術(shù)研究所,上海 201109;2.智能計(jì)算技術(shù)重點(diǎn)實(shí)驗(yàn)室,上海 201109)
宇宙空間充滿了等離子體、電離氣體和各種能量的帶電粒子等多種形態(tài)的物質(zhì),而且還有各種波長(zhǎng)的電磁輻射,所以長(zhǎng)期工作于宇宙空間的星載計(jì)算機(jī)與普通商用計(jì)算機(jī)不同,比如在處理器選型上,星載計(jì)算機(jī)多采用了航天專(zhuān)用的CPU芯片,如P1750、TSC695、TSC697、POWERPC等[1-3]。這些芯片內(nèi)部大多設(shè)計(jì)了EDAC校驗(yàn)、冗余設(shè)計(jì)、錯(cuò)誤處理、地址保護(hù)等高可靠性措施。其中1750系列星載計(jì)算機(jī)和基于TSC695F系列星載計(jì)算機(jī)技術(shù)已經(jīng)相對(duì)成熟[4-7]。因此星載計(jì)算機(jī)多采用國(guó)產(chǎn)P1750套片和TSC695F處理器完成星上運(yùn)算,尤其是TSC695F處理器已經(jīng)作為標(biāo)準(zhǔn)模塊被大多衛(wèi)星所直接采用[8-12]。
TSC695F處理器性能優(yōu)異、安全可靠,已經(jīng)被業(yè)界廣泛認(rèn)可。然而,實(shí)際應(yīng)用中關(guān)于TSC695F處理器驅(qū)動(dòng)能力的研究資料卻相對(duì)匱乏,因此在工程應(yīng)用中缺少必要的參考[13-17]。
針對(duì)某型衛(wèi)星星載計(jì)算機(jī)成品在模擬在軌飛行測(cè)試中,基于TSC695F處理器CPU板出現(xiàn)異常復(fù)位現(xiàn)象這一問(wèn)題,展開(kāi)研究分析,以找到造成CPU板異常復(fù)位的原因,提出解決異常復(fù)位問(wèn)題的具體措施,為后續(xù)星載計(jì)算機(jī)單機(jī)產(chǎn)品開(kāi)發(fā)提供必要參考[18-19]。
發(fā)生異常復(fù)位的星載計(jì)算機(jī)處理器板用到的器件主要有TSC695F、EEPROM、SRAM、FPGA、1553B總線等。由于該電路板上元器件較多,不宜直接與主控CPU芯片相連,為了提高系統(tǒng)的穩(wěn)定性,保證CPU運(yùn)行穩(wěn)定可靠,電路設(shè)計(jì)時(shí)已經(jīng)考慮到將芯片的驅(qū)動(dòng)能力進(jìn)行一定的均衡分布[20-24]。具體電路拓?fù)浣Y(jié)構(gòu)如圖1所示。CPU直接驅(qū)動(dòng)7個(gè)芯片,分別是1片32位的SRAM、1片8位的SRAM、4片EEPROM和1片F(xiàn)PGA。其余6片PROM、1片1553B總線和1片隔離驅(qū)動(dòng)芯片通過(guò)FPGA間接被CPU控制[25-27]。
圖1 CPU板系統(tǒng)框圖
核心處理器CPU即是采用的ATMEL公司生產(chǎn)的TSC695F芯片,該芯片是一款32位處理器,芯片內(nèi)部包含EDAC校驗(yàn)功能,2個(gè)異步串口,5個(gè)外部輸入的中斷控制器和1個(gè)TAP控制器用于JTAG接口的測(cè)試電路操作順序。同時(shí)該芯片還提供直接訪問(wèn)PROM和RAM等內(nèi)存的控制接口。
基于TSC695F處理器的星載計(jì)算機(jī)在衛(wèi)星總體單位進(jìn)行接口測(cè)試時(shí),按照既定的操作程序,單機(jī)正常運(yùn)行了一段時(shí)間后,CPU檢測(cè)到單機(jī)EDAC錯(cuò)誤中斷,然后對(duì)軟件執(zhí)行軟復(fù)位操作,隨即CPU出現(xiàn)異常復(fù)位現(xiàn)象。為了故障復(fù)現(xiàn),對(duì)星載計(jì)算機(jī)進(jìn)行多次重復(fù)試驗(yàn),單機(jī)正常工作一段時(shí)間后均會(huì)發(fā)生異常復(fù)位現(xiàn)象,并且復(fù)位發(fā)生前正常工作的時(shí)間從4分鐘至數(shù)小時(shí)不等。
為了找到導(dǎo)致星載計(jì)算機(jī)異常復(fù)位的原因,提取CPU軟件故障處理入口地址數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)造成錯(cuò)誤的原因是硬件問(wèn)題導(dǎo)致數(shù)據(jù)裝載出錯(cuò)。針對(duì)數(shù)據(jù)裝載出錯(cuò)的情況,TSC695器件手冊(cè)中給出了這類(lèi)問(wèn)題的具體說(shuō)明,如表1所示。
表1 TSC695F器件手冊(cè)關(guān)于數(shù)據(jù)裝載錯(cuò)誤故障說(shuō)明
從表1可知,數(shù)據(jù)裝載錯(cuò)誤具體產(chǎn)生的原因有4種可能情況。為了進(jìn)一步排查錯(cuò)誤的具體原因,通過(guò)邏輯分析儀對(duì)數(shù)據(jù)時(shí)序關(guān)系進(jìn)行捕捉分析,如圖2所示。
圖2 數(shù)據(jù)裝載錯(cuò)誤時(shí)序圖
由圖2可知,MEXCb信號(hào)是處理器檢測(cè)到數(shù)據(jù)裝載出錯(cuò)時(shí)的輸出標(biāo)識(shí)信號(hào),即低電平表示數(shù)據(jù)發(fā)生錯(cuò)誤??梢钥吹?,發(fā)生錯(cuò)誤的地址信號(hào)MHOLDb對(duì)應(yīng)的起始地址為“02001940”。這個(gè)地址和TSC695F運(yùn)用自身故障檢測(cè)機(jī)制檢出的錯(cuò)誤地址完全一致。
發(fā)生錯(cuò)誤時(shí)的程序代碼如下所示:
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
通過(guò)對(duì)比程序的執(zhí)行代碼發(fā)現(xiàn),正確的程序區(qū)地址和數(shù)據(jù)應(yīng)是:
ADDR = 0X02001940 DATA(15:0) =0X0006;
但從邏輯分析儀看到卻是:
ADDR = 0X02001940 DATA(15:0)=0X FF06。
因此可以推測(cè)數(shù)據(jù)裝載錯(cuò)誤是引起星載計(jì)算機(jī)異常復(fù)位的原因。
為了更準(zhǔn)確地說(shuō)明問(wèn)題發(fā)生的原因,現(xiàn)對(duì)測(cè)試過(guò)程中地址和數(shù)據(jù)波形進(jìn)行抓取,部分試驗(yàn)結(jié)果如圖3~4所示。
圖3 正確裝載(地址02000691,正確數(shù)據(jù)應(yīng)為BF98)
圖4 錯(cuò)誤裝載(地址02000691,錯(cuò)誤數(shù)據(jù)BF10和B198,正確數(shù)據(jù)應(yīng)為BF98)
從圖3中可以看到,在星載計(jì)算機(jī)正常工作時(shí),地址變量addr為0691時(shí)對(duì)應(yīng)的內(nèi)存數(shù)據(jù)data[15:0]是BF98,處理器數(shù)據(jù)裝載正確。當(dāng)發(fā)生異常復(fù)位現(xiàn)象時(shí),同一個(gè)地址捕捉到的內(nèi)存數(shù)據(jù)如圖4所示,讀取地址變量addr為0691的內(nèi)存數(shù)據(jù),發(fā)現(xiàn)該地址內(nèi)的數(shù)據(jù)變?yōu)锽F10,再次故障復(fù)現(xiàn)時(shí)該地址的數(shù)據(jù)又變?yōu)锽198。
通過(guò)多次的故障復(fù)現(xiàn),總結(jié)出異常復(fù)位發(fā)生時(shí)有3個(gè)特點(diǎn):
1)數(shù)據(jù)發(fā)生錯(cuò)誤地址不固定。在多次問(wèn)題復(fù)現(xiàn)試驗(yàn)過(guò)程中,在“02001940”、“02000650”、“02000691”地址均發(fā)生過(guò)數(shù)據(jù)錯(cuò)誤,因此可排除是某個(gè)固定地址引起異常復(fù)位。
2)發(fā)生錯(cuò)誤的數(shù)據(jù)不確定。在多次問(wèn)題復(fù)現(xiàn)試驗(yàn)過(guò)程中,發(fā)生的錯(cuò)誤數(shù)據(jù)有“EE06”(正確應(yīng)為“0006”),“FF00”(正確應(yīng)為“0000”),“BF10”(正確應(yīng)為“BF98”),“B198” (正確應(yīng)為“BF98”)等多種數(shù)據(jù),因此可確定不是某幾個(gè)數(shù)據(jù)線錯(cuò)誤造成異常復(fù)位。
3)發(fā)生錯(cuò)誤時(shí)4個(gè)基片不是全錯(cuò)。在進(jìn)行多次問(wèn)題復(fù)現(xiàn)試驗(yàn)時(shí),4個(gè)八位數(shù)據(jù)均錯(cuò)的現(xiàn)象從未發(fā)生,這就意味著SRAM(32位SRAM是由4個(gè)8位的SRAM組成)中并非所有的基片都不可以正常工作,因此CPU對(duì)SRAM訪問(wèn)時(shí)序沒(méi)有問(wèn)題。
綜上所述,可以斷定CPU數(shù)據(jù)裝載時(shí),數(shù)據(jù)位的多位誤碼,導(dǎo)致了“存儲(chǔ)器不可糾正的錯(cuò)誤(EDAC)”。最終導(dǎo)致CPU軟件進(jìn)入了錯(cuò)誤故障模式,而CPU軟件對(duì)這類(lèi)錯(cuò)誤的處理方式就是讓軟件重新運(yùn)行,具體的現(xiàn)象就是星載計(jì)算機(jī)復(fù)位。
基于以上分析,CPU直接對(duì)SRAM進(jìn)行訪問(wèn)控制,在對(duì)SRAM讀訪問(wèn)控制時(shí)序完全正確的情況下,SRAM的其中一個(gè)基片卻輸出了錯(cuò)誤數(shù)據(jù),因此可以推測(cè)CPU提供給SRAM讀訪問(wèn)控制信號(hào)的驅(qū)動(dòng)能力存在問(wèn)題,為了進(jìn)一步分析探究異常復(fù)位的原因和機(jī)理,現(xiàn)對(duì)與CPU處理器直接連接即由CPU驅(qū)動(dòng)的芯片數(shù)量進(jìn)行統(tǒng)計(jì)分析,統(tǒng)計(jì)結(jié)果如表2所示,表2給出了由CPU直接驅(qū)動(dòng)的芯片種類(lèi)與數(shù)量。由表2可知,CPU直接驅(qū)動(dòng)7片集成電路芯片,其余8片則通過(guò)FPGA間接驅(qū)動(dòng)。
表2 CPU板驅(qū)動(dòng)芯片數(shù)量
為了進(jìn)一步探究CPU的驅(qū)動(dòng)能力與負(fù)載的匹配性,就需要結(jié)合手冊(cè)分析這些與CPU直接相連的芯片輸入電容。因此通過(guò)查閱與CPU直接連接的幾種芯片的手冊(cè),獲取到相關(guān)芯片電容參數(shù)和計(jì)算結(jié)果如表3所示。由表3可知,CPU負(fù)載輸入電容值(地址總線)總數(shù)為193pF,輸入/輸出電容值(數(shù)據(jù)總線)總數(shù)為103pF。
表3 CPU負(fù)載芯片電容表
現(xiàn)以FPGA的輸入/輸出電容值(10pF)作為一個(gè)芯片的基本單位來(lái)估算驅(qū)動(dòng)芯片數(shù)量。由于SRAM,EEPROM內(nèi)部都為多基片封裝,內(nèi)部數(shù)據(jù)線為8位拼接,所以對(duì)于CPU來(lái)講可等效于驅(qū)動(dòng)一個(gè)芯片,因此,CPU相當(dāng)于驅(qū)動(dòng)10.3個(gè)FPGA芯片的基本單元,驅(qū)動(dòng)能力可以滿足要求。而對(duì)于地址線來(lái)講,CPU相當(dāng)于驅(qū)動(dòng)19.3個(gè)FPGA芯片的基本單元,容性負(fù)載過(guò)大致使驅(qū)動(dòng)能力不足。
在問(wèn)題復(fù)現(xiàn)時(shí)用示波器抓到SRAM讀操作時(shí)的地址線波形,如圖5所示。其中C2為nOE信號(hào),表示CPU發(fā)起一次讀控制操作,該信號(hào)為低電平有效;C3和C4分別為CPU給出的地址線A[9]和A[10],可以看出A[9]和A[10]在本次讀操作時(shí)均發(fā)生了地址跳變,但A[9]的地址線爬坡過(guò)程相對(duì)平緩,而A[10]則出現(xiàn)了一道坎,表明地址線A[10]上的分布電容較大,CPU的驅(qū)動(dòng)電流不足,因而出現(xiàn)地址跳變延時(shí)。同時(shí),A[9]和A[10]整個(gè)上升過(guò)程周期也比較長(zhǎng),大約為20 ns,而nOE信號(hào)上升時(shí)間則只有大約9 ns。
圖5 CPU讀操作時(shí)地址爬坡圖
為了充分驗(yàn)證分析的合理性,同時(shí)對(duì)CPU板PCB進(jìn)行了仿真。將PCB參數(shù)、分層結(jié)構(gòu)、層厚、層介質(zhì)參數(shù)等交給專(zhuān)業(yè)人員進(jìn)行仿真,并對(duì)地址線、數(shù)據(jù)線進(jìn)行復(fù)核核算。對(duì)CPU地址線A[10]的仿真結(jié)果如圖6所示,地址線在上升和下降過(guò)程中均存在非單調(diào)變化的特性,這與實(shí)測(cè)波形基本一致。
圖6 CPU地址線A[10]仿真圖
與此同時(shí)為了驗(yàn)證分析的合理性,拆除EEPROM后對(duì)CPU板多次長(zhǎng)時(shí)間測(cè)試,均無(wú)異常復(fù)位現(xiàn)象發(fā)生,表明異常復(fù)位問(wèn)題是由于地址線驅(qū)動(dòng)不足引起的SRAM讀操作異常引起的。
為了解決CPU板驅(qū)動(dòng)能力不足的問(wèn)題,需要對(duì)電路進(jìn)行修改完善。在不改變處理器對(duì)各個(gè)負(fù)載芯片的控制邏輯條件見(jiàn)下,要使電路能正常工作,則需要找到一種能夠在處理器芯片和負(fù)載芯片之間充當(dāng)驅(qū)動(dòng)媒介的芯片。
經(jīng)過(guò)選用元器件的初步篩選,發(fā)現(xiàn)規(guī)格為B54ACS164245SRH的多用途雙向收發(fā)器具有雙向異步通信、信號(hào)緩沖、電壓轉(zhuǎn)換以及冷備份電路保護(hù)的功能。其電路結(jié)構(gòu)如圖7所示, 首先,B54ACS164245SRH芯片的輸入輸出端都有單獨(dú)的供電端口,具有輸入阻抗高,驅(qū)動(dòng)電流小的優(yōu)勢(shì),并且可通過(guò)方向控制端(DIR)和使能控制端(OE)靈活配置芯片信息流方向(信息流從 A 總線向 B 總線發(fā)送,或從 B 總線向 A 總線發(fā)送)和工作時(shí)間。 此外,該規(guī)格芯片具備冷備份的功能(Cold spare),當(dāng)電源輸入電壓為零時(shí),輸入端 buffers 和輸出端 buffers處于至少1 M 歐姆的高阻狀態(tài),因此B54ACS164245SRH還可作為冷備份保護(hù)電路,起到輸入輸出電氣隔離和降低功耗等作用。
圖7 B54ACS164245SRH電路結(jié)構(gòu)圖
TSC695F處理器的星載計(jì)算機(jī)CPU板異常復(fù)位問(wèn)題是由CPU處理器驅(qū)動(dòng)能力不足造成的,而規(guī)格為B54ACS164245SRH是采用CMOS工藝制作的一種具有16比特可雙向傳輸數(shù)據(jù)的器件,具有輸阻抗高,帶負(fù)載能力強(qiáng)的優(yōu)點(diǎn)。因此如果在CPU板和負(fù)載EEPROM之間通過(guò)使用B54ACS164245SRH間接通信,則就可以解決CPU板直接驅(qū)動(dòng)負(fù)載過(guò)多,驅(qū)動(dòng)能力不足的問(wèn)題。
在CPU板和4片負(fù)載EEPROM芯片之間通過(guò)插入B54ACS164245SRH電路作為總線驅(qū)動(dòng)器,系統(tǒng)電路如圖8所示,通過(guò)利用B54ACS164245SRH輸入阻抗高,帶負(fù)載能力強(qiáng)的特點(diǎn),實(shí)現(xiàn)CPU處理器驅(qū)動(dòng)能力的擴(kuò)展的作用,以提高系統(tǒng)的穩(wěn)定性和可靠性。
圖8 增加164245芯片后CPU板系統(tǒng)框圖
經(jīng)測(cè)算,修改后CPU驅(qū)動(dòng)地址線相當(dāng)于驅(qū)動(dòng)8個(gè) FPGA芯片的基本單元,一片164245芯片驅(qū)動(dòng)數(shù)據(jù)線相當(dāng)于驅(qū)動(dòng)6.2個(gè)FPGA芯片的基本單元,故而可以滿足驅(qū)動(dòng)能力的要求。
針對(duì)完善后的CPU處理器電路進(jìn)行多次測(cè)試,均未發(fā)生異常復(fù)位現(xiàn)象。在星在計(jì)算機(jī)整機(jī)聯(lián)測(cè)時(shí),CPU數(shù)據(jù)收發(fā)正常,未再發(fā)生數(shù)據(jù)裝載錯(cuò)誤的問(wèn)題。
通過(guò)對(duì)基于TSC695F處理器的星載計(jì)算機(jī)CPU板異常復(fù)位問(wèn)題進(jìn)行研究,發(fā)現(xiàn)造成星載計(jì)算機(jī)單機(jī)的處理器板異常復(fù)位的問(wèn)題是所掛負(fù)載超過(guò)了CPU的驅(qū)動(dòng)能力。因此,為了提升星載計(jì)算機(jī)的可靠性,必須結(jié)合芯片驅(qū)動(dòng)能力限度對(duì)電路綜合考慮分析,實(shí)驗(yàn)證明通過(guò)加入16 245芯片可有效拓展CPU驅(qū)動(dòng)能力,所以在一定程度上可以考慮通過(guò)加入驅(qū)動(dòng)芯片拓展CPU的驅(qū)動(dòng)能力解決驅(qū)動(dòng)能力不足的問(wèn)題。