楊廷靜
(中國電子科技集團(tuán)公司第十研究所,四川 成都 610036)
數(shù)據(jù)鏈?zhǔn)沁B接整個(gè)戰(zhàn)區(qū)內(nèi)數(shù)字化戰(zhàn)場上指揮中樞、作戰(zhàn)節(jié)點(diǎn)和武器平臺的信息處理、交換和分發(fā)系統(tǒng),當(dāng)數(shù)據(jù)鏈出現(xiàn)通信故障時(shí),將導(dǎo)致整個(gè)數(shù)據(jù)通信網(wǎng)不暢通甚至中斷。由于數(shù)據(jù)鏈通信故障涉及設(shè)備多、鏈路相關(guān)性大,因此排故復(fù)雜度較高。
本文針對某綜合處理設(shè)備數(shù)據(jù)鏈通信時(shí)出現(xiàn)偶發(fā)異常,通信功能不穩(wěn)定的故障,逐層分析以剖析根本原因,并提出了解決措施。
某數(shù)據(jù)鏈通信原理框圖如圖1所示,其數(shù)據(jù)消息接收處理流程為:電臺將接收到數(shù)據(jù)鏈消息轉(zhuǎn)發(fā)給接口模塊,經(jīng)接口模塊協(xié)議轉(zhuǎn)換、CPU模塊處理后傳給DSP,并由其對接收到的數(shù)據(jù)進(jìn)行數(shù)據(jù)校驗(yàn)以完成信息處理。若校驗(yàn)成功,則認(rèn)為該消息合法,然后將信息解析結(jié)果經(jīng)CPU實(shí)現(xiàn)控制并返回系統(tǒng);若校驗(yàn)失敗,則丟棄該消息。
圖1 通信原理框圖
在系統(tǒng)使用過程中,偶爾會出現(xiàn)讀取消息失敗,顯示接收數(shù)據(jù)CRC校驗(yàn)錯(cuò)誤的故障現(xiàn)象。通過在軟件中插莊代碼,對發(fā)往DSP的雙口數(shù)據(jù)進(jìn)行CRC校驗(yàn),確認(rèn)該故障發(fā)生在CPU模塊訪問DSP模塊雙口存儲器的時(shí)候,此訪問過程的硬件組成與原理如圖2所示。
由圖2可知,DSP模塊雙口存儲器的地址線為單向輸入信號,由CPU模塊處理器產(chǎn)生,經(jīng)驅(qū)動(dòng)器后輸出到DSP模塊。而數(shù)據(jù)線為雙向輸入輸出信號:在CPU模塊寫DSP雙口時(shí),由CPU模塊處理器驅(qū)動(dòng)后輸出到DSP;在CPU模塊讀DSP雙口時(shí),由DSP雙口驅(qū)動(dòng)后輸出到CPU模塊。
圖2 CPU模塊訪問DSP雙口存儲器的原理圖
當(dāng)發(fā)生故障時(shí),用示波器測量CPU模塊訪問DSP雙口的相關(guān)片選、讀寫信號,發(fā)現(xiàn)CPU模塊寫DSP雙口地址時(shí),DSP內(nèi)部地址線A12上有高電平毛刺產(chǎn)生,波形如圖3所示。圖中,從上到下信號依次為LBE總線片選信號/CS、寫信號WR、DSP內(nèi)部地址線A12。
圖3 故障時(shí)DSP內(nèi)部地址線A12信號測量
當(dāng)DSP雙口存儲器擬寫入地址為0x17FF時(shí),A12應(yīng)為低電平,但系統(tǒng)在實(shí)際運(yùn)行中由于地址線A12上產(chǎn)生了高電平毛刺,此時(shí)所形成的地址則變?yōu)榱?x1FFF。采用CPU對0x1FFF地址進(jìn)行數(shù)據(jù)讀取,讀取結(jié)果與CPU擬寫入地址0x17FF的數(shù)據(jù)相同,由此可判定DSP雙口存儲器地址總線上產(chǎn)生的高電平毛刺導(dǎo)致了數(shù)據(jù)的寫入錯(cuò)誤。為了查明毛刺的來源,繼續(xù)采用示波器對相關(guān)信號進(jìn)行測量,發(fā)現(xiàn)當(dāng)毛刺產(chǎn)生時(shí),LBE總線上有多條數(shù)據(jù)線將發(fā)生跳變,測量波形如圖4所示。圖4中,從上到下信號依次為LBE總線XSEL信號、CPU模塊上數(shù)據(jù)線驅(qū)動(dòng)器的使能信號EHL、LBE數(shù)據(jù)總線D7和DSP地址線A12。
圖4 毛刺產(chǎn)生時(shí)LBE總線數(shù)據(jù)信號測量
經(jīng)反復(fù)測量發(fā)現(xiàn),DSP雙口存儲器地址總線上毛刺產(chǎn)生時(shí)刻均為LBE總線數(shù)據(jù)信號跳變時(shí)刻,并且發(fā)現(xiàn)若LBE總線上的數(shù)據(jù)線同時(shí)發(fā)生翻轉(zhuǎn)的信號較少(小于8個(gè))時(shí),DSP雙口存儲器地址總線將不會產(chǎn)生毛刺。由此可判斷,在DSP雙口存儲器的寫周期,其地址總線上產(chǎn)生的毛刺與LBE總線上的多條數(shù)據(jù)線同時(shí)發(fā)生翻轉(zhuǎn)時(shí)所產(chǎn)生的同步開關(guān)噪聲有關(guān)。
為了避免在寫周期中,數(shù)據(jù)翻轉(zhuǎn)時(shí)在地址總線上所產(chǎn)生的毛刺引起的寫入錯(cuò)誤,于是對DSP模塊中FPGA輸出的寫信號時(shí)序進(jìn)行了優(yōu)化,對其輸出時(shí)間進(jìn)行延后并減小其有效輸出時(shí)間,優(yōu)化后的寫信號波形如圖5所示。圖5中,從上到下信號依次為LBE總線片選信號/CS、DSP雙口存儲器寫信號SRW。
圖5 修改后DSP雙口寫信號時(shí)序
此時(shí),DSP雙口存儲器寫信號在片選有效之后約100 ns變?yōu)橛行?,而毛刺出現(xiàn)在片選信號有效之后約20 ns,因此其不會對寫周期產(chǎn)生影響。同時(shí),寫信號有效時(shí)間為約40 ns,大于雙口存儲器芯片寫入脈沖的最小寬度15 ns,保證了數(shù)據(jù)的可靠據(jù)寫入。
當(dāng)DSP模塊中FPGA的寫時(shí)序邏輯完成優(yōu)化后,采用CPU模塊對DSP中的雙口存儲器進(jìn)行訪問驗(yàn)證,則會出現(xiàn)偶發(fā)性的數(shù)據(jù)讀取錯(cuò)誤。此時(shí),采用示波器測量LBE總線數(shù)據(jù)信號、DSP雙口存儲器數(shù)據(jù)信號均有連續(xù)毛刺產(chǎn)生,其波形如圖6所示。圖中,從上到下信號依次為DSP雙口存儲器片選信號MCS、數(shù)據(jù)線D13和LBE總線數(shù)據(jù)XD13信號。
圖6 故障時(shí)DSP雙口數(shù)據(jù)線和LBE總線數(shù)據(jù)線測量
在讀周期中,LBE總線數(shù)據(jù)信號由DSP雙口存儲器數(shù)據(jù)信號驅(qū)動(dòng),通常不會有連續(xù)毛刺產(chǎn)生。由測量結(jié)果判斷,LBE總線數(shù)據(jù)線上的毛刺信號應(yīng)由DSP雙口存儲器數(shù)據(jù)線上的毛刺所引起,從而導(dǎo)致了數(shù)據(jù)的讀出錯(cuò)誤。進(jìn)而對LBE總線數(shù)據(jù)驅(qū)動(dòng)器的使能信號測試,發(fā)現(xiàn)DSP雙口存儲器數(shù)據(jù)線上的毛刺產(chǎn)生在LBE總線數(shù)據(jù)驅(qū)動(dòng)器使能信號有效時(shí),由此可判斷DSP雙口存儲器數(shù)據(jù)線上的毛刺由多個(gè)LBE總線數(shù)據(jù)信號的同時(shí)跳變引起。經(jīng)反復(fù)測量發(fā)現(xiàn),若同時(shí)發(fā)生翻轉(zhuǎn)的總線數(shù)據(jù)信號較少(小于8個(gè))時(shí),DSP雙口存儲器數(shù)據(jù)線上將不再產(chǎn)生毛刺。當(dāng)DSP雙口存儲器數(shù)據(jù)線上產(chǎn)生毛刺時(shí),其地址總線信號也將產(chǎn)生連續(xù)毛刺,且兩者在時(shí)間上是同步的。由此推斷,讀周期中DSP雙口存儲數(shù)據(jù)線上的連續(xù)毛刺與其地址線上的連續(xù)毛刺有關(guān),而地址線上的連續(xù)毛刺與多個(gè)LBE總線數(shù)據(jù)同時(shí)發(fā)生翻轉(zhuǎn)時(shí)產(chǎn)生的同步開關(guān)噪聲有關(guān)。
由于讀周期中的LBE數(shù)據(jù)總線由
DSP模塊驅(qū)動(dòng),其數(shù)據(jù)信號在DSP雙口存儲器讀出數(shù)據(jù)有效時(shí)發(fā)生跳變,而DSP雙口存儲器芯片從讀信號有效到數(shù)據(jù)輸出之間的間隔不大于10 ns,因此DSP雙口存儲器芯片數(shù)據(jù)信號和LBE總線數(shù)據(jù)信號發(fā)生翻轉(zhuǎn)的時(shí)刻在讀信號有效后10 ns左右,若將此段時(shí)間的LBE總線地址驅(qū)動(dòng)器使能信號/EN設(shè)為無效,可有效避免LBE總線數(shù)據(jù)信號翻轉(zhuǎn)對DSP雙口存儲器地址信號的影響。于是,在DSP模塊FPGA的時(shí)序中,將LBE總線地址驅(qū)動(dòng)器使能信號/EN在雙口存儲器讀信號MRD有效時(shí)保持1個(gè)時(shí)鐘周期(如40ns)的無效狀態(tài)后變?yōu)橛行е?,如圖7所示,以保證數(shù)據(jù)的有效輸出。
圖7 修改后LBE總線地址驅(qū)動(dòng)器使能信號
綜合以上分析,當(dāng)CPU模塊訪問DSP雙口存儲器時(shí),若多個(gè)LBE總線數(shù)據(jù)同時(shí)發(fā)生翻轉(zhuǎn)時(shí),其產(chǎn)生的同步開關(guān)噪聲會引起DSP雙口存儲地址信號產(chǎn)生毛刺,該毛刺在讀寫周期中均會造成數(shù)據(jù)訪問錯(cuò)誤。其根本原因在于,多個(gè)LBE總線數(shù)據(jù)信號同時(shí)發(fā)生翻轉(zhuǎn)時(shí)產(chǎn)生的同步開關(guān)噪聲使其地址線上產(chǎn)生有效幅值較小的毛刺,但該毛刺經(jīng)連接器、母板和PCB走線傳輸至DSP模塊地址驅(qū)動(dòng)器后,毛刺幅值被放大。此時(shí),毛刺的最大幅值達(dá)到了1 V,超出了驅(qū)動(dòng)器低電平門檻電壓(0.8 V),被識別為高電平,最終導(dǎo)致地址錯(cuò)誤。通過對DSP模塊中FPGA總線驅(qū)動(dòng)器使能與雙口存儲器寫信號在時(shí)序上的優(yōu)化,然后對系統(tǒng)進(jìn)行了反復(fù)測試,均不再發(fā)生數(shù)據(jù)的讀寫錯(cuò)誤,有效解決了上述的偶發(fā)性故障問題。
CPU模塊訪問DSP雙口存儲器時(shí),多數(shù)據(jù)總線同時(shí)跳變產(chǎn)生的同步開關(guān)噪聲使得DSP雙口存儲器地址線上產(chǎn)生了高電平毛刺,進(jìn)而導(dǎo)致數(shù)據(jù)改寫和讀出錯(cuò)誤故障。通過優(yōu)化DSP雙口存儲器寫信號及DSP模塊中LBE總線地址驅(qū)動(dòng)器使能信號的時(shí)序邏輯,有效地解決故障。數(shù)據(jù)鏈通信系統(tǒng)具有規(guī)模大、綜合化和復(fù)雜度高的特征,當(dāng)發(fā)生故障時(shí)可能導(dǎo)致系統(tǒng)整體失效,因其涉及元素多,故障診斷和修復(fù)時(shí)間相對較長,本次故障分析和排查過程對類似數(shù)據(jù)鏈通信系統(tǒng)故障的快速診斷與修復(fù)具有較大參考價(jià)值。