尚辰陽(yáng),任勇峰
(中北大學(xué),儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西太原 030051)
隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)于數(shù)據(jù)傳輸?shù)男枨蟪尸F(xiàn)爆發(fā)式的增長(zhǎng),因此對(duì)于傳輸距離、傳輸速率、傳輸?shù)恼`碼率以及實(shí)時(shí)性有著越來(lái)越高的要求。在某次遠(yuǎn)距離的測(cè)試任務(wù)中,需要將系統(tǒng)采集到的多路模擬信號(hào)傳回給地面接收設(shè)備,并且保證實(shí)時(shí)性和可靠性。若采用傳統(tǒng)的并行傳輸方式,傳輸速率可以滿(mǎn)足要求,但是由于接口數(shù)量過(guò)多,導(dǎo)致誤碼率增高,無(wú)法滿(mǎn)足長(zhǎng)距離數(shù)據(jù)傳輸可靠性的要求。而串行傳輸?shù)姆绞街校琑S422與RS485的最大傳輸速率為10 Mbit/s,無(wú)法滿(mǎn)足長(zhǎng)距離傳輸?shù)膫鬏斔俾实娜蝿?wù)要求,因此采用LVDS技術(shù)作為該方案的傳輸方式[1]。
LVDS傳輸數(shù)據(jù)時(shí)采用低壓差分信號(hào),信號(hào)的傳輸速度理論上可達(dá)1.923 Gbit/s,滿(mǎn)足本文設(shè)計(jì)的遠(yuǎn)距離系統(tǒng)的傳輸速率要求[2]。為提高傳輸距離,在硬件電路中加入均衡器和驅(qū)動(dòng)器用以實(shí)現(xiàn)遠(yuǎn)距離傳輸?shù)哪康摹?/p>
考慮到環(huán)境中的不可控因素以及電磁干擾,進(jìn)一步降低誤碼率實(shí)現(xiàn)優(yōu)化設(shè)計(jì),軟件設(shè)計(jì)中采用了8B/10B編碼方式,可以非常好地控制0、1碼元的個(gè)數(shù)[3],這樣可以使得在系統(tǒng)中傳輸?shù)男盘?hào)保證直流平衡,從而滿(mǎn)足信號(hào)在傳輸過(guò)程中高可靠性、低誤碼率的要求。
LVDS是一種低功耗、低擺幅、低誤碼率的低壓差分信號(hào)技術(shù),該信號(hào)靠電流驅(qū)動(dòng)。采用差分傳輸方式,2個(gè)信號(hào)振幅相等,相位差180°,極性相反,互相耦合,因此在接收端就可以抵消耦合的噪聲[4]。
圖1為遠(yuǎn)距離系統(tǒng)的設(shè)計(jì)方案框圖,采集到的數(shù)據(jù)經(jīng)過(guò)發(fā)送端時(shí),通過(guò)LVDS編碼芯片完成編碼,之后由硬件電路中的電纜驅(qū)動(dòng)器和自適應(yīng)電纜均衡器進(jìn)行調(diào)節(jié)。信號(hào)經(jīng)過(guò)調(diào)節(jié)之后,可以提高信號(hào)的驅(qū)動(dòng)能力并且補(bǔ)償信號(hào)的衰減,從而實(shí)現(xiàn)LVDS信號(hào)遠(yuǎn)距離傳輸?shù)哪康腫5]。LVDS信號(hào)在接收端完成解碼,解碼完成后的數(shù)據(jù)再發(fā)送給上位機(jī),之后分析數(shù)據(jù)。FPGA控制器接收上位機(jī)的命令,再控制LVDS通信控制模塊將相應(yīng)的指令通過(guò)通信接口發(fā)送出去。同時(shí)還可以將通過(guò)通信接口收到的數(shù)據(jù)經(jīng)過(guò)LVDS通信控制模塊傳給上位機(jī)進(jìn)行觀察與分析。
圖1 遠(yuǎn)距離系統(tǒng)
在本次測(cè)試任務(wù)中,采用平衡雙絞線(xiàn)連接數(shù)據(jù)采集模塊和上位機(jī),采集到的數(shù)據(jù)經(jīng)過(guò)LVDS編碼之后,以500 Mbit/s的碼率在平衡雙絞線(xiàn)中進(jìn)行傳輸,通過(guò)驗(yàn)證上位機(jī)采集到的實(shí)驗(yàn)數(shù)據(jù)的正確性來(lái)判斷該系統(tǒng)的可靠性和有效性[6]。
由于在長(zhǎng)距離傳輸過(guò)程中的趨膚效應(yīng),以及傳輸介質(zhì)的介質(zhì)損耗,LVDS信號(hào)在長(zhǎng)距離傳輸過(guò)程中會(huì)有所衰減,這2個(gè)因素也會(huì)降低信號(hào)的傳輸速率、增加信號(hào)的誤碼率,從而會(huì)降低信號(hào)的傳輸質(zhì)量,是造成傳輸信號(hào)不穩(wěn)定的主要原因[7]。而且信號(hào)的衰減與信號(hào)頻率的平方根和傳輸速度成正比,在信號(hào)長(zhǎng)距離傳輸過(guò)程當(dāng)中,衰減對(duì)會(huì)非常顯著地降低信號(hào)傳輸?shù)目煽啃浴?/p>
為了降低因趨膚效應(yīng)和介質(zhì)損耗帶來(lái)的信號(hào)衰減和誤碼率,保證信號(hào)在遠(yuǎn)距離傳輸中的傳輸質(zhì)量。在本系統(tǒng)的硬件電路設(shè)計(jì)中,采用了可以對(duì)信號(hào)進(jìn)行補(bǔ)償?shù)碾娎|驅(qū)動(dòng)器芯片CLC001和自適應(yīng)電纜均衡器芯片LMH0074,硬件框圖如圖2所示。這兩個(gè)芯片均采用了預(yù)加重和均衡技術(shù)。因此可以滿(mǎn)足降低信號(hào)衰減、提高數(shù)據(jù)傳輸可靠性的目的[8]。
圖2 硬件電路部分
LVDS發(fā)送芯片均采用10位LVDS串行器SN65LV1023A,數(shù)據(jù)輸出接口采用ADN4651進(jìn)行隔離,驅(qū)動(dòng)器采用CLC001,每路的接口電路如圖3所示。
圖3 LVDS發(fā)接口電路
LVDS解串芯片采用的10位LVDS解串器芯片SN65LV1023B,在數(shù)據(jù)進(jìn)入解串器之前,加一個(gè)隔離緩沖器ADN4651實(shí)現(xiàn)阻斷外部干擾的目的。采用均衡芯片LMH0074目的是對(duì)電纜進(jìn)行自適應(yīng)均衡將抖動(dòng)減小到最小。接收電路圖如圖4所示串行器的芯片和解串器的芯片的引腳功能基本相同。
圖4 LVDS接收口電路
在串行通信過(guò)程當(dāng)中,電容阻抗與信號(hào)頻率成反比。即電容阻抗隨著信號(hào)頻率的增高而降低。當(dāng)數(shù)據(jù)位流中出現(xiàn)多個(gè)連續(xù)的1或0時(shí),可以認(rèn)為該時(shí)間段信號(hào)是直流的。但如果因?yàn)樾盘?hào)頻率的影響使電容的損耗變大,導(dǎo)致信號(hào)的幅度降低,直流信號(hào)就會(huì)被濾除,到接收端則無(wú)法識(shí)別是1還是0。而且當(dāng)接收端收到連續(xù)的1或0時(shí),因?yàn)樵诖a字中沒(méi)有充分的定時(shí)信息,對(duì)接收端的解碼帶來(lái)了困難。而在遠(yuǎn)距離傳輸系統(tǒng)的軟件設(shè)計(jì)中,信號(hào)的傳輸采用8B/10B的編解碼方式,該方式可以使LVDS數(shù)據(jù)流中的“1”、“0”個(gè)數(shù)比例達(dá)到平衡從而可以保證信號(hào)的直流平衡,而信號(hào)中連續(xù)的“1”的個(gè)數(shù)或者連續(xù)“0”的數(shù)量不會(huì)超過(guò)5個(gè)[10]。因此為了保證信號(hào)在遠(yuǎn)距離傳輸中的直流平衡以及提高遠(yuǎn)距離傳輸系統(tǒng)的可靠性和有效性,在本次傳輸系統(tǒng)采用8B/10B編解碼[11]。
3.1.1 8B/10B編碼原理
8B/10B編碼主要方法:將碼流中的8 bit數(shù)據(jù)分成2個(gè)編碼模塊來(lái)實(shí)現(xiàn),2個(gè)模塊分別是3B/4B編碼模塊和5B/6B編碼模塊。其中3B/4B編碼模塊的功能是將傳輸?shù)脑畔⒋a流中的8 bit數(shù)據(jù),按照既定的編碼規(guī)則,將高3位映射成新信息碼流10 bit數(shù)據(jù)中的低4位。同理,按照編碼規(guī)則,5B/6B編碼模塊是將原碼流中8 bit數(shù)據(jù)中的另外低5位映射成新信息碼流10 bit數(shù)據(jù)中的高6位。在得到映射之后的10 bit碼流后,再進(jìn)行并串轉(zhuǎn)換,將并行數(shù)據(jù)變成串行數(shù)據(jù)高速發(fā)送出去[12]。
8B/10B編碼方式保證輸出碼流直流平衡的方法是采用不平衡度(RD)。規(guī)則如下:RD在碼字中“0”的個(gè)數(shù)大于“1”個(gè)數(shù)的情況下為“0”,此時(shí)不平衡度呈現(xiàn)負(fù)極性;當(dāng)碼字中“0”的個(gè)數(shù)小于“1”的個(gè)數(shù)時(shí),RD為“1”,此刻不平衡度呈現(xiàn)為正極性。輸出的碼流會(huì)根據(jù)不平衡度RD的極性是正還是負(fù)來(lái)做出相應(yīng)的調(diào)整,從而實(shí)現(xiàn)輸出碼流的直流平衡,降低誤碼率也可以通過(guò)提高對(duì)碼流的檢錯(cuò)能力的方式來(lái)實(shí)現(xiàn)[13]。編碼系統(tǒng)框圖如圖5所示。
圖5 8B/10B編解碼總體框圖
3.1.2 工作時(shí)鐘產(chǎn)生模塊
根據(jù)8B/10B的編碼原理,將8B/10B的頂層模塊拆成2個(gè)子模塊,分別為5B/6B編碼模塊和3B/4B編碼模塊。同時(shí)數(shù)據(jù)以并行的方式輸入,經(jīng)過(guò)編碼之后的數(shù)據(jù)以串行的方式輸出,二者均需要時(shí)鐘信號(hào)來(lái)保證數(shù)據(jù)的可靠性。clk1作為輸入的并行數(shù)據(jù)的時(shí)鐘,5B/6B編碼模塊的時(shí)鐘為clk2,3B/4B編碼模塊的時(shí)鐘為clk3。而3個(gè)編碼模塊產(chǎn)生的時(shí)鐘信號(hào)需要根據(jù)輸入的時(shí)鐘信號(hào)產(chǎn)生clk,其中串行數(shù)據(jù)的輸出依靠的也是時(shí)鐘信號(hào)clk。而完成1組的數(shù)據(jù)運(yùn)算需要的時(shí)鐘個(gè)數(shù)為12個(gè),這樣可以保證數(shù)據(jù)的運(yùn)行速度。
首先上電復(fù)位進(jìn)入到默認(rèn)狀態(tài),即clk1為1,clk2、clk3為0的狀態(tài)。其中利用變量cnt完成計(jì)數(shù)功能,計(jì)數(shù)到10變?yōu)閏lk1=0、clk1=1、clk2=0,待到下1個(gè)時(shí)鐘周期到來(lái),變量則變?yōu)閏lk1=0、clk2=0、clk3=1。之后等下1個(gè)時(shí)鐘周期上升沿到來(lái)時(shí),所有變量恢復(fù)默認(rèn)狀態(tài),工作時(shí)鐘模塊程序流程圖如圖6所示。
圖6 工作時(shí)鐘產(chǎn)生模塊程序流程圖
3.1.3 8B/10B編碼設(shè)計(jì)
在編寫(xiě)編碼模塊的代碼時(shí),利用軟件中的IP核將4組輸入8 bit數(shù)據(jù)組成1組32位的數(shù)據(jù),之后將新組成的32 bit的數(shù)據(jù)視作1個(gè)大的整體,1個(gè)大的整體包括4個(gè)小的整體,8 bit數(shù)據(jù)組成1個(gè)小的整體,這4個(gè)小整體依次為Din[7∶0]、Din[15∶8]、Din[23∶16]、Din[31∶24],之后在同1個(gè)工作時(shí)鐘信號(hào)clk下,根據(jù)正負(fù)編碼列表的情況,將4組數(shù)據(jù)送入編碼模塊進(jìn)行編碼處理,每1個(gè)小的整體會(huì)得到2個(gè)10 bit數(shù)據(jù)和2個(gè)極性值,4組數(shù)據(jù)經(jīng)過(guò)編碼模塊處理之后得到8組10 bit數(shù)據(jù)和極性值,再將二者送入均衡檢測(cè)控制模塊進(jìn)行處理。根據(jù)極性均衡準(zhǔn)則得出4組10 bit數(shù)據(jù)Dout[9∶0]、Dout[19∶10]、Dout[29∶20]、Dout[39∶30],最后將4組10 bit數(shù)據(jù)通過(guò)IP核連續(xù)發(fā)出。其中從D11和D12中選出Dout[9∶0],在D21和D22中選出Dout[19∶10],在D31和D32中選出Dout[29∶20],在D41和D42中選出Dout[39∶30]。編碼部分的系統(tǒng)框圖如圖7所示。
圖7 編碼設(shè)計(jì)圖
3.1.4 8B/10B編碼模塊設(shè)計(jì)
對(duì)于輸入的8 bit數(shù)據(jù)Datan來(lái)說(shuō),其中變量n為1、2、3、4,分別對(duì)應(yīng)的是Din[7∶0]、Din[15∶8]、Din[23∶16]、Din[31∶24]。在對(duì)于輸入數(shù)據(jù)的正負(fù)列表編碼時(shí),第一步判斷是否為控制碼。判斷完畢之后,若為控制碼,要按照控制碼的既定映射關(guān)系來(lái)完成編碼。反之輸入的數(shù)據(jù)就是數(shù)據(jù)碼,根據(jù)3B/4B、5B/6B的編碼原則進(jìn)行編碼處理。之后按照極性判斷電路的特點(diǎn),將由其他模塊輸入的RD1與RD2進(jìn)行相加,將加完后得到的RDn值進(jìn)行輸出。程序框圖如圖8所示。
圖8 編碼模塊程序框圖
3.2.1 8B/10B解碼原理
將接收到的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,將轉(zhuǎn)換之后得到的10 bit數(shù)據(jù)按照真值表映射成相應(yīng)的8 bit數(shù)據(jù),也就是將原始信息提取出來(lái)的過(guò)程。編碼的映射關(guān)系可能是一對(duì)一也有可能是多對(duì)一,而解碼的映射關(guān)系與之不同,解碼是一一對(duì)應(yīng)的,映射關(guān)系也是唯一的。因此解碼與編碼相比就相對(duì)容易[14]。
但在數(shù)據(jù)傳輸?shù)倪^(guò)程當(dāng)中,由于趨膚效應(yīng)和碼間干擾的影響,傳輸過(guò)程中會(huì)產(chǎn)生誤碼,以至于通信效率降低,因此要在解碼電路中增加糾錯(cuò)步驟來(lái)降低誤碼率[15]。
3.2.2 8B/10B解碼設(shè)計(jì)
解碼采用的映射關(guān)系為多對(duì)一的關(guān)系,分別通過(guò)對(duì)編碼模塊的2部分進(jìn)行6B/5B和4B/3B解碼來(lái)實(shí)現(xiàn)。將接收到的4組位寬為10的數(shù)據(jù)經(jīng)過(guò)IP核進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行組合,組合成一組位寬為40的數(shù)據(jù),將組合之后的數(shù)據(jù)依次通過(guò)檢測(cè)模塊、解碼模塊以及違規(guī)檢測(cè)模塊之后輸出數(shù)據(jù)[16]。解碼系統(tǒng)框圖如圖9所示。
圖9 解碼設(shè)計(jì)圖
其中控制字符編碼檢測(cè)模塊的功能是用于對(duì)收到的數(shù)據(jù)字符進(jìn)行檢查,判斷是否為控制碼,如果接收到的字符是控制碼,那么對(duì)應(yīng)的kin就為1,否則kin賦值為0,即收到的數(shù)據(jù)字符是數(shù)據(jù)碼。在解碼模塊中,對(duì)收到的4組數(shù)據(jù)進(jìn)行解碼,按照編解碼映射關(guān)系完成解碼,通過(guò)對(duì)4組數(shù)據(jù)的不均衡性檢測(cè)分別獲得4組數(shù)據(jù)的RD值。違規(guī)檢測(cè)模塊的作用是通過(guò)對(duì)比相鄰兩組位寬為8的數(shù)據(jù)與RD值,判斷得出數(shù)據(jù)在傳輸過(guò)程中是否出現(xiàn)了錯(cuò)誤數(shù)據(jù),如果完全正確,則將正確數(shù)據(jù)輸出,否則將數(shù)據(jù)刪除。8B/10B解碼部分程序框圖如圖10所示。
圖10 8B/10B解碼程序流程圖
首先利用軟件平臺(tái)去對(duì)8B/10B的程序代碼進(jìn)行仿真,驗(yàn)證其正確性。編碼系統(tǒng)代碼如圖11所示。解碼系統(tǒng)代碼仿真如圖12所示。
圖11 編碼程序仿真圖
圖12 解碼程序仿真圖
驗(yàn)證遠(yuǎn)距離傳輸系統(tǒng)的數(shù)據(jù)可靠性時(shí),采用上位機(jī)、綜合測(cè)試臺(tái)和存儲(chǔ)器搭建完整的閉環(huán)測(cè)試系統(tǒng),運(yùn)用雙絞線(xiàn)作為傳輸介質(zhì)來(lái)傳輸LVDS信號(hào)。在測(cè)試過(guò)程當(dāng)中,利用上位機(jī)將脈沖激勵(lì)作為干擾注入到數(shù)據(jù)當(dāng)中,采用的數(shù)據(jù)幀格式如圖13所示。其中數(shù)據(jù)的幀包頭部分是“96 14 6F 14 6F”,包計(jì)數(shù)部分為“00 00 00 00~00 00 00 09”,數(shù)據(jù)是遞增數(shù)為00~59。
圖13 數(shù)據(jù)幀格式
在上位機(jī)上完成8B/10B編碼解碼程序的編寫(xiě),再燒錄到FPGA當(dāng)中,之后通過(guò)FPGA程序內(nèi)容的改寫(xiě)來(lái)控制LVDS串行數(shù)據(jù)的傳輸速率,通過(guò)LVDS的傳輸距離由傳輸介質(zhì)長(zhǎng)度來(lái)控制,分別進(jìn)行誤碼測(cè)試,結(jié)果見(jiàn)表1和表2。
表1 240 m雙絞線(xiàn)測(cè)試結(jié)果
表2 500 Mbit/s傳輸速度測(cè)試結(jié)果
根據(jù)實(shí)驗(yàn)測(cè)試的誤碼率測(cè)試結(jié)果可以知道,經(jīng)過(guò)對(duì)比,如果在軟件邏輯中不采用8B/10B編解碼模塊,硬件電路可以保證數(shù)據(jù)在240 m長(zhǎng)度的雙絞線(xiàn)中以100 Mbit/s的速度無(wú)誤碼率進(jìn)行傳播,在60 m長(zhǎng)度的雙絞線(xiàn)中以500 Mbit/s的速度無(wú)誤碼率。而在軟件邏輯中加入8B/10B編解碼模塊,可以保證在240 m的傳輸距離上以500 Mbit/s的速度進(jìn)行無(wú)誤碼率的方式傳播,可以做到同時(shí)滿(mǎn)足遠(yuǎn)距離高速率傳輸也可以同時(shí)滿(mǎn)足以極低的誤碼率方式進(jìn)行傳輸。
針對(duì)數(shù)據(jù)在高速遠(yuǎn)距離傳輸中可靠性無(wú)法滿(mǎn)足傳輸需求的問(wèn)題,本文在硬件電路中加入經(jīng)過(guò)預(yù)加重和去加重處理的均衡器和驅(qū)動(dòng)器,采用LVDS方式進(jìn)行傳輸,在軟件邏輯中設(shè)計(jì)了8B/10B編解碼的優(yōu)化方法,可以提高數(shù)據(jù)信息在傳輸介質(zhì)中高速并且遠(yuǎn)距離傳輸?shù)目煽啃?。通過(guò)大量的實(shí)驗(yàn)測(cè)試,LVDS數(shù)據(jù)經(jīng)過(guò)8B/10B編解碼之后,可以滿(mǎn)足數(shù)據(jù)在傳輸介質(zhì)傳輸時(shí)具備高速、誤碼率低的特點(diǎn),滿(mǎn)足實(shí)驗(yàn)的測(cè)試要求。