羅 旸,何光旭,雷淑嵐
(中國電子科技集團公司第58研究所,江蘇無錫214072)
一種適用于FPGA系統(tǒng)中的變速箱電路設(shè)計
羅旸,何光旭,雷淑嵐
(中國電子科技集團公司第58研究所,江蘇無錫214072)
設(shè)計了一種新型變速箱電路,變速箱兩邊采用同一時鐘,不需要額外的時鐘輸入,使用計數(shù)器來控制位寬轉(zhuǎn)變的整個過程,并產(chǎn)生標志位來控制變速箱數(shù)據(jù)的輸入和輸出。在不改變數(shù)據(jù)傳輸波特率的情況下,解決在傳輸過程中數(shù)據(jù)的重復(fù)或丟失問題,實現(xiàn)兩邊不同數(shù)據(jù)位寬的正確轉(zhuǎn)換。電路適用于在FPGA系統(tǒng)中,模塊之間或者各IP之間的數(shù)據(jù)位寬不匹配的情況下調(diào)整模塊之間的數(shù)據(jù)位寬,從而實現(xiàn)各內(nèi)部模塊之間的數(shù)據(jù)位寬匹配。仿真結(jié)果表明,以66位數(shù)據(jù)轉(zhuǎn)64位數(shù)據(jù)為例,在不影響有效數(shù)據(jù)傳輸速率的情況下,可以在32個時鐘周期內(nèi)完成數(shù)據(jù)的無損轉(zhuǎn)換。
變速箱;標志位控制;高速串行通信;Serdes;FPGA系統(tǒng)
隨著FPGA芯片的不斷升級換代,F(xiàn)PGA系統(tǒng)電路的規(guī)模越來越大,在系統(tǒng)電路中集成了各種模塊和IP,比如高速端口收發(fā)器,F(xiàn)PGA接口的數(shù)據(jù)寬度大多為2n字節(jié),一般為16位或者32位。
圖1為在FPGA中實現(xiàn)10 GBase-R協(xié)議規(guī)定的64 B/66 B編碼[1~2],經(jīng)過擾碼器后的66位信息分為兩部分,一部分是64位有效數(shù)據(jù)負載信息,還有一部分是2位的同步信息,F(xiàn)PGA接口數(shù)據(jù)線寬度為32位,其中64位的數(shù)據(jù)有效負載信息通過FPGA接口的32位數(shù)據(jù)信號發(fā)送,2位同步信息通過2位的控制信號線發(fā)送,在發(fā)送到Serdes模塊之前,要把數(shù)據(jù)負載信息和同步信息整合,再進行位寬由多到少的轉(zhuǎn)換,因為在10 GBase-R的物理層收發(fā)器設(shè)計過程中,Serdes的并行端數(shù)據(jù)輸入的位寬數(shù)一般不會是66位,且一般都不超過20位,如8位、10位、16位等[3],同樣數(shù)據(jù)從Serdes模塊發(fā)送到FPGA時,也需要進行數(shù)據(jù)位寬由少到多的轉(zhuǎn)變[4]。變速箱電路就是實現(xiàn)任意數(shù)據(jù)位寬之間的轉(zhuǎn)換,來保證FPGA系統(tǒng)內(nèi)各模塊之間的無縫連接與正常的數(shù)據(jù)傳輸功能。
圖1 FPGA實現(xiàn)10 Gbps以太網(wǎng)收發(fā)器結(jié)構(gòu)
如果直接根據(jù)變速箱兩側(cè)的數(shù)據(jù)輸出和輸入的數(shù)據(jù)率相等的原理,利用兩個頻率的時鐘對數(shù)據(jù)位寬直接進行轉(zhuǎn)換,而不對兩側(cè)時鐘或者數(shù)據(jù)進行任何的控制或者處理,則會出現(xiàn)下面兩種情況:
當(dāng)變速箱數(shù)據(jù)輸出的時鐘頻率大于變速箱數(shù)據(jù)輸入的時鐘頻率,即輸出數(shù)據(jù)所用的時鐘周期小于輸入數(shù)據(jù)的寬度時,在數(shù)據(jù)位寬轉(zhuǎn)換過程中,在某個時鐘周期下,輸出數(shù)據(jù)的時鐘會將當(dāng)前周期下的數(shù)據(jù)采樣2次,如圖2中的第3和第8時鐘周期,從而造成輸出數(shù)據(jù)的重復(fù)[5~6]。
圖2 同一數(shù)據(jù)采樣2次
當(dāng)變速箱數(shù)據(jù)輸出的時鐘頻率小于變速箱數(shù)據(jù)輸入的時鐘頻率,即輸出數(shù)據(jù)所用的時鐘周期大于輸入數(shù)據(jù)的寬度時,在數(shù)據(jù)位寬轉(zhuǎn)換過程中,在某個時鐘周期下,如圖3中的第5和第10個時鐘周期,輸出數(shù)據(jù)的時鐘會漏采當(dāng)前周期下的數(shù)據(jù),從而影響數(shù)據(jù)傳輸?shù)恼_性。
圖3 數(shù)據(jù)漏采
針對上述問題,可以通過產(chǎn)生不均等時鐘的辦法來解決:使用電路中固定時鐘源產(chǎn)生兩個基礎(chǔ)時鐘,再通過這兩個基礎(chǔ)時鐘組合成變速箱的輸入時鐘和輸出時鐘,其中組合后的時鐘周期是不均等的,但是其平均周期值是定值,確保變速箱兩邊的傳輸比特率相等。但是這種辦法會需要額外的輸入時鐘,增加整個系統(tǒng)電路設(shè)計的額外開銷。在FPGA系統(tǒng)中,由于FPGA用戶可以自己來設(shè)計控制邏輯,本文提出一種新的應(yīng)用于FPGA系統(tǒng)的方法,利用計數(shù)器控制位寬轉(zhuǎn)換的過程,并產(chǎn)生標志位控制變速箱數(shù)據(jù)的輸入和輸出,可以很好地解決上述問題。在數(shù)據(jù)位寬由多向少轉(zhuǎn)變的過程中,通過在某個時鐘周期暫停給變速箱輸入數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸出;在數(shù)據(jù)位寬由少向多轉(zhuǎn)變的過程中,通過在某個時鐘周期暫停給變速箱輸出數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸入。
在FPGA系統(tǒng)中,變速箱電路主要實現(xiàn)不同數(shù)據(jù)位寬之間的轉(zhuǎn)換,變速箱兩端的數(shù)據(jù)位寬和時鐘頻率在某一實際電路中是確定值。在本設(shè)計中,使用計數(shù)器電路來控制數(shù)據(jù)位寬轉(zhuǎn)換的整個過程,并產(chǎn)生標志位來控制變速箱數(shù)據(jù)的輸入輸出,在不改變數(shù)據(jù)傳輸波特率的情況下,實現(xiàn)對數(shù)據(jù)位寬的無損增加,從而達到系統(tǒng)內(nèi)部各模塊間的位寬匹配。
為方便闡述,定義變速箱輸入端時鐘周期為T,輸入端位寬為m,輸出端時鐘周期與輸入時鐘相同,輸出端位寬為n,在實際電路中,輸入時鐘和輸出時鐘都是由系統(tǒng)中的固定時鐘源產(chǎn)生,時鐘源的頻率是固定的,變速箱兩端的位寬m、n的值根據(jù)具體電路的值確定。一般分為m<n和m>n兩種情況。
圖4 變速箱結(jié)構(gòu)
如圖4所示,當(dāng)變速箱并行數(shù)據(jù)輸入位寬m小于輸出位寬n時,在數(shù)據(jù)位寬轉(zhuǎn)換的過程中,如果待轉(zhuǎn)換的數(shù)據(jù)位寬積累到大于n,就進行數(shù)據(jù)位寬的轉(zhuǎn)換,在當(dāng)前時鐘周期輸出n位寬的數(shù)據(jù),否則標志位產(chǎn)生模塊產(chǎn)生輸出數(shù)據(jù)無效標志位,數(shù)據(jù)接收模塊通過此標志位確定當(dāng)前數(shù)據(jù)無效,等待輸入的并行數(shù)據(jù)積累到大于n位時再進行數(shù)據(jù)的轉(zhuǎn)換。
當(dāng)變速箱并行數(shù)據(jù)輸入位寬m大于輸出位寬n時,在數(shù)據(jù)位寬轉(zhuǎn)換的過程中,如果在當(dāng)前時鐘周期,轉(zhuǎn)換后的數(shù)據(jù)位寬積累到大于n,就停止進行m位并行數(shù)據(jù)的輸入,但是在下一個時鐘周期繼續(xù)輸出n位寬的數(shù)據(jù),并且標志位產(chǎn)生模塊產(chǎn)生輸入數(shù)據(jù)無效標志位,位寬轉(zhuǎn)換電路會通過此標志位確定當(dāng)前輸入數(shù)據(jù)無效,不將此輸入數(shù)據(jù)進行數(shù)據(jù)位寬的轉(zhuǎn)換。具體的轉(zhuǎn)換流程如圖5所示。
圖5 變速箱位寬轉(zhuǎn)變流程圖
接下來具體說明變速箱的實現(xiàn)過程,在FPGA系統(tǒng)中,數(shù)據(jù)總線的位寬為32位,以10 GBASE-R物理層為例,Serdes的位寬要求為 16 bit,PCS采用64B/66B的編解碼方式,在與Serdes模塊進行數(shù)據(jù)傳輸過程中,需要通過變速箱模塊實現(xiàn)66 bit到32 bit或者32 bit到66 bit兩種位寬的轉(zhuǎn)換。
輸入數(shù)據(jù)的位寬m為66(32+32+2)bit,輸出數(shù)據(jù)的位寬n為64(32+32)bit。
如圖6所示,位寬轉(zhuǎn)換前,66位寬的數(shù)據(jù)由兩個32位數(shù)據(jù)信息和2位的同步信息組成,轉(zhuǎn)換后64位寬的數(shù)據(jù)由兩個32位數(shù)據(jù)組成。計數(shù)器控制著每完成一次數(shù)據(jù)位寬轉(zhuǎn)換后累積下來的信息位寬,當(dāng)計數(shù)器計數(shù)到31時,當(dāng)前累積的數(shù)據(jù)位寬為30位,加上第32個時鐘周期輸入的32位寬的數(shù)據(jù)信息和2位寬的同步信息,此時正好有64位寬的信息;如果下一個時鐘周期32位寬的數(shù)據(jù)信息繼續(xù)輸入的話,就會造成這32位寬數(shù)據(jù)信息的丟失;所以在計數(shù)器為31時,信息正常輸入,在當(dāng)前時鐘周期,正常輸出32位寬的信息,并產(chǎn)生低有效的輸入控制信號;在計數(shù)器值為32時,在此時鐘周期暫停輸入標志位有效,暫停數(shù)據(jù)的輸入,正常輸出32位寬的信息數(shù)據(jù)。
圖6 66位寬轉(zhuǎn)換為64位寬
同理,當(dāng)64位寬轉(zhuǎn)換為66位寬時,當(dāng)累計的信息位寬和新輸入的數(shù)據(jù)位寬總和小于66時,此時輸出無效標志位有效,暫停新的信息輸出,等到下一個時鐘周期再正常輸入和輸出信息。
使用verilog HDL語言對上述變速箱的功能進行描述,搭建驗證平臺,并使用VCS軟件進行仿真,仿真示意圖如圖7所示。
圖7 驗證平臺示意圖
仿真結(jié)構(gòu)圖如圖7所示,pattern_gen模塊產(chǎn)生66 bit的數(shù)據(jù),gearbox_1和gearbox_2是例化本變速箱模塊,其中變速箱gearbox_1模塊的輸入數(shù)據(jù)位寬為32 bit,同步信息位寬為2 bit,輸出數(shù)據(jù)位寬為32 bit;變速箱gearbox_2模塊的輸入數(shù)據(jù)位寬為32 bit,輸出數(shù)據(jù)位寬為66 bit,同步信息位寬為2 bit。在pattern_chk模塊中把pattern_gen模塊產(chǎn)生的66 bit數(shù)據(jù)延時幾個時鐘周期后和該數(shù)據(jù)經(jīng)過變速箱位寬轉(zhuǎn)變后的66 bit數(shù)據(jù)相比較。仿真波形見圖8。
如圖8所示,仿真分為兩部分:數(shù)據(jù)寬度66 bit到64 bit的轉(zhuǎn)換和64 bit到66 bit的轉(zhuǎn)換。
clk是固定的時鐘源,其周期8 ns,在每一個clk時鐘周期下,傳輸32 bit的數(shù)據(jù)。在gearbox_1中,66 bit的信息由 32 bit的 gbx_data_in和 2 bit的gbx_header_in組成,64 bit的輸出信息由32 bit信號線gbx_out輸出,gearbox_1中輸出的32 bit信息作為gearbox_2中的輸入,在gearbox_2中經(jīng)過位寬轉(zhuǎn)換后由gbx_data_out和gbx_header_out輸出。
圖8 仿真波形圖
在gearbox_1中,可以看到計數(shù)器的值為31時,暫停輸入標志位txgearboxready有效,在計數(shù)器的值為32時,暫停輸入,此時的輸入保持為上一時鐘周期的值32’h79f和2’b00,在gearbox_2中,當(dāng)輸出無效標志位rx_data_valid有效時,暫停gbx_data_out的輸出,保持為上一時鐘周期的值32’h79f,由于輸出的2 bit的gbx_header_out只是在高的32位輸出時有效,通過rx_header_valid標志位來控制。
把gearbox_1的66 bit輸入數(shù)據(jù)延時7個clk時鐘周期后和gearbox_2的66 bit輸出數(shù)據(jù)一一比較,在result中equal_32b信號為高電平,表明這兩個數(shù)據(jù)完全相同,說明變速箱在66 bit位寬轉(zhuǎn)變?yōu)?4 bit位寬、再由64 bit位寬轉(zhuǎn)變?yōu)?6 bit位寬的過程中正確,沒有丟失或重復(fù)采樣。
在變速箱電路中,通過標志位控制變速箱兩邊的信息輸入和輸出,可以保持變速箱兩邊的數(shù)據(jù)波特率不變,并且保證在傳輸過程中沒有數(shù)據(jù)的丟失或重復(fù)采樣,可以用于高速的FPGA系統(tǒng)中。
[1]Zhou Qinglun,Li Chunyan,Wang Yong.Hardware Implementationof64B/66BEncoder/Decoderfor10-Gigabit Ethernet[EB/OL].
[2]IEEE Std 802.3ae-2002[S/OL].New Jersey:IEEE,2002[2002-8-30].http://standards.ieee.org.
[3]H-R Lee,M-S Hwang,B-J Lee,Y-D Kim,D Oh,J Kim,S-H Lee,D-K Jeong,and W Kim.A fully integrated 0.13μm CMOS 10Gb Ethernet transceiver with XAUI interface[J].IEEE ISSCC Dig.Tech.Papers,2004,2:170-171.
[4]Virtex-II Pro Platform FPGA User Guide[EB/OL].San Jose:Xilinx,2005[2005-3-23].http://www.xilinx.com.
[5]黃安君,羅旸,雷淑嵐.適用于10 Gbps以太網(wǎng)物理層收發(fā)器的變速箱電路設(shè)計 [J].電子與封裝,2015,15(1):31-35.
[6]Yongsam Moon,Member,Sang-Hyun Lee,and Daeyun Shim.ADivide-by-16.5Circuitfor10GbEthernet Transceiver in 0.13 μm CMOS[C].IEEE.1175-1179.
Design of Gearbox Circuits for FPGA System
LUO Yang,HE Guangxu,LEI Shulan
(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)
In the paper,a new design of gearbox that adapts the same clock at the both sides instead of involving an extra clock input is presented.It controls the whole process of bit width conversion by counters and produces flag bit to determine the input and output of the gearbox data.The design solves the problem of data repetition and loss during the transmission under fixed baud rate and consequently realizes the perfect conversion between the different bit-wide data.Under the situations when the data bit width are different among modules or IPs,the design is effective in adjusting and matching the data bit widths among modules. The simulation results show that the gearbox completes the data conversion from 66 bits to 64 bits within 32 clock cycles without loss of data rate.
gearbox;flag bit control;high-speed serial communication;Serdes;FPGA
TN402
A
1681-1070(2016)10-0019-04
2016-3-30
羅旸(1982—),男,福建長汀人,畢業(yè)于電子科技大學(xué)自動化專業(yè),現(xiàn)在中國電子科技集團公司第58研究所從事科研項目技術(shù)與管理工作。