郭虎鋒,陳香香,李 楠
(許繼電氣股份有限公司,許昌 461000)
隨著信息技術的高速發(fā)展,對信息傳輸速度的要求也越來越高,在長距離的情況下像RS-232、RS-422、RS-485等串行數(shù)據(jù)接口傳輸標準,在傳輸速度、噪聲、EMIEMC、功耗、成本等方面都難以實現(xiàn)要求。LVDS是一種低擺幅的差分信號技術,它使得信號能在差分PCB線對或平衡電纜上以幾百Mb/s的速率傳輸,其低壓幅和低電流驅動輸出實現(xiàn)了低噪聲和低功耗[1-2]。但是LVDS只能滿足短距離高速數(shù)據(jù)傳輸,為此在設計中用到了驅動器和自適應均衡器,為保證數(shù)據(jù)傳輸中的直流平衡,在數(shù)據(jù)傳輸過程中采用8 b/10 b編碼技術,這樣LVDS信號就可以在2 km的光纖上理想傳輸。光纖傳輸系統(tǒng)具有容量大、傳輸距離遠、抗干擾性強等優(yōu)勢,在通信傳輸方面有著不可替代的地位,有著很廣闊的應用前景。
針對現(xiàn)場環(huán)境較復雜,不易近距離進行控制與監(jiān)測的情況,設計方案主要是實現(xiàn)現(xiàn)場采集單元與遠程實時監(jiān)測控制單元之間的高速長距離數(shù)據(jù)傳輸。系統(tǒng)框圖如圖1所示,現(xiàn)場采集單元使用FPGA為主控制器,負責控制采集模塊對現(xiàn)場信號量進行采集和調理,在內部對采集數(shù)據(jù)進行預處理編幀后使用8 b/10 b編碼技術編碼輸出,最后由LVDS模塊驅動發(fā)送。遠程控制單元使用LVDS模塊進行數(shù)據(jù)的接收和均衡調節(jié),之后由FPGA控制器對接收數(shù)據(jù)進行解碼和處理,最后送到上位機進行解析。其中傳輸光纖長度為2 km。

圖1 系統(tǒng)框圖Fig.1 System block diagram

圖2 LVDS模塊框圖Fig.2 LVDS module block diagram
LVDS模塊硬件連接框圖如圖2所示,為一端接口模塊框圖,進行通訊的兩端具有對稱結構。DS92LV1203和DS92LV1224是2種LVDS芯片,DS92LV1203是可將10位并行CMOS或TTL數(shù)據(jù)轉換為具有內嵌時鐘的高速串行差分數(shù)據(jù)流的串行器;DS92LV1224則是接收該差分數(shù)據(jù)流并將它們轉換為并行數(shù)據(jù)的解串器,串行器和解串器在應用中一般配套使用[3]。CLC006和CLC014分別是高速驅動器和自適應均衡器,LVDS信號在發(fā)送端需要高速驅動器來驅動,再經(jīng)過長線遠距離傳輸后信號會出現(xiàn)衰減現(xiàn)象,因此在長距離的接受終端應由自適應均衡器來接受并調節(jié)、均衡。
設計中采用的是集收發(fā)于一體的光纖模塊,在發(fā)送端,串行器DS92LV1023將外部并行數(shù)據(jù)串化成串行數(shù)據(jù),此時該串行器輸出的差分壓差是100 mV左右,這種小壓差只能傳輸不到10 m的距離,但加上CLC006這款電纜驅動芯片后,其輸出壓差可達到2 V,這樣就可以驅動地面光纖2 km以上的距離。信號經(jīng)LVDS芯片后轉換為LVDS信號,而光纖模塊要傳輸?shù)氖荓VPECL電平,在設計中采用電阻網(wǎng)絡來實現(xiàn)2種電平之間的耦合轉換。發(fā)送端部分電路圖如圖3所示。電阻R55、R57、R36、R37就是 為 實 現(xiàn) LVDS電平和LVPECL電平的耦合而設計的電阻網(wǎng)絡,R38為100 Ω是差分信號的阻抗匹配電阻。DS92LV1023芯片的TCLK時鐘輸入為40 Hz~60 Hz,管腳接入FPGA,由FPGA內部給出驅動時鐘。TCLK_R/F管腳是控制DS92LV1023芯片在TCLK的上升沿還是下降沿取數(shù),F(xiàn)PGA內部程序中給TCLK_R/F賦值 ‘1’,在TCLK的上升沿取數(shù)。PWRDN直接接到3.3 V電平上,使DS92LV1023芯片一直處于主動工作狀態(tài)。對R53阻值的調節(jié)可以實現(xiàn)CLC006驅動能力的調節(jié)。
接收端部分電路如圖4所示,光纖傳輸過來的信號經(jīng)CLC014自適應均衡器均衡接受后送至DS92LV1224解串器進行串并轉換。DS92LV1224的RCLK接入FPGA的IO口,時鐘由FPGA輸入。PWRDN和REN管腳直接接到3.3 V電平上,解串器處在主動工作狀態(tài)。

圖3 LVDS接口發(fā)送端硬件電路圖Fig.3 LVDS sender hardware circuit diagram

圖4 LVDS接口接收端硬件電路圖Fig.4 LVDS receiver hardware circuit diagram
在高速串行數(shù)據(jù)傳輸中,當數(shù)據(jù)流中有多個連續(xù)的邏輯‘1’或邏輯‘0’時,信號的轉換就會因為電壓位階段關系而造成信號錯誤,而直流平衡可以有效克服此問題。8 b/10 b編碼特性之一便是可以保證數(shù)據(jù)傳輸?shù)闹绷髌胶?,采? b/10 b編碼方式,可以使發(fā)送數(shù)據(jù)流中的邏輯‘1’和邏輯‘0’數(shù)量基本持平,連續(xù)的邏輯‘1’或邏輯‘0’不會超過 5位,即每5個連續(xù)的邏輯‘1’或邏輯‘0’后必須插入1位‘0’或‘1’,從而保證傳輸信號的直流平衡。這樣使用8 b/10 b編碼技術后,10 b中的邏輯 ‘1’和邏輯‘0’的位數(shù)只可能出現(xiàn)以下3種情況:
(1)5 個邏輯‘1’和 5 個邏輯‘0’;
(2)6 個邏輯‘1’和 4 個邏輯‘0’;
(3)4 個邏輯‘1’和 6 個邏輯‘0’。
這3種情況對應的Disparity分別為0、+2、-2[4]。
8 b/10 b編碼方法是按照一定的編碼規(guī)則把8 bit的數(shù)據(jù)編碼成10 bit的數(shù)據(jù)。8 bit的數(shù)據(jù)對應268個有效編碼列表,包括256個數(shù)據(jù)編碼和12個控制字編碼。其中控制字編碼主要用于建立位同步、鏈路診斷、標示數(shù)據(jù)幀的開始與結束。一般首先把8 bit的數(shù)據(jù)分成2部分:低5位(EDCBA)和高3位(HGF),分別按照編碼規(guī)則進行5 b/6 b編碼和3 b/4 b編碼,之后合并輸出編碼后的10 bit的數(shù)據(jù)(jhgfiedcba)[5]。編碼原理如圖 5所示。

圖5 8 b/10 b編碼原理圖Fig.5 8 b/10 b encoding principle diagram
介紹編碼規(guī)則之前,先引入RD(running dis-parity)參數(shù)的概念,RD表示數(shù)據(jù)的不平衡度,即表示數(shù)據(jù)中邏輯‘1’和邏輯‘0’的不平衡度,如果邏輯‘1’的個數(shù)大于邏輯‘0’的個數(shù),則用 RD-表示;如果邏輯‘0’的個數(shù)大于邏輯‘1’的個數(shù),則用RD+表示;如果邏輯‘0’的個數(shù)和邏輯‘1’的個數(shù)相等,則可用RD+或RD-表示。編碼過程中,通過對RD的極性判斷來選擇對應碼表中的碼組。
編碼規(guī)則是這樣的,系統(tǒng)復位后默認RD初始極性為 “-”,根據(jù)當前的RD極性來從碼表的2個10 b中選擇一個做為當前8 b的編碼,即先有RD極性,后對8 b進行編碼,再根據(jù)此10 b編碼決定下一個RD的極性,決定RD次態(tài)極性的規(guī)則如下:如果編碼后的10 b碼組中‘1’的個數(shù)與‘0’的個數(shù)相等,則次態(tài)極性保持不變;如果‘1’的個數(shù)與‘0’的個數(shù)不等,則次態(tài)的極性為當前極性的反轉。無論是普通數(shù)據(jù)碼組、特殊數(shù)據(jù)碼組還是K控制碼組都符合以上的編碼規(guī)則。表1是RD轉換規(guī)則。

表1 RD轉換規(guī)則表Tab.1 RD transformation rules table

圖6 8 b/10 b編碼實現(xiàn)流圖Fig.6 8 b/10 b encoding implementation flow chart
編碼過程實現(xiàn)流圖如圖6所示,編碼過程經(jīng)由5 b/6 b編碼模塊、3 b/4 b編碼模塊和RD控制模塊完成。在5 b/6 b編碼模塊和3 b/4 b編碼模塊中,由變量控制單元和查找表邏輯實現(xiàn)輸入源碼到碼組的映射,大部分源碼對應2種極性的碼組。在RD控制模塊中,初始RD為上電RD初值(上電或復位情況下,一般為RD-)或為上一次10 b編碼后生成的RD,根據(jù)此RD極性來選擇對應的6 b碼組,同時決定次態(tài)RD;然后根據(jù)5 b/6 b編碼生成的RD極性來判斷選擇對應的4 b碼組,并生成次態(tài)RD,最后的RD作為下一個10 b編碼的初始RD。最終把編碼后的6 b與4 b進行組合,輸出10 b數(shù)據(jù)。
在FPGA內部可以選擇自己編寫邏輯使用查找表的方法實現(xiàn)或者使用內部現(xiàn)有的IP核(encode_8 b/10 b)實現(xiàn)。
8 b/10 b的解碼過程相對編碼過程較簡單,是編碼的逆過程,分別采用6 b/5 b和4 b/3 b來實現(xiàn)解碼,此轉換映射是多對一的關系。在5 b/6 b和3 b/4 b解碼之后需要對數(shù)據(jù)進行檢驗,判斷是否產(chǎn)生誤碼,如果為有效數(shù)據(jù)則進行8 b輸出。解碼流程圖如圖7所示。

圖7 8 b/10 b解碼流程圖Fig.7 8 b/10 b decoding flow chart
在FPGA內部可以選擇自己編寫邏輯使用查找表的方法實現(xiàn)或者使用內部現(xiàn)有的IP核(decode_8 b/10 b)實現(xiàn)。
經(jīng)過實踐考核,證實了此設計是可行的。在測試當中,現(xiàn)場采集端信號源模擬產(chǎn)生了00~FF的遞增數(shù)據(jù),傳輸速度為400 Mb/s,經(jīng)過2 km長線傳輸,數(shù)據(jù)衰減現(xiàn)象較弱,數(shù)據(jù)正確無誤碼。如圖8為上位機收到的數(shù)據(jù)拆分解包后繪出的圖形。
本文實現(xiàn)了一種基于LVDS總線和8 b/10 b編碼技術的遠距離傳輸設計,傳輸中采用光纖為傳輸介質,完成了以400 Mb/s的數(shù)據(jù)傳輸碼率在2 km以上遠距離的理想傳輸。終端采用USB接口,使得設計更加通用、方便。此設計已經(jīng)成功地投入實際應用當中,傳輸性能可靠、穩(wěn)定。
[1]姚永興,焦新泉,馬培嬌.高可靠性遠程數(shù)據(jù)傳輸系統(tǒng)設計[J].計算機測量與控制,2011,19(8):170-173.
[2]李霄光.基于LVDS高速串行總線通信技術的研究[D].西安:西安電子科技大學,2012.
[3]李斌,張會新,劉文怡.基于LVDS的高速圖像數(shù)據(jù)存儲器的設計與實現(xiàn)[J].電視技術,2014,38(8):48-52.
[4]A X Widmer,P A Franaszek.A DC-Balanced,partitioned-block,8b/10b transmission code[J].IBM Journal of Research and Development,1983,27(5):440-451.
[5]劉泳銳,張彥軍,劉龍飛,等.8b/10b編碼實現(xiàn)LVDS交流耦合傳輸中的直流平衡[J].科學技術與工程,2012,12(35):247-250.