基于FPGA的8B/10B編解碼設計
2.2 10B并串轉換模塊
該模塊主要完成10B并行數據到lOB串行數據的轉換功能,lOB串行數據的數據格式為:l bit低電平起始位、10 bit數據位、l bit高電平停止位、2 bit高電平數據空碼。生成一個完整的10B串行數據包含4個狀態,生成起始位、轉換10 bit數據位、生成停止位、生成數據空碼。
2.3 10B串并行轉換模塊
該模塊主要完成10B串行信號到10B并行信號的轉換,10B信號的串并轉換模塊主要是要從14 bit的串行信號中挑出10 bit的有效數據位,過程中首先要判斷起始位(而不是任意一個低電平),然后采集10 bit的有效數據位,完成后等待下一個起始位。程序同樣是通過狀態機來實現整個過程的流通。
2.4 10B/8B解碼模塊
解碼模塊根據系統要求可分為6B/5B解碼模塊、4B/3B解碼模塊和誤碼檢測模塊。解碼模塊相對編碼模塊而言邏輯過程要簡單的多,該模塊首先將10 bit信號分割成4 bit和6bit兩部分(高低位必須和編碼端對應),然后4 bit和6 bit數據根據編碼列表分別解碼成3 bit和5 bit,在解碼過程中判斷是否有誤碼產生有則報錯,無則并行輸出。圖4給出了1OB/8B解碼模塊的邏輯框圖和程序設計流程如圖4所示。本文引用地址:http://www.104case.com/article/191634.htm
3 系統仿真結果分析
待完成整套的8B/10B編解碼器模塊連接后,對整體程序進行仿真驗證,其結果如圖5所示,其中clkl為編碼和解碼模塊的時鐘引腳,elk2為1OB串并轉換和10B并串轉換模塊的時鐘引腳,rst為整個系統的異步復位引腳,datin[7..0]為待傳輸的8 bit并行數據,datout[7..0]為傳輸完成的8 bit并行數據,error為解碼端誤碼檢測報警引腳,wrong為編碼端出錯報警引腳。還有3個引腳是系統不必要的但是為方便調試而引出的,outl[9..0]為10B串并轉換完成的10B并行信號,out3為10B并串轉換完成的10B串行信號,out2[9..0]為8B/10B編碼完成的10B并行信號。
由圖5可看出:輸入數據datin為“10101110”,經過8B/10B編碼完成的數據out2為“0111001010”,8B/10B編碼模塊出錯報警引腳為“0”,10B并串轉換輸出的串行數據out3為“00111001010111”,10B串并轉換輸出的并行數據outl為“0111001010”,1OB/8B解碼完成的輸出數據datout為“10101llO”,結合整個系統的工作過程和編碼列表不難看出系統正確的完成了編碼和解碼的功能,能滿足設計任務的需要。
4 結束語
本文提出一種利用FPGA實現8B/10B編碼和10B/8B解碼設計的方法,介紹了8B/10B編解碼技術,實現了8B/10B的正常編解碼和接口串并、并串轉換的設計,在FPGA的控制下能實現數據的傳輸,滿足了實際設備中所提出的要求。
評論