劉雪峰,張 希
(1. 西安交通工程學院,陜西 西安 710300;2.西安黃河光伏科技股份有限公司,陜西 西安 710048)
在進行長距離數據通信之前,通常要對數據進行編譯碼處理,HDB3碼因具有無直流成份、低頻成份和連0個數最多不超過三個等優點而被廣泛采用。其所具有的時鐘恢復和抗干擾性能更適合于長距離信道傳輸。鑒于此,本文設計了基于FPGA的 HDB3編譯碼系統。
本設計利用Verilog HDL編寫軟件代碼,采用模塊化的設計方案,在QuartusⅡ開發軟件上,完成了硬件的布局與軟件的仿真,并用ALTERA CycloneⅣ系列的芯片進行了軟硬件功能驗證,與理論輸出值保持一致。FPGA具有高集成度、響應速度高、編程可重復的特點,故本設計具有軟件靈活可靠、硬件調試方便、較低開發成本、系統穩定可靠等優點。
HDB3碼是為了克服AMI碼的長連零現象而出現的,將4個連續的“0”位元取代成“000V”或 “B00V” 。其編碼規則如下:一是將消息代碼轉換為AMI碼;二是檢查AMI碼中連“0”的情況,出現4個或4個以上連“0”時,將第4個“0”變為與前一個非“0”符號同極性的符號,用“V”標識(+V和-V);三是檢查相鄰V符號之間非“0”符號是否為偶數,如果為偶數,則將當前V符號前一個非“0”符號后的第一個“0”變為“B”,“B”的極性與前一個非“0”符號相反,并使“V”后的非“0”符號從“V”開始再交替變化。根據編碼規則,V碼脈沖與前一個脈沖具有相同的極性。可從接受的信碼中找出V碼流,根據通信傳輸中加取代節原則,V碼與前三位碼是取代碼,需復原為四連0。只要找到V碼,不管V碼流前是兩個“0”碼,將取代節清零,完成了扣V扣B功能,進而得到原信碼序列。
系統設計的整體方案如圖1所示,本設計包括用于產生基于M序列的偽隨機產生模塊,產生的偽隨機碼流分為兩條支路:一條支路通過HDB3編譯后輸送給比較器,另一支路通過幀同步模塊輸入比較器。同步模塊對偽隨機碼產生模塊起始幀頭信號進行標記,以使兩路信號實現同步;比較器比較兩條支路的信號幀,以判斷傳輸過程中是否存在誤碼,將產生的誤碼進行標記;計數器統計比較器產生的誤碼個數;顯示器顯示計數器計數的結果。

圖1 系統整體框圖
設計亮點在于比較器之前設置同步Flag模塊,同步模塊可將偽隨機碼與通過HDB3編譯碼后的兩支路信號保持同步,比較器可以直接對兩支路信號進行比較,提高了判斷誤碼的準確率。
圖2所示為HDB3編譯碼頂層設計,偽隨機碼模塊產生8位的偽隨機信號,通過并串轉換模塊合成為一路信號送入HDB3編譯碼模塊,將編譯數據通過串并轉換模塊恢復為8位信號與偽隨機碼模塊進行兩次轉換后的8位信號進行比較,計數,顯示編譯碼過程中的誤碼。

圖2 HDB3編譯碼頂層設計框圖
信號幀頭設置flag同步模塊,在進入比較計數模塊之前,有效的防止了信號的抖動以及在傳輸過程中的誤碼問題。具體步驟如下:
在QuartusⅡ12.0開發軟件上編程,并利用芯片EP4CE115F29C7N加上外接電路制作實物,進行偽隨機碼的HDB3編譯碼模塊顯示,與理論輸出值一致。
圖3(a)所示為HDB3編碼頂層設計及仿真波形,信號經過HDB3編碼部分,在編碼部分進行插V、插B操作,以及極性轉換;圖3(b)所示為HDB3譯碼頂層設計及仿真波形,信號經過HDB3譯碼部分,在譯碼部分進行扣V、扣B操作,以及極性轉換。由波形圖可以看出,偽隨機信號經過HDB3編譯碼后出現了四連零現象。

圖3 HDB3編碼頂層設計及仿真波形
本文設計的軟件部分下載進開發板的整個實驗系統如圖4所示,由圖可以看出將編譯碼后的信號下載進信號分析儀顯示OK,說明編譯碼過程符合通信要求。整個測試過程為期一星期,通信過程產生了0個誤碼,由實驗現象可知本文設計的編譯碼電路基本符合信號傳輸的要求。

圖4 實驗結論圖
本文所設計的HDB3編譯碼模塊簡單實用,利用FPGA實現 HDB3 編譯碼功能具有很強的靈活性,可以把編碼電路和譯碼電路與其他電路相集成在一起,提高系統設計的速度。本 文以ALTERA公司的CycloneⅣ系列的FPGA芯片EP4CE115F29C7N為硬件平臺,以Quartus II為軟件平臺,以Verilog HDL為開發工具,來驗證FPGA實現的HDB3編譯碼器。并對整個HDB3碼的編碼過程以及解碼過程作了一個詳細的分析。且實驗結果符合預期,有很好的應用遠景。