文 豐,張 宇,吳瑞華
(1.中北大學 電子測試技術國家重點實驗室, 太原 030051; 2.中國運載火箭技術研究院, 北京 100076)
query; zero bit error rate
測試特殊環境中,由于測試距離長、人員無法靠近,考慮安全性、抗擾性等因素,使用光電耦合器進行隔離的RS- 485、 RS- 422等傳統串行總線已經無法滿足測試要求。低壓差分信號傳輸(LVDS)是一種在更高性能轉換器和高帶寬FPGA或ASICI/O中常用的高速傳輸方式。差分信號之間的互相耦合對于外部電磁干擾(EMI)具有很強的抑制能力,同時也可將任何因為LVDS信號傳輸所造成的EMI最小化[1]。
基于以上原因,設計了一種基于FPGA的LVDS高速傳輸鏈路,分別對鏈路硬件與軟件關鍵技術作了詳細優化設計,并搭建測試系統,全面的驗證了傳輸鏈路的可行性與可靠性。
傳輸系統由命令鏈路與數據鏈路組成。由于測試環境特殊,數據采集設備與數據測控設備[2]間需使用穿艙電纜相連,傳輸距離為94 m,電纜需分段并使用電連接器相連。傳輸系統硬件組成框圖見圖1。
根據技術要求,設計出2段2 m,多段15 m,連接介質選用J14H系列電連接器[3],總長超過百米的高性能LVDS傳輸電纜,以240 Mbit/s在自制穿艙電纜上通過數次試驗,驗證設計方案的有效性與可靠性。

圖1 傳輸系統組成框圖
系統指令采用滿足RS-422標準的二線制電流傳輸作為通信方式。遠距離傳輸中,電壓信號容易失真。因電壓信號經過發送電路的輸出阻抗、電纜電阻以及接觸電阻形成了電壓降損失,只有當信號接收電路的輸入阻抗是高阻的,由上述電阻引起的傳輸誤差才能足夠小。而高阻抗電路中,信號傳輸很容易受到電磁干擾導致信噪比極低。電流源作為發送電路時,其提供的電流信號可以始終為預期電流而與電纜的電阻以及接觸電阻無關。因此在電磁干擾較強的環境和需要遠距離傳輸時,采用標準化電流作為傳輸信號[4]。
如圖2所示, RS- 422指令傳輸采用ADI公司的ADM2682E[5],封裝中集成了一個差分接收器、一個3路磁隔離變壓器和一個DC/DC轉換器。芯片集成了信號隔離與電源隔離功能,設計上不僅省去了外部 DC/DC,同時為輸入與輸出引腳支持±5 kV的有效隔離與±15 kV的ESD保護。芯片速率可達16 Mbit/s,有很強的帶載能力,支持多點傳輸系統,滿足系統指令波特率625 KB需求。

圖2 ADM2682引腳及功能圖
如圖3所示,此芯片邏輯接口可以直接輸入和輸出,為了降低紋波和抑制噪聲,輸入和輸出的供電引腳需要電源旁路[6]。圖3中輸出端Y和Z端接5.1 Ω大功率電阻R13、R17;輸入和輸出電源與地跨接電容C8、C9用于退耦,高頻電容C7用于抑制噪聲以及大電容C10用來調整紋波。

圖3 ADM2682模塊原理圖
數據與狀態鏈路均采用LVDS傳輸方式。高速LVDS信號的發送與接收選用TI公司的10位串化芯片SN65LV1023與解串芯片SN65LV1224搭建,傳輸速率在100~660 Mbit/s之間,滿足系統設計的240 Mbit/s速率要求,LVDS鏈路電路組成如圖4所示。

圖4 LVDS鏈路電路組成
SN65LV1023作為串化芯片將存儲設備數據與實時監測數據通過內嵌同步時鐘,轉化為串行碼傳輸[7]。串行碼傳輸增大傳輸距離,同步時鐘降低線纜外界干擾,增加傳輸準確率。為了進一步降低誤碼率,鏈路中增加發送驅動器和接收均衡器以增強信號有效傳輸能力,克服LVDS信號短距離傳輸缺陷[8]。驅動器選用NS公司的CLC001AJE(622 Mbit/s)配合PROTEK DEVICES公司的串并兼容的SMDALC03(15 kV靜電防護)端口保護芯片,保證信號安全可靠發送;均衡器選用TI公司LMH0074(125~540 Mbit/s)。LVDS鏈路工作過程中,高速數據經SN65LV1023在近端同100 Ω匹配電阻,串化為擺幅為350 mV低壓差分信號,經驅動器CLC001AJE補償信號輸出擺幅為800 mV~1.0 V,增加差分信號長距離傳輸抗損耗能力;信號通過94 m LVDS屏蔽雙絞線傳輸到接收端均衡器LMH0074,補償后的差分信號應用ADN4651(600 Mbit/s)差分磁隔離技術輸入到解串器SN65LV1224接收端,模數轉換后接FPGA數據輸入端并完成數據鏈路傳輸全過程。其中,LVDS驅動器及接收器的使用可以提供電連接器帶電插入。當輸入引腳均處于浮動狀態時,均衡器的安全功能可以防止輸出出現振蕩造成傳輸誤碼[9]。傳輸電纜采用LVDS專用屏蔽雙絞線,百米百兆赫茲信號傳輸衰減小于等于29.7 dB,百米二百兆赫茲信號衰減36.7 dB,LMH0074可恢復40 dB的電纜衰減,可以勝任94 m 240 Mbit/s傳輸過程中的線纜衰減。ADN4651磁隔離的使用采取電流環將接收信號與模數轉換間安全隔離,-75 dB的高電源紋波抑可以極大地降低差分線路中破壞諧波的產生;阻止浪涌效應對接收端器件的軟損傷而導致其可靠性降低,壽命縮短。
系統傳輸鏈路邏輯設計如圖5所示。
由于傳統CRC校驗采用逐位運算,相對效率較低。作為優化設計,設計了一種4 bit-CRC查表法。一方面,此方法不需要對數據做高位或低位補位處理,首次循環即可將計算結果寄存。另一方面,為了避免校驗值對FPGA的ROM資源的大量占用,4 bit-CRC校驗采用查表法實現,表值構成僅為16個,不需要再生成ROM模塊,4 bit-CRC查表法校驗執行步驟如下:
步驟1數據先同剛從寄存器移出的4 bit做模二運算,得到CRC余式表檢索值;
步驟2根據檢索值進行索引,得到相應的CRC索引值;
步驟3把CRC索引值在模二運算到寄存器中;
步驟4將未處理的數據循環步驟1到步驟4。
為進一步提高長距離高速傳輸可靠性,增加ARQ機制以及數據收發端邏輯上的乒乓緩存[10]。LVDS鏈路發送方以8 KB數據打包,采用4 bit-CRC校驗生成32位校驗和附于數據包之后,接收方收到數據包后做同發送端一樣的CRC校驗。若前后端校驗結果一致,則通過 RS- 422指令鏈路發送非重傳指令;若校驗結果不一致,則判斷數據傳輸中產生誤碼,通過 RS- 422發送重傳指令,重新發送該包數據,同時丟棄有誤碼數據包。為防止過多的誤碼誘導邏輯出現重傳鎖死,約束錯誤計數3次后,將不再發送重傳請求,并接收此含誤碼數據包。
設計LVDS接口通信要求具有高速率、抗噪聲、遠距離傳輸、高準確度等特點。向前糾錯編碼的冗余部分允許接收方檢測可能出現信息在任何地方的有限個差錯,具有較好的實時性。根據設計需求,基于(7,4)漢明碼編解碼機制[11]設計了一種高效的6B/10B編解碼傳輸。
3.2.1編碼機制
在(7,4)漢明碼構造編解碼過程中,若碼長為n,信息位數為k,則監督位數為r=n-k。若用r個監督位構造出r個監督關系式來指示n位中的1位錯碼,則要求2r-1≥n或2r≥k+r+1。為檢測碼組中e個錯碼,要求最小碼距為d0≥n+1;為了糾正t個錯碼,要求最小碼距為d0≥2t+1;為了糾正t個錯碼,同時檢測e個錯碼,要求最小碼距為d0≥e+t+1且e>t。
針對LVDS鏈路單次傳輸10 bits,至少需要r=4位監督位,編碼碼距至少大于等于3。因此,設計使用4 bits監督位,構造4個監督關系式來指示并糾正10 bits中1位錯碼的任意位置。設10 bits碼元由高位到低位為a9,a8…,a1,a0,信息位為a9,a8…a5,a4,監督位為a3,a2,a1,a0。接收端解碼使用校驗子Sn奇監督關系滿足下式:
Sn=an-1⊕an-2⊕…⊕a0
(1)
約定Sn值為1表示碼組中有1位錯碼;否則無錯碼。4 bits監督碼可以產生16種校驗子Sn碼組,根據碼距與傳輸編碼要求,篩選后設計的編碼校驗子碼組與監督誤碼位置對應關系如表1所示。

表1 6B/10B校驗子與誤碼位置對應關系
信息位a9,a8…a5,a4決定于輸入信號是隨機的。監督位a3,a2,a1,a0需根據信息位的取值關系來確定。由表1校驗子與誤碼對應關系以及漢明碼碼組中的線性無關規則,碼組中無誤碼時Sn等于0,由模2移項計算解出監督位為:
a0=a9⊕a6⊕a5⊕a4
(2)
a1=a9⊕a8⊕a6
(3)
a2=a9⊕a7⊕a6⊕a4
(4)
a3=a8⊕a7⊕a6⊕a5
(5)
依據上式可計算出信息位變化而得到的各個監督碼組。因信息位為6位,計算出信息位與監督位的碼組有64種。設計中,考慮到LVDS同步碼沒有經過編碼,對其編碼需要消耗有效帶寬以及判別其是否滿足碼組的碼距組成要求,實際傳輸中考慮1位誤碼的冗余同步碼,將無效碼組建立查找表處理,如表2所示。

表2 冗余無效碼組
除去冗余同步碼外,該設計中有效碼組需傳輸3種數據:狀態字、同步碼、有效數據。各數據定義如表3所示。
根據表3中10 bits傳輸碼元定義,設計有效數據傳輸過程中,每字節數據需分為低4位、高4位兩個時鐘傳輸,將區分數據高低位狀態字與有效數據組合,先發送低4位,后發送高4位。
設備上電過程中,為了避免鏈路失鎖,無有效數發送時,發送端持續發送無效數0000011111保證鏈路時刻同步。
3.2.26B10B數據編碼與解碼
LVDS數據發送端上電初始化后持續向接收端發送同步信號并判斷收數RAM讀寫地址偏置是否大于100,滿足要求時,將數據讀出上傳,否則持續發送無效同步碼進行同步填充。上傳數據和狀態字均在編碼后發送,優化篩選的編碼發送采用查表法。具體操作流程如圖6(a)所示。
LVDS接收端接收時鐘TCLK同步成功后,通過判斷LOCK信號同步鎖定與否,LOCK低電平有效,在下降沿將編碼數據讀入,先判斷是否為無效冗余碼,再進行解碼,在上升沿將解碼狀態字鎖存或將解碼數據寫入緩存。具體操作流程如圖6(b)所示。

圖6 6B/10B編碼、解碼操作流程
為了驗證設計可行性,通過上位機、數據測控設備、數據采集設備、存儲設備搭建整體測試系統,配合研制的LVDS高速長距離傳輸電纜模擬測試惡劣環境下的鏈路傳輸性能。
數據測控設備配合上位機可下發控制指令以及輸出-6.5~ 6.5 V模擬電壓信號,作為模擬量采集輸入端;數據采編設備可完成采集數據實時上傳并控制數據存儲設備進入存儲狀態;數據存儲設備用于實時存儲采編及其他狀態數據。
經過數據測控設備對存儲設備數據回讀,測試數據編幀格式如圖7所示。CFCC與C1AA為數據包頭,作為上位機分解識別標志,包頭后跟著2個字節的包計數,用于上位機檢測數據包連續性。CFCC開頭為多路AD采編數據,C1AA為1路PCM數據,采編器數據中的幀計數配合上位機用于檢測數據幀連續性,判別是否丟數。

圖7 測試數據結構組成
因存儲設備采用雙備份設計,每次回讀數據量為32 GB,數十次測試數據已超過500GB,對測試數據進行誤碼分析,具體結果如表4所示。

表4 測試誤碼率統計
由表4誤碼率統計可以看出,在傳輸速率240 Mbit/s情況下,硬件設計最長可以保證傳輸距離79 m無誤碼。但是隨著傳輸距離增大到94 m時,對應回讀32 GB數據量,誤碼大小已接近370 KB,嚴重影響后續數據分析。嵌入式邏輯增加6B/10B編碼后,雖然犧牲一定的帶寬,但是增加了傳輸距離,降低了誤碼率,提高了傳輸可靠性,保證傳輸距離超過94 m時仍可以零誤碼傳輸,滿足了設計要求。
對94 m LVDS長線傳輸測試無誤碼后,采用Langer公司的P11型迷你脈沖群發生器對ARQ指令進行測試。測試方法為:嵌入式程序CRC校驗部分做打開與關閉對照測試,前后分別加載程序進行測試。系統正常工作過程中,設置P11單脈沖模式,設置不同磁場強度對94 m LVDS電纜發射干擾,使用Xlinx ISE14.7在線邏輯分析儀(ChipScope)實時抓取FPGA中Error_flag信號,并對當次存儲的數據進行解包分析,判斷ARQ是否生效。ChipScope在線分析捕捉結果如圖8所示。Error_flag被拉高說明鏈路發生重傳,上位機分析當次數據結果如圖9所示。

圖8 Error_flag在線分析圖

圖9 重傳接收數據分析結果
利用上位機數據分析功能統計嵌入式程序打開與關閉CRC校驗部分加載后在不同脈沖強度下的誤碼測試結果,如表5所示。

表5 CRC校驗的脈沖干擾測試結果
結合圖8、圖9及表5,傳輸鏈路增加CRC校驗與ARQ機制后,單次脈沖干擾雖然使系統發生自動重傳,但優化后的傳輸鏈路極大的改善鏈路傳輸的穩定性和可靠性。
為完成LVDS總線在惡劣環境、高速率、長距離傳輸的可行性與可靠性任務,硬件上,采取電流環控制、LVDS信號預加重與均衡處理,增加指令與數據傳輸抗干擾性和傳輸距離。邏輯上,采用4 bit-CRC校驗與ARQ機制增加鏈路傳輸容錯率;對LVDS數據傳輸增加6B/10B編碼解碼,對傳輸過程中任意有效編碼增加校驗與糾錯機制,高可靠性的優化了鏈路傳輸。經過對關鍵干擾因素的測試與驗證,LVDS鏈路傳輸以240 Mbit/s速率在94 m雙絞屏蔽電纜中實現可靠零誤碼傳輸。