新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的8B/10B編解碼設計

        基于FPGA的8B/10B編解碼設計

        作者: 時間:2010-08-06 來源:網絡 收藏


        8B/編碼模塊是整個系統主體部分之一,該模塊在邏輯上又分成3B/4B編碼模塊、5B/6B編碼模塊、RD控制模塊等3部分,如圖2所示。編碼器首先將接收到的8B數據分成3 bit和5 bil兩部分,然后分別編碼成4 bit和6 bit,編碼完成的4 bit和6 bit再按順序組合成lOB碼。整個系統首先將3 bit編碼成4 bit,RD控制器讀出4 bit數據的RD值,然后反饋控制5B/6B編碼模塊選擇合適的編碼。最終RD控制器判斷數據的RD值,若滿足要求則輸出,否則將報錯。系統采用的編碼列表主要包括以下4種編碼:
        1)“1”和“0”相鄰的完美平衡代碼 例如,通過查找3B到4B(簡稱3B/4B表)與5B到6B編碼表(簡稱5B/6B表)可知,如編碼“1001”與編碼“010101”,該類編碼的RD值為0而且與其他任何形式的代碼組合都不會出現RD值超過±2或者連續的“0”“1”超過3個的情況,所以該類代碼采用一對一的關系。
        2)“l”和“O”有間隔的完美平衡代碼 例如,3B/4B表的編碼-3“1100”和“0011”與5B/6B表編碼-7“111000”和“000111”,該類編碼的RD值為O,與其他代碼組合不會出現RD值超過±2的情況,但是會出現過多的連續“0”“l”的情況。所以該類代碼采用一對二的關系。例如5B/6B表的編碼-7,如果采用“111000”和4B碼末位為“1”的代碼組合就會出現連續的“1”超過3的情況,此時就應該采用“000-111”來避免該情況的發生。
        3)“l”和“0”有間隔的不平衡代碼 例如3B/4B表的編碼4-“0100”和“1011”、“0010”和“110l”,5B到6B編碼表的編碼4-“110-101”和“001010”,該類編碼的RD值是+2或者-2,與其他代碼組合有可能出現RD值為±4的情況,所以該類代碼也采用一對二的關系。例如5B/6B表的編碼4,如果與RD值為+2的4B代碼組合時就采用RD值為-2的“001010”代碼,反之與RD值為-2的4B代碼組合時就采用RD值為+2的“110101”代碼。如果與RD值為0的代碼組合時就隨意采用一個代碼即可。
        4)3個連續“1”或“O”的不平衡代碼 例如3B/4B表的編碼7-“0001”“lll0”“1000”“0111”,該類代碼與其他代碼組合時的RD值問題同于第三類代碼的處理方法,為了防止更多連續“l”或“0”出現,提供了4種代碼選擇,結合具體情況特殊考慮。
        通過上述對編碼代碼列表的討論,不難看出在實際的程序設計中需要避免如下3種情況出現:RD值為+2的4B代碼和RD值為+2的6B代碼組合;RD值為-2的4B代碼和RD值為-2的6B代碼組合;連續4個或4個以上的“0”“l”的代碼。前兩種情況可通過代碼分組4B和6B代碼,輪流選擇6B和4B代碼的方法,該方法可以通過狀態機實現。程序流程如圖3所示。



        關鍵詞: FPGA 10B 編解碼

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿尔山市| 乌兰县| 山西省| 襄汾县| 巴里| 清徐县| 兰西县| 揭西县| 卓资县| 云霄县| 西畴县| 依兰县| 汝阳县| 乐昌市| 汉源县| 绥宁县| 邓州市| 卢氏县| 桃园市| 伊宁市| 肇东市| 山丹县| 靖西县| 华安县| 乌兰县| 济南市| 交口县| 咸丰县| 巴里| 二连浩特市| 东莞市| 浑源县| 文登市| 乌鲁木齐市| 巴塘县| 内丘县| 临安市| 新野县| 阳信县| 鹤山市| 陇川县|