黃安君,羅 旸,雷淑嵐
(中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)
隨著串行通訊速率向10 Gbps甚至100 Gbps發(fā)展,傳統(tǒng)的編解碼方式如8 b/10 b編碼,由于其效率較低,存在20%的帶寬浪費,如在高速系統(tǒng)中繼續(xù)采用這樣的編碼方式,將極大地浪費信道的帶寬,降低數(shù)據(jù)的傳輸效率。因此在高速系統(tǒng)中,更多的使用高效率的編碼方式如64 B/66 B, 64 B/67 B[1]。在10G Base-R以太網(wǎng)物理編碼層協(xié)議中就規(guī)定使用64 B/66 B的編碼方式[2],如圖1所示。
圖1 10 Gbps以太網(wǎng)收發(fā)器結(jié)構(gòu)
但現(xiàn)在的數(shù)字系統(tǒng)總線位寬大多都是1,2,4,8等2的n次方字節(jié),例如在10G Base-R協(xié)議中,經(jīng)過64 B/66 B編碼后的數(shù)據(jù)在發(fā)送到Serdes模塊之前,一般要進(jìn)行位寬由多到少的轉(zhuǎn)換,因為在10G Base-R的物理層收發(fā)器設(shè)計過程中,Serdes的并行端數(shù)據(jù)輸入的位寬數(shù)一般不是66位,且一般都不超過20位,如8位、10位、16位等。同樣數(shù)據(jù)從Serdes模塊發(fā)送到PCS模塊時,也需要進(jìn)行數(shù)據(jù)位寬由少到多的轉(zhuǎn)變。變速箱電路就是實現(xiàn)任意數(shù)據(jù)位寬之間的轉(zhuǎn)換,來保證芯片內(nèi)各模塊之間的無縫連接與正常的數(shù)據(jù)傳輸功能[3~4]。如果根據(jù)變速箱兩側(cè)的數(shù)據(jù)輸出和輸入的數(shù)據(jù)率相等的原理,利用兩個頻率的時鐘對數(shù)據(jù)位寬直接進(jìn)行轉(zhuǎn)換,而不對兩側(cè)時鐘或者數(shù)據(jù)進(jìn)行任何的控制或者處理,則會出現(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和第7時鐘周期,從而造成輸出數(shù)據(jù)的重復(fù)。
圖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ù)漏采
針對上述的問題,可以通過借用時鐘周期的辦法解決:在數(shù)據(jù)位寬由多向少轉(zhuǎn)變的過程中,通過在某個時鐘周期暫停給變速箱輸入數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸出;在數(shù)據(jù)位寬由少向多轉(zhuǎn)變的過程中,通過在某個時鐘周期暫停給變速箱輸出數(shù)據(jù),但不停止變速箱的數(shù)據(jù)輸入。但是這種辦法會減少系統(tǒng)數(shù)據(jù)傳輸?shù)男?,尤其是在輸入?shù)據(jù)位寬和輸出數(shù)據(jù)位寬之間差距較大的情況下,系統(tǒng)的整體性能會有極大的下降,只適合FPGA設(shè)計,因為FPGA用戶可以自己來設(shè)計控制邏輯。而在一般的ASIC或者SOC設(shè)計中,這種顯著降低系統(tǒng)傳輸效率的方法是不能滿足系統(tǒng)要求的[5~6]。本文提出一種新的不均等時鐘周期的方法,可以在不改變數(shù)據(jù)傳輸速率的基礎(chǔ)上,很好地解決上述問題。
在通信系統(tǒng)中,變速箱電路主要實現(xiàn)不同數(shù)據(jù)位寬之間的轉(zhuǎn)換,變速箱兩端的數(shù)據(jù)位寬和時鐘頻率在某一實際電路中是確定值。在本設(shè)計中,為了使數(shù)據(jù)傳輸效率最大化,變速箱兩端的比特率相同,由此可以確定變速箱兩端的位寬值和時鐘頻率之間的比例關(guān)系。為方便闡述,定義變速箱輸入端時鐘周期為Ta,輸入端位寬為m,輸出端時鐘周期為Tb,輸出端位寬為n,變速箱兩端的比特率相同,則存在:
在實際電路中,輸入時鐘和輸出時鐘都是由系統(tǒng)中的固定時鐘源產(chǎn)生,時鐘源的頻率是固定的,變速箱兩端的位寬m、n的值根據(jù)具體電路的值確定,Ta和Tb的值也要根據(jù)m、n的值做相應(yīng)的調(diào)整。電路中的時鐘源周期定義為T,用于生成輸入時鐘和輸出時鐘。在本設(shè)計中,由周期為T的時鐘源先產(chǎn)生兩個基本的時鐘周期分別為T1和T2,其中T1和T2只相差一個時鐘源周期:
i為正整數(shù);再用T1和T2組成所需要時鐘周期Ta或Tb,具體電路中m、n的關(guān)系可以定義為m>n和m 當(dāng)m>n時,輸入時鐘的周期值Ta大于輸出時鐘周期Tb,則輸出時鐘周期Tb=T,輸入時鐘Ta、T1和T2的關(guān)系為: T1和T2組合成輸入時鐘的周期: j和k為正整數(shù)??梢钥闯龃藭r的輸入時鐘的每個時鐘周期不完全相等,在一定的時鐘周期數(shù)下,其平均周期為Ta。在每個T1或T2時鐘周期都輸入m位的數(shù)據(jù),在每一個T時鐘周期輸出n位的數(shù)據(jù)。當(dāng)m T1和T2組合成輸出時鐘的周期: j和k為正整數(shù)。可以看出此時輸出時鐘的每個時鐘周期不完全相等,在一定的時鐘周期數(shù)下,其平均周期為Tb。在每一個T時鐘周期輸入m位的數(shù)據(jù),在每個T1或T2時鐘周期都輸出n位的數(shù)據(jù)。 本變速箱設(shè)計的特點是在數(shù)據(jù)轉(zhuǎn)換中,生成不均等的時鐘周期的變速箱時鐘,在保證傳輸過程中數(shù)據(jù)比特率不變的情況下,解決數(shù)據(jù)的丟失或重復(fù)傳輸?shù)膯栴}。 變速箱數(shù)據(jù)傳輸?shù)倪^程與其時鐘生成過程是密切相關(guān)的,也需要分成m>n和m 當(dāng)m>n時,在數(shù)據(jù)的輸入端,每一個T1或T2時鐘周期,變速箱的輸入端都輸入m位的數(shù)據(jù);在數(shù)據(jù)的輸出端,在輸入時鐘周期為T1的時間內(nèi),輸出i個n位數(shù)據(jù),在輸入時鐘周期為T2的時間內(nèi),輸出i+1個n位數(shù)據(jù),在j+k個時鐘周期內(nèi),輸入端輸入了(j+k)×m位的數(shù)據(jù),在輸出端輸出[j×i+k×(i+1)]×n位的數(shù)據(jù),由于變速箱兩端的比特率相等: 化簡可以得到: 則變速箱完成了(j+k)個m位數(shù)據(jù)到[j×i+k×(i+1)]個n位數(shù)據(jù)的位寬轉(zhuǎn)變。 以此類推當(dāng)m 化簡可以得到: 則變速箱完成了[j×i+k×(i+1)]個m位數(shù)據(jù)到(j+k)個n位數(shù)據(jù)的位寬轉(zhuǎn)變。 接下來具體說明變速箱的實現(xiàn)過程,以10G BASE-R物理層為例,Serdes的位寬要求為8位,PCS采用64 B/66 B的編解碼方式,其數(shù)據(jù)波特率為10.312 5 Gbps,在與Serdes模塊進(jìn)行數(shù)據(jù)傳輸過程中,需要通過變速箱模塊實現(xiàn)66位到8位或者8位到66位兩種位寬的轉(zhuǎn)換。 輸入數(shù)據(jù)的位寬m為66位,輸出數(shù)據(jù)的位寬n為8位。 變速箱的輸入數(shù)據(jù)所用時鐘A的頻率: 輸出數(shù)據(jù)所用時鐘B的頻率: 其中,T表示為每一位數(shù)據(jù)傳輸?shù)闹芷?,T=0.096 97 ns。 變速箱時鐘源的周期定義為8 T,此8 T時鐘由Serdes內(nèi)置的PLL產(chǎn)生,則變速箱輸入數(shù)據(jù)的時鐘周期為66 T,變速箱輸出數(shù)據(jù)的時鐘周期為8 T。由時鐘周期為8 T的時鐘源先產(chǎn)生兩個基本的時鐘單 元:8×8 T 和 9×8 T,并 且 8×8 T<66 T<9×8 T,8×8 T和9×8 T按一定的比例關(guān)系組合成66 T的時鐘周期,根據(jù) [(64 T)×x+(72 T)×y]/(x+y)=66 T,計算得出x/y=3/1;也就是4個66 T的時鐘周期可以重組為 {8×8 T,8×8 T,8×8 T,9×8 T}。在數(shù)據(jù)位寬轉(zhuǎn)換過程中,輸入時鐘周期為8×8 T或9×8 T,輸出時鐘周期都為8 T,數(shù)據(jù)具體傳輸過程如圖4所示。 在第一個8×8 T輸入時鐘周期,變速箱輸入66位數(shù)據(jù),變速箱輸出端移位8次,輸出8個8位的數(shù)據(jù),保留2個位的數(shù)據(jù)在緩沖器的低位。在第二個8×8 T輸入時鐘周期,變速箱輸入66位數(shù)據(jù)作為緩沖器高位,變速箱輸出端移位8次,輸出8個8位的數(shù)據(jù),保留4個位的數(shù)據(jù)在緩沖器的低位;在第三個8×8 T輸入時鐘周期,變速箱輸入66位數(shù)據(jù)作為緩沖器高位,變速箱輸出端移位8次,輸出8個8位的數(shù)據(jù),保留6個位的數(shù)據(jù)在緩沖器的低位。在第一個9×8 T輸入時鐘周期,變速箱輸入66位數(shù)據(jù)作為緩沖器高位,變速箱輸出端移位9次,輸出8個8位的數(shù)據(jù),緩沖器中沒有保留的數(shù)據(jù),完成4個66位數(shù)據(jù)向33個8位數(shù)據(jù)位寬轉(zhuǎn)變過程。 圖4 66位位寬向8位位寬轉(zhuǎn)換 輸入數(shù)據(jù)的位寬m為8位,輸出數(shù)據(jù)的位寬n為66位。變速箱的輸入數(shù)據(jù)所用時鐘A的頻率a=1/(8 T)= 1.289 GHz,輸出數(shù)據(jù)所用時鐘B的頻率b=1/(66 T)=156.25 MHz,其中T表示為每一位數(shù)據(jù)傳輸?shù)闹芷冢琓=0.096 97 ns。變速箱時鐘源的周期定義為8 T,此8 T時鐘由Serdes內(nèi)置的PLL產(chǎn)生,則變速箱輸入數(shù)據(jù)的時鐘周期為8 T,變速箱輸出數(shù)據(jù)的時鐘周期為66 T。 如上所述,66 T的時鐘周期可以重組為{9×8 T,8×8 T,8×8 T,8×8 T}。在數(shù)據(jù)位寬轉(zhuǎn)換過程中,輸入時鐘周期都為8 T,輸出時鐘周期為8×8 T或9×8 T,數(shù)據(jù)具體傳輸過程如圖5所示。在第一個9×8 T輸入時鐘周期,變速箱輸入9個8位數(shù)據(jù)進(jìn)緩沖器,變速箱輸出緩沖器的低66位作為輸出數(shù)據(jù),保留6個位的數(shù)據(jù)在緩沖器的低位。在第一個8×8 T輸入時鐘周期,變速箱輸入8個8位數(shù)據(jù)作為緩沖器高位,變速箱輸出緩沖器的低66位作為輸出數(shù)據(jù),保留4個位的數(shù)據(jù)在緩沖器的低位。在第二個8×8 T輸入時鐘周期,變速箱輸入8個8位數(shù)據(jù)作為緩沖器高位,變速箱輸出緩沖器的低66位作為輸出數(shù)據(jù),保留2個位的數(shù)據(jù)在緩沖器的低位。在第三個8×8 T輸入時鐘周期,變速箱輸入8個8位數(shù)據(jù)作為緩沖器高位,變速箱輸出緩沖器的低66位作為輸出數(shù)據(jù),緩沖器中沒有保留的數(shù)據(jù),完成33個8位數(shù)據(jù)向4個66位數(shù)據(jù)位寬轉(zhuǎn)變過程。 圖5 8位位寬向66位位寬轉(zhuǎn)換 使用verilog HDL語言對上述變速箱的功能進(jìn)行描述,搭建驗證平臺,并使用VCS軟件進(jìn)行仿真,仿真示意圖如圖6所示。 圖6 驗證平臺示意圖 仿真結(jié)構(gòu)圖如圖6所示,pattern_gen模塊產(chǎn)生66位的數(shù)據(jù),gearbox_1和gearbox_2是例化本變速箱模塊,其中變速箱gearbox_1模塊的輸入數(shù)據(jù)位寬為66位,輸出數(shù)據(jù)位寬為8位,變速箱gearbox_2模塊的輸入數(shù)據(jù)位寬為8位,輸出數(shù)據(jù)位寬為66位,在pattern_chk模塊中把pattern_gen模塊產(chǎn)生66位數(shù)據(jù)延時幾個時鐘周期后和該數(shù)據(jù)經(jīng)過變速箱位寬轉(zhuǎn)變后的66位數(shù)據(jù)相比較。仿真的波形如圖7所示,仿真分為兩部分:數(shù)據(jù)寬度66位到8位的轉(zhuǎn)換和8位到66位的轉(zhuǎn)換。 clk8t是固定的時鐘源,其周期為0.776 ns,在每一個clk8t時鐘周期下傳輸8位的數(shù)據(jù)。clk66_out1是66位轉(zhuǎn)變?yōu)?位位寬組合后的輸入時鐘,其平均時鐘周期為6.402 ns,是由一個6.984 ns(9個clk8t時鐘周期)和3個6.208 ns(8個clk8t時鐘周期)組合而成。在gearbox_1中,在每個6.208 ns時鐘周期下,輸入66位的數(shù)據(jù),輸出8個8位數(shù)據(jù)。在每個6.984 ns時鐘周期下,輸入66位的數(shù)據(jù),輸出9個8位數(shù)據(jù)。gearbox_1中輸出的8 位數(shù)據(jù)作為gearbox_2中輸入,clk66_out2是8位轉(zhuǎn)變?yōu)?6位位寬組合后的輸出時鐘,其平均時鐘周期也為6.402 ns,同樣是由一個6.984 ns(9個clk8t時鐘周期)和3個6.208 ns(8個clk8t時鐘周期)組合而成。在gearbox_2中,在9個clk_8t時鐘周期下,輸入9個8位數(shù)據(jù),在clk66_out2的每個6.984 ns時鐘周期下輸出66位的數(shù)據(jù),在8個clk_8t時鐘周期下,輸入8個8位數(shù)據(jù),在clk66_out2的每個6.208 ns時鐘周期下輸出66位的數(shù)據(jù)。 把gearbox_1的66位輸入數(shù)據(jù)延時4個clk66_out1時鐘周期后和gearbox_2的66位輸出數(shù)據(jù)一一比較,result信號為高電平,表明這兩個數(shù)據(jù)完全相同,說明變速箱在66位位寬轉(zhuǎn)變?yōu)?位位寬,再由8位位寬轉(zhuǎn)變?yōu)?6位位寬過程正確,沒有丟失或重復(fù)采樣。 圖7 仿真波形圖 在變速箱電路中,通過固定時鐘源產(chǎn)生的不均等時鐘周期的變速箱輸入輸出時鐘,可以保持變速箱兩邊的數(shù)據(jù)傳輸速率不變,并且保證在傳輸過程中沒有數(shù)據(jù)的丟失或重復(fù)采樣,可以用于高速的串行通信系統(tǒng)中。 [1] Zhou Qinglun, Li Chunyan, Wang Yong. Hardware Implementation of 64 B/66 B Encoder/Decoder for 10-Gigabit Ethernet [Z]. [2] IEEE Std 802.3ae-2002 [S/OL]. New Jersey: IEEE, 2002[2002-8-30]. http://standards.ieee.org. [3] S Sidiropoulos, N Acharya, P Chau, J Dao, A Feldman, H J Liaw, M Loinaz, R S Narayanaswami, C Portmann, S Rabii, A Salleh, S Sheth, L Thon, K Vleugels, P Yue, D Stark. An 800 mW 10 Gb ethernet transceiver in 0.13 μm CMOS [A]. in IEEE ISSCC Dig. Tech.Papers, 2004. 168-169. [4] H R Lee, M S Hwang, B J Lee, Y D Kim, D Oh, J Kim, S H Lee, D K Jeong, W Kim. A fully integrated 0.13 μm CMOS 10 Gb Ethernet transceiver with XAUI interface[A]. in IEEE ISSCC Dig. Tech. Papers, 2004. 170-171. [5] Virtex-II Pro Platform FPGA User Guide [EB/OL]. San Jose: Xilinx, 2005[2005-3-23]. http://www.xilinx.com. [6] Yongsam Moon, Member, IEEE, Sang-Hyun Lee, Daeyun Shim. A Divide-by-16.5 Circuit for 10-Gb Ethernet Transceiver in 0.13 μm CMOS [Z]. 1175-1179.3 不均等時鐘周期變速箱的實現(xiàn)
3.1 數(shù)據(jù)位寬由多向少轉(zhuǎn)變
3.2 數(shù)據(jù)位寬由少向多轉(zhuǎn)變
4 變速箱的仿真與性能分析
5 小結(jié)