李建翔,王洪凱,楊玉華,劉東海,李秋媛
(1.中北大學,儀器科學與動態(tài)測試教育部重點實驗室,電子測試國家重點實驗室,山西太原 030051;2.北京航天長征飛行器研究所,北京 100076)
近年來,在測試測量技術領域以及眾多產(chǎn)品的測試系統(tǒng)中,面臨著各種嚴苛的條件,對信號傳輸?shù)姆€(wěn)定性提出了更高的要求[1],成為目前亟待解決的重要課題。由于并行傳輸成本高、占用資源大,且并行傳輸對線路之間的物理性質(zhì)要求高,細微差別就可能導致數(shù)據(jù)不能同時抵達接收端,造成接收錯誤,所以遠距離傳輸往往選用串行傳輸方式。常用的串行接口標準有RS232、RS422、CAN總線以及LVDS傳輸。
在本次任務方案中,設計了一種以FPGA為核心的高性能遠距離低誤碼率的傳輸方案,本文主要研究對象為某接口通信鏈路的搭建及其可靠性的測試。綜合考慮各種串行接口的優(yōu)缺點,同時兼顧傳輸距離、成本以及可靠性等各方面因素,最終選擇RS422及LVDS相結合的方式,并在其軟件設計中分別加入校驗字及校驗碼的設計,保證其傳輸?shù)目煽啃浴?/p>
系統(tǒng)總體框圖如圖1所示。外系統(tǒng)等效器用于模擬外系統(tǒng)接口及功能仿真,實現(xiàn)對地面系統(tǒng)的全面覆蓋性測試考核。其工作的主要流程是:上位機發(fā)送控制指令,經(jīng)由PCI9054到達FPGA模塊,422收發(fā)器模塊用于轉發(fā)指令并回傳狀態(tài),控制對應的外系統(tǒng)等效器發(fā)送數(shù)據(jù),該數(shù)據(jù)經(jīng)過高速LVDS傳回上位機,最后進行分析數(shù)據(jù)是否正確,以驗證該方案可行性。
圖1 總體框圖
RS422作為一種能夠進行差分傳輸以及支持多點通信的數(shù)據(jù)傳輸協(xié)議,抗干擾能力比較強。在進行電路設計時,需要考慮避免信號異常而導致的接口損壞,同時避免設備間的互相干擾[2],所以采用隔離電路。傳統(tǒng)電路往往采用RS422芯片、電源隔離芯片和光耦的方式,電路復雜且成本較高。而ADM2682E芯片可配置為半雙工或全雙工模式,內(nèi)部集成了一個5 kV rms的隔離電源,省去了外部配置DC/DC模塊[3],從而能夠很大程度簡化電路,降低成本。RS422接口電路如圖2所示。
圖2 指令收發(fā)與狀態(tài)返回
在電路配置方面,應在ADM2682E芯片所有的電源引腳與地引腳之間并聯(lián)1只大電容和1只小電容作為旁路電容,以起到降低噪聲的作用[4]。
ADM2682E的輸入端具備短路故障保護功能,能夠在短路時保證接收器輸出為高電平?;蛘呷鐖D2中所示,分別在輸入端接上拉電阻RM以及下拉電阻RN,確保其正負壓差大于200 mV(芯片門限電壓),始終輸出為高電平,保證芯片工作在穩(wěn)態(tài)。為了防止芯片短路,在輸出端各串接1只51 Ω的電阻。同時RS422還要求在終端跨接1只阻值約為其傳輸電纜阻抗的電阻,這里選用阻值為120 Ω的電阻,減小信號的反射,有效提高信號的可靠性。
LVDS(low voltage differential signaling)作為一種低壓差分信號,能夠在保證數(shù)據(jù)高速傳輸?shù)耐瑫r,提供低功耗、低誤碼率、低串擾、高噪聲抑制能力等其他傳輸模式不可兼?zhèn)涞膬?yōu)勢,可以實現(xiàn)點對點以及一點對多點的連接[5]。LVDS傳輸技術本身具有很低的電壓擺幅,因此能夠很快地改變狀態(tài),提升信號的傳輸距離;與此同時其輸出模式是低電流驅(qū)動,所以它具備很好的抗干擾性能。
在LVDS傳輸鏈路發(fā)送端,選用SN65LV1023A串化器,將并行數(shù)據(jù)轉化為串行數(shù)據(jù),其串行傳輸速率能夠覆蓋100~660 Mbps,本身傳輸距離僅有十幾m,為了滿足遠距離傳輸,在發(fā)送端增加高速電纜驅(qū)動器CLC001AJE,以此倍增差分信號的驅(qū)動能力。在端口處配合TVS陣列,增強傳輸線路保護能力。LVDS發(fā)送電路如圖3所示。
圖3 LVDS發(fā)送端電路
LVDS信號經(jīng)過長距離傳輸后,信號會有一定程度的衰減,其衰減的程度與信號頻率的平方根和電纜長度之積成正比[9],因此當接收端收到LVDS信號后,要對其幅頻特性和相頻特性進行修正和補償。接收端電路設計如圖4所示。LVDS信號經(jīng)過90 m長電纜傳輸后先經(jīng)自適應電纜均衡器LMH0074進行修正補償,再經(jīng)過LVDS隔離緩沖器輸入到解串器SN65LV1224B,最后傳輸?shù)紽PGA模塊。
圖4 LVDS接收端電路
為了保證信號的可靠性,阻斷外部干擾,在信號進入解串器前便進行隔離。通過串接1只LVDS隔離緩沖器,有效防止地信號的耦合性。其相較其他產(chǎn)品有更好的工作性能,數(shù)據(jù)速率可高達600 Mbps,并且具有極低抖動,有效抑制電源紋波和毛刺現(xiàn)象。C3、C4、C5、C6均為隔直電容,實現(xiàn)AC耦合,提供直流偏壓,濾出直流分量。
自適應電纜均衡器LMH0074工作范圍很廣,可支持的速率能夠覆蓋125~540 Mbps范圍,輸出經(jīng)過交流耦合后經(jīng)電阻網(wǎng)絡變?yōu)闃藴蔐VDS信號送入下一端口。在接收端分別在差分線串上接24.9 Ω的電阻用來匹配雙絞線的線路阻抗;C7、C8作為隔直電容實現(xiàn)AC耦合。信號在發(fā)送端的波形如圖5(a)所示,在經(jīng)過90 m電纜傳輸后的波形如圖5(b)所示,在接收端經(jīng)過電纜均衡器LMH0074的波形如圖5(c)所示。由圖中可以看出,在LVDS信號經(jīng)過電纜傳輸過后,其波形并不理想,而LMH0074能夠自適應補償衰減的信號,使衰減過的信號較好地與發(fā)送端保持一致,從而保證SN65LV1224B解串成功。
(a)LVDS發(fā)送端波形
本文在對硬件電路設計的前提下,為了保證通信鏈路的可靠性,同時對嵌入式軟件也做出抗干擾設計。在指令傳輸鏈路中加入校驗字環(huán)節(jié),提高指令識別的可靠性;在LVDS傳輸中加入半字節(jié)CRC校驗環(huán)節(jié),降低誤碼率。
存儲器綜合測控臺向外系統(tǒng)等效器發(fā)送命令,外系統(tǒng)等效器向存儲器綜合測控臺反饋狀態(tài),傳輸碼率為625 Kbps。
在指令內(nèi)容較短時,譬如只有2個字節(jié),往往采用三判二機制,即測控臺連續(xù)發(fā)送3次命令,等效器正確檢測到2次命令后,才可以執(zhí)行該命令[11],有效防止因偶然性而導致的指令錯誤下發(fā)。而當指令內(nèi)容稍長時,則采用校驗字的方式,本次指令內(nèi)容如表1所示,校驗字內(nèi)容采取指令內(nèi)容按位異或方式計算求得。
表1 指令信息表
循環(huán)冗余校驗(cyclic redundancy check,CRC)是一組自行規(guī)定或使用國際標準的校驗碼,附在原始數(shù)據(jù)尾部,用于校驗在傳輸過程中是否產(chǎn)生誤碼以及丟數(shù)[12]。
在硬件優(yōu)化的前提下,在信號的傳輸過程中增加CRC校驗的過程。本文綜合硬件與軟件相適應的考慮,選擇半字節(jié)CRC查表法的校驗方法,既能保證傳輸碼的質(zhì)量,也不會給硬件造成負擔。半字節(jié)CRC查表法所構成的碼值只有16種,簡單可靠。其對應的校驗碼表如表2所示。
表2 CRC校驗碼表
LVDS數(shù)據(jù)在發(fā)送端的打包格式為4字節(jié)幀頭+8 192字節(jié)數(shù)據(jù)(8 K數(shù)據(jù))+4字節(jié)CRC校驗碼,共8200字節(jié)。其校驗碼的生成格式如下,先將寄存器內(nèi)初始值設置為0,然后將數(shù)據(jù)按半字節(jié)依次移出,將移出的半字節(jié)與寄存器內(nèi)的值相異或,將所得值查表得到新的表值再異或到寄存器中,循環(huán)往復,最終產(chǎn)生CRC校驗碼附于數(shù)據(jù)包后發(fā)送給接收端。
接收端收到數(shù)據(jù)后,要對數(shù)據(jù)進行校驗確定其是否無誤碼。校驗關鍵代碼如下:
If Data_cnt=8199 then
if D_lvds_din & Check=CRC_out
then
Error_flag_q <= ’0’;
F_send_flag <= not F_send_flag;
F_wr_pt <= F_wr_pt+1;
當一包數(shù)據(jù)發(fā)送完畢后,即從0計數(shù)到8 199,需校驗其數(shù)據(jù)碼流(D_lvds_din)與校驗碼流(Check)是否與收到的數(shù)據(jù)(CRC_out)一致,若一致則Error_flag_q置0,繼續(xù)接收下一包數(shù)據(jù)。利用ChipScope在線分析數(shù)據(jù)包如圖6所示,收到數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,校驗成功,傳輸無誤。
圖6 CRC實時校驗
數(shù)據(jù)在傳輸過程中會出現(xiàn)誤碼丟碼的現(xiàn)象,此時Error_flag_q則會拉高,觸發(fā)自動重傳機制,要求發(fā)送端重新發(fā)送該包數(shù)據(jù),為了避免出現(xiàn)一直發(fā)送同一包數(shù)據(jù)的情況,導致后續(xù)數(shù)據(jù)不能正常傳輸,在軟件邏輯設計中規(guī)定同一包數(shù)據(jù)的自動重傳指令最多發(fā)送3次,3次之內(nèi)接收正確或者連續(xù)3次接收錯誤,則繼續(xù)發(fā)送下一包數(shù)據(jù),其關鍵代碼如下:
if Error_flag_d =′1′ then
cc_sent_flag <= ′1′;
Send_cmd_CS<=
(X″5A″,X″54″,X″C9″,X″69″,X″39″,X″99″);∥
重傳指令
若出現(xiàn)連續(xù)誤碼時,則如圖7所示,接收端會發(fā)送3次重傳指令。
通過上位機反復大量讀取數(shù)據(jù),測試其誤碼率,數(shù)據(jù)結構如圖8所示,一包數(shù)據(jù)包括:包頭2字節(jié),用于識別數(shù)據(jù)包類別;包計數(shù)2字節(jié),用于校驗其連續(xù)性;數(shù)據(jù)有效內(nèi)容1 019字節(jié),不同數(shù)據(jù)包內(nèi)數(shù)據(jù)內(nèi)容不同;最后為1字節(jié)校驗位,均為每包中有效數(shù)據(jù)之和,用于校驗數(shù)據(jù)內(nèi)容是否正確。
圖8 數(shù)據(jù)結構
為了驗證本設計的可靠性,在實驗過程中用6段電纜組成90 m傳輸線路連接外系統(tǒng)等效器及存儲器綜合測控臺,分別采用不同的速率對其可靠性進行驗證,更改程序調(diào)整速率,通過多次試驗測試,在不同情況下LVDS傳輸可靠性表現(xiàn)如表3所示。
表3 LVDS傳輸測試
結果表明:在90 m電纜下,通過軟硬件的共同優(yōu)化,數(shù)據(jù)可以達到240 Mbit/s的零誤碼傳輸。指令下發(fā)加入可靠性設計后均能100%正確動作,且經(jīng)過驅(qū)動器及均衡器的作用,LVDS數(shù)據(jù)能夠大幅提高長線傳輸?shù)哪芰?,但由于在軟件中加入CRC校驗等算法,實際速率相較理論速率會有一定的下降。
本文結合RS422和LVDS進行了一種通信傳輸鏈路的設計,在硬件電路滿足技術要求的前提下,極大程度簡化硬件電路;同時在軟件設計中,指令收發(fā)模塊和數(shù)據(jù)傳輸模塊都進行了可靠性設計,在保證傳輸質(zhì)量的前提下極大提高了傳輸速率。經(jīng)驗證,本設計能夠滿足任務要求,達到預期效果。