佘新平,許鵬甲,梁 浩 (長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
基于FPGA的HDB3譯碼器設(shè)計(jì)與仿真
佘新平,許鵬甲,梁 浩 (長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
HDB3碼(三階高密度雙極性碼)是基帶傳輸碼型之一,其具有編碼規(guī)則簡(jiǎn)單、無(wú)直流分量、低頻分量少、連0數(shù)不超過(guò)3個(gè)、提取同步方便等優(yōu)點(diǎn),有利于信號(hào)的恢復(fù)和檢驗(yàn)。在石油井下信號(hào)的傳輸過(guò)程中,使用基于FPGA的HDB3編譯碼方式有利于改善傳統(tǒng)方法所采用的曼徹斯特編碼方式帶來(lái)的地面解碼電路復(fù)雜的問題。提出了HDB3碼的譯碼思想,并利用FPGA軟件仿真實(shí)現(xiàn)了HDB3譯碼。
三階高密度雙極性碼;編碼;譯碼; FPGA
隨著科學(xué)技術(shù)的不斷發(fā)展,數(shù)字通信在日常生活中到處可見,在數(shù)字通信中編譯碼器的應(yīng)用更是廣泛。譯碼器是可以將輸入二進(jìn)制代碼的狀態(tài)翻譯成輸出信號(hào),以表示其原來(lái)含義的電路。大多數(shù)編譯碼器是有損的,目的是為了得到更大的壓縮比和更小的文件大小。而HDB3碼因具有無(wú)直流成分,低頻成分和連0個(gè)數(shù)最多不超過(guò)3個(gè)等明顯優(yōu)點(diǎn),具有時(shí)鐘恢復(fù)和更好的抗干擾性能,這使它更適合于長(zhǎng)距離信道傳輸。傳統(tǒng)的石油井下信號(hào)在傳輸過(guò)程中通常采用曼徹斯特編碼方式,HDB3碼遠(yuǎn)比曼側(cè)斯特編碼方式簡(jiǎn)單,同時(shí)HDB3碼具有較強(qiáng)的檢錯(cuò)能力,是基帶電信設(shè)備之間進(jìn)行基帶傳輸?shù)闹饕a型之一。
首先定義輸入碼元的長(zhǎng)度,在輸入的源碼中,當(dāng)碼元位置為1時(shí),如果上一個(gè)非0符號(hào)為正,則下一個(gè)非0符號(hào)為負(fù),HDB3碼輸出為“-1”,反之下一個(gè)非0符號(hào)為正,HDB3碼輸出為“+1”,與此同時(shí),計(jì)零標(biāo)志位清零,數(shù)1標(biāo)志位將數(shù)1的個(gè)數(shù)累加。HDB3譯碼算法的編程思想同編碼思想一樣,也需要對(duì)輸入的HDB3碼定義輸入碼元長(zhǎng)度。在進(jìn)行譯碼時(shí),如果HDB3碼的當(dāng)前位置碼元與上一個(gè)非0符號(hào)相同,則將當(dāng)前代碼的位置及其前面的非0符號(hào)位一并清0;否則,源碼照常輸出,如果源碼位置為“-1”,全部變?yōu)椤?1”輸出。
表1 HDB3譯碼舉例
HDB3碼的譯碼是編碼的逆過(guò)程,其譯碼相對(duì)于編碼較簡(jiǎn)單。根據(jù)HDB3碼的編碼規(guī)則,第一個(gè)V符號(hào)不可能出現(xiàn)在前3個(gè)位置,即每一個(gè)破壞符號(hào)V總是與前一非0符號(hào)同極性[1],這就保證了后面的代碼位置減3有意義而且不會(huì)溢出。因此,從收到的HDB3碼序列中,容易識(shí)別V符號(hào),同時(shí)也肯定V符號(hào)及其前面的3個(gè)符號(hào)必是連0符號(hào),于是可恢復(fù)成4個(gè)連0碼,然后再將所有的-1變成+1后便得到原消息代碼(見表1)[2]。
3.1設(shè)計(jì)思路
若要處理HDB3碼,則需要先將其雙極性轉(zhuǎn)換成適合FPGA的單極性。且外接整流電路,將HDB3碼分解為分別代表其正負(fù)脈沖的正脈沖序列和負(fù)脈沖序列,同時(shí)處理2列脈沖,利用其相關(guān)性檢測(cè)破壞符V是否存在。若檢測(cè)出V,則要對(duì)其前3個(gè)碼進(jìn)行清零處理,需要把前3個(gè)碼存儲(chǔ)起來(lái)作延時(shí)輸出[3]。
圖1 HDB3譯碼器模型
圖2 V碼、誤碼檢測(cè)程序流程圖
經(jīng)過(guò)整流電路的處理,把HDB3碼分成2列序列,一列只含有正脈沖編碼,另一列則只含有負(fù)脈沖編碼。同時(shí)對(duì)2條脈沖進(jìn)行檢測(cè),檢查任一條脈沖序列2個(gè)相鄰之間的傳輸時(shí)間內(nèi),另一個(gè)脈沖序列是否有脈沖存在,如果沒有脈沖存在,則說(shuō)明被檢查的序列存在破壞符V,且為2個(gè)相鄰脈沖的后一個(gè)脈沖。通過(guò)V的檢測(cè)后可以把2序列相加在一起,以單極性輸出。若判斷出V的存在,就把V和前3個(gè)碼都清零。在沒有誤碼情況下,B只會(huì)以B00V的形式出現(xiàn),因此出現(xiàn)V時(shí),不管是否有B,只需要將前面3位清零即可實(shí)現(xiàn)譯碼操作。
3.2設(shè)計(jì)建模
HDB3譯碼器模型如圖1所示。相加器就是一個(gè)或操作,V碼檢測(cè)模塊若檢出V碼便會(huì)向后面的扣V扣B模塊的寄存器輸出一個(gè)清零信號(hào),最后輸出NRZ碼。把相加器與V碼檢測(cè)合成一個(gè)模塊,加入n連0的檢測(cè)。由編譯碼規(guī)則可知,HDB3碼不可能有4連0出現(xiàn)。若檢測(cè)出4連0嗎,即為誤碼,還有2個(gè)相鄰?fù)瑯O性脈沖之間的連0數(shù)必定是2或3[4],否則必有誤碼。
圖3 扣V碼/扣B碼的流程
1) V碼、誤碼檢測(cè) 把經(jīng)過(guò)雙/單極性轉(zhuǎn)換的2列脈沖信號(hào)以一個(gè)2位邏輯向量codein標(biāo)識(shí),即codein=“00”代表無(wú)脈沖,“01”代表有正脈沖輸入,“10”代表有負(fù)脈沖輸入。用flagzf標(biāo)識(shí)前一個(gè)脈沖的正負(fù)極性,flag=0為正,flag=1為負(fù),以判斷相鄰2脈沖的極性是否相同來(lái)判斷出有沒有破壞符V的存在。n連0的檢測(cè)與編碼器相似,若檢出4連0或2相鄰脈沖為同極性但它們之間的連零數(shù)不符合要求(不是2或3),則發(fā)現(xiàn)錯(cuò)誤提示(coderror=‘1’)。V碼、誤碼檢測(cè)程序在接收到第一個(gè)脈沖后(zf=1)才開始執(zhí)行,之前的輸出都為0。其程序流程如圖2所示,其中用cnt0記錄連0的情況, 用codein表示待編碼的輸入信號(hào),codeoutv為輸出V碼情況,coderror=‘1’為錯(cuò)誤提示。
2)扣V碼/扣B碼的實(shí)現(xiàn) 這個(gè)模塊的工作比較簡(jiǎn)單,把V碼、誤碼檢測(cè)模塊的輸出codeout的低位加到4位移位寄存器作延時(shí)輸出,對(duì)輸入進(jìn)行分析,若是‘10’,即有破壞符V,把寄存器最后一位清零輸出,反之,則按原樣輸出。程序流程如圖3所示。
運(yùn)用QuartusⅡ?qū)帉懞玫腣HDL程序進(jìn)行仿真,仿真結(jié)果如圖4所示。
參考編碼器的輸出結(jié)果,編碼器的“-1”由11表示,而譯碼器的“-1”由10表示,用10替換11,把編碼器的輸出結(jié)果作為譯碼器的輸入。分析仿真結(jié)果,輸出相對(duì)輸入有4個(gè)半周期的延時(shí),這同樣是由于HDB3碼的編譯碼規(guī)則所致。不包括延時(shí),其輸出為10110000000110000001,結(jié)果與編碼器的輸入一致,說(shuō)明譯碼器的譯碼功能正確。分別對(duì)譯碼器的檢錯(cuò)能力做測(cè)試,結(jié)果如圖5~7所示。
圖4 HDB3碼譯碼器仿真波形 圖5 HDB3碼譯碼器檢測(cè)長(zhǎng)連0的仿真
圖6 HDB3碼譯碼器檢測(cè)同極性“11”的仿真 圖7 HDB3碼譯碼器檢測(cè)同極性“101”的仿真
因?yàn)镠DB3碼連0數(shù)不可能多于3個(gè),相鄰2脈沖若同極性,其之間的連0數(shù)應(yīng)為2或3,因此若檢查出碼流中有超出3個(gè)連0,同極性“11”或“101”即為誤碼。圖5為長(zhǎng)連0檢查,圖6為同極性“11”的檢測(cè),圖7為同極性“101”的檢測(cè)。當(dāng)有誤碼被檢出,coderror為1。由檢錯(cuò)的仿真結(jié)果可知,設(shè)計(jì)的譯碼器能檢出HDB3的部分誤碼。若有誤碼被檢出,coderror為1,且之后的譯碼結(jié)果也不可能正確,所以用戶可以根據(jù)檢錯(cuò)提示進(jìn)行相應(yīng)操作。例如,當(dāng)譯碼器檢測(cè)出誤碼時(shí),請(qǐng)求發(fā)信端把出錯(cuò)的碼流段重發(fā)。
[1]蔣青,呂翔.一種基于FPGA技術(shù)HDB3譯碼器的設(shè)計(jì)[J].微電子學(xué),2007,37(2):298-300.
[2]敖天勇,侯衛(wèi)周,楊毅,等.基于CPLD的HDB3碼編譯碼器設(shè)計(jì)[J].山西電子技術(shù),2007(2):5-7.
[3]漢澤西,孫燕妮.基于FPGA的HDB3譯碼器[J].電子科技,2007(3):66-69.
[4]喬繼紅,顧偉娟.基于CPLD的HDB3碼編譯碼器的設(shè)計(jì)[J].北京工商大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,23(1):50-52.
2012-12-24
中國(guó)石油科技創(chuàng)新基金項(xiàng)目(2011D-5006-0302)。
佘新平(1964-),男,碩士,副教授,現(xiàn)主要從事天線通信技術(shù)方面的教學(xué)與研究工作。
TN96
A
1673-1409(2013)07-0037-03
[編輯] 洪云飛
長(zhǎng)江大學(xué)學(xué)報(bào)(自科版)2013年7期