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