周 爽,周 莉
(1.中國(guó)科學(xué)院國(guó)家空間科學(xué)中心,北京 100190;2.中國(guó)科學(xué)院大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京 101499)
為了解決航天器內(nèi)電纜布局困難、發(fā)射成本增加的問題,采用8B/10B編碼技術(shù)將數(shù)據(jù)和時(shí)鐘合并傳輸,有效減少點(diǎn)對(duì)點(diǎn)高速數(shù)據(jù)傳輸時(shí)的電纜數(shù)量,克服傳輸過程中產(chǎn)生的時(shí)鐘與數(shù)據(jù)抖動(dòng)問題,提高傳輸效率,并且利用8B/10B編碼技術(shù)的檢錯(cuò)功能,采用冗余的方式實(shí)現(xiàn)誤碼檢測(cè),提高系統(tǒng)抗輻射性能[1-2]。
目前針對(duì)LVDS的8B/10B編解碼的實(shí)現(xiàn)主要是基于FPGA的8B/10B編解碼IP核或外加串行/解串芯片、驅(qū)動(dòng)芯片、均衡芯片。前者受到版權(quán)限制,具有不可移植、代碼不透明、資源占用高等缺點(diǎn),在航天任務(wù)工程應(yīng)用時(shí)受到很多約束。后者需要增加多個(gè)芯片的硬件電路,增加了電路板面積和成本。因此研發(fā)基于FPGA的自主可控可移植的8B/10B編解碼IP核是十分必要的。
本文面向航天器數(shù)據(jù)傳輸?shù)?B/10B編解碼應(yīng)用需求,設(shè)計(jì)了一個(gè)基于FPGA的8B/10B編解碼的IP核。模塊化實(shí)現(xiàn)8B/10B編解碼,并將查找表存儲(chǔ)在Verilog源文件中,除時(shí)鐘外都是邏輯設(shè)計(jì),使系統(tǒng)移植性好、靈活性高;在接收端選取同頻多相采樣方法實(shí)現(xiàn)時(shí)鐘與數(shù)據(jù)的恢復(fù),提高傳輸速率,降低對(duì)FPGA工作頻率的要求。
針對(duì)IP核設(shè)計(jì)的通用性、可配置、易操作、易移植、接口時(shí)序明確等需求,本文提出的8B/10B編解碼IP核設(shè)計(jì)的接口信號(hào)如圖1所示。
圖1 編解碼模塊接口信號(hào)
IP核對(duì)數(shù)據(jù)字符和控制字符進(jìn)行統(tǒng)一編碼和解碼,編碼模塊設(shè)置了指向數(shù)據(jù)字符或控制字符的標(biāo)志(tk)、comma字符(comma),解碼模塊設(shè)置了使能位
(en)、數(shù)據(jù)字符譯碼錯(cuò)誤(rd_false)、控制字符譯碼錯(cuò)誤 (rk_false)等狀態(tài)指示。
系統(tǒng)邏輯設(shè)計(jì)包括編碼模塊、解碼模塊、可靠性設(shè)計(jì)3個(gè)部分。
編碼模塊設(shè)計(jì)如圖2所示,輸入數(shù)據(jù)經(jīng)過一個(gè)9 bit位寬的FIFO,實(shí)現(xiàn)數(shù)據(jù)跨時(shí)鐘域的傳輸,其中高8位是有效字符,最低位為標(biāo)志位,用于匹配寫入端和讀出端的時(shí)鐘;encoder模塊編碼采用分組查找表的方法,將有效字符分為數(shù)據(jù)字符和控制字符實(shí)現(xiàn)編碼;再經(jīng)deserdes模塊將數(shù)據(jù)串行輸出。
圖2 編碼模塊設(shè)計(jì)框圖
編碼模塊的實(shí)現(xiàn)需要滿足編碼規(guī)范,考慮編碼技術(shù)對(duì)直流平衡及轉(zhuǎn)換密度的要求。直流平衡要求編碼后的數(shù)據(jù)呈中性,即“0”和“1”的數(shù)量相等。3 bit數(shù)據(jù)有8種取值情況,編碼為4 bit時(shí)只有6種取值情況滿足條件。同理,5 bit數(shù)據(jù)有32種取值情況,編碼為6 bit時(shí)只有20種取值滿足條件[5]。故引入RD(running disparity,極性偏差)表示這組數(shù)據(jù)的不平衡度,其中RD+表示“1”的數(shù)量比“0”的數(shù)量多2個(gè),RD-表示“1”的數(shù)量比“0”的數(shù)量少2個(gè)[6-7]。轉(zhuǎn)換密度則要求編碼后的比特流不存在連續(xù)的5個(gè)及以上的“0”或“1”。
本系統(tǒng)中,數(shù)據(jù)字符編碼時(shí)進(jìn)一步將數(shù)據(jù)分為5 bit、3 bit,遵從極性平衡和編碼后的數(shù)值(即6 bit、4 bit)交替2個(gè)要求實(shí)現(xiàn)編碼,邏輯框圖如圖3所示。
據(jù)工信部安排,目前已有多家化肥生產(chǎn)企業(yè)參與產(chǎn)品追溯體系建設(shè)試點(diǎn)。2018年4月19日,全國(guó)化肥電子防偽追溯體系服務(wù)平臺(tái)正式上線,已具備企業(yè)接入條件。試點(diǎn)的順利推進(jìn)及全行業(yè)的推廣亟需《化肥追溯體系規(guī)范》標(biāo)準(zhǔn)作為準(zhǔn)則和指導(dǎo)。
圖3 數(shù)據(jù)字符編碼邏輯框圖
編碼時(shí)3種極性狀態(tài)分別為:“00”表示當(dāng)前狀態(tài)平衡,“01”表示當(dāng)前狀態(tài)為RD-,“11”表示當(dāng)前狀態(tài)為RD+。初始輸入極性狀態(tài)為RD-。編碼時(shí)5B編碼模塊和3B編碼模塊實(shí)現(xiàn)極性交替和6 bit、4 bit數(shù)據(jù)的交替。控制字符無需劃分5 bit、3 bit,但仍需遵從編碼要求。
當(dāng)極性狀態(tài)更換規(guī)則與編碼直流平衡要求相悖時(shí),優(yōu)先解決連續(xù)的5個(gè)及以上的“0”或“1”出現(xiàn)的問題,并在接下來的編碼過程進(jìn)行極性補(bǔ)償。
編碼單元接口時(shí)序圖如圖4所示,編碼輸出有3個(gè)時(shí)鐘的延時(shí),延時(shí)固定。
圖4 編碼模塊接口時(shí)序圖
8B/10B解碼模塊通過時(shí)鐘與數(shù)據(jù)恢復(fù)(clock and data recovery,CDR)技術(shù)從串行數(shù)據(jù)中正確提取時(shí)鐘信息,再利用恢復(fù)的時(shí)鐘正確采樣接收數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。CDR的拓?fù)浣Y(jié)構(gòu)主要有3種方法:基于反饋相位跟蹤的CDR、基于無反饋的過采樣型CDR和基于突發(fā)模式的CDR[8-9]。過采樣方法根據(jù)采樣時(shí)鐘的不同可以分為時(shí)域過采樣和空間過采樣2種方法。時(shí)域過采樣法直接采用傳輸數(shù)據(jù)的n倍頻率時(shí)鐘對(duì)數(shù)據(jù)進(jìn)行過采樣,采用4~5倍過采樣時(shí)FPGA的最高運(yùn)行速率會(huì)限制8B/10B的通信速率,故本系統(tǒng)采用同頻多相的空間過采樣的方法實(shí)現(xiàn)時(shí)鐘與數(shù)據(jù)恢復(fù)。
如圖5所示,解碼流程分為4個(gè)功能單元,分別為時(shí)鐘與數(shù)據(jù)恢復(fù)單元cdr、串并轉(zhuǎn)換單元serdes、comma碼檢測(cè)單元comma_check、譯碼單元decoder。接收端接收到的比特流首先進(jìn)入cdr模塊進(jìn)行數(shù)據(jù)恢復(fù),恢復(fù)后的數(shù)據(jù)進(jìn)入serdes模塊實(shí)現(xiàn)串并轉(zhuǎn)換,之后進(jìn)入comma_check模塊,找到comma字符,即傳輸數(shù)據(jù)中的字符邊界起始端,再將重排后的10 bit送入解碼單元;最后經(jīng)過decoder解碼模塊實(shí)現(xiàn)數(shù)據(jù)字符和控制字符的解碼。
圖5 解碼模塊設(shè)計(jì)框圖
利用FPGA的時(shí)鐘管理模塊DCM產(chǎn)生4路與數(shù)據(jù)速率同頻的時(shí)鐘,相位分別為0°、90°、180°、270°。cdr模塊在一個(gè)碼元周期內(nèi)利用這4路時(shí)鐘對(duì)接收數(shù)據(jù)實(shí)現(xiàn)4次采樣,采樣示意圖如圖6所示。將采樣結(jié)果記錄在寄存器中,在下一個(gè)周期的0°相位的時(shí)鐘上升沿到來時(shí)將本次4個(gè)采樣結(jié)果記錄在寄存器data_reg[3:0]中,通過對(duì)采樣結(jié)果的處理判斷最佳相位從而恢復(fù)數(shù)據(jù)。
圖6 數(shù)據(jù)采樣示意圖
同頻多相過采樣法是異步傳輸,理論情況下恢復(fù)數(shù)據(jù)的最佳相位是不變的,但由于采樣時(shí)鐘的偏差和抖動(dòng),數(shù)據(jù)最佳采樣相位發(fā)生變化,所以需要定時(shí)進(jìn)行調(diào)整。本IP核采用的方法是在總線空閑或者數(shù)據(jù)包間發(fā)送comma碼時(shí)重新檢測(cè)數(shù)據(jù)最佳相位,以消除累積誤差。數(shù)據(jù)包間發(fā)送comma碼時(shí),檢測(cè)到第1個(gè)comma碼時(shí),進(jìn)入檢測(cè)最佳采樣位置的狀態(tài)機(jī),根據(jù)采樣值確定當(dāng)前最佳采樣位置,選擇對(duì)應(yīng)時(shí)鐘的采樣值進(jìn)行串并轉(zhuǎn)換。調(diào)整最佳采樣位置需要2個(gè)字節(jié)的時(shí)間,數(shù)據(jù)包間發(fā)送的comma碼需要大于2。
comma_check模塊包括2部分功能單元:用于檢測(cè)comma的detect單元;用于重新對(duì)齊數(shù)據(jù)的shift單元。comma_check模塊的檢測(cè)邏輯設(shè)計(jì)如圖7所示,同步的comma碼默認(rèn)是K28.5,也可配置。
圖7 comma_check模塊功能結(jié)構(gòu)設(shè)計(jì)圖
對(duì)齊后的待解碼10 bit數(shù)據(jù)根據(jù)標(biāo)志位進(jìn)入d_decoder或k_decoder單元,采用查找表的方法進(jìn)行譯碼,每組字符都需按流程完成解碼。解碼單元接口時(shí)序圖設(shè)計(jì)如圖8所示,解碼輸出有1個(gè)時(shí)鐘延時(shí),延時(shí)固定。
圖8 解碼模塊接口時(shí)序
8B/10B編碼技術(shù)具有強(qiáng)檢錯(cuò)能力。8B/10B編碼將268種有效的8 bit數(shù)據(jù)字符和控制字符轉(zhuǎn)換為10 bit,共有1024種不同的取值,但有效碼僅有536種,通過檢測(cè)冗余,即接收到的字符是否有效來判斷是否存在錯(cuò)誤的傳輸。同時(shí),傳輸數(shù)據(jù)中頻繁的電平變化,也有利于降低誤碼率。還可以通過特殊字符的定義實(shí)現(xiàn)信息識(shí)別定位,快速找到誤碼位置。本系統(tǒng)在解碼端產(chǎn)生rk_false、data_3b_false、data_5b_false等解碼錯(cuò)誤標(biāo)志和字符有效標(biāo)志,用于報(bào)告上位機(jī),提高了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
按數(shù)據(jù)包傳輸時(shí),若采用50 ppm(1 ppm=10-6)的晶振,那么累積錯(cuò)位1 bit的長(zhǎng)度為106/50=20 000 bit,根據(jù)8B/10B編碼規(guī)則,最多保證傳輸2000字節(jié)。建議傳輸包長(zhǎng)在1024字節(jié)以內(nèi),數(shù)據(jù)包之間傳16個(gè)以上K碼,便于解碼端調(diào)整至最佳解碼狀態(tài),并在總線空閑時(shí)發(fā)送K碼。
使用Modelsim仿真驗(yàn)證后,用2塊FPGA作為硬件平臺(tái)驗(yàn)證IP核,其中發(fā)送端FPGA型號(hào)為xc5vsx95t,接收端FPGA型號(hào)為xc4vsx55,二者通過LVDS電平進(jìn)行數(shù)據(jù)傳輸,通信速率為80 Mbps。
通過添加ILA核實(shí)時(shí)顯示測(cè)試結(jié)果。測(cè)試時(shí),發(fā)送端發(fā)送FFFF個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包中包含1024組順序碼數(shù)據(jù),數(shù)據(jù)包間發(fā)送20組comma碼,在接收端查看正確數(shù)據(jù)組數(shù)及各種標(biāo)志位輸出。如圖9所示,其中cnt_state指示接收數(shù)據(jù)最佳相位點(diǎn),data_out輸出解碼后的數(shù)據(jù),data_right_cnt記錄正確傳輸數(shù)據(jù)的數(shù)量。如圖10所示,數(shù)據(jù)包已經(jīng)全部完成傳輸,接收到的即為comma碼,正確傳輸數(shù)量為3FFFC,等于FFFF×(1024)10,傳輸無錯(cuò)誤,且其余標(biāo)志位均顯示無錯(cuò)誤。此外,IP核還經(jīng)過xc5vsx95t、K7325T的FPGA板的測(cè)試,傳輸也無錯(cuò)誤。
圖9 誤碼率測(cè)試結(jié)果示意圖1
圖10 誤碼率測(cè)試結(jié)果示意圖2
本文設(shè)計(jì)基于FPGA的8B/10B編解碼的IP核,除解碼四相位時(shí)鐘的時(shí)鐘模塊外均為邏輯設(shè)計(jì),采用分組查找法進(jìn)行編解碼,冗余和容錯(cuò)措施保障數(shù)據(jù)傳輸,接收端采用同頻多相的過采樣方法實(shí)現(xiàn)時(shí)鐘與數(shù)據(jù)的恢復(fù),具備移植性好、運(yùn)行速率高、可靠性強(qiáng)的優(yōu)點(diǎn)。IP核接口設(shè)計(jì)合理,可以根據(jù)用戶應(yīng)用需求進(jìn)行配置,更改comma碼、時(shí)鐘配置等,適用性強(qiáng)。通過對(duì)IP核的仿真測(cè)試和誤碼率測(cè)試,驗(yàn)證了IP核設(shè)計(jì)的有效性和可靠性,滿足航天設(shè)備數(shù)據(jù)傳輸?shù)目煽啃砸蟆?/p>