李圣昆,郝少帥,楊玉華,王淑琴,李 金
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051;2.上海航天電子技術(shù)研究所,上海 201109)
測(cè)試人員不便直接測(cè)試的極端環(huán)境(如高溫、高空、強(qiáng)磁等)往往需要將測(cè)試數(shù)據(jù)遠(yuǎn)距離傳輸?shù)降孛娼邮赵O(shè)備。目前常用的傳輸方式包括并行傳輸和串行傳輸。由于數(shù)據(jù)線接口過多,并行總線傳輸方式在電磁干擾較大的環(huán)境中,數(shù)據(jù)傳輸?shù)目煽啃韵陆祰?yán)重;串行總線包括PECL、RS422、RS485、HOTLink以及LVDS等。PECL的接口電平邏輯不兼容標(biāo)準(zhǔn)邏輯[1];傳統(tǒng)的串行通信如RS232、RS422和RS485的傳輸速率太低,不能滿足實(shí)時(shí)監(jiān)測(cè)的需求。相同環(huán)境條件下,LVDS總線相較HOTLink具有更高的傳輸速率和更遠(yuǎn)的傳輸距離,因此采編設(shè)備和地面測(cè)試設(shè)備的通信總線選為L(zhǎng)VDS總線。
LVDS是一種低振幅差分傳輸技術(shù),由于傳輸電壓僅為350 mV,在沒有任何補(bǔ)償電路的情況下,LVDS信號(hào)僅能在幾米內(nèi)實(shí)現(xiàn)無誤碼傳輸[2];當(dāng)傳輸距離超過10 m后,傳輸信號(hào)就會(huì)由于電纜損耗等問題,變得無法識(shí)別。當(dāng)下,現(xiàn)有的優(yōu)化方案主要有硬件電路和軟件設(shè)計(jì)兩方面,硬件電路中,添加驅(qū)動(dòng)器和均衡器,LVDS信號(hào)的無誤碼傳輸距離增加到了70 m[3],但是仍然無法達(dá)到150 m回傳的任務(wù)要求。本文針對(duì)惡劣條件下數(shù)據(jù)遠(yuǎn)距離傳輸中可靠性不高的問題,提出了基于FPGA的兩級(jí)冗余編碼系統(tǒng)。
信號(hào)在電纜中傳輸時(shí),受到趨膚效應(yīng)以及介質(zhì)損耗的影響會(huì)產(chǎn)生傳輸衰減[4],趨膚效應(yīng)產(chǎn)生傳輸衰減與傳輸頻率的平方成正比關(guān)系,介質(zhì)損耗產(chǎn)生的衰減與傳輸速率也是正比關(guān)系[5],電纜過長(zhǎng)和速率變大都會(huì)導(dǎo)致傳輸衰減的增大,衰減過大時(shí)便會(huì)產(chǎn)生誤碼[6]。為了實(shí)現(xiàn)數(shù)據(jù)的無誤碼傳輸,文章通過對(duì)傳輸信號(hào)使用了均衡以及預(yù)加重技術(shù)[7],補(bǔ)償傳輸過程中的信號(hào)衰減,從而實(shí)現(xiàn)遠(yuǎn)距離傳輸。
整個(gè)傳輸系統(tǒng)如圖1所示,由采編存儲(chǔ)器、測(cè)試臺(tái)和屏蔽雙絞線組成。采編存儲(chǔ)器將采集到的信號(hào)高速回傳給測(cè)試臺(tái)進(jìn)行處理;測(cè)試臺(tái)接收采編存儲(chǔ)器的數(shù)據(jù)同時(shí)發(fā)送指令控制整個(gè)采集過程;屏蔽雙絞線連接測(cè)試臺(tái)和采編存儲(chǔ)器實(shí)現(xiàn)數(shù)據(jù)交互。

圖1 系統(tǒng)總體設(shè)計(jì)框圖Fig.1 Overall design block diagram of the system
LVDS發(fā)送模塊電路如圖2所示,編碼器選用成都振芯公司的GM8223,電纜驅(qū)動(dòng)器選用TI公司的LMH0002,編碼器的傳輸速率最高為到660 Mb/s,而電纜驅(qū)動(dòng)器的速率超過1 Gb/s,都可以實(shí)現(xiàn)高速傳輸?shù)娜蝿?wù)要求,發(fā)送模塊工作時(shí)編碼器會(huì)將接收到的時(shí)鐘嵌入數(shù)據(jù)流中,再轉(zhuǎn)化成串行數(shù)據(jù)流發(fā)送至LMH0002,電纜驅(qū)動(dòng)器對(duì)接收到數(shù)據(jù)流信號(hào)進(jìn)行預(yù)加重,把差分輸出電壓拉高到2.5 V后輸出,補(bǔ)償信號(hào)在傳輸時(shí)的衰減,提高數(shù)據(jù)傳輸?shù)木嚯x。

圖2 LVDS發(fā)送模塊電路Fig.2 LVDS transmission module circuit
圖2中590 Ω的R12用來控制驅(qū)動(dòng)器的輸出電壓為2.5 V。為了降低由于連接器而引起的回波損耗,用電阻和電感構(gòu)建了損耗網(wǎng)絡(luò)[8]。同時(shí)為了降低終端反射引起的信號(hào)衰減,R13和R14用于阻抗匹配。
LVDS接收模塊電路如圖3所示,解碼器同樣選用成都振芯公司的GM8224,均衡器選用TI公司的LMH0044,解碼器的傳輸速率與編碼器相同,可以實(shí)現(xiàn)高速數(shù)據(jù)接收,接收模塊工作時(shí)均衡器LMH0044會(huì)對(duì)從電纜中接收到的衰減數(shù)據(jù)流進(jìn)行濾波,再通過恢復(fù)電路完成信號(hào)的重建,重建后將串行數(shù)據(jù)流發(fā)送至GM8224進(jìn)行解碼,解碼后恢復(fù)為十位數(shù)據(jù)和一位時(shí)鐘。和發(fā)送模塊相同,R1和R2也是用于用于降低終端發(fā)射阻抗匹配電阻[9]。

圖3 LVDS接收模塊電路Fig.3 LVDS receiving module circuit
各種校驗(yàn)碼的糾錯(cuò)能力如表1所示。

表1 校驗(yàn)碼特性表
文章的軟件優(yōu)化采用兩級(jí)冗余編碼的方式,由表1可知,漢明碼加奇偶校和BCH碼加奇偶校驗(yàn)在糾錯(cuò)能力上都大于單一的奇偶校驗(yàn)、漢明碼和BCH碼,但是漢明碼的實(shí)現(xiàn)比BCH碼簡(jiǎn)單,所以文章采用漢明碼校驗(yàn)加偶校驗(yàn)的編碼方式,實(shí)現(xiàn)高糾錯(cuò)編碼[10]。
一級(jí)冗余編碼采用一位糾錯(cuò)的漢明碼,該碼不僅算法簡(jiǎn)單,易于硬件電路實(shí)現(xiàn),而且編碼效率極高,在數(shù)據(jù)傳輸、存儲(chǔ)領(lǐng)域應(yīng)用廣泛[11],漢明碼校驗(yàn)流程圖如圖4所示。

圖4 明碼編碼流程圖Fig.4 Flow chart of clear code coding
數(shù)據(jù)傳輸過程中按字節(jié)發(fā)送,所以線性分組碼中(n,k)中的碼長(zhǎng)n為8,為了保證監(jiān)督位可以指示一位錯(cuò)碼的所有可能,監(jiān)督位r必須大于等于3[12],采集到的有效數(shù)據(jù)都是按字節(jié)存儲(chǔ)傳輸,故信息位k取4,則監(jiān)督位也為4。數(shù)據(jù)傳輸時(shí),每字節(jié)的有效數(shù)據(jù)都分成高4 bit、低4 bit,然后依次放入分組碼(8,4)編碼模塊進(jìn)行編碼,根據(jù)分組碼構(gòu)造關(guān)系,設(shè)計(jì)冗余位與監(jiān)督關(guān)系,如表2所示。

表2 冗余位與監(jiān)督關(guān)系構(gòu)造表
根據(jù)表2可知,監(jiān)督關(guān)系式為:
S1=D4⊕D6⊕D7⊕D8
(1)
S2=D3⊕D5⊕D7⊕D8
(2)
S3=D2⊕D5⊕D6⊕D8
(3)
S4=D1⊕D5⊕D6⊕D7
(4)
其中,D5、D6、D7、D8為數(shù)據(jù)位,D1、D2、D3、D4為校驗(yàn)位,令S1、S2、S3、S4為0,便可以得到下式:
D1=D5⊕D6⊕D7
(5)
D2=D5⊕D6⊕D8
(6)
D3=D5⊕D7⊕D8
(7)
D4=D6⊕D7⊕D8
(8)
數(shù)據(jù)接收端接收數(shù)據(jù)后,根據(jù)監(jiān)督關(guān)系式計(jì)算得到校正子S1、S2、S3、S4,若接收數(shù)據(jù)中僅存在一位錯(cuò)誤數(shù)據(jù),對(duì)照表3即可完成字內(nèi)糾錯(cuò)[13]。為了提高效率,一位糾錯(cuò)時(shí),僅對(duì)數(shù)據(jù)位糾錯(cuò)即可。若錯(cuò)誤位數(shù)超過兩位,則漢明碼無法完成糾錯(cuò),轉(zhuǎn)入二級(jí)冗余碼進(jìn)行糾錯(cuò)。

表3 錯(cuò)碼查詢表
數(shù)據(jù)傳輸過程中的錯(cuò)誤大都小于等于1位,一級(jí)編碼就能解決糾錯(cuò),針對(duì)少部分的多位出錯(cuò),如果選擇復(fù)雜的校驗(yàn)方式,不僅會(huì)進(jìn)一步降低數(shù)據(jù)傳輸?shù)挠行挘視?huì)占用過多的FPGA資源,降低系統(tǒng)工作效率,故二級(jí)校驗(yàn)選用僅占一位校驗(yàn)位的奇偶校驗(yàn)。二級(jí)冗余編碼表如表4所示。
傳統(tǒng)的奇偶校驗(yàn)僅能判斷奇數(shù)個(gè)錯(cuò)誤,且不具備糾錯(cuò)功能[14],然而文章中,處于二級(jí)冗余編碼的奇偶校驗(yàn),由于已經(jīng)確定了誤碼位置和誤碼個(gè)數(shù),使得奇偶校驗(yàn)具備了糾錯(cuò)的能力。

表4 二級(jí)冗余編碼表
根據(jù)表4可知,dj 為d1、d2、d3、d4的二級(jí)校驗(yàn),其中D8J、D7J、D6J、D5J是d1、d2、d3、d4數(shù)據(jù)位的偶校驗(yàn)位,D8J作為D81、D82、D83、D84四位數(shù)據(jù)的校驗(yàn)位,可以通過異或求得,同理也可求得D7J、D6J、D5J。同時(shí)為了保證四位偶校驗(yàn)在傳輸過程中的準(zhǔn)確性,對(duì)四位偶校驗(yàn)數(shù)據(jù)也同樣進(jìn)行字內(nèi)的一級(jí)冗余編碼。
D8j=D81⊕D82⊕D83⊕D84
(9)
D7j=D71⊕D72⊕D73⊕D74
(10)
D6j=D61⊕D62⊕D63⊕D64
(11)
D5j=D51⊕D52⊕D53⊕D54
(12)
解碼時(shí),首先進(jìn)行字內(nèi)漢明碼糾錯(cuò),如果錯(cuò)誤位數(shù)超過兩位時(shí),就要啟動(dòng)字間的偶校驗(yàn)進(jìn)行二級(jí)糾錯(cuò),首先需要利用dj內(nèi)的一級(jí)糾錯(cuò)碼對(duì)二級(jí)冗余數(shù)據(jù)先行校驗(yàn),以防由于檢驗(yàn)碼錯(cuò)誤引起的誤糾現(xiàn)象發(fā)生。例如d1的數(shù)據(jù)位錯(cuò)誤超過兩位時(shí),可通過下式進(jìn)行糾錯(cuò):
D81=D8j⊕D82⊕D83⊕D84
(13)
D71=D7j⊕D72⊕D73⊕D74
(14)
D61=D6j⊕D62⊕D63⊕D64
(15)
D51=D5j⊕D52⊕D53⊕D54
(16)
通過式(9)—式(12),便可完全恢復(fù)出d1的數(shù)據(jù)位,即實(shí)現(xiàn)對(duì)d1的四位錯(cuò)誤數(shù)據(jù)的糾錯(cuò),同理也可對(duì)d2、d3、d4的多位糾錯(cuò)。
當(dāng)兩組內(nèi)多位出錯(cuò)時(shí),如d1中的D81、D82出錯(cuò),而d2中的D62、D52出錯(cuò)時(shí),也可通過偶校驗(yàn)對(duì)d1、d2兩組數(shù)據(jù)進(jìn)行糾錯(cuò)。
兩級(jí)冗余編碼完成后,由于LVDS編譯碼器可對(duì)10位并行數(shù)據(jù)完成串并轉(zhuǎn)化,為了有效利用硬件資源,同時(shí)應(yīng)對(duì)傳輸過程中的碼間干擾,對(duì)發(fā)送數(shù)據(jù)流再進(jìn)行直流平衡的8 bit/10 bit編碼。
為了驗(yàn)證兩級(jí)冗余編碼能否提高數(shù)據(jù)傳輸系統(tǒng)的可靠性,可以先搭建試驗(yàn)平臺(tái),同時(shí)模擬測(cè)試環(huán)境,進(jìn)行試驗(yàn)驗(yàn)證。測(cè)試平臺(tái)由地面測(cè)試設(shè)備、電纜網(wǎng)、采編器三部分組成。電纜網(wǎng)主要由240 m的屏蔽雙絞線構(gòu)成,實(shí)現(xiàn)采編器數(shù)據(jù)的高速回傳。
實(shí)驗(yàn)中,將采編器和電纜置于高低溫箱中,設(shè)置高低溫循環(huán)來模擬溫度環(huán)境,用函數(shù)發(fā)生器驅(qū)動(dòng)場(chǎng)源發(fā)生器,產(chǎn)生空間磁場(chǎng),模擬電磁環(huán)境。數(shù)據(jù)回傳到地面測(cè)試設(shè)備后,利用上位機(jī)嵌入的數(shù)據(jù)處理軟件,對(duì)回傳數(shù)據(jù)進(jìn)行解包處理,分析傳輸過程中是否出現(xiàn)誤碼、丟數(shù)的現(xiàn)象。上位機(jī)接收的數(shù)據(jù)如圖5所示,其中“EB 90”為數(shù)據(jù)幀尾,“00 0F 9F EA~00 0F 9F F9”是幀計(jì)數(shù),數(shù)據(jù)是F9~00的自減數(shù)。
對(duì)照表5中的傳輸速率修改FPGA程序,依次測(cè)試每種傳輸速率的平均誤碼率,每個(gè)速率都進(jìn)行60 次測(cè)試,每次測(cè)試傳輸?shù)臄?shù)據(jù)量約為32 GB,測(cè)試結(jié)果見表5。

圖5 上位機(jī)接收原始數(shù)據(jù)Fig.5 Upper computer receiving original data

表5 兩級(jí)冗余編碼測(cè)試結(jié)果表
根據(jù)表5可得,未進(jìn)行冗余編碼時(shí),僅憑硬件補(bǔ)償電路,可以使LVDS信號(hào)在240 m雙絞線中以100 Mb/s的速率無誤碼傳輸,隨著傳輸速率的增大,誤碼率會(huì)迅速增大。然而進(jìn)行兩級(jí)冗余編碼后,可以明顯看出傳輸速率不斷增加時(shí),平均誤碼率仍然為0。
通過對(duì)比兩級(jí)冗余編碼前后的試驗(yàn)結(jié)果,可以發(fā)現(xiàn)在傳輸速率低于100 Mb/s時(shí),編碼前后的平均誤碼率均為0,即冗余編碼不僅沒有提高數(shù)據(jù)傳輸?shù)目煽啃裕€占用了部分有效帶寬。當(dāng)傳輸速率位于100~600 Mb/s之間時(shí),兩級(jí)冗余編碼明顯地降低了數(shù)據(jù)傳輸?shù)恼`碼率,提高了傳輸系統(tǒng)的可靠性。
根據(jù)表5的測(cè)試結(jié)果可知,應(yīng)該根據(jù)傳輸速率和傳輸距離合理選用編碼方式。針對(duì)文章中惡劣環(huán)境中的遠(yuǎn)距離高速的傳輸條件,選用冗余編碼實(shí)現(xiàn)了240 m屏蔽雙絞線上的600 Mb/s的無誤碼傳輸。
本文提出了基于FPGA的兩級(jí)冗余編碼系統(tǒng),該系統(tǒng)通過硬件優(yōu)化和軟件優(yōu)化相結(jié)合的方式,來提高數(shù)據(jù)傳輸過程中的穩(wěn)定性。在硬件電路中,通過添加驅(qū)動(dòng)器和均衡器,增強(qiáng)信號(hào)的傳輸能力;在軟件邏輯方面,通過兩級(jí)嵌套編碼,字內(nèi)編碼實(shí)現(xiàn)字內(nèi)的一位糾錯(cuò),字間編碼實(shí)現(xiàn)字內(nèi)的多位糾錯(cuò),字內(nèi)糾錯(cuò)和字間糾錯(cuò)相結(jié)合的編碼方式,來實(shí)現(xiàn)對(duì)數(shù)據(jù)傳輸過程的糾錯(cuò)。環(huán)境試驗(yàn)結(jié)果表明,在240 m的雙絞線上,兩級(jí)冗余編碼的傳輸系統(tǒng)可以以600 Mb/s的速率正確傳輸。該系統(tǒng)已成功應(yīng)用于遠(yuǎn)距離傳輸設(shè)備上。