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