甄國涌,陳曉錦,王 迪
(1.中北大學儀器科學與動態測試教育部重點實驗室,太原 030051;2.空軍裝備部駐太原地區軍事代表室,太原 030051)
現代測試領域對數據傳輸的速度、傳輸距離和可靠性有著越來越高的要求。在遠距離數據傳輸時,串行傳輸較并行傳輸有著可靠性高、成本低以及布線簡便的優勢,所以一般采用串行傳輸的方式 。但是一般的串行傳輸速率往往達不到特定測試領域的設計要求,而LVDS 傳輸技術采用極低的電壓擺幅高速差動地傳輸數據,在滿足高速傳輸的同時具有低功耗、低誤碼率等優點[2]。但是LVDS信號自身的傳輸距離極短,僅有幾米,若在可靠性不降低的情況下增加傳輸距離,勢必要在硬件和邏輯進行適配。
本文設計中,硬件設計上在LVDS 發送端添加驅動電路,提升信號壓差,延長信號傳輸的距離。在LVDS 接收端加入自適應均衡器,補償因長距離傳輸LVDS 信號在傳輸介質中引起的信號衰減[3]。同時在邏輯設計中引入CRC+ECC 雙校驗結合的方式,既利用了FPGA 并行傳輸特性消耗極少的時鐘資源,同時又提高了單校驗方式下數據傳輸的準確度,解決了LVDS 信號在長距離高速傳輸時可靠性較低的問題。
該數據傳輸系統主要是由數據記錄裝置、地面測試設備以及上位機組成。如圖1 所示,其中數據記錄裝置主要是將飛行器的遙測數據編碼存儲起來,地面測試設備主要是回讀存儲起來的遙測數據,上位機軟件對遙測數據執行回讀指令并進行數據分析。

圖1 系統整體設計框圖
為實現地面測試設備高速回讀數據記錄裝置存儲的遙測數據的要求,接口選用LVDS 高速數據接口。在數據發送端使用,可將由FPGA 發出的高速并行數據轉化為串行數據的LVDS 串化器,轉化為串行數據可有效延長數據的傳輸距離。為增強LVDS 信號的驅動能力,在數據發送端增加高速驅動器,同時為補償LVDS 信號經過長距離傳輸而引起的衰減問題,在數據接收端使用自適應均衡器以提供補償[4]。
在LVDS 發送端的硬件電路設計中選用SN65 LV1023 作為發送芯片,其數據傳輸速率為100 Mb/s~660 Mb/s,滿足設計要求。該芯片將FPGA 輸出的并行10 位信號經內嵌時鐘后轉化為串行輸出,有效降低了由于數據和時鐘不同步造成的誤碼錯誤[5]。但是差分信號經SN65LV1023 輸出的壓差僅200 mv,芯片傳輸距離僅10 m,不能達到長距離傳輸的要求。因此,想要實現在雙絞電纜中的長距離傳輸,就需要傳輸端加入驅動器來補償因傳輸介質的衰減和相位延遲而導致的信號擺幅不足問題。
CLC001AJE 為一款數據傳輸速率可達622 Mbit/s的高速驅動器,差分輸入的門限電壓為100 mv,輸出電壓的壓差為1.6 V~2 V。作為發送端的驅動器,就是將信號作預加重處理,把沿信號的幅度增強,從而達到提高信號高頻分量的效果[6]。因此,在LVDS發送端增加高速驅動芯片CLC001AJE 將輸出信號壓差提升至2.3 V,有效增加沿信號的擺幅,達到了延長LVDS 信號傳輸距離的目的。具體LVDS 傳輸端電路如圖2 所示,LVDS 輸出信號的電壓值可由外部電阻R6 調節,R5 取100 Ω/1 %的端接電阻用來對驅動線路進行阻抗匹配。

圖2 LVDS 信號發送端電路
選用SN65LV1224 解串芯片作為LVDS 接收芯片,SN65LV1224 芯片可解析出串行數據中內嵌的時鐘信號并將串行數據轉化為并行數據傳輸到FPGA。LVDS 信號的傳輸介質為雙絞屏蔽線且百米內的傳輸阻抗小于10 Ω,因此,輸入信號在進入解串芯片前還需進行輸入電平控制和100±10 Ω 的阻抗匹配。正因為傳輸線引起的損耗與信號傳輸速率成正比,所以設計中信號傳輸速率在百兆級的情況下,線纜200 Hz 時的信號衰減約為37 dB,屬于有損傳輸線。
由于傳輸介質的傳輸函數具有低通特性,信號在介質中的傳輸速率會慢于信號的低頻分量,使得接收到的信號幅度降低,脈寬變大,在傳輸過程中信號的高頻部分會受到一定的幅值衰減以及相位時延。若在連續無變化的信號中出現一個切換脈沖,則接收端的部分信號會因擺幅不足直接影響數據信息的有效讀取,造成碼間干擾[7]。因此,在接收端前加入均衡電路,來補償電纜對信號的衰減,達到降低誤碼率、提高傳輸數據可靠性的目的,具體電路設計如圖3 所示。

圖3 LVDS 信號接收端端電路
設計中采用的LMH0074 是一款可自動補償傳輸速率為143 Mbit/s~540 Mbit/s 的自適應電纜均衡器,其內部包含一個均衡濾波器,一個判決器和自偏置直流整形電路部分。差分信號經過均衡濾波器后,將進入自偏置直流整形電路的信號分成兩部分,一部分相當于緩沖器實現單位增益,作用是達到延遲匹配,另一部分實現高頻加強,來補償傳輸介質上的高頻損耗。兩部分信號最終作為判決器的輸入,通過與判決器的設定幅值比較,輸出符合要求的沿信號。信號在自偏置直流整形電路的前級和后級可生成一種自動均衡控制(AEC)信號,該控制信號可跨AEC+和AEC 引腳放置一個1pF 電容來外部控制均衡濾波器的增益和帶寬,還可以濾除比較后輸出中含有高頻噪聲。
經SN65LV1224 直接對信號進行解串會導致得到的部分信號無法判斷處于高電平或是低電平,使數據出現錯誤,如圖4(a)所示。而加入LMH0074 均衡器可將解串信號恢復,將信號擺幅的高低電平基本保持一致,使接收端電位信息明顯辨別,如圖4(b)所示。

圖4 均衡前后對比圖
數據以1 024 B 為一包,為保持較高的檢錯率在邏輯設計時選用CRC16 校驗方法。對于數據量較多的運算,傳統的逐位串行運算校驗速率較低,耗費時鐘周期較長。而通過使用查表法CRC 運算可并行處理接收的數據,效率較高,適合大量數據校驗[8]。CRC16 半字節查找表校驗流程圖如圖5 所示。

圖5 CRC16 半字節查找表校驗流程圖
在LVDS 傳輸過程中發送端和接收端都進行CRC 校驗,若校驗后兩端結果不一致,則表明在數據傳輸過程中出現誤碼或丟數現象,反之,則說明LVDS 數據在傳輸過程中無錯誤。
ECC 校驗是通過將數據塊的行、列的奇偶信息生成校驗位來對數據進行檢驗,糾錯[9]。ECC 校驗方法可以對一位錯誤糾錯,可以檢驗出兩位錯誤但是無法糾正。ECC 校驗示意圖如圖6 所示。

圖6 ECC 校驗示意圖
ECC 校驗過程為:首先將需發送的數據塊中的數據字按位異或,將得到的異或結果與P1、P1'、P2、P2'等異或,得到列校驗碼。每次發送完成數據字后便將該字與P16、P16'、P32、P32'等異或,得到行校驗碼。當數據塊中的數據字發送完成后,計算的結果即為該數據塊的ECC 校驗值。將LVDS 信號發送端和LVDS 接收端計算的ECC 校驗碼根據奇偶位可分為4 組12 位校驗碼。

其中,ECC_result 為數據的ECC 校驗值。若ECC_result 的結果為“0”則表明該數據塊中數據字全部正確,結果為“1”則表明數據塊中存在1 位錯誤,結果為其他值表示數據中存在多位錯誤。ECC 糾錯方法:ECC_addr <=ECC_tx_odd xor ECC_rx_odd,得到的結果中高8 位表示錯誤的字地址,低4 位表示出錯的位地址。通過地址找到出錯的位置取反即可糾正[10]。
雙校驗邏輯實現流程為:在收發兩端,LVDS 數據的發送和接收都以1 024 B 為一包數據。當發送端將一包數據發送完成后緊接著發送這一包數據的雙校驗碼,接收端在接收數據的同時計算該包數據的雙校驗碼,在接收端接收完成一包數據后首先判斷發送端發送的CRC 值與接收端接收的CRC 值是否一致,如果CRC 校驗值一致表示數據正確,準備接收下一包數據。若CRC 校驗值不一致,則通過對該數據包的ECC 校驗碼進行判斷,并計算出該數據包中數據出錯的位置,若ECC 判斷錯誤位數較少可糾正,則對該出錯數據取反糾正。若錯誤位數較多,不可糾正,則數據接收端向發送端請求重傳本包數據。
3.3.1 發送端邏輯實現
LVDS 發送端采用乒乓操作的方式進行數據發送,發送端首先發送RAM1 中的數據,當數據發送完成后緊接著發送2 個ECC 校驗值和1 個CRC 校驗值。當RAM1 中的數據以及雙校驗碼發送完成后,發送端緊接著向RAM2 緩存下一包數據并等待接收端的重傳請求,如果無重傳請求,數據發送端將RAM2 中緩存的數據讀出并發送。若發送收到重傳請求,則再次將RAM1 中的數據讀出并發送。為保障數據的傳輸效率,發送端在第2 次發送完成后,不再等待重傳請求直接開始發送下一包數據,發送端工作流程圖如圖7 所示。

圖7 發送端工作流程圖
3.3.2 接收端邏輯實現
數據接收端將收到的LVDS 數據寫入RAM中,并計算這一包數據的CRC 和ECC 校驗值,如果CRC 校驗值一致表明接收到的數據包正確,不需要糾正或重傳,等待接收下一包數據。若不一致則根據ECC 校驗值判斷出錯的位數,如果出錯的位數為一位,根據ECC 校驗結果計算出錯的位置并進行取反糾正否則請求重傳。接收端工作流程圖如圖8 所示。

圖8 接收端工作流程圖
對于校驗算法無論CRC 校驗、ECC 校驗或雙校驗算法,不能過多的消耗數據傳輸的帶寬,需保證原有數據正常傳輸,必須考慮數據校驗、糾錯以及重傳對時鐘的消耗[11]。
對于數據的檢錯和糾錯必然會導致數據傳輸速率的降低,但是在FPGA 中進程都是并行執行的。在數據發送端和接收端,數據發送、接收以及數據校驗都可同時進行,不會占用過多的時鐘資源。采用雙校驗算法和只使用ECC 校驗算法分別對1 k數據進行校驗所消耗的時鐘資源如表1 所示。由表中數據可知,在數據正確或數據錯誤的情況下雙校驗算法都比ECC 校驗算法節省時鐘資源。

表1 雙校驗和ECC 校驗消耗時鐘對比
為驗證雙校驗算法的可靠性,使用采編設備、地面測試臺、上位機構成一個閉環測試系統。使用5段15 m 電纜串接為一條75 m 電纜,采編設備通過75 m 電纜向上位機軟件發送LVDS 數據。通過修改發送端程序,分別測試在100 Mbit/s,200 Mbit/s,300 Mbit/s,400 Mbit/s,500 Mbit/s 發送速率下的誤碼率,測試結果如表2 所示。

表2 測試結果
由表2 中的數據分析可得在不加任何校驗算法的情況下,硬件電路可以在傳輸速度為100 Mbit/s,傳輸距離為75 m 的情況下可以無誤碼發送,但是隨著發送速率的增加,誤碼率也在增加。在加上雙校驗算法后,傳輸速度會明顯下降,傳輸速度在400 Mbit/s及以下時可保證數據傳輸的可靠性。
本文針對數據在高速遠距離傳輸時存在損耗大、數據傳輸可靠性低的問題,設計了基于雙校驗算法的高速長線LVDS 傳輸系統。在延長LVDS 傳輸距離的同時,在數據鏈路發送端和接收端的電路設計上,使用預加重處理+均衡處理的方式保證了數據傳輸的可靠性。邏輯上采用CRC 與ECC 雙校驗結合的方式,提供了數據在高速傳輸時多錯重傳,少錯糾正的技術支持,同時也降低了校驗算法對數據傳輸時的帶寬損耗。經試驗驗證,基于雙校驗算法的高速長線LVDS 傳輸系統在消耗少量帶寬資源的情況下,可實現在75 m 雙絞屏蔽線纜上的信號高速可靠傳輸,速率可達400 Mbit/s,同時降低了硬件、人力時間成本。