吳倚石
遼寧錦州渤海大學工學院
基于MATLAB的HDB3碼生成器設計
吳倚石
遼寧錦州渤海大學工學院
基帶傳輸系統中使用比較多的傳輸碼型是HDB3碼。本文主要是描述了HDB3的編碼以及解碼的原理介紹以及實現過程。具體介紹了編碼以及解碼的。本文針對HDB3碼的相關原理進行介紹同時進行了編碼與譯碼流程圖的設計。
HDB3碼 編碼 解碼
實現遠距離地準確傳輸數字信息這是數字通信領域所追求的最初目標。線路傳輸碼型的不同,則數字傳輸過程中的速率也會不同,所以要實現高效率地傳輸數字信息,如何進行線路傳輸碼型的選擇就有很重要的意義價值了。數字線路傳輸碼型的選擇需要考慮的原則是適用性強以及足夠經濟實惠。單極性不歸零碼簡稱為NRZ碼。在數字基帶信息中使用比較頻繁的碼型是NRZ碼。NRZ碼存在很多方面的不足。比如低頻成分比較多,而且直流成分也比較大。如果接收的過程中的判決門限和接收到的電平關系是1比2的話,那么就會出現不穩定的門限,同時出現判決錯誤的概率比較高。
同步信號的獲取需要通過繁瑣的方式從接收碼序列中得到。正是由于考慮到上面的缺點,所以NRZ碼在信道的傳輸中使用的比較少。而所謂的三階高密度雙極性碼,指的也是HDB3碼,該HDB3碼基于AMI碼進行了改進。相比于NRZ碼,HDB3碼的優點是低頻成分以及直流成分都比較少,而且同步時鐘的獲取可以直接獲得,HDB3編譯碼在現實中的使用很頻繁。
AMI碼的全稱是符號交替反轉碼,AMI碼編碼的規則介紹如下:如果傳號是用“0”表示,而空號是用“1”表示,其中的“0”碼不會出現改變,而“1”碼會出現改變,這個改變是在+1與-1之間交替變化。一般情況下脈沖的寬度和碼元的寬度是1比2的關系,AMI碼碼型中的正、負極脈沖會輪流產生,因此不會存在無直流分量,低頻分量也很少。AMI碼實現反變換簡單易操作,當信碼需要重新形成的時候,要把信號實現整流處理,此時需要把“-1”變為“+1”,從而形成單極性碼。然而AMI碼也存在著一些不足,這個不足之處指的是當原信碼中有長串的“0”出現的時候,信號中的電平就會出現一段時間保持不變,從而會引起定時信號的提取不太容易實現,面對這個長串“0”碼問題的解決需要采取的措施就是選擇用HDB3碼。HDB3碼編碼的原理圖如圖1所示。
HDB3碼能夠實現將連著的4個0進行替換,如果連接的“0”的個數沒有達到4的時候,編碼的規則就會運用AMI碼規則,當連接的“0”的個數達到4的時候,“000V”或“B00V”就會用碼型代替。當相鄰的V脈沖中“1”碼的個數是奇數個的時候,就把這奇數個“1”碼換成“000V”,當“1”碼的個數是偶數的時候,把所有為“1”碼的這偶數個都換成“B00V”。V脈沖中B碼以及“1”碼的正負交替變化都是以V脈沖的極性為依據的。其中的V或者B符號的引入原因是說明這個非“0”碼在初始的信碼“0”碼所得到的。

圖1 HDB3碼編碼的原理圖
①當出現了長串的4個“0”的時候,就需要把第一個“1”放入到第4個“0”碼出現的那刻,最初的“0”碼就會用“1”替換。用“1”碼替換這些“0”碼的過程稱為是V碼。
②選擇取代節以及將B碼補齊的電路中需要算出存在V碼之間的“1”碼的總數,當數目是奇數的時候,就需要用到000V取代節。如果數目是偶數的時候,就需要用“1”替換成000V里面的第一個碼為“0”,這個時候的取代節選擇的是“B00V”。
③通過破壞點從而產生的電路會把“1”補齊,從而形成破壞點。這個過程的方法就是將“1”碼添加到取代節里面的第二個里面,V碼的后面的極性和相鄰的“1”碼是一樣的,從而實現了交替反轉破壞,最終產生了所謂的“破壞點”。
④將取代節的信號碼流增加到單/雙極性變換電路里面的輸出控制中。從而可以把該電路進行分割為2個部分,接著再根據變壓器把這2個電路進行合并,最終產生雙極性信號。
3.1 編碼實現
先是進行編碼分組,將編碼之后的信碼“1”碼以及補信碼“B”碼當作是“l”碼,信碼“1”以及補信碼“B”共同形成符號“B”。
“1”碼的極性判斷依據如下:
①HDB3碼序列中的“B”以及“V”符號都需要遵循極性交替的規律,從而保證所編碼的結果中不存在直流成分。從某種意義上說明“V”與“B”符號的極性是可以預見的。
②“V”碼的極性和前一個“B”碼的極性是一致的。當極性不同的時候就需要把一個補信碼“B”增加到連接4個“0”碼中的第1個為“0”的地方,從而確保極性交替的變換規律可以實現。
判斷“1”碼的位置依據為如果4個“0”連接出現的時候,選取取代節的時候就需根據“V”與“B”的極性,并非是奇偶性。在這個過程需要了解到,取代節是“000V”的使用場合是針對4個“0”連接的第一個。編碼器的編碼流程如圖2所示。

圖2 編碼器編碼流程圖
不同于編碼的是譯碼實現起來比較容易。HDB3的編碼器的取代節主要是分為兩種,分別是“000V”以及“B00V”,其中的破壞符號是用“V”表示,而且該破壞符號的極性是和破壞符號之前的非O符號相同的。所以在檢測的時候,如果兩路極性輸入的是“X1000”和“X0001”,則就會有取代節“B00V”出現。當兩路輸入的是“10000”和“00001”的時候,則會有取代節“000V”出現。接著取代節的位置的修正會用到“0000”,從而把連接的4個“0”碼驗證出來。由于信息碼的序列中不會存在4個“O”,所以相應的HDB3碼的極性就會出現交替反轉,如果4個連續的“0”出現的時候,HDB3就會被破壞,而且根據碼極性的交替原則,采取極性寄存檢測兩路線路的輸人,當前后的極性輸入是相同的時候,就用取代節代替這個位置,這個線路的輸入用“0000”替換之后,就能夠恢復連接的4個“0”碼。如此一來成功地防止了取代節的檢測。HDB3譯碼器的譯碼過程圖如圖3所示。

圖3 譯碼器譯碼流程圖
當選擇的HDB不同的時候,其編碼器以及譯碼器中對應的損耗資源也不同。具體的統計結果如表1所示。

表1 HDB3資源分類統計結果
結論:在進行PCM編碼以及ADPCM編碼的過程中需要引入HDB3碼型變換電路。HDB3碼兩個相鄰的V碼是需要滿足交替變號的原則,而且此外其他的“1”碼也需要遵循這個原則。不需要遵循這個原則的是取代碼。本文完成了HDB3碼的編譯碼與譯碼實現,并設計了譯碼與編碼的流程圖??紤]到HDB3碼在傳輸碼型中可以迎合多方面的要求,因此在遠端接口電路中有著很大的應用價值。本文對目前已經存在的HDB3編碼器以及譯碼器中對應的損耗資源進行了比較,其中主要是從總扇出數,最大扇出數以及邏輯單元方面進行描述。
[1]陳婷婷,陳理.一種基于MATLAB的HDB3碼編碼優化算法設計[C]//中國計算機用戶協會網絡應用分會2011年網絡新技術與應用年會.2011
[2]井敏英,白亮亮,潘和,等.基于MATLAB的AMI/HDB3編解碼原理的仿真[J].科技信息,2010(30):679+681
[3]沈媛媛,梁浩.基于MATLAB的HDB3編譯碼實現[J].石油儀器,2012,26(5):20-22
[4]劉超.基于HDB3編碼的長線傳輸信號失真的矯正算法研究[D].中國海洋大學,2006
[5]謝文濤.基于SOPC技術的HDB3編碼器設計[D].長安大學,2014
[6]王素珍,王濤,呂佩舉.用ISP器件實現HDB3碼的實驗設計[J].實驗室研究與探索,2007,26(5):47-50
[7]盧威,黃錢飛,陳慕君.HDB3碼型變換電路設計的研究[J].寧波職業技術學院學報,2008,12(5):17-21
[8]王曉聰,何永泰.基于FPGA的HDB3碼編碼器優化設計與分析[J].現代電子技術,2011,34(24):146-148
[9]徐進.一種基于VHDL的HDB3碼編碼器的設計技術[J].信息化研究,2008,34(8):28-31
[10]苗睿鋒.NRZ—HDB3碼制轉換器設計[J].電子設計工程,2003(12):4-7
