利用FPGA實現HDB3編解碼功能
2.1 插入V碼過程
插入V碼過程是對消息代碼里的連零串進行檢測,一旦出現4個連零串的時候,就把第4個“O”替換成破壞符V,其他情況下消息代碼原樣輸出。輸入的代碼經插V操作后全部轉換成雙相碼,即“0”變換成“00”,“1”變換成“01”,V變換成“ll”。圖2是插入V碼過程的流程,代碼輸入到插V模塊后,如果輸入是“l”,則輸出為“01”,同時計數器清零;如果輸入是“O”.則對輸入“O”的個數進行計數,當計數器計數到第4個“O”時,輸出“11”作為V碼,同時計數器要清零用于下一輪檢測;計數器未滿4個“0”,則輸出“00”。 本文引用地址:http://www.104case.com/article/191774.htm
2.2 插入B碼過程
當相鄰兩個V碼之間有偶數個非“0”碼時.則把后一個V碼之前的第1個非“0”碼后面的“0”碼變換成B碼。該模塊設計的難點在于插入B碼的過程中涉及一個由現在事件的狀態控制過去事件狀態的問題,按照實時信號處理的理論,這是無法實現的,這里使用兩組4位移位寄存器。采用4位移位寄存器是根據HDB3編碼規則的特點確定,經插V后,連零串中的第4個“0”變成V碼,代碼中連零個數最多是3個,而插入B碼操作是把在后一個V碼之前的第1個非零碼之后的“O”變換成B碼,這個長度不超過3個“0”,因此只需4位寄存器就可通過判斷現在的輸入狀態來決定是否應插入B碼。圖3是判斷是否插入B碼的流程.2組4位移位寄存器在時鐘的作用下逐位將數據移出,在移位的同時還需對寄存器的最低位進行操作,即判斷是否需插入B碼。這部分功能的實現需設置一個檢測當前V碼狀態的標志位firstv。
評論