秦 巖 武榮偉 蘇 濤
(西安電子科技大學(xué) 西安 710071)
數(shù)字和信息技術(shù)的快速發(fā)展,對(duì)信號(hào)的傳輸速率和傳輸距離提出了更高的要求,特別在雷達(dá)信號(hào)處理、視頻圖像采集以及多媒體應(yīng)用等領(lǐng)域,高速高可靠的通信方案是系統(tǒng)設(shè)計(jì)的重點(diǎn)和難點(diǎn)之一。同時(shí),遠(yuǎn)距離數(shù)據(jù)通信中多數(shù)無記憶信道[1],如深空衛(wèi)星信道[2]、微波接力信道以及高空激光視距信道等,誤碼多由高斯白噪聲和碼間串?dāng)_等造成,且表現(xiàn)為獨(dú)立的隨機(jī)誤碼[3]。選用合適的信道編碼技術(shù)進(jìn)行差錯(cuò)控制,是提高通信質(zhì)量的常用方法[4]。
外同步通信方式在數(shù)據(jù)傳輸速率和傳輸距離上都已達(dá)極限,使用信道調(diào)制技術(shù)是提高傳輸速率和距離的有效途徑。然而調(diào)制解調(diào)會(huì)使誤碼衍生,并且高速數(shù)據(jù)通信實(shí)時(shí)性高、速度冗余小的特點(diǎn),使得復(fù)雜的差錯(cuò)控制算法如RS、Turbo、Viterbi等不便使用。本文提出的基于漢明碼原理的交織漢明碼算法,繼承了漢明碼簡(jiǎn)單易實(shí)現(xiàn)的特點(diǎn),擴(kuò)展了糾錯(cuò)性能,可以應(yīng)對(duì)突發(fā)連續(xù)誤碼的情況,適合在高速數(shù)據(jù)通信中應(yīng)用,且能顯著提高通信質(zhì)量。
串行通信方式代替并行總線,簡(jiǎn)化了系統(tǒng)設(shè)計(jì)中通信鏈路的復(fù)雜度。但隨著數(shù)據(jù)傳輸帶寬的不斷提高,以及遠(yuǎn)距離高速通信需求的不斷增加,采用系統(tǒng)同步及源同步的數(shù)據(jù)通信方式已無力應(yīng)付。數(shù)據(jù)傳輸同步系統(tǒng)的性能是影響傳輸速度[5]和傳輸距離的關(guān)鍵之一。本文使用信道調(diào)制技術(shù)設(shè)計(jì)一種基于嵌入式時(shí)鐘的高速串行自同步數(shù)據(jù)通信方案,突破了目前通信方式的速率上限,進(jìn)一步簡(jiǎn)化了串行鏈路復(fù)雜度,還能夠可靠地用于遠(yuǎn)程有線或無線通信系統(tǒng)中。
對(duì)數(shù)據(jù)信道編碼調(diào)制傳輸,能簡(jiǎn)化時(shí)鐘和數(shù)據(jù)的時(shí)序關(guān)系,進(jìn)而大幅提高數(shù)據(jù)傳輸速率和傳輸可靠性。本方案采用高效、易實(shí)現(xiàn)的8B/10B編碼進(jìn)行信道調(diào)制,將傳輸數(shù)據(jù)的時(shí)鐘信息嵌入到高速的數(shù)據(jù)流中,同時(shí)利用其直流平衡以及抗干擾等特性來提高信號(hào)質(zhì)量。接收端根據(jù)數(shù)據(jù)流中的同步信息進(jìn)行8B/10B解碼(解調(diào))并恢復(fù)時(shí)鐘和數(shù)據(jù),從而實(shí)現(xiàn)自同步傳輸。為提高可靠性,可根據(jù)需要定制合適的傳輸協(xié)議[6],嵌入差錯(cuò)控制編碼和流量控制等內(nèi)容。在基于FPGA的信號(hào)處理及高速通信應(yīng)用中,借助RocketIO實(shí)現(xiàn)這一過程,可以提高開發(fā)效率和設(shè)計(jì)性能。以 Xilinx Virtex5 FPGA為例,其RocketIO的結(jié)構(gòu)如圖1所示。其中,公共鎖相環(huán)依據(jù)參考時(shí)鐘為整個(gè)收發(fā)器提供工作時(shí)鐘;8B/10B編解碼電路實(shí)現(xiàn)信道調(diào)制,方便了發(fā)送時(shí)鐘的嵌入和接收時(shí)鐘的提取,同時(shí)起到直流平衡和簡(jiǎn)單的差錯(cuò)控制功能[7];預(yù)加重/均衡電路則可補(bǔ)償信號(hào)的高頻損耗,提高信號(hào)質(zhì)量;CDR電路執(zhí)行數(shù)據(jù)眼圖自動(dòng)搜索,完成接收端時(shí)鐘提取和數(shù)據(jù)恢復(fù);過采樣電路是對(duì)低速應(yīng)用的考慮。尤其CDR的自動(dòng)眼圖搜索減弱了時(shí)鐘時(shí)序?qū)?shù)據(jù)速率的限制,保證了高速數(shù)據(jù)的可靠采樣。
圖1 RocketIO GTP的結(jié)構(gòu)框圖
借助8B/10B碼表中的K字符,可以定制符合需求的傳輸協(xié)議。由于數(shù)據(jù)以流模式傳輸,以幀作為協(xié)議的基本單元。一個(gè)用于單鏈路的簡(jiǎn)單的通信協(xié)議至少應(yīng)包括幀頭(SF)、用戶數(shù)據(jù)(data)和空閑序列(idle),多通道綁定應(yīng)用時(shí)還需要通道校正序列。圖2描述了協(xié)議的鏈路碼流結(jié)構(gòu),并標(biāo)出了一個(gè)簡(jiǎn)單的協(xié)議幀結(jié)構(gòu)。其中SF用RocketIO的comma字符,它標(biāo)志了幀開始,控制著傳輸同步;空閑序列起流控作用。整個(gè)協(xié)議由FPGA邏輯實(shí)現(xiàn)。
圖2 簡(jiǎn)單協(xié)議的鏈路碼流及其幀結(jié)構(gòu)
圖3是在嵌入時(shí)鐘為3.0Gbps時(shí)抓取的收發(fā)波形,可見該方案單通道線速率可達(dá) 3.0Gbps[7,8],且支持至多24個(gè)通道的綁定(多通道同步工作)應(yīng)用,總吞吐率可達(dá)90Gbps,同時(shí)單通道功耗不超過100mW。方案中,發(fā)送端(信源端)輸出的CML(電流模式邏輯)差分電信號(hào),可以根據(jù)實(shí)際的信道結(jié)構(gòu)轉(zhuǎn)換成合適的信號(hào)形式,如用于遠(yuǎn)程光纖信道或高空激光視距信道的光信號(hào)[9]、用于微波接力信道的高頻電磁波信號(hào)等。接收端(信宿端)恢復(fù)CML信號(hào),然后交由FPGA負(fù)責(zé)恢復(fù)數(shù)據(jù)的工作。
然而,進(jìn)行信道編碼調(diào)制提高數(shù)據(jù)傳輸速率的同時(shí)也會(huì)使誤碼率升高。這是因?yàn)?,信道噪聲或串?dāng)_引起的隨機(jī)或突發(fā)誤碼,有可能造成解調(diào)(8B/10B解碼)碼字誤判,從而衍生出連續(xù)多個(gè)錯(cuò)誤碼元(不會(huì)超過8個(gè),且錯(cuò)誤碼元間距小于7)。因此,僅能糾正單個(gè)錯(cuò)誤的差錯(cuò)控制碼型,如漢明碼,雖然結(jié)構(gòu)簡(jiǎn)單,卻無法在本方案中使用。下面提出一種可用的漢明碼的改進(jìn)算法,稱作交織漢明碼,并分析其性能。
圖3 嵌入時(shí)鐘為3.0Gbps時(shí)的收發(fā)波形
交織漢明碼通過把交織技術(shù)引入到漢明編譯碼電路中,使原來突發(fā)的連續(xù)誤碼隨機(jī)化,因而糾錯(cuò)能力更強(qiáng),能夠糾正碼字內(nèi)的多個(gè)突發(fā)誤碼,避免了經(jīng)典漢明碼對(duì)多個(gè)錯(cuò)誤有錯(cuò)不糾或“亂糾”的現(xiàn)象[10],且編譯碼電路并不復(fù)雜。因此,十分適用于高速數(shù)據(jù)通信。
單純地使用信道編碼技術(shù),要糾正數(shù)據(jù)傳輸過程中突發(fā)產(chǎn)生的多個(gè)連續(xù)誤碼,即使性能很優(yōu)的編碼方案也必須借助較長(zhǎng)的碼字,編譯碼電路會(huì)相當(dāng)復(fù)雜。在差錯(cuò)控制算法中融入交織技術(shù),可以改善這一狀況。所謂交織,就是將編碼后的數(shù)據(jù)按照一定的順序打亂重排[4],使原來的突發(fā)連續(xù)錯(cuò)誤,在
解
交織的時(shí)候分散開來,變成隨機(jī)的單個(gè)錯(cuò)。交織的實(shí)現(xiàn)過程使用公式可表示如下,若設(shè)交織器輸入序列為:
其中(u'1,u'2,…,u'n)是(u1,u2,…,un)的重新排列。常用的交織器有三種實(shí)現(xiàn)方式:矩陣分組式、偽隨機(jī)式和半偽隨機(jī)式[11]。后兩種方式需要將交織信息發(fā)到對(duì)方,占用數(shù)據(jù)帶寬,不適于高速通信中使用,因此交織漢明碼中使用矩陣分組式交織技術(shù)。
交織漢明碼的設(shè)計(jì)思想是把從信道上接收過來的連續(xù)碼元進(jìn)行打亂重排,構(gòu)成新碼字。如果信道上有連續(xù)的誤碼,重排后就被拆散而分布在不同的碼組中,使用簡(jiǎn)單的漢明碼即可完成差錯(cuò)控制。因此,把交織器融入漢明編解碼電路中就能實(shí)現(xiàn)交織漢明碼。使用(n,k,d,m)表示交織漢明碼,其中 m 定義為交織深度,即參與交織的碼字個(gè)數(shù),(n,k,d)遵循漢明碼定義。由于多于n個(gè)碼字的交織沒有應(yīng)用意義,故應(yīng)有m≤n,而n和k滿足下式:
交織漢明碼編碼電路可分為兩個(gè)部分:編碼器和交織器。其中編碼器借助漢明碼的編碼算法實(shí)現(xiàn),因而具有漢明碼的所有優(yōu)點(diǎn);交織器則是交織漢明碼性能提高的關(guān)鍵部分,如前所述使用矩陣分組式交織技術(shù)實(shí)現(xiàn)碼間交織,這是比較容實(shí)現(xiàn)的一種交織方式,因而并不會(huì)提高交織漢明碼編譯碼復(fù)雜度。(n,k,d,m)交織漢明碼的實(shí)現(xiàn)過程如圖4所示。
圖4 交織漢明碼實(shí)現(xiàn)過程
事實(shí)上,交織漢明碼的實(shí)現(xiàn)過程可以看作是把m個(gè)漢明編碼后的n位的碼字按行依次寫入m×n的矩陣,然后按列以m位一個(gè)碼字讀出,并發(fā)送出去。接收端先進(jìn)行解交織,再進(jìn)行漢明譯碼。其中解交織的過程就是把接收到的碼字按列寫入m×n矩陣,完成n次寫入后,再以行為單位讀出進(jìn)行漢明解碼。即使在數(shù)據(jù)傳輸過程中出現(xiàn)突發(fā)出現(xiàn)多個(gè)誤碼,只要錯(cuò)誤碼元的間距不超過(m-1),接收端解交織后就可以把這些誤碼分散到m個(gè)漢明碼字中,從而實(shí)現(xiàn)每個(gè)誤碼的單獨(dú)糾正。因此,(n,k,d,m)交織漢明碼可以糾正連續(xù)m個(gè)誤碼,其糾錯(cuò)能力相對(duì)于漢明碼得到了大幅提高。
交織漢明碼除了依靠漢明碼進(jìn)行差錯(cuò)控制[12]以外,其性能很大程度上依賴于交織變換。就(n,k,d,m)交織漢明碼而言,若在連續(xù)的m×n個(gè)碼元中存在任何長(zhǎng)度p(p≤m)的突發(fā)錯(cuò)誤,經(jīng)過交織變換后,成為至少被n-1位隔開的單個(gè)獨(dú)立差錯(cuò),即每個(gè)漢明碼字中至多只有一個(gè)誤碼,可糾正。對(duì)于p(≤m)個(gè)誤碼,若錯(cuò)誤碼元不連續(xù),只要第一個(gè)誤碼到最后一個(gè)誤碼的距離小于m -1,(n,k,d,m)交織漢明碼依然可以正確恢復(fù)原數(shù)據(jù)。
對(duì)于存在p個(gè)連續(xù)誤碼的情況且p>m,若p≤2m≤n,則交織變換后將有p-m個(gè)漢明碼字中存在兩個(gè)誤碼的,而其余的2m-p個(gè)碼字中僅有一個(gè)誤碼。這種情況下,僅有2m-p個(gè)碼字能夠起到差錯(cuò)控制的作用;若n≥p>2m,則此時(shí)(n,k,d,m)交織漢明碼將無法糾錯(cuò)。此外,還可能存在的一種情況,就是即便p≤m的情況下,若是不連續(xù)誤碼或者隨機(jī)誤碼,任何間距大于m-1的兩個(gè)或多個(gè)誤碼,在經(jīng)過交織變換后都有可能集中到一個(gè)漢明碼字中,造成無法糾錯(cuò)或亂糾。需要強(qiáng)調(diào)的是以上的討論都是假設(shè)在m×n個(gè)碼元中出現(xiàn)p個(gè)誤碼。
上述分析顯示,m越大,(n,k,d,m)交織漢明碼的糾正連續(xù)誤碼的能力越強(qiáng)。然而m個(gè)碼字的交織會(huì)引入2mn個(gè)比特周期的編譯碼延時(shí)。還必須注意,增大交織深度[9]m(m≤n),會(huì)相應(yīng)地要求增加漢明碼長(zhǎng)n。對(duì)于(n,k,d)漢明碼,其糾錯(cuò)后輸出誤碼率可按下式(4)估算:
式中(1-pe)n和C1npe(1-pe)n-1分別指碼字中無誤碼和僅有一個(gè)誤碼的概率,pe是指BSC(二進(jìn)制對(duì)稱信道)的誤碼率,由信道信噪比決定。分析(n,k,d)漢明碼糾錯(cuò)后的輸出誤碼率p與碼字長(zhǎng)度n的關(guān)系曲線見圖5(a),圖5(b)是漢明碼的編碼增益曲線。
從圖5可以看出,式(4)是一個(gè)遞增的函數(shù),即漢明碼糾錯(cuò)后輸出誤碼率隨碼長(zhǎng)的增加而增加。當(dāng)BSC本身的誤碼率較高時(shí),碼長(zhǎng)越大越不利于糾錯(cuò)。因此,實(shí)際中漢明碼字長(zhǎng)度不應(yīng)選得太長(zhǎng),應(yīng)參考實(shí)際信道誤碼率確定。所以(n,k,d,m)交織漢明碼的交織深度是受限的。
此外,交織漢明碼的碼率與漢明碼相同,如下式:
由于n、k只要滿足式(3)即可,其碼率可變。這一點(diǎn)在速率冗余有限的高速數(shù)據(jù)傳輸中十分重要,也即可以 根據(jù)實(shí)際速率冗余量來確定交織漢明碼的碼形。
圖5 漢明碼糾錯(cuò)后輸出誤碼率與碼長(zhǎng)的關(guān)系及其編碼增益
基于8B/10B編碼調(diào)制的嵌入式時(shí)鐘自同步高速數(shù)據(jù)通信方案,可以用于遠(yuǎn)程通信系統(tǒng),卻會(huì)使誤碼衍生。其10B碼字中出現(xiàn)單比特或多比特誤碼,解調(diào)后可能引起最多連續(xù)8個(gè)誤碼。理論分析表明,交織漢明碼可以處理這種誤碼,并且因其編譯碼電路簡(jiǎn)單、碼率易控,很適于高速的通信應(yīng)用。下面通過人為添加擾碼的方式來驗(yàn)證激光視距信道中方案性能。
實(shí)踐中,在 Xilinx FPGA 上對(duì)(29,24,3,8)交織漢明碼對(duì)方案進(jìn)行了仿真驗(yàn)證,其中高速通信接口(信道調(diào)制/解調(diào))用RocketIO GTP實(shí)現(xiàn),通信協(xié)議和交織漢明編解碼電路依FPGA邏輯搭建。條件如下:信源端對(duì)8個(gè)獨(dú)立通道上的8位并行數(shù)據(jù)分別進(jìn)行(29,24,3,8)交織漢明編碼,在輸出的每幀29個(gè)8位并行數(shù)中添加一個(gè)8位的擾碼操作(實(shí)際上是進(jìn)行一次8位的異或運(yùn)算),然后添加一個(gè)8位的幀頭并封裝成幀送給通信接口完成調(diào)制和串化。最終信道以3.0Gbps速率傳輸,信源端恢復(fù)數(shù)據(jù)。這樣每幀數(shù)據(jù)存在的誤碼數(shù)可以從1到8,且第一個(gè)誤碼和最后一個(gè)誤碼的距離不超過7,在(29,24,3,8)交織漢明碼的糾錯(cuò)能力之內(nèi)。發(fā)送端和接收端的8位并行數(shù)的Chipscope截圖見圖6。
圖6 硬仿真中發(fā)送和接收的數(shù)據(jù)截圖
測(cè)試中8個(gè)通道發(fā)送的都是8位0-255的連續(xù)遞增數(shù)。圖中error-bit是擾碼數(shù)據(jù)。從圖中可以看出接收到的數(shù)據(jù)存在誤碼(與發(fā)送數(shù)據(jù)不同)且連續(xù)誤碼數(shù)不止一個(gè)。圖7是信源端接收到的第一路數(shù)據(jù)波形圖,其中圖(a)是關(guān)閉糾錯(cuò)功能時(shí)數(shù)據(jù),圖(b)是普通漢明碼糾錯(cuò)后的數(shù)據(jù),圖(c)是使用交織漢明碼糾錯(cuò)后的數(shù)據(jù)。圖(a)、(b)中的波形毛刺,是接收數(shù)據(jù)出錯(cuò)造成的??梢钥闯觯瑹o糾錯(cuò)使能時(shí)接收數(shù)據(jù)有誤,經(jīng)典漢明碼對(duì)于存在多位錯(cuò)的傳輸信道,性能基本無改善,而使用交織漢明碼可完全恢復(fù)原始數(shù)據(jù),因此(29,24,3,8)交織漢明碼可實(shí)現(xiàn)多達(dá)8個(gè)連續(xù)誤碼的糾錯(cuò),驗(yàn)證了方案性能。
本文使用信道調(diào)制技術(shù)實(shí)現(xiàn)了基于嵌入式時(shí)鐘的高速數(shù)據(jù)通信方案,并對(duì)方案中解調(diào)可能引入的連續(xù)誤碼,設(shè)計(jì)了(n,k,d,m)交織漢明碼算法完成高速數(shù)據(jù)通信中的差錯(cuò)控制。方案可用于遠(yuǎn)程通信應(yīng)用以及其他有線或無線系統(tǒng)的連接,并能顯著的改善存在高斯白噪聲或沖擊干擾的無記憶信道的通信質(zhì)量。算法的設(shè)計(jì)思想也可以作為對(duì)其他高速通信接口設(shè)計(jì)和糾錯(cuò)碼性能擴(kuò)展的參考。
圖7 實(shí)測(cè)時(shí)接收端的數(shù)據(jù)截圖
[1]張冠茂,肖美恒,張孝萍.二進(jìn)制無記憶數(shù)字信道信息容量與誤碼率制約關(guān)系[J].蘭州大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,43(4).78-82
[2]郭世欣,張輝,任明祿.深空通信中Turbo編譯碼技術(shù)[J].通信技術(shù),2007,(10):66-67.
[3]汪海山,康健斌,馬騁等.漢明碼在大型傳感器網(wǎng)絡(luò)中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用研究,2009,26(7):2656 -2658.
[4]王政,王順滿,匡鏡明.一種高可靠數(shù)據(jù)傳輸方案在戰(zhàn)時(shí)數(shù)據(jù)鏈系統(tǒng)中的應(yīng)用[J].兵工學(xué)報(bào),2007,28(6):667 -670.
[5]馮文江,袁遠(yuǎn),胡志遠(yuǎn).實(shí)現(xiàn)自組網(wǎng)互同步的一種單源同步法[J].電路與系統(tǒng)學(xué)報(bào),2009,14(3):23 -27.
[6]徐昊,劉振安,盧云鵬等.基于FPGA的高速串行光纖數(shù)據(jù)傳輸在BESIII觸發(fā)系統(tǒng)的應(yīng)用[J].核技術(shù),2009,32(9).
[7]Xilinx.Virtex - 5 FPGA RocketIO GTP Transceiver User Guide.UG196(v1.6),2008:17 -222.
[8]Xilinx.Virtex - 5 Data Sheet:DC and Switching Characteristics.DS202(v3.1),2007:9-15.
[9]宋效正,劉璐,黨安紅等.高碼率無線光通信交織卷積編碼新方案研究[J].通信學(xué)報(bào),2007,28(10):38 -43.
[10]彭凡,王沛,陳勝.一種改進(jìn)的基于漢明糾錯(cuò)碼的圖像恢復(fù)算法[J].中國(guó)圖像圖形學(xué)報(bào),2008,10.13(10):2043 -2046.
[11]田耘,徐文波,張延偉等.無線通信FPGA設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008,02:332-336.
[12]唐明,張國(guó)平,張煥國(guó).基于漢明糾錯(cuò)編碼的AES硬件容錯(cuò)設(shè)計(jì)與實(shí)現(xiàn)[J].電子學(xué)報(bào),2005,33(11):2013-2016.