崔 晶
(天津現(xiàn)代職業(yè)技術(shù)學(xué)院 天津 300350)
隨著通信及計(jì)算機(jī)技術(shù)的發(fā)展,對(duì)大量數(shù)據(jù)進(jìn)行高速和實(shí)時(shí)傳輸?shù)男枨笤絹?lái)越多,傳統(tǒng)的并行傳輸技術(shù)已經(jīng)不能滿足現(xiàn)代通信的需求。因此,高速串行傳輸技術(shù)被越來(lái)越多的通信設(shè)備所采用。高速數(shù)據(jù)傳輸對(duì)包括芯片接口和電路板走線等硬件的要求很高,能滿足高速傳輸需求的專用集成電路不僅價(jià)格昂貴,而且功能單一,靈活性較低,不能滿足用戶多樣化的需求。[1]特別是在SDH通信領(lǐng)域,需要對(duì)系統(tǒng)中的高速信號(hào)分拆、復(fù)用、解復(fù)用,并且對(duì)各種開(kāi)銷進(jìn)行處理和維護(hù)。雖然有相應(yīng)的專用芯片進(jìn)行數(shù)據(jù)處理,但這加大了PCB設(shè)計(jì)的難度,增加了產(chǎn)品成本,一定程度上降低了靈活性。
本文介紹的技術(shù)可以使用 FPGA對(duì) STM-64的高速信號(hào)進(jìn)行處理,完成STM-64的幀同步傳輸為下一級(jí)進(jìn)行各種處理,旨在解決上述技術(shù)中存在的問(wèn)題。
系統(tǒng)硬件主要由3大部分構(gòu)成:
① 10,G光模塊:主要將速率為 10,G的光信號(hào)轉(zhuǎn)換為速率為 10,G的電信號(hào),電信號(hào)的電平規(guī)范為L(zhǎng)VDS,電信號(hào)輸入解復(fù)用芯片;②解復(fù)用芯片:主要完成對(duì)速率為 10,G的高速電信號(hào)的串并變換,將串行信號(hào)轉(zhuǎn)換為16路并行速率為622,Mbps的信號(hào),從數(shù)據(jù)中恢復(fù)出頻率為 622,MHz的同步時(shí)鐘,數(shù)據(jù)與時(shí)鐘一起送入 FPGA;③FPGA:主要完成 16路速率為 622,Mbps并行信號(hào)的接收,并完成 STM-64信號(hào)的幀同步。最終輸出幀同步狀態(tài)指示信號(hào)以及幀頭脈沖信號(hào),完成整個(gè)STM-64幀同步的過(guò)程。
硬件及主要信號(hào)連接情況如圖1所示:
本設(shè)計(jì)中使用的10,G光模塊是Openext公司的單向收10,G光模塊,解復(fù)用芯片是VITESSE公司的VSC8479芯片,F(xiàn)PGA 是 Xilinx公司的XC6,VLX240T。
FPGA設(shè)計(jì)中的主要功能模塊如圖2所示:
圖2 FPGA內(nèi)部功能模塊示意圖Fig.2 FPGA built-in function modules
如圖2所示,系統(tǒng)主要由3個(gè)模塊組成:Receive模塊、Rxd_sft模塊以及 Frame_head模塊。Receive模塊接收解復(fù)用芯片發(fā)送的速率為 622,M 的時(shí)鐘信號(hào)和16路數(shù)據(jù)信號(hào)后,分接速率為155,M的同步時(shí)鐘信號(hào)和 64路數(shù)據(jù)信號(hào),傳輸給 Rxd_sft模塊。Rxd_sft模塊對(duì) 64路數(shù)據(jù)信號(hào)進(jìn)行錯(cuò)位調(diào)整后傳輸給Frame_head模塊。Frame_head模塊對(duì)數(shù)據(jù)進(jìn)行幀頭搜尋,將指示幀同步狀態(tài)信號(hào)、幀頭脈沖以及正位的64,bit STM-64信號(hào)傳輸出去。
1.2.1 Receive模塊設(shè)計(jì)
Receive模塊將速率為622,M的時(shí)鐘信號(hào)和16路數(shù)據(jù)信號(hào),分接為速率為 155,M 的同步時(shí)鐘信號(hào)和64路數(shù)據(jù)信號(hào),需要調(diào)用 FPGA 自帶的ISERDESE1、IODELAY 完成。ISERDESE1可以將1路輸入信號(hào)輸出為原信號(hào)的四分之一頻率。IODELAY可以為輸入信號(hào)提供延時(shí),每個(gè)單位延時(shí)可以為精確的 78,ps,最多 32個(gè)單位 2.5,ns時(shí)延。Receive模塊的連接見(jiàn)圖3。
如圖3所示,利用FPGA的ISERDESE1對(duì)輸入的622,M數(shù)據(jù)和時(shí)鐘進(jìn)行四分頻,利用IODELAY對(duì)輸入時(shí)鐘進(jìn)行延遲??偩€對(duì)齊模塊控制 IODELAY延遲。
圖3 Receive模塊連接圖Fig.3 Connection diagram of Receive Module
因?yàn)榻鈴?fù)用芯片和FPGA之間連線PCB布線已經(jīng)做到了差分線等長(zhǎng),而且解復(fù)用芯片 VSC8479的輸出時(shí)鐘的下降沿與輸出數(shù)據(jù)采樣窗的中心對(duì)齊,所以總線對(duì)齊模塊需要找到VSC8479輸出時(shí)鐘的下降沿,即可穩(wěn)定采樣VSC8479輸出的622,M高速數(shù)據(jù)。
如圖 4所示,總線對(duì)齊模塊在首次采樣后根據(jù)ISERDESE1輸出的Q[3∶0]進(jìn)入3種不同狀態(tài)。
圖4 總線對(duì)齊模塊流程圖Fig.4 Flow diagram of bus aligning module
①如果 Q[3∶0]為全 1,則總線對(duì)齊模塊控制IODELAY增加 1個(gè)單位延時(shí),8個(gè)周期后采樣Q[3∶0]。如果 Q[3∶0]為全 0,則成功找到時(shí)鐘下降沿,完成總線對(duì)齊過(guò)程;如果 Q[3∶0]非全 0,則返回增加延時(shí)狀態(tài),控制IODELAY增加1個(gè)單位延時(shí),8個(gè)周期后再根據(jù) Q[3∶0]做判斷,直到采樣 Q[3∶0]為全0成功找到時(shí)鐘下降沿為止。②如果Q[3∶0]為全0,則總線對(duì)齊模塊控制IODELAY增加1個(gè)單位延時(shí),8個(gè)周期后采樣Q[3∶0]。如果Q[3∶0]為全1,則成功找到時(shí)鐘上升沿;如果Q[3∶0]非全1,則返回增加延時(shí)狀態(tài),控制 IODELAY增加 1個(gè)單位延時(shí),8個(gè)周期后再根據(jù) Q[3∶0]做出判斷,直到找到時(shí)鐘上升沿為止。當(dāng)找到時(shí)鐘上升沿時(shí),總線對(duì)齊模塊控制 IODELAY增加 1個(gè)單位延時(shí),8個(gè)周期后采樣Q[3∶0]。如果 Q[3∶0]為全 0,則成功找到時(shí)鐘下降沿,完成總線對(duì)齊過(guò)程;如果 Q[3∶0]非全 0,則返回增加延時(shí)狀態(tài),控制 IODELAY增加 1個(gè)單位延時(shí),8個(gè)周期后再根據(jù)Q[3∶0]做判斷,直到采樣Q[3∶0]為全0成功找到時(shí)鐘下降沿為止,完成整個(gè)總線對(duì)齊過(guò)程。③如果 Q[3∶0]非全 0或 1,則采樣進(jìn)入非穩(wěn)定狀態(tài)??偩€對(duì)齊模塊控制IODELAY增加1個(gè)單位延時(shí),8個(gè)周期后采樣 Q[3∶0],直到 Q[3∶0]為全 0或全1,進(jìn)入第1或第2種狀態(tài)轉(zhuǎn)移。
1.2.2 Rxd_sft模塊設(shè)計(jì)
在高速串行通信中,沒(méi)有專門用來(lái)標(biāo)示幀頭的定位脈沖,所以解串出來(lái)的并行數(shù)據(jù)一般都是比特錯(cuò)位的字節(jié),需要對(duì)收到的數(shù)據(jù)進(jìn)行整型。Rxd_sft模塊實(shí)現(xiàn)的就是這個(gè)功能。[2]
Rxd_sft模塊通過(guò)一塊容量為 128,bit的移位寄存器(以 64,bit為最小移動(dòng)單位)緩存 155,M 時(shí)鐘連續(xù) 2個(gè)周期傳輸?shù)臄?shù)據(jù)。先到達(dá)時(shí)鐘周期的數(shù)據(jù)按比特進(jìn)行錯(cuò)位,組成新的 64,bit數(shù)據(jù)。新的 64,bit數(shù)據(jù)送入 Frame_head模塊進(jìn)行幀頭搜尋。STM-64的10,G數(shù)據(jù)通過(guò)16路622,M信號(hào)傳輸過(guò)來(lái),因此比特錯(cuò)位有 16種情況,如圖 5所示。如果在第一種比特錯(cuò)位的情況下 Frame_head模塊的幀同步信號(hào)為無(wú)效,則意味著無(wú)法檢測(cè)到幀頭指示字節(jié),就會(huì)按第2種比特錯(cuò)位情況輸出 64,bit的數(shù)據(jù)。以此類推,直到檢測(cè)到幀同步字節(jié)為止。
圖5 移位寄存器比特錯(cuò)位調(diào)整示意圖Fig.5 Adjustment of bit dislocation in shifting register
1.2.3 Frame_head模塊設(shè)計(jì)
Frame_head模塊用來(lái)對(duì)幀頭進(jìn)行判斷,輸出幀頭定位脈沖以及信號(hào)的幀同步狀態(tài)。模塊采用有限狀態(tài)機(jī)完成上述功能,幀同步狀態(tài)按照標(biāo)準(zhǔn)分為失步狀態(tài)、準(zhǔn)校核狀態(tài)、校核狀態(tài)、同步狀態(tài)、保護(hù)狀態(tài) 5個(gè)狀態(tài)。[3]狀態(tài)轉(zhuǎn)移如圖6所示。
圖6 有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖Fig.6 State transmission diagram of FSM
如圖 6所示,狀態(tài)機(jī)進(jìn)入失步狀態(tài),當(dāng)在失步狀態(tài)檢測(cè)到 SDH中的 A1(F6)字節(jié),則進(jìn)入準(zhǔn)校核狀態(tài);準(zhǔn)校核狀態(tài)下,如果檢測(cè)到A1字節(jié),則停留在本狀態(tài),如果檢測(cè)到 A2(28)字節(jié),則進(jìn)入校核狀態(tài),如果檢測(cè)到非 A1或 A2字節(jié),則進(jìn)入失步狀態(tài);校核狀態(tài)下,如果在1幀時(shí)間(0.125,μs)后再次檢測(cè)到A1和A2字節(jié),則進(jìn)入同步狀態(tài),否則進(jìn)入失步狀態(tài)。同步狀態(tài)下,每間隔 1幀時(shí)間如果可以繼續(xù)檢測(cè)到 A1和 A2字節(jié),則停留在同步狀態(tài);否則進(jìn)入保護(hù)狀態(tài)。保護(hù)狀態(tài)下,如果連續(xù) 4幀時(shí)間沒(méi)有檢測(cè)到 A1和 A2字節(jié),則進(jìn)入失步狀態(tài)。如果 4幀時(shí)間以內(nèi)有1次到3次檢測(cè)到 A1和A2字節(jié),則停留在保護(hù)轉(zhuǎn)臺(tái)。如果連續(xù) 4幀時(shí)間均檢測(cè)到 A1和 A2字節(jié),則重新進(jìn)入同步狀態(tài)。
Rxd_sft模塊在進(jìn)入同步狀態(tài)時(shí)輸出幀同步信號(hào)為高電平,在每次檢測(cè)到 A1和 A2字節(jié)時(shí)輸出一個(gè)時(shí)鐘周期寬度的脈沖作為幀頭指示。
經(jīng)過(guò)系統(tǒng)聯(lián)合調(diào)試,基于FPGA的STM-64幀同步技術(shù)可以找到 SDH中 STM-64信號(hào)的幀頭,符合ITU-T Rec G.703以及 ITU-T RecG.783標(biāo)準(zhǔn)。
[1] 韋樂(lè)平. 光同步數(shù)字傳送網(wǎng)[M]. 北京:人民郵電出版社,1998.
[2] ITU-T Rec.Timing characteristics of SDH equipment slave clocks(SEC)[S]. G. 813,2003:83-86.
[3] ITU-T Rec.Physical/electrical characteristics of digital interface[S]. G. 703,1993:35-39.