欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于SerDes技術(shù)串行通信系統(tǒng)的編解碼方法及裝置與流程

文檔序號(hào):11138052閱讀:1062來(lái)源:國(guó)知局
基于SerDes技術(shù)串行通信系統(tǒng)的編解碼方法及裝置與制造工藝
本發(fā)明涉及通信
技術(shù)領(lǐng)域
,尤其涉及一種基于SerDes技術(shù)串行通信系統(tǒng)的編解碼方法及裝置。
背景技術(shù)
:隨著通信技術(shù)的不斷發(fā)展,通信系統(tǒng)對(duì)傳輸帶寬要求不斷增加,由于高速SerDes(串行器/解串器)的串行通信技術(shù)具有信道容量高、系統(tǒng)成本低以及傳輸速度快等特點(diǎn),這使得基于SerDes的串行通信技術(shù)逐漸成為主流的高速數(shù)據(jù)通信技術(shù)。基于SerDes的串行通信系統(tǒng)結(jié)構(gòu)如附圖1所示:在發(fā)送端,并行數(shù)據(jù)經(jīng)過主編碼器1進(jìn)行編碼;并串轉(zhuǎn)換器2接收編碼后的并行數(shù)據(jù),根據(jù)時(shí)鐘管理器4提供的時(shí)鐘信號(hào)將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),并經(jīng)由發(fā)送器3發(fā)出該串行數(shù)據(jù)。接收端,接收器7接收串行輸入數(shù)據(jù),并將其發(fā)送至串并轉(zhuǎn)換器6,串并轉(zhuǎn)換器6將所述串行輸入數(shù)據(jù)變?yōu)椴⑿袛?shù)據(jù),并發(fā)送至主譯碼器5,主譯碼器5將其譯碼后輸出;時(shí)鐘管理器4通過串并轉(zhuǎn)換器從數(shù)據(jù)中恢復(fù)時(shí)鐘信號(hào)?;赟erDes的串行通信系統(tǒng)中的關(guān)鍵技術(shù)之一是接收端的時(shí)鐘和數(shù)據(jù)恢復(fù),而影響接收端時(shí)鐘和數(shù)據(jù)恢復(fù)性能的主要因素是串行數(shù)據(jù)流的電平變換和直流平衡。電平變換是指數(shù)據(jù)從“0”到“1”或者從“1”到“0”的變換,直流平衡是指串行數(shù)據(jù)流中“0”和“1”的個(gè)數(shù)基本相同。為了保證串行數(shù)據(jù)流具有很好的電平變換和直流平衡特性,基于SerDes技術(shù)的串行通信系統(tǒng)在發(fā)送端對(duì)輸入的并行數(shù)據(jù)進(jìn)行編碼處理。在進(jìn)行編碼處理時(shí),主要考量的因素包括:(1)、碼字不平衡度D(Disparity),表示一個(gè)碼字中1的數(shù)目與0的數(shù)目的差值。用正極性(PositiveDisparity)表示碼字中1的個(gè)數(shù)比0的個(gè)數(shù)多,正N極性中的“N”,表示數(shù)據(jù)中的1的個(gè)數(shù)比0的個(gè)數(shù)多N;用負(fù)極性(NegativeDisparity)表示碼字中1的個(gè)數(shù)比0的個(gè)數(shù)少,負(fù)N極性中的“N”,表示數(shù)據(jù)中的1的個(gè)數(shù)比0的個(gè)數(shù)少N。例如:對(duì)于0100,D=-2;對(duì)于0111,D=+2。(2)運(yùn)行極性差異值RD(RunningDisparity)。表示當(dāng)前連續(xù)的所有碼字中1和0的個(gè)數(shù)之差,即當(dāng)前碼流的不平衡特性。用運(yùn)行極性差異值和RDS(RunningDisparitySum)值表示輸出碼流的總不平衡度。在編碼時(shí)要考慮輸出碼流的RDS的“±”極性,而不要考慮具體的數(shù)值?!?”表示當(dāng)前的碼流中“1”的數(shù)目多于“0”的數(shù)目;“-”表示當(dāng)前的碼流中“0”的數(shù)目多于“1”的數(shù)目。對(duì)于一個(gè)好的線路碼,RDS應(yīng)該是一個(gè)絕對(duì)值接近0的有限值。(3)編碼游程長(zhǎng)度(RunLength)表示連續(xù)的串行碼流中,連續(xù)的1或者0的個(gè)數(shù)。現(xiàn)有技術(shù)中,最常見的線路編碼技術(shù)是8B/10B編碼,8B/10B編碼將8Bit(8位)數(shù)據(jù)編碼成10Bit(10位)數(shù)據(jù),其良好的直流平衡特性和游程短(最大游程長(zhǎng)度僅為5)等優(yōu)點(diǎn)使接收端進(jìn)行數(shù)據(jù)和時(shí)鐘恢復(fù)變得非常容易。然而8B/10B編碼也存在明顯的缺點(diǎn),即編碼效率不高。假如傳輸速率為1Gb/s的有用數(shù)據(jù)流,其編碼后實(shí)際線路傳輸速率為1.25Gb/s,這將近有25%的冗余。這么大的冗余開銷在更高速率的光線通信系統(tǒng)(傳輸速率達(dá)到6Gb/s甚至10Gb/s)中將變得無(wú)法承受;另外隨著光纖通信設(shè)備性能的提高,使得光線通信系統(tǒng)對(duì)線路碼的要求降低了很多,如最大編碼游程只要小于20就能很容易被接收機(jī)檢測(cè)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的特征和優(yōu)點(diǎn)在下文的描述中部分地陳述,或者可從該描述顯而易見,或者可通過實(shí)踐本發(fā)明而學(xué)習(xí)。為克服現(xiàn)有技術(shù)的問題,本發(fā)明提供一種基于SerDes技術(shù)串行通信系統(tǒng)的編解碼方法及裝置,采用9B/10B編碼,通過查找表方法在FPGA(Field-ProgrammableGateArray,現(xiàn)場(chǎng)可編程門陣列)內(nèi)實(shí)現(xiàn),從而提高有效傳輸效率。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案如下:根據(jù)本發(fā)明的一個(gè)方面,提供一種基于SerDes技術(shù)串行通信系統(tǒng)中的編解碼方法,包括編碼步驟:將18位的普通數(shù)據(jù)分為兩個(gè)9位的兩個(gè)原始數(shù)據(jù);將兩個(gè)所述原始數(shù)據(jù)分別作為兩個(gè)編碼查找表的初始地址N;將所述初始地址轉(zhuǎn)化為2*N+0和2*N+1作為所述編碼查找表的輸入地址;所述編碼查找表根據(jù)所述輸入地址輸出包含不平衡度信息的第一碼字與第二碼字;其中,所述第一碼字中“1”的個(gè)數(shù)大于或等于“0”的個(gè)數(shù),其不平衡度為正;所述第二碼字中“0”的個(gè)數(shù)大于或等于“1”的個(gè)數(shù),其不平衡度為負(fù);根據(jù)當(dāng)前碼流的運(yùn)行極性差異值輸出選擇指示信號(hào);根據(jù)所述選擇指示信號(hào)在每個(gè)所述查找表輸出的第一碼字與第二碼字中選擇一個(gè)碼字組成下一輸出碼字??蛇x地,所述第一碼字與第二碼字為10位的碼字信息與3位的不平衡度D的編碼信息相加得到的;其中,所述10位的碼字信息為9位的所述原始數(shù)據(jù)到10位的映射;所述不平衡度D=n-(10-n),其中n為碼字中“1”的個(gè)數(shù)??蛇x地,還包括K碼編碼步驟:定義6個(gè)K碼,每?jī)蓚€(gè)K碼為一組,且每組K碼中的碼字互為補(bǔ)碼;接收輸入的K碼指示信號(hào)和極性選擇信號(hào);通過K碼查找表輸出由兩個(gè)10比特組成的K碼編碼??蛇x地,在根據(jù)所述當(dāng)前碼流的運(yùn)行極性差異值輸出所述選擇指示信號(hào)時(shí):若所述當(dāng)前碼流的運(yùn)行極性差異值為負(fù),則輸出的所述選擇指示信號(hào)為高電平;若所述當(dāng)前碼流的運(yùn)行極性差異值為正,則輸出的所述選擇指示信號(hào)為低電平;在根據(jù)所述選擇指示信號(hào)在每個(gè)所述查找表輸出的第一碼字與第二碼字中選擇一個(gè)碼字組成輸出碼字時(shí):若輸出的所述選擇指示信號(hào)為高電平,則所述下一輸出碼字中在所述第一碼字與第二碼字中選擇所述第一碼字;若輸出的所述選擇指示信號(hào)為低電平,則所述下一輸出碼字中在所述第一碼字與第二碼字中選擇所述第二碼字。可選地,所述當(dāng)前碼流的運(yùn)行極性差異值的計(jì)算具體包括步驟:將所述運(yùn)行極性差異值與所述輸出碼字的不平衡度的代數(shù)和作為編碼后的極性差異總和值;當(dāng)所述輸出碼字完美平衡時(shí),所述當(dāng)前碼流的運(yùn)行極性差異值保持不變;當(dāng)所述輸出碼字的不平衡時(shí):若所述編碼后的極性差異總和值小于0,則所述當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若所述編碼后的極性差異總和值大于0,則所述當(dāng)前碼流的運(yùn)行極性差異值為正;若所述編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為正,則所述當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若所述編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為負(fù),則所述當(dāng)前碼流的運(yùn)行極性差異值為正。可選地,還包括譯碼步驟:對(duì)譯碼查找表中對(duì)應(yīng)普通數(shù)據(jù)位置上的譯碼輸出數(shù)據(jù)做處理;對(duì)所述譯碼查找表中對(duì)應(yīng)K碼位置上的譯碼輸出數(shù)據(jù)做處理;在上述生成的譯碼查找表中根據(jù)查找表的地址分別選擇一個(gè)譯碼輸出數(shù)據(jù);將兩個(gè)所述譯碼輸出數(shù)據(jù)的低9比特整合后輸出。根據(jù)本發(fā)明的另一個(gè)方面,提供一種基于SerDes技術(shù)的串行通信系統(tǒng)中編解碼裝置,其特征在于,包括主編碼器、與所述主編碼器相連的線路極性計(jì)算器、與所述主編碼器相連的編碼選擇器;所述主編碼器包括:拆分單元,用于將18位的普通數(shù)據(jù)分為高9位以及低9位的兩個(gè)原始數(shù)據(jù);初始地址定義單元,用于將兩個(gè)所述原始數(shù)據(jù)分別作為兩個(gè)編碼查找表的初始地址N;輸入地址計(jì)算單元,用于將所述初始地址轉(zhuǎn)化為2*N+0和2*N+1作為所述編碼查找表的輸入地址;輸出單元,用于根據(jù)所述輸入地址輸出包含不平衡度信息的第一碼字與第二碼字;其中,所述第一碼字中“1”的個(gè)數(shù)大于或等于“0”的個(gè)數(shù),其不平衡度為正;所述第二碼字中“0”的個(gè)數(shù)大于或等于“1”的個(gè)數(shù),其不平衡度為負(fù);所述線路極性計(jì)算器用于根據(jù)當(dāng)前碼流的運(yùn)行極性差異值輸出選擇指示信號(hào);所述編碼選擇器用于根據(jù)所述選擇指示信號(hào)在每個(gè)所述查找表輸出的第一碼字與第二碼字中選擇一個(gè)碼字組成輸出碼字??蛇x地,還包括K碼編碼器,與所述線路極性計(jì)算器相連:所述線路極性計(jì)算器還用于輸出極性選擇信號(hào);所述K碼編碼器包括:定義單元,用于定義6個(gè)K碼,每?jī)蓚€(gè)K碼為一組,且每組K碼中的碼字互為補(bǔ)碼;接收單元,用于接收輸入的K碼指示信號(hào)和極性選擇信號(hào);K碼編碼輸出單元,用于通過K碼查找表輸出由兩個(gè)10比特組成的K碼編碼??蛇x地,所述線路極性計(jì)算器包括:差異總和值計(jì)算單元,用于將所述運(yùn)行極性差異值與所述輸出碼字的不平衡度的代數(shù)和作為編碼后的極性差異總和值;平衡判斷單元,用于判斷所述輸出碼字是否完美平衡;運(yùn)行極性差異值計(jì)算單元,用于當(dāng)所述輸出碼字完美平衡時(shí),所述當(dāng)前碼流的運(yùn)行極性差異值保持不變;所述運(yùn)行極性差異值計(jì)算單元還用于,當(dāng)所述輸出碼字的不平衡時(shí):若所述編碼后的極性差異總和值小于0,則所述當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若所述編碼后的極性差異總和值小于0,則所述當(dāng)前碼流的運(yùn)行極性差異值為正;若所述編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為正,則所述當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若所述編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為負(fù),則所述當(dāng)前碼流的運(yùn)行極性差異值為正??蛇x地,還包括主譯碼器以及與所述主譯碼器相連的數(shù)據(jù)整合器;所述主譯碼器用于對(duì)譯碼查找表中對(duì)應(yīng)普通數(shù)據(jù)位置上的譯碼輸出數(shù)據(jù)做處理;對(duì)所述譯碼查找表中對(duì)應(yīng)K碼位置上的譯碼輸出數(shù)據(jù)做處理;在上述生成的譯碼查找表中根據(jù)查找表的地址分別選擇一個(gè)譯碼輸出數(shù)據(jù);所述數(shù)據(jù)整合器用于將兩個(gè)所述譯碼輸出數(shù)據(jù)的低9比特整合后輸出。本發(fā)明提供了一種基于SerDes技術(shù)串行通信系統(tǒng)的編解碼方法及裝置,將9位的原字映射為10位的碼字。編碼后數(shù)據(jù)流具有很好的直流平衡特性,最大游程為7,這些優(yōu)勢(shì)使得數(shù)據(jù)在鏈路上的傳輸性能將大大提高,且在接收端也很容易實(shí)現(xiàn)時(shí)鐘恢復(fù),非常適用于高速串行數(shù)據(jù)的傳輸。與現(xiàn)行常用的8B/10B編碼方式相比,在相同的傳輸速率下,9B/10B編碼方案的有效傳輸速率提高了12.5%。通過閱讀說(shuō)明書,本領(lǐng)域普通技術(shù)人員將更好地了解這些技術(shù)方案的特征和內(nèi)容。附圖說(shuō)明下面通過參考附圖并結(jié)合實(shí)例具體地描述本發(fā)明,本發(fā)明的優(yōu)點(diǎn)和實(shí)現(xiàn)方式將會(huì)更加明顯,其中附圖所示內(nèi)容僅用于對(duì)本發(fā)明的解釋說(shuō)明,而不構(gòu)成對(duì)本發(fā)明的任何意義上的限制,在附圖中:圖1為現(xiàn)有技術(shù)中的SerDes通信系統(tǒng)結(jié)構(gòu)框圖示意圖。圖2為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中的編碼步驟的流程示意圖;圖3為本發(fā)明實(shí)施例的極性偏差狀態(tài)轉(zhuǎn)移圖;圖4為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中的K碼編碼步驟的流程示意圖;圖5為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中的譯碼步驟的流程示意圖;圖6為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信編碼系統(tǒng)的結(jié)構(gòu)示意圖;圖7為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中主編碼器的結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中的線路極性計(jì)算器的結(jié)構(gòu)示意圖;圖9為本發(fā)明另一實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)的結(jié)構(gòu)示意圖;圖10為本發(fā)明實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)中的K碼編碼器的結(jié)構(gòu)示意圖;圖11為本發(fā)明又一實(shí)施例的基于SerDes技術(shù)串行通信系統(tǒng)的結(jié)構(gòu)示意圖;具體實(shí)施方式本發(fā)明通過編碼查找表的設(shè)計(jì),能將9位的原字映射為10位的碼字。該編碼查找表可以按以下方法實(shí)現(xiàn)。首先,考慮所有10位碼字樣本,10位的碼字樣本有2^10=1024種組合。這1024個(gè)碼字向量按照比特“1”的個(gè)數(shù)進(jìn)行分組后得到下表1所示的分布規(guī)律:“1”的個(gè)數(shù)碼字樣本數(shù)量碼字不平衡度D注釋0或者101+10或者-10不使用1或者910+8或者-8不使用2或者845+6或者-6不使用3或者7120+4或者-4成對(duì)使用4或者6210+2或者-2成對(duì)使用52520使用表110位碼字的分類在所有可能的1024個(gè)碼字樣本中,放棄所有碼字不平衡度D絕對(duì)值大于4的碼字樣本,這樣就剩下252個(gè)完美平衡碼字(D=0)與330對(duì)非完美平衡碼字(D=±2、±4)。也就是說(shuō)共有582對(duì)碼字,大于9位所需的512對(duì)任意原字。為了使最大游程長(zhǎng)度最小化,在582對(duì)碼字中挑出70對(duì)不需要的碼字。原則是考慮每個(gè)碼字的頭部和尾部游程長(zhǎng)度,比如碼字0010111111的頭部游程長(zhǎng)度為2,尾部游程長(zhǎng)度為6。對(duì)上述582對(duì)碼字全都以這種方式分析,可以得到表2所示的分布規(guī)律:表2碼字游程長(zhǎng)度分布表將頭部和尾部游程長(zhǎng)度大于5的32對(duì)碼字(其中碼字0000011111和1111100000在表中算了兩次)。那么此時(shí)還剩下550對(duì)碼字,且由于頭部和尾部游程長(zhǎng)度為4,所以連續(xù)碼流的最大游程為8。不能丟棄所有頭部和尾部游程長(zhǎng)度為4的碼字的原因是會(huì)損失太多碼字,從而導(dǎo)致不夠9位編碼所需512對(duì)碼字。這里只選擇丟棄尾部游程長(zhǎng)度為4的碼字。通過上述分析后最后得到的許用碼字為232個(gè)平衡碼字,其開頭和結(jié)尾處的游程不大于3;200×2個(gè)D=±2的碼字,80×2個(gè)D=±4的碼字,其開頭和結(jié)尾處的游程不大于4,且232+200+80=512,剛好可以滿足9位編碼所需512對(duì)碼字樣本。獲取滿足9位編碼所需512對(duì)碼字樣本后,可以進(jìn)行9位到10位的映射時(shí),具體包括以下步驟:步驟1:首先將232個(gè)平衡碼字的第一位去掉,剩下的9位就是與其對(duì)應(yīng)的原字。如平衡碼字0100100111,去掉第一位就是100100111,100100111就是與它對(duì)應(yīng)的原字,即用十進(jìn)制表示就是295編碼后還是295,這些原字的第一碼字和第二碼字相同。步驟2:對(duì)剩余的碼字與原字進(jìn)行分析,同樣可以將部分的不平衡碼字與部分的原字對(duì)應(yīng)起來(lái)。規(guī)則是先處理的是D=±2的碼字,后處理D=±4的碼字。如010011000原字既可以與1010011000對(duì)應(yīng),也可以與0010011000對(duì)應(yīng),因?yàn)橄忍幚鞤=±2的碼字,所以它將與1010011000對(duì)應(yīng)。這樣處理后有228個(gè)原字可以找到第一碼字和第二碼字中一種模式的編碼結(jié)果。步驟3:剩余的52個(gè)原字由于不平衡度太大,不能通過上面的方法得到某一模式下的編碼。這樣的話就只能在剩余的許用碼字中先找一個(gè)與其最相近的碼字進(jìn)行映射。如原字101000000,在剩余的碼字集合中與其最相近的是0101000001,則0101000001就是101000000的第二碼字。步驟4:經(jīng)過上面步驟處理后,每個(gè)9位原字都找到了一個(gè)與其對(duì)應(yīng)的碼字模式,這個(gè)碼字模式可能第一碼字也可能是第二碼字。除了步驟1中平衡碼字外,其他280個(gè)原字還需要另外一種模式的編碼結(jié)果。因此還需找到這280個(gè)原字的另一個(gè)模式下的碼字。其編碼準(zhǔn)則為:對(duì)于某一個(gè)需要編碼的原字,只要從剩余的碼字中找一個(gè)與其最接近,并且和它通過步驟1~3已找到碼字的極性相反即可。比如原字000000000根據(jù)步驟3找到第二碼字為0001000011,它的極性為負(fù);則原字的第一碼字應(yīng)該在剩余的許用碼字中選一個(gè)與他最接近且極性為正的碼字,這里選擇1001010111作為它的第一碼字。步驟5:通過上述步驟就可以實(shí)現(xiàn)9位到10位的映射,但是制作編碼表時(shí)不僅僅包含10位的碼字信息,還需包含每個(gè)碼字的不平衡度D信息。具體操作方法是:先計(jì)算每個(gè)碼字中“1”的個(gè)數(shù)n,則碼字不平衡度D=n-(10-n),由于碼字是經(jīng)過篩選后的,所以這里n只可能為3,4,5,6,7。所以碼字不平衡度D只能為-4,-2,0,+2,+4。對(duì)碼字不平衡度D進(jìn)行3位編碼,如下表3所示:碼字不平衡度D值-4-2024不平衡度D值對(duì)應(yīng)編碼110111000001010表3碼字不平衡度D值編碼表將表中碼字不平衡度D的編碼信息左移10位于碼字信息相加得到最終編碼,如式1所示:公式中F_Code為編碼查找表中最終編碼信息,D_Code表示碼字不平衡度D的編碼信息,U_Code表示9位原字所對(duì)應(yīng)的碼字信息。D_Code乘以2的10次方表示左移10位。因此最終編碼信息是一個(gè)13位的編碼數(shù)據(jù)。512個(gè)9位原字分別映射為RD-和RD+的第一碼字和第二碼字,因此碼表中共有1024個(gè)碼字。對(duì)每個(gè)碼字都按照公式1進(jìn)行處理生成最終碼表后存到FPGA內(nèi)部的查找表RAM中。F_Code=D_Code*2^10+U_Code(公式1)基于上述編碼查找表的實(shí)現(xiàn)方法,提供本發(fā)明基于SerDes技術(shù)的串行通信系統(tǒng)編解碼方法及裝置。如圖2所示,本發(fā)明提供一種基于SerDes技術(shù)串行通信系統(tǒng)中的編解碼方法,其中包括數(shù)據(jù)9B/10B編碼步驟:S1、將18位的普通數(shù)據(jù)分為高9位和低9位兩個(gè)原始數(shù)據(jù);S2、將兩個(gè)所述原始數(shù)據(jù)分別作為兩個(gè)編碼查找表的初始地址N(N=0~511);S3、將所述初始地址轉(zhuǎn)化為2*N+0和2*N+1作為所述編碼查找表的輸入地址;S4、所述編碼查找表根據(jù)所述輸入地址輸出包含不平衡度信息的第一碼字與第二碼字;本發(fā)明中,為保證輸出碼流的直流平衡,在編碼查找表映射時(shí)用2個(gè)10位的碼字表示一個(gè)9位原字,分別為第一碼字和第二碼字;其中,第一碼字中“1”的個(gè)數(shù)大于或等于“0”的個(gè)數(shù),第二碼字中“0”的個(gè)數(shù)大于或等于“1”的個(gè)數(shù)。若10位碼字完美平衡,即碼字中“1”的個(gè)數(shù)和“0”的個(gè)數(shù)相同,則第一碼字和第二碼字相同;若10位碼字非完美平衡,即碼字中“1”的個(gè)數(shù)和“0”的個(gè)數(shù)不同,則第一碼字和第二碼字是極性相反的兩個(gè)不同碼字;上述第一碼字與第二碼字為10位的碼字信息與3位的不平衡度D的編碼信息相加得到的;其中,所述10位的碼字信息為9位的所述原始數(shù)據(jù)到10位的映射;所述不平衡度D=n-(10-n),其中n為碼字中“1”的個(gè)數(shù);S5、根據(jù)當(dāng)前碼流的運(yùn)行極性差異(RD)值輸出選擇指示信號(hào);具體地,在根據(jù)當(dāng)前碼流的運(yùn)行極性差異值輸出所述選擇指示信號(hào)時(shí):若當(dāng)前碼流的運(yùn)行極性差異值為負(fù),則輸出的選擇指示信號(hào)為高電平;若當(dāng)前碼流的運(yùn)行極性差異值為正,則輸出的選擇指示信號(hào)為低電平;S6、根據(jù)所述選擇指示信號(hào)在每個(gè)所述查找表輸出的第一碼字與第二碼字中選擇一個(gè)碼字組成下一輸出碼字;具體地,若輸出的所述選擇指示信號(hào)為高電平,則下一輸出碼字中在所述第一碼字與第二碼字中選擇所述第一碼字;若輸出的所述選擇指示信號(hào)為低電平,則下一輸出碼字中在所述第一碼字與第二碼字中選擇所述第二碼字。在本發(fā)明的一個(gè)實(shí)施例中,步驟S5中的當(dāng)前碼流的運(yùn)行極性差異(RD)值則根據(jù)表示編碼后總不平衡度信息的極性差異總和(RDS)值來(lái)計(jì)算,其規(guī)則如圖3所示:上電初始時(shí)刻的RD值為負(fù),RDS值為0;將原RD值與輸出碼字的不平衡度的代數(shù)和作為編碼后的RDS值;當(dāng)輸出碼字完美平衡時(shí),當(dāng)前碼流的RD值保持不變;當(dāng)輸出碼字的不平衡時(shí):若編碼后的RDS值小于0,則當(dāng)前碼流的RD值為負(fù);若編碼后的RDS值大于0,則當(dāng)前碼流的RD值為正;若編碼后的RDS值等于0,且原碼流的RD值為正,則當(dāng)前碼流的RD值為負(fù);若編碼后的RDS值等于0,且原碼流的RD值為負(fù),則當(dāng)前碼流的RD值為正。如圖4所示,除了編碼步驟外,還包括K碼編碼步驟:S11、定義6個(gè)K碼,每?jī)蓚€(gè)K碼為一組,且每組K碼中的碼字互為補(bǔ)碼;K碼可以用來(lái)完成碼流的字節(jié)對(duì)齊、幀定界、字符填充以及時(shí)鐘恢復(fù)等功能。本實(shí)施例中9B/10B編譯碼定義3組共6個(gè)K碼,分別為K001和K101、K002和K102、以及K003和K103,每一組K碼中兩個(gè)碼字互為補(bǔ)碼,分別代表K碼的第一碼字和第二碼字編碼輸出;S12、接收輸入的K碼指示信號(hào)和極性選擇信號(hào);S13、通過K碼查找表輸出由兩個(gè)10比特組成的K碼編碼;K碼編碼的實(shí)現(xiàn)過程也相當(dāng)于一個(gè)查找表,其輸出輸入關(guān)系如下表4所示:表4K碼編碼器輸出與輸入對(duì)應(yīng)關(guān)系如圖5所示,在本發(fā)明的另一實(shí)施例中,還包括譯碼步驟,譯碼步驟與編碼步驟的構(gòu)思是相同的,也是基于查找表方法實(shí)現(xiàn)的,不同的是,譯碼過程是無(wú)記憶的。所謂的無(wú)記憶譯碼就是指對(duì)當(dāng)前接收的10位碼字譯碼得到一個(gè)9位數(shù)據(jù),與以前的碼流無(wú)任何關(guān)系,即無(wú)論何時(shí)接收到同樣10位的碼字譯碼后都只會(huì)有一種譯碼結(jié)果。具體地,譯碼步驟可以包括:S21、對(duì)譯碼查找表中對(duì)應(yīng)普通數(shù)據(jù)位置上的譯碼輸出數(shù)據(jù)做處理;譯碼是編碼的逆過程,具體也是基于查找表方法實(shí)現(xiàn)的。由上文編碼過程所知,為保證輸出碼流的直流平衡,在碼表映射時(shí)用2個(gè)10位的碼字表示一個(gè)9位原字,分別為第一碼字和第二碼字。若10位碼字完美平衡,則第一碼字和第二碼字相同;若10位碼字非完美平衡,則第一碼字和第二碼字不相同。在生成譯碼查找表的時(shí)候,若第一碼字和第二碼字相同,則譯碼查找表中只有一個(gè)位置存放著原字信息。若第一碼字和第二碼字不同,則譯碼查找表中有兩個(gè)位置存放著原字信息。比如原字000000000(十進(jìn)制為0)經(jīng)編碼后得到兩個(gè)不同碼字,分別為第一碼字1001010111(十進(jìn)制為599)、第二碼字0001000011(十進(jìn)制為67)。則在譯碼時(shí),查找表地址為599和67時(shí),譯碼輸出都將輸出0,即譯碼表中兩個(gè)位置都存放著0這個(gè)原字信息。而原字0011100001(十進(jìn)制為225)經(jīng)編碼后得到兩個(gè)相同的碼字,即第一碼字和第二碼字均為1011100001(十進(jìn)制為737),則在譯碼時(shí),查找表地址有且只有等于737時(shí),譯碼才輸出225,即譯碼表中只有一個(gè)位置存放著225這個(gè)原字信息。S22、對(duì)所述譯碼查找表中對(duì)應(yīng)K碼位置上的譯碼輸出數(shù)據(jù)做處理;具體地,對(duì)應(yīng)K碼位置上的譯碼輸出數(shù)據(jù)包括低9位的K碼原字信息和高3位為K碼指示信息;在譯碼查找表生成過程中,還應(yīng)包含K碼指示信息。本發(fā)明在編碼過程中共用到3組6個(gè)K碼,分別為K001和K101、K002和K102、以及K003和K103,每一組K碼中兩個(gè)碼字互為補(bǔ)碼,分別代表K碼的第一碼字和第二碼字輸出。在生成譯碼查找表時(shí),當(dāng)檢測(cè)到K001和K101時(shí),K碼指示信息的第1比特置1;當(dāng)檢測(cè)到K002和K102時(shí),K碼指示信息第2比特置1;當(dāng)檢測(cè)到K003和K103時(shí),K碼指示信息的第3比特置1。然后將這3比特K碼指示信息與K碼原字信息相結(jié)合,其處理方式如公式2所示:F_data=K_Flag[9]*2^9+K_Flag[10]*2^10+K_Flag[11]*2^11+K_data(公式2)其中F_data譯碼查找表中K碼的譯碼輸出數(shù)據(jù),K_Flag為3位K碼指示信息,K_data為9位K碼原字信息。為經(jīng)過公式2處理后就將3位K碼指示信息的第1、2、3比特對(duì)應(yīng)到譯碼數(shù)據(jù)輸出的第9、10、11比特,在結(jié)合9比特K碼原字信息,最終的譯碼輸出F_data為一個(gè)12比特的數(shù)據(jù)。值得一提的是,譯碼查找表中的普通數(shù)據(jù)的譯碼輸出其實(shí)也是12比特。其也包括3比特的K碼指示信息,只是作為普通數(shù)據(jù)時(shí),對(duì)應(yīng)著K碼指示信息的3比特均為0而已。S23、在上述生成的譯碼查找表中根據(jù)查找表的地址分別選擇一個(gè)譯碼輸出數(shù)據(jù);將20位的譯碼數(shù)據(jù)分為高10位與低10位兩個(gè)碼字分別作為兩個(gè)譯碼查找表的地址;由于譯碼過程是無(wú)記憶的,兩個(gè)譯碼查找表根據(jù)輸入地址分別選擇相應(yīng)的譯碼輸出數(shù)據(jù)。S24、將兩個(gè)所述譯碼輸出數(shù)據(jù)的低9比特整合后輸出。也就是,將兩路查找表譯碼輸出數(shù)據(jù)整合為一路18位的數(shù)據(jù),并將其作為譯碼輸出。其輸入輸出關(guān)系為:Xout[17:0]={DoutB[8:0],DoutA[8:0]}其中Xout為譯碼輸出信號(hào),DoutA[8:0]為低10比特碼字查找表輸出譯碼數(shù)據(jù)的低9比特;DoutB[8:0]為高10比特碼字查找表輸出譯碼數(shù)據(jù)的低9比特。在S24中所述的譯碼輸出數(shù)據(jù)流中,SerDes系統(tǒng)并不知道哪個(gè)是K碼哪個(gè)是普通數(shù)據(jù),因此譯碼過程還需輸出K碼指示信號(hào),即Kout[1:0],當(dāng)它為兩比特0時(shí),系統(tǒng)會(huì)認(rèn)為當(dāng)前譯碼輸出為普通數(shù)據(jù)的譯碼輸出,當(dāng)不為0時(shí),表明當(dāng)前譯碼輸出為K碼的譯碼輸出。K碼指示信號(hào)對(duì)于SerDes系統(tǒng)對(duì)于恢復(fù)時(shí)鐘,保持鏈路同步起著關(guān)鍵作用。具體地,將在步驟S22中獲取的包含K碼信息(即兩個(gè)查找表輸出數(shù)據(jù)的第13~15比特)數(shù)據(jù)作為輸入,經(jīng)過相關(guān)的邏輯運(yùn)算得到K碼指示信號(hào)輸出。其輸入輸出關(guān)系為:當(dāng)DoutB[10]=1時(shí),Kout[1]=1;當(dāng)DoutA[9]=1時(shí),Kout[0]=0;DoutA[11]=1時(shí),Kout[0]=1。其中Kout為K碼指示信號(hào),DoutA為低10比特碼字查找表輸出譯碼數(shù)據(jù);DoutB為高10比特碼字查找表輸出譯碼數(shù)據(jù)。上面對(duì)本發(fā)明實(shí)施例中的基于SerDes技術(shù)串行通信系統(tǒng)中的編解碼方法進(jìn)行了描述,下面對(duì)本發(fā)明實(shí)施例中的基于SerDes(串行器/解串器)技術(shù)串行通信系統(tǒng)中的編解碼裝置進(jìn)行描述。如圖6所示,本發(fā)明還提供一種基于SerDes技術(shù)串行通信系統(tǒng)中編解碼裝置,包括主編碼器10、與主編碼器相連的線路極性計(jì)算器20、與主編碼器相連的編碼選擇器30。如圖7所示,其中,主編碼器10包括:拆分單元11,用于將18位的普通數(shù)據(jù)分為高9位以及低9位的兩個(gè)原始數(shù)據(jù);初始地址定義單元12,用于將兩個(gè)原始數(shù)據(jù)分別作為兩個(gè)編碼查找表的初始地址N(N=0~511);輸入地址計(jì)算單元13,用于將初始地址轉(zhuǎn)化為2*N+0和2*N+1作為編碼查找表輸入地址;輸出單元14,用于編碼查找表根據(jù)輸入地址輸出包含不平衡度信息的第一碼字與第二碼字;本發(fā)明中,為保證輸出碼流的直流平衡,在編碼查找表映射時(shí)用2個(gè)10位的碼字表示一個(gè)9位原字,分別為第一碼字和第二碼字;其中,第一碼字中“1”的個(gè)數(shù)大于或等于“0”的個(gè)數(shù),第二碼字中“0”的個(gè)數(shù)大于或等于“1”的個(gè)數(shù)。若10位碼字完美平衡,則第一碼字和第二碼字相同;若10位碼字非完美平衡,則第一碼字和第二碼字不同且極性相反;上述編碼查找表中的第一碼字與第二碼字為10位的碼字信息與3位的不平衡度D的編碼信息相加得到的;其中,10位的碼字信息為9位的原始數(shù)據(jù)對(duì)應(yīng)10位的編碼映射;其中不平衡度D=n-(10-n),其中n為碼字中“1”的個(gè)數(shù)。上述線路極性計(jì)算器20用來(lái)保證輸出碼流的直流平衡,它為編碼選擇器提供選擇指示信號(hào)。編碼過程中,根據(jù)表示當(dāng)前碼流不平衡特性的運(yùn)行極性差異RD值來(lái)決定選擇指示信號(hào)的輸出。具體地,在根據(jù)當(dāng)前碼流的運(yùn)行極性差異值輸出所述選擇指示信號(hào)時(shí):若當(dāng)前碼流的運(yùn)行極性差異值為負(fù),則輸出的選擇指示信號(hào)為高電平;若當(dāng)前碼流的運(yùn)行極性差異值為正,則輸出的選擇指示信號(hào)為低電平。編碼選擇器30的功能是選擇編碼輸出,其由三個(gè)輸入端一個(gè)輸出端,分別為數(shù)據(jù)輸入端A、數(shù)據(jù)輸入端B、輸入選擇指示信號(hào)以及數(shù)據(jù)輸出端。其輸出與輸入關(guān)系為:1)當(dāng)選擇指示信號(hào)為1時(shí),編碼輸出=輸入數(shù)據(jù)A;2)當(dāng)選擇指示信號(hào)為0時(shí),編碼輸出=輸入數(shù)據(jù)B。在本發(fā)明的另一實(shí)施例中,請(qǐng)參照?qǐng)D8,線路極性計(jì)算器20包括:差異總和值計(jì)算單元21,用于將運(yùn)行極性差異值與輸出碼字的不平衡度的代數(shù)和作為編碼后的極性差異總和值;平衡判斷單元22,用于判斷輸出碼字是否完美平衡;運(yùn)行極性差異值計(jì)算單元23,用于當(dāng)輸出碼字完美平衡時(shí),當(dāng)前碼流的運(yùn)行極性差異值保持不變;運(yùn)行極性差異值計(jì)算單元23還用于,當(dāng)輸出碼字的不平衡時(shí):若編碼后的極性差異總和值小于0,則當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若編碼后的極性差異總和值大于0,則當(dāng)前碼流的運(yùn)行極性差異值為正;若編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為正,則當(dāng)前碼流的運(yùn)行極性差異值為負(fù);若編碼后的極性差異總和值等于0,且原碼流的運(yùn)行極性差異值為負(fù),則當(dāng)前碼流的運(yùn)行極性差異值為正。需要說(shuō)明的是,在上電初始時(shí)刻的運(yùn)行極性差異值為負(fù),編碼后的極性差異總和值為0。編碼選擇器30用于根據(jù)選擇指示信號(hào)在每個(gè)查找表輸出的第一碼字與第二碼字中選擇一個(gè)碼字組成下一輸出碼字。如圖9、圖10所示,本實(shí)施例中還包括K碼編碼器40,與線路極性計(jì)算器20以及編碼選擇器30相連:K碼編碼器40包括:定義單元41,用于定義6個(gè)K碼,每?jī)蓚€(gè)K碼為一組,且每組K碼中的碼字互為補(bǔ)碼;K碼可以用來(lái)完成碼流的字節(jié)對(duì)齊、幀定界、字符填充以及時(shí)鐘恢復(fù)等功能。本實(shí)施例中9B/10B編譯碼定義3組共6個(gè)K碼,分別為K001和K101、K002和K102、以及K003和K103,每一組K碼中兩個(gè)碼字互為補(bǔ)碼,分別代表K碼的第一碼字和第二碼字編碼輸出;接收單元42,用于接收輸入的K碼指示信號(hào)和極性選擇信號(hào);K碼編碼輸出單元43,用于通過K碼查找表輸出由兩個(gè)10比特組成的K碼編碼;K碼編碼的實(shí)現(xiàn)過程也相當(dāng)于一個(gè)查找表,其輸出輸入關(guān)系如表4所示。雖然圖中沒顯示,但是還包括與K碼編碼器40相連的延遲模塊,延遲模塊的功能是保證編碼器編碼輸出和K碼輸出指示信號(hào)對(duì)齊,即編碼器在K碼輸出指示信號(hào)有效時(shí),此時(shí)編碼器的編碼輸出正好是K碼。為了保證這種對(duì)齊關(guān)系,K碼輸入指示信號(hào)必須通過延遲模塊得到K碼輸出指示信號(hào),且延遲模塊的時(shí)延量必須等于輸入數(shù)據(jù)經(jīng)過編碼器編碼處理產(chǎn)生的時(shí)延量。如圖10所示,在本實(shí)施例中還包括主譯碼器50以及與主譯碼器相連的數(shù)據(jù)整合器60;主譯碼器50用于對(duì)譯碼查找表中對(duì)應(yīng)普通數(shù)據(jù)位置上的譯碼輸出數(shù)據(jù)做處理;對(duì)所述譯碼查找表中對(duì)應(yīng)K碼位置上的譯碼輸出數(shù)據(jù)做處理;在上述生成的譯碼查找表中根據(jù)查找表的地址分別選擇一個(gè)譯碼輸出數(shù)據(jù);譯碼是編碼的逆過程,具體也是基于查找表方法實(shí)現(xiàn)的。由上文所知,為保證輸出碼流的直流平衡,在碼表映射時(shí)用2個(gè)10位的碼字表示一個(gè)9位原字,分別為第一碼字和第二碼字。若10位碼字完美平衡,則第一碼字和第二碼字相同;若10位碼字非完美平衡,則第一碼字和第二碼字不相同。因此在生成譯碼查找表的時(shí)候,若第一碼字和第二碼字相同,則譯碼查找表中只有一個(gè)位置存放著原字信息。若第一碼字和第二碼字不同,則譯碼查找表中有兩個(gè)位置存放著原字信息。比如原字000000000(十進(jìn)制為0)經(jīng)編碼后得到兩個(gè)不同碼字,分別為第一碼字1001010111(十進(jìn)制為599)、第二碼字0001000011(十進(jìn)制為67)。則在譯碼時(shí),查找表地址為599和67時(shí),譯碼輸出都將輸出0。而原字0011100001(十進(jìn)制為225)經(jīng)編碼后得到兩個(gè)相同的碼字,即RD-和第二碼字均為1011100001(十進(jìn)制為737),則在譯碼時(shí),查找表地址有且只有等于737時(shí),譯碼才輸出225。主譯碼器50可以用于K碼的譯碼;具體地,在生成譯碼表時(shí)對(duì)K碼原字信息做特殊處理,即在9位K碼的原字信息基礎(chǔ)上加入3位K碼指示信息。本發(fā)明在編碼過程中共用到3組6個(gè)K碼,分別為K001和K101、K002和K102、以及K003和K103,每一組K碼中兩個(gè)碼字互為補(bǔ)碼,分別代表K碼的第一碼字和第二碼字編碼輸出。在生成譯碼表時(shí),當(dāng)檢測(cè)到K001和K101時(shí),K碼指示信息的第1比特置1;當(dāng)檢測(cè)到K002和K102時(shí),K碼指示信息第2比特置1;當(dāng)檢測(cè)到K003和K103時(shí),K碼指示信息的第3比特置1。數(shù)據(jù)整合器60用于將兩個(gè)譯碼輸出數(shù)據(jù)的低9比特整合后輸出;具體地,將兩路查找表譯碼輸出數(shù)據(jù)整合為一路18位的數(shù)據(jù),并將其作為整個(gè)主譯碼器的譯碼輸出。其輸入輸出關(guān)系為:Xout[17:0]={DoutB[8:0],DoutA[8:0]}其中Xout為譯碼輸出信號(hào),DoutA為低10比特碼字查找表輸出譯碼數(shù)據(jù);DoutB為高10比特碼字查找表輸出譯碼數(shù)據(jù)。此外,還包括K碼指示信息處理器70,用于將獲取的包含K碼信息(即兩個(gè)查找表輸出數(shù)據(jù)的第9~11比特)數(shù)據(jù)作為輸入,經(jīng)過相關(guān)的邏輯運(yùn)算得到K碼指示信號(hào)輸出。其輸入輸出關(guān)系為:當(dāng)DoutB[10]=1時(shí),Kout[1]=1;當(dāng)DoutA[9]=1時(shí),Kout[0]=0;DoutA[11]=1時(shí),Kout[0]=1。其中Kout為K碼指示信號(hào),DoutA為低10比特碼字查找表輸出譯碼數(shù)據(jù);DoutB為高10比特碼字查找表輸出譯碼數(shù)據(jù)。本發(fā)明所述的9B/10B編碼主要是在FPGA中通過查找表方法實(shí)現(xiàn)的,其將普通數(shù)據(jù)分為高9位和低9位數(shù)據(jù)分別作為查找表的地址,查找表則把地址相對(duì)應(yīng)的正極性(Rd+)第一碼字和負(fù)極性(Rd-)第二碼字同時(shí)輸出到編碼選擇器中,編碼選擇器通過線路極性計(jì)算器提供的指示信號(hào)選擇相應(yīng)的編碼輸出。K碼編碼器則根據(jù)K碼指示和線路極性計(jì)算器提供的指示共同選擇相應(yīng)的K碼輸出,最終的編碼輸出則通過編碼選擇器在K碼輸出和普通數(shù)據(jù)編碼輸出中做出選擇。以上參照附圖說(shuō)明了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域技術(shù)人員不脫離本發(fā)明的范圍和實(shí)質(zhì),可以有多種變型方案實(shí)現(xiàn)本發(fā)明。舉例而言,作為一個(gè)實(shí)施例的部分示出或描述的特征可用于另一實(shí)施例以得到又一實(shí)施例。以上僅為本發(fā)明較佳可行的實(shí)施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運(yùn)用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
云霄县| 河间市| 万山特区| 莆田市| 庐江县| 凤翔县| 平舆县| 宜都市| 德阳市| 吉隆县| 松桃| 彰武县| 丹巴县| 汉中市| 兰坪| 阳西县| 怀仁县| 芜湖市| 霸州市| 萨迦县| 灵山县| 荆州市| 建平县| 师宗县| 资溪县| 栾城县| 伊宁县| 政和县| 郴州市| 正安县| 平凉市| 扎赉特旗| 马边| 岗巴县| 庆云县| 乾安县| 项城市| 灵台县| 卢湾区| 岳池县| 新安县|