羅 旸,何光旭,雷淑嵐
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214072)
一種適用于FPGA系統(tǒng)中的變速箱電路設(shè)計(jì)
羅旸,何光旭,雷淑嵐
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214072)
設(shè)計(jì)了一種新型變速箱電路,變速箱兩邊采用同一時(shí)鐘,不需要額外的時(shí)鐘輸入,使用計(jì)數(shù)器來(lái)控制位寬轉(zhuǎn)變的整個(gè)過(guò)程,并產(chǎn)生標(biāo)志位來(lái)控制變速箱數(shù)據(jù)的輸入和輸出。在不改變數(shù)據(jù)傳輸波特率的情況下,解決在傳輸過(guò)程中數(shù)據(jù)的重復(fù)或丟失問(wèn)題,實(shí)現(xiàn)兩邊不同數(shù)據(jù)位寬的正確轉(zhuǎn)換。電路適用于在FPGA系統(tǒng)中,模塊之間或者各IP之間的數(shù)據(jù)位寬不匹配的情況下調(diào)整模塊之間的數(shù)據(jù)位寬,從而實(shí)現(xiàn)各內(nèi)部模塊之間的數(shù)據(jù)位寬匹配。仿真結(jié)果表明,以66位數(shù)據(jù)轉(zhuǎn)64位數(shù)據(jù)為例,在不影響有效數(shù)據(jù)傳輸速率的情況下,可以在32個(gè)時(shí)鐘周期內(nèi)完成數(shù)據(jù)的無(wú)損轉(zhuǎn)換。
變速箱;標(biāo)志位控制;高速串行通信;Serdes;FPGA系統(tǒng)
隨著FPGA芯片的不斷升級(jí)換代,F(xiàn)PGA系統(tǒng)電路的規(guī)模越來(lái)越大,在系統(tǒng)電路中集成了各種模塊和IP,比如高速端口收發(fā)器,F(xiàn)PGA接口的數(shù)據(jù)寬度大多為2n字節(jié),一般為16位或者32位。
圖1為在FPGA中實(shí)現(xiàn)10 GBase-R協(xié)議規(guī)定的64 B/66 B編碼[1~2],經(jīng)過(guò)擾碼器后的66位信息分為兩部分,一部分是64位有效數(shù)據(jù)負(fù)載信息,還有一部分是2位的同步信息,F(xiàn)PGA接口數(shù)據(jù)線寬度為32位,其中64位的數(shù)據(jù)有效負(fù)載信息通過(guò)FPGA接口的32位數(shù)據(jù)信號(hào)發(fā)送,2位同步信息通過(guò)2位的控制信號(hào)線發(fā)送,在發(fā)送到Serdes模塊之前,要把數(shù)據(jù)負(fù)載信息和同步信息整合,再進(jìn)行位寬由多到少的轉(zhuǎn)換,因?yàn)樵?0 GBase-R的物理層收發(fā)器設(shè)計(jì)過(guò)程中,Serdes的并行端數(shù)據(jù)輸入的位寬數(shù)一般不會(huì)是66位,且一般都不超過(guò)20位,如8位、10位、16位等[3],同樣數(shù)據(jù)從Serdes模塊發(fā)送到FPGA時(shí),也需要進(jìn)行數(shù)據(jù)位寬由少到多的轉(zhuǎn)變[4]。變速箱電路就是實(shí)現(xiàn)任意數(shù)據(jù)位寬之間的轉(zhuǎn)換,來(lái)保證FPGA系統(tǒng)內(nèi)各模塊之間的無(wú)縫連接與正常的數(shù)據(jù)傳輸功能。
圖1 FPGA實(shí)現(xiàn)10 Gbps以太網(wǎng)收發(fā)器結(jié)構(gòu)
如果直接根據(jù)變速箱兩側(cè)的數(shù)據(jù)輸出和輸入的數(shù)據(jù)率相等的原理,利用兩個(gè)頻率的時(shí)鐘對(duì)數(shù)據(jù)位寬直接進(jìn)行轉(zhuǎn)換,而不對(duì)兩側(cè)時(shí)鐘或者數(shù)據(jù)進(jìn)行任何的控制或者處理,則會(huì)出現(xiàn)下面兩種情況:
當(dāng)變速箱數(shù)據(jù)輸出的時(shí)鐘頻率大于變速箱數(shù)據(jù)輸入的時(shí)鐘頻率,即輸出數(shù)據(jù)所用的時(shí)鐘周期小于輸入數(shù)據(jù)的寬度時(shí),在數(shù)據(jù)位寬轉(zhuǎn)換過(guò)程中,在某個(gè)時(shí)鐘周期下,輸出數(shù)據(jù)的時(shí)鐘會(huì)將當(dāng)前周期下的數(shù)據(jù)采樣2次,如圖2中的第3和第8時(shí)鐘周期,從而造成輸出數(shù)據(jù)的重復(fù)[5~6]。
圖2 同一數(shù)據(jù)采樣2次
當(dāng)變速箱數(shù)據(jù)輸出的時(shí)鐘頻率小于變速箱數(shù)據(jù)輸入的時(shí)鐘頻率,即輸出數(shù)據(jù)所用的時(shí)鐘周期大于輸入數(shù)據(jù)的寬度時(shí),在數(shù)據(jù)位寬轉(zhuǎn)換過(guò)程中,在某個(gè)時(shí)鐘周期下,如圖3中的第5和第10個(gè)時(shí)鐘周期,輸出數(shù)據(jù)的時(shí)鐘會(huì)漏采當(dāng)前周期下的數(shù)據(jù),從而影響數(shù)據(jù)傳輸?shù)恼_性。
圖3 數(shù)據(jù)漏采
針對(duì)上述問(wèn)題,可以通過(guò)產(chǎn)生不均等時(shí)鐘的辦法來(lái)解決:使用電路中固定時(shí)鐘源產(chǎn)生兩個(gè)基礎(chǔ)時(shí)鐘,再通過(guò)這兩個(gè)基礎(chǔ)時(shí)鐘組合成變速箱的輸入時(shí)鐘和輸出時(shí)鐘,其中組合后的時(shí)鐘周期是不均等的,但是其平均周期值是定值,確保變速箱兩邊的傳輸比特率相等。但是這種辦法會(huì)需要額外的輸入時(shí)鐘,增加整個(gè)系統(tǒng)電路設(shè)計(jì)的額外開(kāi)銷(xiāo)。在FPGA系統(tǒng)中,由于FPGA用戶可以自己來(lái)設(shè)計(jì)控制邏輯,本文提出一種新的應(yīng)用于FPGA系統(tǒng)的方法,利用計(jì)數(shù)器控制位寬轉(zhuǎn)換的過(guò)程,并產(chǎn)生標(biāo)志位控制變速箱數(shù)據(jù)的輸入和輸出,可以很好地解決上述問(wèn)題。在數(shù)據(jù)位寬由多向少轉(zhuǎn)變的過(guò)程中,通過(guò)在某個(gè)時(shí)鐘周期暫停給變速箱輸入數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸出;在數(shù)據(jù)位寬由少向多轉(zhuǎn)變的過(guò)程中,通過(guò)在某個(gè)時(shí)鐘周期暫停給變速箱輸出數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸入。
在FPGA系統(tǒng)中,變速箱電路主要實(shí)現(xiàn)不同數(shù)據(jù)位寬之間的轉(zhuǎn)換,變速箱兩端的數(shù)據(jù)位寬和時(shí)鐘頻率在某一實(shí)際電路中是確定值。在本設(shè)計(jì)中,使用計(jì)數(shù)器電路來(lái)控制數(shù)據(jù)位寬轉(zhuǎn)換的整個(gè)過(guò)程,并產(chǎn)生標(biāo)志位來(lái)控制變速箱數(shù)據(jù)的輸入輸出,在不改變數(shù)據(jù)傳輸波特率的情況下,實(shí)現(xiàn)對(duì)數(shù)據(jù)位寬的無(wú)損增加,從而達(dá)到系統(tǒng)內(nèi)部各模塊間的位寬匹配。
為方便闡述,定義變速箱輸入端時(shí)鐘周期為T(mén),輸入端位寬為m,輸出端時(shí)鐘周期與輸入時(shí)鐘相同,輸出端位寬為n,在實(shí)際電路中,輸入時(shí)鐘和輸出時(shí)鐘都是由系統(tǒng)中的固定時(shí)鐘源產(chǎn)生,時(shí)鐘源的頻率是固定的,變速箱兩端的位寬m、n的值根據(jù)具體電路的值確定。一般分為m<n和m>n兩種情況。
圖4 變速箱結(jié)構(gòu)
如圖4所示,當(dāng)變速箱并行數(shù)據(jù)輸入位寬m小于輸出位寬n時(shí),在數(shù)據(jù)位寬轉(zhuǎn)換的過(guò)程中,如果待轉(zhuǎn)換的數(shù)據(jù)位寬積累到大于n,就進(jìn)行數(shù)據(jù)位寬的轉(zhuǎn)換,在當(dāng)前時(shí)鐘周期輸出n位寬的數(shù)據(jù),否則標(biāo)志位產(chǎn)生模塊產(chǎn)生輸出數(shù)據(jù)無(wú)效標(biāo)志位,數(shù)據(jù)接收模塊通過(guò)此標(biāo)志位確定當(dāng)前數(shù)據(jù)無(wú)效,等待輸入的并行數(shù)據(jù)積累到大于n位時(shí)再進(jìn)行數(shù)據(jù)的轉(zhuǎn)換。
當(dāng)變速箱并行數(shù)據(jù)輸入位寬m大于輸出位寬n時(shí),在數(shù)據(jù)位寬轉(zhuǎn)換的過(guò)程中,如果在當(dāng)前時(shí)鐘周期,轉(zhuǎn)換后的數(shù)據(jù)位寬積累到大于n,就停止進(jìn)行m位并行數(shù)據(jù)的輸入,但是在下一個(gè)時(shí)鐘周期繼續(xù)輸出n位寬的數(shù)據(jù),并且標(biāo)志位產(chǎn)生模塊產(chǎn)生輸入數(shù)據(jù)無(wú)效標(biāo)志位,位寬轉(zhuǎn)換電路會(huì)通過(guò)此標(biāo)志位確定當(dāng)前輸入數(shù)據(jù)無(wú)效,不將此輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)位寬的轉(zhuǎn)換。具體的轉(zhuǎn)換流程如圖5所示。
圖5 變速箱位寬轉(zhuǎn)變流程圖
接下來(lái)具體說(shuō)明變速箱的實(shí)現(xiàn)過(guò)程,在FPGA系統(tǒng)中,數(shù)據(jù)總線的位寬為32位,以10 GBASE-R物理層為例,Serdes的位寬要求為 16 bit,PCS采用64B/66B的編解碼方式,在與Serdes模塊進(jìn)行數(shù)據(jù)傳輸過(guò)程中,需要通過(guò)變速箱模塊實(shí)現(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ù)由兩個(gè)32位數(shù)據(jù)信息和2位的同步信息組成,轉(zhuǎn)換后64位寬的數(shù)據(jù)由兩個(gè)32位數(shù)據(jù)組成。計(jì)數(shù)器控制著每完成一次數(shù)據(jù)位寬轉(zhuǎn)換后累積下來(lái)的信息位寬,當(dāng)計(jì)數(shù)器計(jì)數(shù)到31時(shí),當(dāng)前累積的數(shù)據(jù)位寬為30位,加上第32個(gè)時(shí)鐘周期輸入的32位寬的數(shù)據(jù)信息和2位寬的同步信息,此時(shí)正好有64位寬的信息;如果下一個(gè)時(shí)鐘周期32位寬的數(shù)據(jù)信息繼續(xù)輸入的話,就會(huì)造成這32位寬數(shù)據(jù)信息的丟失;所以在計(jì)數(shù)器為31時(shí),信息正常輸入,在當(dāng)前時(shí)鐘周期,正常輸出32位寬的信息,并產(chǎn)生低有效的輸入控制信號(hào);在計(jì)數(shù)器值為32時(shí),在此時(shí)鐘周期暫停輸入標(biāo)志位有效,暫停數(shù)據(jù)的輸入,正常輸出32位寬的信息數(shù)據(jù)。
圖6 66位寬轉(zhuǎn)換為64位寬
同理,當(dāng)64位寬轉(zhuǎn)換為66位寬時(shí),當(dāng)累計(jì)的信息位寬和新輸入的數(shù)據(jù)位寬總和小于66時(shí),此時(shí)輸出無(wú)效標(biāo)志位有效,暫停新的信息輸出,等到下一個(gè)時(shí)鐘周期再正常輸入和輸出信息。
使用verilog HDL語(yǔ)言對(duì)上述變速箱的功能進(jìn)行描述,搭建驗(yàn)證平臺(tái),并使用VCS軟件進(jìn)行仿真,仿真示意圖如圖7所示。
圖7 驗(yàn)證平臺(tái)示意圖
仿真結(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í)幾個(gè)時(shí)鐘周期后和該數(shù)據(jù)經(jīng)過(guò)變速箱位寬轉(zhuǎn)變后的66 bit數(shù)據(jù)相比較。仿真波形見(jiàn)圖8。
如圖8所示,仿真分為兩部分:數(shù)據(jù)寬度66 bit到64 bit的轉(zhuǎn)換和64 bit到66 bit的轉(zhuǎn)換。
clk是固定的時(shí)鐘源,其周期8 ns,在每一個(gè)clk時(shí)鐘周期下,傳輸32 bit的數(shù)據(jù)。在gearbox_1中,66 bit的信息由 32 bit的 gbx_data_in和 2 bit的gbx_header_in組成,64 bit的輸出信息由32 bit信號(hào)線gbx_out輸出,gearbox_1中輸出的32 bit信息作為gearbox_2中的輸入,在gearbox_2中經(jīng)過(guò)位寬轉(zhuǎn)換后由gbx_data_out和gbx_header_out輸出。
圖8 仿真波形圖
在gearbox_1中,可以看到計(jì)數(shù)器的值為31時(shí),暫停輸入標(biāo)志位txgearboxready有效,在計(jì)數(shù)器的值為32時(shí),暫停輸入,此時(shí)的輸入保持為上一時(shí)鐘周期的值32’h79f和2’b00,在gearbox_2中,當(dāng)輸出無(wú)效標(biāo)志位rx_data_valid有效時(shí),暫停gbx_data_out的輸出,保持為上一時(shí)鐘周期的值32’h79f,由于輸出的2 bit的gbx_header_out只是在高的32位輸出時(shí)有效,通過(guò)rx_header_valid標(biāo)志位來(lái)控制。
把gearbox_1的66 bit輸入數(shù)據(jù)延時(shí)7個(gè)clk時(shí)鐘周期后和gearbox_2的66 bit輸出數(shù)據(jù)一一比較,在result中equal_32b信號(hào)為高電平,表明這兩個(gè)數(shù)據(jù)完全相同,說(shuō)明變速箱在66 bit位寬轉(zhuǎn)變?yōu)?4 bit位寬、再由64 bit位寬轉(zhuǎn)變?yōu)?6 bit位寬的過(guò)程中正確,沒(méi)有丟失或重復(fù)采樣。
在變速箱電路中,通過(guò)標(biāo)志位控制變速箱兩邊的信息輸入和輸出,可以保持變速箱兩邊的數(shù)據(jù)波特率不變,并且保證在傳輸過(guò)程中沒(méi)有數(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ì) [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—),男,福建長(zhǎng)汀人,畢業(yè)于電子科技大學(xué)自動(dòng)化專(zhuān)業(yè),現(xiàn)在中國(guó)電子科技集團(tuán)公司第58研究所從事科研項(xiàng)目技術(shù)與管理工作。