基于EDA技術(shù)的HDB3編碼器的設計與實現(xiàn)
摘要:HDB3碼是數(shù)字基帶通信系統(tǒng)中重要組成部分之一,因其具有無直流成份,檢錯能力強,具有時鐘恢復性能等優(yōu)點,成為ITU推薦使用的基帶傳輸碼型之一。首先介紹了HDB3編碼的原理和方法,提出了一種基于EDA技術(shù)實現(xiàn)的HDB3編碼器的方法,具有電路簡單,成本低,開發(fā)周期短,執(zhí)行速度高,升級方便等特點。
0 引言
HDB3碼(High Density Bip01ar Code of threecodes,三階高密度雙極性碼)是串行數(shù)據(jù)傳輸?shù)囊环N重要編碼方式,也是數(shù)字通信系統(tǒng)中重要組成部分之一。和最常用的NRZ碼(Non—Return Zero,非歸零碼)相比,HDB3碼具有很多優(yōu)點,例如:消除了NRZ碼的直流成分,具有時鐘恢復和更好的抗干擾性能,這使它更適合于長距離信道傳輸。同時,HDB3碼具有較強的檢錯能力,當數(shù)據(jù)序列用HDB3碼傳輸時,若傳輸過程中出現(xiàn)單個誤碼,其極性交替變化規(guī)律將受到破壞,因而在接收端根據(jù)HDB3碼這一獨特規(guī)律特性,可檢出錯誤并糾正錯誤,同時HDB3碼方便提取位定時信息。因而HDB3碼作為數(shù)據(jù)傳輸?shù)囊环N碼型,應用廣泛,成為ITU推薦使用的碼型之一。HDB3碼編譯碼器的實現(xiàn)有多種途徑,常用的解決方案是應用專用的HDB3收發(fā)芯片,如選用專用E1收發(fā)芯片DS2153Q和單片機實現(xiàn)該碼制的轉(zhuǎn)換功能。本文提供了一種利用現(xiàn)代EDA技術(shù),以ACEX系列FPGA芯片EPlK10為硬件平臺,以Quartus II為軟件平臺,以VHDL,為開發(fā)工具,適合于FPGA實現(xiàn)的HDB3編碼器的設計方案。
1 HDB3碼的編碼規(guī)則
HDB3碼的編碼規(guī)則如下:
(1)將消息代碼變換成AMI碼;
AMI碼(Alternate Mark Inversion)全稱是傳號交替反轉(zhuǎn)碼。這是一種將消息代碼0和1按如下規(guī)則進行編碼:代碼0仍變換為傳輸碼0,而把代碼中的1交替地變?yōu)閭鬏敶a的+1,-1,+1,-l,……。
(2)檢查AMI碼中的連0情況,當無4個或4個以上的連0串時,則保持AMI的形式不變;若出現(xiàn)4個或4個以上連0串時,則將1后的第4個0變?yōu)榕c前一非O碼(+1或-1)同極性的符號,用V表示(+n己為+V,-n己為-V)。
(3)檢查相鄰v碼間的非0碼的個數(shù)是否為偶數(shù),若為偶數(shù),則再將當前的V碼的前一非0碼后的第1個0變?yōu)?B或-B碼,且B的極性與前一非O碼的極性相反,并使后面的非0碼從V碼開始再交替變化。
NRZ碼轉(zhuǎn)換為HDB3碼的過程如表1舉例所示。
2 HDB3編碼器的建模與實現(xiàn)
如果直接將要進行編碼的數(shù)據(jù)按上述編碼原則先轉(zhuǎn)換成AMI碼,然后進行加v碼,加B碼操作,會發(fā)現(xiàn)轉(zhuǎn)化成AMI碼時有一個“+1”“一1”碼極性形成的過程,而在加B碼操作之后,非零碼元相應極性還有可能進行反轉(zhuǎn),因此有兩個信號極性產(chǎn)生的過程。
分析HDB3的編碼結(jié)果:V碼的極性是正負交替的,余下的1碼和B碼看成為一體也是正負交替的,同時滿足V碼的極性與前面的非零碼極性一致。由此產(chǎn)生了利用FPGA進行HDB3碼編碼的思路:先進行加V碼,加B碼操作,在此過程中,暫不考慮其極性,然后將V碼,1碼和B碼分成兩組,分別進行極性變換來一次實現(xiàn)。這樣可以提高系統(tǒng)的效率,同時減小系統(tǒng)延時。
HDB3編碼器的數(shù)字電路部分由三個模塊組成:V碼產(chǎn)生單元(v Gen),B碼產(chǎn)生單元(B Gen),單極性一雙極性轉(zhuǎn)換單元(single2double),其結(jié)構(gòu)圖如圖1所示。
2.1 V碼產(chǎn)生單元(V_Gen)
V碼產(chǎn)生單元的功能實際上就是對消息代碼里的四連0串的檢測,即當出現(xiàn)四個連0串的時候,把第四個0碼變換成V碼,而在其他情況下,則保持消息代碼的原樣輸出。為了為以后的編碼過程提供方便,將原信號中的一位碼元用2位二進制傳輸碼表示,在進行加V碼時,統(tǒng)一用“11”標識之,原l碼用“01”標識,0碼用“00”標識。圖2所示為V碼產(chǎn)生單元的工作流程圖。
原信號NRZ_in通過V碼產(chǎn)生單元(V_Gen)后的信號V_Gen_out波形如圖3所示:
2.2 B碼產(chǎn)生單元(B_Gen)
B碼產(chǎn)生單元的功能是保證附加V碼后的序列不破壞“極性交替反轉(zhuǎn)”形成的無直流特性,即當相鄰V碼之間有偶數(shù)個非0碼的時候,把后一小段的第1個0變換成一個非破壞符號一B碼。因此,在判斷某一0是否應被轉(zhuǎn)化為B時,首先應保證其后第三位碼元為V碼元,因此,必須對當前碼元進行暫存,等待其后第三位碼元的到來。為實現(xiàn)此目的,首先把碼元(經(jīng)插V處理過的)放入一個3位的移位寄存器里,在同步時鐘的作用下,同時進行是否加B碼的判決,等到碼元從移位寄存器里出來的時候,就可以決定是應該變換成B碼,還是照原碼輸出。圖4所示為B碼產(chǎn)生單元的工作流程圖。
經(jīng)加v后信號V_Gen_out通過B碼產(chǎn)生單元(B_Gen)后的信號B_Gen_out波形如圖3所示。
2.3 單極性-雙極性轉(zhuǎn)換單元(singIe2doubIe)
根據(jù)HDB3的編碼規(guī)則,我們可以知道,V碼的極性是正負交替的,余下的1碼和B碼看成為一體且是正負交替的,同時滿足V碼的極性與前面的非零碼極性一致。由此我們可以將其分別進行極性變換來實現(xiàn)。從前面的程序知道,“V”、“B”、“1”已經(jīng)分別用雙相碼“11”、“10”、“01”標識之,“0”用“00”標識,所以通過以下的程序我們可以很容易實現(xiàn)。圖5是所示為單極性一雙極性轉(zhuǎn)換單元的工作流程圖。
經(jīng)過單極性一雙極性轉(zhuǎn)化單元,+1(包括“+1”、“+V”、“+B”)用2位二進制碼“01”表示,-1(包括“-1”、“-V”、“-B”)用2位二進制碼“11”表示,0用2位二進制碼“00”表示,這樣編碼的好處是,當我們把編碼形成的二位二進制碼的高位視為有符號數(shù)的符號位時,“O1”、“11”、“00”分別對應+1、-1、0.這樣方便我們觀察仿真結(jié)果。經(jīng)加B后信號B_Gen_out通過單極性一雙極性轉(zhuǎn)換單元(single2double)后的信號Code out波形如圖3所示。
3 實現(xiàn)單/雙極性變換的硬件電路
將上述的程序下載到可編程器件中,產(chǎn)生的編碼結(jié)果是單極性雙電平信號。此信號還不是真正意義上的HDB3碼,需要將上述編碼轉(zhuǎn)換成“+1”、“-1”、“0”的多電平變化波形,而此工作單純依靠數(shù)字電路是無法完成的。比較直接的方式,就是利用編碼結(jié)果,控制多路模擬選擇開關(guān)來實現(xiàn),如利用雙4選一的多路模擬選擇開關(guān)CD4052,其功能表如表2所示。
如圖6所示是利用多路模擬選擇開關(guān)CD4052實現(xiàn)電平轉(zhuǎn)換的電路連接圖,圖中HDB3_out即為最終形成的標準HDB3碼流。
4 結(jié)束語
EDA技術(shù)本身是一種工業(yè)生產(chǎn)技術(shù),在實踐中運用基于硬件描述語言的可編程芯片開發(fā)技術(shù)可對通信系統(tǒng)中的相關(guān)電路進行硬件描述,然后用CPLD/FPGA實現(xiàn)數(shù)字通信系統(tǒng),同時結(jié)合電子設計自動化和電路仿真技術(shù)即可縮小產(chǎn)品的設計周期,降低可能發(fā)生的錯誤,提高通信產(chǎn)品的開發(fā)效益。
實踐表明,運用FPGA來實現(xiàn)NRz碼到HDB3碼的轉(zhuǎn)換比采用專用集成電路不僅給調(diào)試帶來了方便,克服了分立硬件電路帶來的抗干擾差和不易調(diào)整等缺陷,而且具有軟件開發(fā)周期短,成本低,執(zhí)行速度高,實時性強,升級方便等特點。而且可以把該電路和它的解碼電路及其他功能電路集成在同一塊FPGA芯片中,減少了外接元件的數(shù)目,提高了集成度,而且有很大的編程靈活性,很強的移植性,因此有很好的應用前景。
參考文獻:
[1].DS2153Qdatasheethttp://www.dzsc.com/datasheet/DS2153Q_266909.html.
[2].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
來源:風中的葉子2次