邵 杰萬書芹葉明遠(yuǎn)盛 煒
(中國電子科技集團(tuán)公司第五十八研究所,江蘇無錫 214035)
5G 和物聯(lián)網(wǎng)技術(shù)的高速發(fā)展帶來了海量的數(shù)據(jù)交換需求,高速、高精度的數(shù)據(jù)傳輸技術(shù)顯得尤為重要。JESD204B 作為一種全新的傳輸協(xié)議,具有確定性延時(shí),高吞吐率,引腳數(shù)量少等諸多優(yōu)點(diǎn),因此在高速ADC/DAC 系統(tǒng)中得到廣泛的應(yīng)用[1-4]。目前國外廠商量產(chǎn)的高速產(chǎn)品,多數(shù)都采用JESD204B 協(xié)議。
國內(nèi)高速ADC/DAC 的發(fā)展目前還遠(yuǎn)遠(yuǎn)落后于國際水平。目前能夠自給的芯片通常速度較低且應(yīng)用較少,隨著國產(chǎn)化需求的提升,國內(nèi)對于JESD204B 的研究也在逐步增加,多數(shù)研究都是基于FPGA 以及國外的IP 核實(shí)現(xiàn),而基于ASIC 的發(fā)送端電路設(shè)計(jì)相對較少。姚亞峰等[5-6]基于JESD204B 設(shè)計(jì)了發(fā)送端電路,但是所設(shè)計(jì)電路組幀器未考慮16 bit 和8 bit 的兼容[5],也沒有詳細(xì)考慮填充位和結(jié)束位。歐陽靖等[6]研究了整個(gè)發(fā)送端的設(shè)計(jì),但是并沒有給出綜合的結(jié)果,此外,文獻(xiàn)中采用導(dǎo)出文本數(shù)據(jù)再導(dǎo)入到接收端IP 的驗(yàn)證方式難以驗(yàn)證實(shí)際鏈路同步過程中SYNC,SYSREF,device clk 三個(gè)異步信號實(shí)時(shí)處理的正確性。
通過分析JESD204B 傳輸協(xié)議,采用Verilog HDL 設(shè)計(jì)了符合協(xié)議要求的發(fā)送端系統(tǒng),并且采用UVM 系統(tǒng)驗(yàn)證了RTL 模型的正確性。某65 nm 工藝庫綜合結(jié)果表明,設(shè)計(jì)的系統(tǒng)能夠達(dá)到協(xié)議推薦的最高速度12.5 Gbit/s。所提出的設(shè)計(jì)方案和思路可以為JESD204B 發(fā)送端電路設(shè)計(jì)提供一定的參考。
JESD 204B 協(xié)議中,發(fā)送端從數(shù)據(jù)流的角度分為3 個(gè)部分,分別為傳輸層(transport layer),加擾模塊(scramble)和數(shù)據(jù)鏈路層(data link layer)。傳輸層將轉(zhuǎn)換器(converter)的采樣數(shù)據(jù)按照配置的鏈路參數(shù)映射到輸出通道(lane),加擾模塊采用特定多項(xiàng)式對各通道的數(shù)據(jù)進(jìn)行加擾,數(shù)據(jù)鏈路層實(shí)現(xiàn)鏈路同步、添加控制字符以及8B/10B 編碼。
傳輸層的作用是將轉(zhuǎn)換器的采樣數(shù)據(jù)按照M,S,F(xiàn),L的配置映射到對應(yīng)的通道,實(shí)現(xiàn)組幀(frame construction)的功能。其中M為轉(zhuǎn)換器個(gè)數(shù),S為每個(gè)轉(zhuǎn)換器在一個(gè)幀周期內(nèi)的采樣個(gè)數(shù),F(xiàn)指每一幀的8 位字節(jié)個(gè)數(shù),L表示通道個(gè)數(shù)。對于單個(gè)樣本比特為16 的配置,即N′=16 時(shí),配置參數(shù)必須滿足2×M×S=F×L。對于N′=8,則必須滿足M×S=F×L。
數(shù)據(jù)映射到對應(yīng)的通道之后,可以選擇使能或者旁路加擾模塊。加擾的目的主要有2 個(gè):一是避免發(fā)送重復(fù)數(shù)據(jù)出現(xiàn)尖峰脈沖,二是減少數(shù)據(jù)出現(xiàn)頻率對數(shù)據(jù)頻譜的影響[1]。協(xié)議規(guī)定的加擾多項(xiàng)式為1+x14+x15。
數(shù)據(jù)鏈路層主要實(shí)現(xiàn)發(fā)送端和接收端的鏈路同步、添加控制字和編碼三個(gè)功能。
鏈路同步分為代碼組同步(CGS,Code Group Synchronization),初始通道對齊序列(ILAS,Initial Lane Alignment Sequence)和用戶數(shù)據(jù)(User Data)3個(gè)階段。在CGS 階段,接收端發(fā)送4 個(gè)同步請求到發(fā)送端,發(fā)送端接收到請求信號后,發(fā)送連續(xù)的/K/碼。接收端接收到連續(xù)的4 個(gè)/K/碼之后取消同步請求,發(fā)送端檢測到同步請求信號拉低后進(jìn)入ILAS階段。在ILAS 階段,發(fā)送端在連續(xù)4 個(gè)本地多幀時(shí)鐘周期(LMFC,Local Multi Frame Cycle)內(nèi)發(fā)送協(xié)議要求的4 個(gè)多幀。只有第2 個(gè)多幀包含發(fā)送端的鏈路配置參數(shù),其他3 個(gè)多幀不包含配置信息。4 個(gè)多幀內(nèi)除控制位和鏈路配置參數(shù),其余位置全部用斜坡數(shù)據(jù)填充。
鏈路同步結(jié)束后,發(fā)送端開始發(fā)送用戶數(shù)據(jù)。在該階段絕大部分?jǐn)?shù)據(jù)都是用戶數(shù)據(jù),但是為了監(jiān)測同步狀況,JESD204B 協(xié)議規(guī)定在滿足某些特定的條件時(shí),將用戶數(shù)據(jù)替換為控制字符。
數(shù)據(jù)鏈路的最后一個(gè)模塊是8B/10B 編碼單元。編碼單元將8 bit 的輸入按照編碼規(guī)則編碼為10 bit 的數(shù)據(jù)輸出,對于普通數(shù)據(jù)和控制碼,有兩種編碼規(guī)則。編碼單元能夠?qū)崿F(xiàn)輸出的‘0’和‘1’數(shù)量相同,進(jìn)而保證接口數(shù)據(jù)的直流平衡,避免了接口長時(shí)間輸出單一數(shù)據(jù)發(fā)生電遷移失效。
首先,對傳輸層和數(shù)據(jù)鏈路層進(jìn)一步細(xì)分,如圖1 所示。傳輸層通過數(shù)據(jù)組合模塊(combination)和映射模塊(mapping)實(shí)現(xiàn)從原始采樣數(shù)據(jù)到通道數(shù)據(jù)的映射。加擾模塊(scramble)實(shí)現(xiàn)加擾功能,加擾功能可以旁路。數(shù)據(jù)鏈路層包括同步模塊(synchronizer),控制字符插入模塊(alignment characters inserting)和編碼模塊(encoder)。65 nm 工藝下串行數(shù)據(jù)處理速度難以達(dá)到1.25 GHz,所以該系統(tǒng)的所有數(shù)據(jù)全部都按照4 路并行的方式進(jìn)行處理。設(shè)計(jì)的系統(tǒng)支持Mode0 到Mode8 共9 種模式,鏈路配置參數(shù)如表1 所示,要求鏈路參數(shù)HD=0,N′=N=16或8,CF=0。
圖1 JESD204B TX 系統(tǒng)結(jié)構(gòu)
表1 支持的鏈路配置
2.2.1 數(shù)據(jù)組合模塊
傳輸層數(shù)據(jù)組合模塊的作用是按照鏈路配置參數(shù)N′,N,CS的關(guān)系對樣本數(shù)據(jù)進(jìn)行重新組合。對于N′≠N的情況,需要添加CS個(gè)控制位(control bits)和N′-N-CS個(gè)結(jié)束位(tail bits),如果控制位即CS=0,則全部填充結(jié)束位。設(shè)計(jì)的JESD204B 模型支持N′=16 或8,在數(shù)據(jù)組合模塊完成采樣數(shù)據(jù)、控制位和結(jié)束位的組合。協(xié)議要求產(chǎn)生結(jié)束位的偽隨機(jī)數(shù)列多相式至少為9 階,本文采用如下多項(xiàng)式:
具體的組合方式如圖2 所示。在采樣數(shù)據(jù)精度8<N≤16 的情況下,配置N′=16,16 比特?cái)?shù)據(jù)依次填充位采樣數(shù)據(jù)位,控制位和結(jié)束位。N≤8 時(shí)配置N′=8,此時(shí)高8 位全部置0,低8 位從高到低依次填充數(shù)據(jù)位、控制位和結(jié)束位。
圖2 傳輸層數(shù)據(jù)組合方式
2.2.2 傳輸層映射模塊
傳輸層映射單元的作用是將組合模塊輸出的數(shù)據(jù)按照鏈路配置映射到對應(yīng)的輸出通道。在本設(shè)計(jì)中映射過程由3 個(gè)子模塊實(shí)現(xiàn),如圖3 所示。
圖3 傳輸層映射模塊結(jié)構(gòu)
輸入的轉(zhuǎn)換器樣本數(shù)據(jù)經(jīng)過smp2oct 映射到32個(gè)octet。SYSREF_detect 偵測到參考時(shí)鐘(SYSREF)信號后,傳遞給FC_LMFC_gen 單元和oct2lane 單元。oct2lane 單元按照鏈路參數(shù)F、L將產(chǎn)生的32路并行octet 發(fā)送到不同的通道。FC_LMFC_gen 生成幀時(shí)鐘(FC,F(xiàn)rame Clock)和本地多幀(LMFC,Local Muti Frame Clock)時(shí)鐘。
映射模塊產(chǎn)生的數(shù)據(jù)(lane data)和時(shí)鐘(FC/LMFC)通過參考時(shí)鐘實(shí)現(xiàn)嚴(yán)格的相位對齊。如果未對齊,接收端數(shù)據(jù)解幀后得到的采樣數(shù)據(jù)會出現(xiàn)和發(fā)送端端轉(zhuǎn)換器采樣數(shù)據(jù)順序不一致的情況。
映射模塊中的smp2oct 實(shí)現(xiàn)樣本數(shù)據(jù)到octet的映射,具體通過模塊smp_16prl 和get_8b_from_16b 實(shí)現(xiàn)。組合模塊產(chǎn)生的數(shù)據(jù)在smp_16prl 模塊映射到16 個(gè)并行通道。轉(zhuǎn)換器1 個(gè)時(shí)鐘周期采樣得到的M×S個(gè)樣本數(shù)據(jù)。M×S=16 時(shí),16 個(gè)樣本數(shù)據(jù)放入對應(yīng)的16 個(gè)并行通道。對于M×S<16 的配置,則每個(gè)轉(zhuǎn)換器輸入連續(xù)取16/(M×S)組樣本,依次順序放到16 個(gè)并行通道,此時(shí)轉(zhuǎn)換器數(shù)據(jù)速率是通道數(shù)據(jù)速率的16/(M×S)倍。
對于N′=16,16 個(gè)并行通道數(shù)據(jù)直接分拆為32個(gè)octet。對于N′=8,由于在數(shù)據(jù)組合模塊處理時(shí)高8 位全部為0(圖2(b)),所以需要從16 路并行數(shù)據(jù)中重新提取出低8 位的有效數(shù)據(jù),通過奇偶交替采樣的方式產(chǎn)生32 個(gè)octet,該功能由get_8b_from_16b 單元實(shí)現(xiàn)。
數(shù)據(jù)通過傳輸層后已經(jīng)按照鏈路參數(shù)映射到對應(yīng)通道。加擾模塊按照32 路并行的方式設(shè)計(jì),全部為組合電路,可以使能或者旁路。因此加擾后的數(shù)據(jù)和映射單元輸出的幀時(shí)鐘/本地多幀時(shí)鐘依然處于相位對齊的狀態(tài)。加擾模塊的實(shí)現(xiàn)方式參考王俊杰等人[7]的方式。
2.3.1 同步模塊
同步模塊結(jié)構(gòu)如圖4 所示。SYNC_detect 模塊連續(xù)采樣接收端發(fā)送的SYNC 同步請求。代碼組同步階段(CGS),SYNC_detect 接收到接收端發(fā)出的同步請求后,發(fā)送一個(gè)脈沖SYNC_NE 至CGS_ILAS_gen單元作為代碼組同步階段的請求信號。CGS_ILAS_gen 接收到SYNC_NE 后進(jìn)入代碼組同步過程,開始發(fā)送連續(xù)控制字符/K/。RX 接收到連續(xù)4 個(gè)/K/字符后拉高SYNC。SYNC_detect 采樣到SYNC 拉高信號后,給出一個(gè)SYNC_PE 至CGS_ILAS_gen 作為初始通道對齊序列階段的啟動信號。CGS_ILAS_gen 單元在連續(xù)4 個(gè)多幀時(shí)鐘內(nèi)發(fā)送初始通道對齊序列(ILAS),發(fā)送完畢后CGS_ILAS_gen 單元被禁用,輸出數(shù)據(jù)切換為用戶數(shù)據(jù)。CGS_ILAS_gen 還要同步輸出代碼組同步和初始通道序列階段的控制字符標(biāo)識(CGS_ILAS_K),編碼模塊將按照控制字符的編碼方式進(jìn)行編碼。該模塊輸出的數(shù)據(jù)(output)和控制字符標(biāo)識相位保持嚴(yán)格一致。
圖4 同步模塊
2.3.2 對齊字符插入模塊
對齊字符插入模塊實(shí)現(xiàn)數(shù)據(jù)流中的控制字符插入。符合JESD204B 協(xié)議的接收端采用數(shù)據(jù)恢復(fù)技術(shù),在數(shù)據(jù)流中識別和定位控制字符,實(shí)現(xiàn)對齊和同步的功能。具體實(shí)現(xiàn)方式如圖5 所示。傳輸層映射單元產(chǎn)生的幀時(shí)鐘和多幀時(shí)鐘首先經(jīng)過延時(shí)模塊和數(shù)據(jù)鏈路層同步模塊產(chǎn)生的數(shù)據(jù)進(jìn)行相位對齊??刂谱址R別單元K_detect 按照J(rèn)ESD204B 協(xié)議的要求識別數(shù)據(jù)流中需要插入和替換的控制字符,插入和替換的同時(shí)產(chǎn)生控制字符標(biāo)識位,和同步模塊的標(biāo)識信息CGS_ILAS_K 進(jìn)行或操作后輸出。該模塊輸出通道數(shù)據(jù)和控制字符位置標(biāo)志信息相位完全一致。
圖5 控制字符插入模塊
對齊字符插入模塊輸出的數(shù)據(jù)和控制字符標(biāo)識位通過8B/10B 編碼模塊輸出到SerDes 接口。8B/10B 編碼實(shí)現(xiàn)方式參考金東強(qiáng)等人[8]的方式。
采用UVM 驗(yàn)證系統(tǒng)對設(shè)計(jì)的發(fā)送模塊進(jìn)行驗(yàn)證,仿真環(huán)境為Cadence 公司的NC Verilog。該系統(tǒng)結(jié)構(gòu)如圖6 所示。其中控制模塊(control)配置發(fā)送端和接收端的鏈路參數(shù)和其他配置,數(shù)據(jù)發(fā)送模塊(data)生成數(shù)據(jù)并送往發(fā)送端。數(shù)據(jù)經(jīng)過接收端處理后和發(fā)送模塊生成的數(shù)據(jù)進(jìn)行比對。其中的發(fā)送端(JESD204B TX)為本文設(shè)計(jì)的RTL 代碼,接收端(JESD204B Rx Module)是已經(jīng)經(jīng)過硬件驗(yàn)證的IP。
圖6 驗(yàn)證系統(tǒng)結(jié)構(gòu)圖
配置模式為Mode0,N′=N=16,K=32。鏈路同步過程如圖7 所示,可以看到,代碼組同步階段,發(fā)送端接收到接收端發(fā)送的SYNC 同步請求信號后開始發(fā)送連續(xù)的控制字符/K/,接收端接收到連續(xù)4個(gè)/K/后拉低SYNC。初始通道序列對齊階段,發(fā)送端在SYNC 拉低的下一個(gè)本地多幀時(shí)鐘開始發(fā)送4個(gè)本地多幀數(shù)據(jù),第1 個(gè)本地多幀數(shù)據(jù)如圖7(b)所示,幀頭為控制字符/R/,幀尾是/A/,中間是斜坡數(shù)據(jù)填充。第2 個(gè)多幀如圖7(c)所致,幀頭為控制字符/R/,緊接著發(fā)送控制字符/Q/,隨后發(fā)送鏈路配置參數(shù)(方框圈中部分),之后發(fā)送斜坡數(shù)據(jù)填充,幀尾為/A/,第3,4 個(gè)多幀(圖7(d)和圖7(e))和第1 個(gè)多幀完全一致。仿真結(jié)果證明,設(shè)計(jì)的RTL代碼能夠完成鏈路同步過程,鏈路參數(shù)的填充方式也完全符合JESD204B 協(xié)議的規(guī)定。
圖8 是發(fā)送端4 個(gè)虛擬ADC 發(fā)送的數(shù)據(jù)(CVT0,CVT1,CVT2,CVT3)和接收端解幀結(jié)果(rx_data0,rx_data1,rx_data2,rx_data3)??梢钥吹?,數(shù)據(jù)和轉(zhuǎn)換器的順序完全一致,證明了設(shè)計(jì)的發(fā)送端模型的正確性。表1 中的Mode0 至Mode8 共計(jì)9種模式全部通過驗(yàn)證,能夠?qū)崿F(xiàn)鏈路的同步且解幀后數(shù)據(jù)和發(fā)送數(shù)據(jù)完全一致。
采用Synopsys 公司的綜合工具Design Compiler基于某65 nm 工藝庫進(jìn)行綜合評估,結(jié)果如圖9 所示。綜合結(jié)果顯示,總面積為105 748.92 μm2,單通道時(shí)鐘頻率可以達(dá)到1.25 GHz(4 路并行,每一路312.5 MHz),能夠達(dá)到協(xié)議推薦的12.5 Gbit/s(每個(gè)通道均為10 bit)的最高傳輸速度。
在深入理解JESD204B 協(xié)議的基礎(chǔ)上,對傳輸層,數(shù)據(jù)鏈路層進(jìn)行了進(jìn)一步的模塊細(xì)分。采用Verilog HDL 實(shí)現(xiàn)了該電路并應(yīng)用UVM 驗(yàn)證系統(tǒng)和NC Verilog 驗(yàn)證了所設(shè)計(jì)電路的正確性?;谀?5 nm 工藝綜合結(jié)果顯示設(shè)計(jì)的電路能夠達(dá)到協(xié)議推薦的最高速度。該設(shè)計(jì)思路能夠?yàn)镴ESD204B 發(fā)送端電路設(shè)計(jì)提供一定的參考。
圖7
圖8 發(fā)送端輸入數(shù)據(jù)和接收端輸出數(shù)據(jù)對比
圖9 Design Compiler 綜合結(jié)果