程 樸 覃慧玲 蒲 亮
(1.華中光電技術(shù)研究所-武漢光電國家研究中心 武漢 430223)(2.武漢船舶通信研究所 武漢 430205)
傳統(tǒng)導(dǎo)航設(shè)備采用RS422 串口、CAN、網(wǎng)口等電纜接口,在通信速率、抗干擾能力、通信距離等方面存在許多缺陷,因此當(dāng)前導(dǎo)航設(shè)備需要集成光纖接口實(shí)現(xiàn)對(duì)外通信功能[1]。本文為解決傳統(tǒng)導(dǎo)航設(shè)備電纜接口的不足之處,提出了一種基于FPGA的多路光纖與串口轉(zhuǎn)換系統(tǒng),采用XC7K325T FPGA 芯片,該芯片集成有16 路GTX 收發(fā)器。GT(Gigabit Transceiver)是Xilinx 系列FPGA 中的一種高速串行接口,根據(jù)通信線速率不同分為GTP、GTR、GTX、GTH、GTZ、GTY 等,可用于實(shí)現(xiàn)光纖通信中的編碼與解碼功能[2]。該系統(tǒng)在不對(duì)現(xiàn)有導(dǎo)航設(shè)備進(jìn)行重新設(shè)計(jì)的條件下,實(shí)現(xiàn)了導(dǎo)航報(bào)文由多路光口到一路RS422 串口的雙向轉(zhuǎn)換[3]。
本文采用的XC7K325T 芯片是Xilinx 推出的Kintex-7 系列FPGA 中的一種,其內(nèi)部集成有16 路GTX 收發(fā)器[4]。Xilinx 系列FPGA 中通常將GTX 收發(fā)器按照Quad 來劃分,一個(gè)Quad 由四個(gè)GTXE2_CHANNEL 原語和一個(gè)GTXE2_COMMON原語組成,如圖1所示。每個(gè)GTXE2_CHANNEL由一個(gè)channel PLL(CPLL)、一個(gè)發(fā)送端,和一個(gè)接收端組成;每個(gè)GTXE2_COMMON 中包含一個(gè)LC-tank pll(QPLL)。只有在應(yīng)用程序中使用QPLL時(shí),才需要實(shí)例化GTXE2_COMMON。GTX 收發(fā)器的發(fā)送端和接收端功能是相互獨(dú)立,都是由Physical Media Attachment(物理媒介適配層PMA)和Physical Coding Sublayer(物理編碼子層PCS)組成[5]。PMA 內(nèi)部集成了串并轉(zhuǎn)換(PISO)、預(yù)加重、接收均衡、時(shí)鐘發(fā)生器和時(shí)鐘恢復(fù)等;PCS 內(nèi)部集成了8b/10b 編解碼、彈性緩沖區(qū)、通道綁定和時(shí)鐘修正等[6]。Xilinx 的GTX 收發(fā)器可極大地減小時(shí)鐘扭曲、信號(hào)衰減和線路噪聲對(duì)接收性能的影響,從而使傳輸速率進(jìn)一步提高,可用于實(shí)現(xiàn)萬兆以太網(wǎng)、PCI-Express、SRIO、SFP等常用接口。
圖1 GTX收發(fā)器
在光纖通信中,線路編碼是必要的,因?yàn)殡姸藱C(jī)輸出的數(shù)字信號(hào)是適合電纜傳輸?shù)碾p極性碼,而光源不能發(fā)射負(fù)脈沖,只能用光脈沖的“有”和“無”來表示二進(jìn)制碼中的“1”和“0"[7]。8B/10B 編碼是1983年由IBM 公司的Al Widmer 和PeterFranaszek所提出的數(shù)據(jù)傳輸編碼標(biāo)準(zhǔn),目前已經(jīng)被廣泛應(yīng)用到高速串行總線,如IEEE1394b、SATA、PCI-Express、Infini-band、FiberChannel、XAUI、RapidIO、USB 3.0等[8]。
本文光纖通信接口采用了8B/10B 編碼,將待發(fā)送的8位數(shù)據(jù)轉(zhuǎn)換成10位代碼組,其目的是保證直流平衡,以及足夠密集的電平轉(zhuǎn)換[9]。8B/10B 編碼方法是把8bit 代碼組合編碼成10bit 代碼,代碼組合包含256 個(gè)數(shù)據(jù)字符編碼和12 個(gè)控制字符編碼,分別記為Dx.y 和Kx.y,如圖2所示。本文采用的控制字符有幀頭K28.1(0x3C)和幀尾K28.4(0x9C)。
圖2 8B/10B編碼方案
本系統(tǒng)采用XC7K325T 芯片,包含RS422 串口收發(fā)器、DDR3內(nèi)存、光纖收發(fā)器、晶振等,如圖3所示。150M 差分晶振和156.25M 差分晶振分別輸入到GTX 模塊的兩個(gè)專用外部參考時(shí)鐘引腳對(duì),結(jié)合CPLL 和QPLL 生成不同的收發(fā)時(shí)鐘[10]。50M 晶振輸入到FPGA 的全局時(shí)鐘引腳,作為FPGA 邏輯部分的時(shí)鐘源。DDR3 內(nèi)存用于緩存收發(fā)數(shù)據(jù),RS422 串口收發(fā)器將RS422 電平信號(hào)轉(zhuǎn)換為TTL電平信號(hào),光纖收發(fā)器將CML 電平信號(hào)轉(zhuǎn)換為光信號(hào)[11]。
圖3 系統(tǒng)硬件結(jié)構(gòu)框圖
本系統(tǒng)采用Verilog HDL 編碼進(jìn)行邏輯設(shè)計(jì),系統(tǒng)主要包括串口接收到光口發(fā)送、光口接收到串口發(fā)送兩條路徑,這兩條路徑相互獨(dú)立,如圖4所示。
首先,串口接收模塊對(duì)串口發(fā)送過來的數(shù)據(jù)進(jìn)行解碼,然后同時(shí)發(fā)送到3 個(gè)接收FIFO 進(jìn)行跨時(shí)鐘域數(shù)據(jù)傳輸,再由BRAM 進(jìn)行緩存,當(dāng)一幀數(shù)據(jù)接收完畢后再由光口編碼模塊將BRAM 中緩存的數(shù)據(jù)加上幀頭幀尾和校驗(yàn)進(jìn)行編碼,并通過GTX模塊進(jìn)行8B/10B編碼進(jìn)行發(fā)送[12]。
同樣,光口接收到的數(shù)據(jù)由GTX 模塊進(jìn)行時(shí)鐘恢復(fù)和8B/10B 解碼,光口解碼模塊識(shí)別到幀頭后將數(shù)據(jù)依次緩存到BRAM中并進(jìn)行校驗(yàn),當(dāng)一幀數(shù)據(jù)接收完畢后發(fā)送到輸出FIFO 進(jìn)行跨時(shí)鐘域數(shù)據(jù)傳輸,然后經(jīng)過多路仲裁后輸出到發(fā)送FIFO,再由串口發(fā)送模塊將發(fā)送FIFO 中的數(shù)據(jù)依次編碼發(fā)送[13]。
本系統(tǒng)的關(guān)鍵設(shè)計(jì)之一是串口接收方案,由于串口通信速率遠(yuǎn)低于光口速率,因此需要對(duì)串口數(shù)據(jù)的幀頭與幀尾進(jìn)行識(shí)別,并將串口接收的數(shù)據(jù)緩存起來,直到接收完一幀數(shù)據(jù)再發(fā)送出去[14]。
由于串口沒有固定的幀頭和幀尾字符,因此本文采用空閑幀的方法判斷串口的幀尾,即當(dāng)串口接收完一個(gè)字節(jié)后,若在一幀(10 個(gè)波特周期)的時(shí)間內(nèi)沒有接收到起始位(串口保持高電平),則認(rèn)為接收到一個(gè)空閑幀,如圖5所示。
圖4 中接收FIFO 位寬設(shè)置為10 位,將串口8位數(shù)據(jù)添加兩位用于表示幀頭幀尾的標(biāo)志位,當(dāng)串口由空閑狀態(tài)接收到第一個(gè)字節(jié)時(shí),將該數(shù)據(jù)標(biāo)記為幀頭,當(dāng)串口接收到空閑幀時(shí),向接收FIFO 插入一個(gè)單獨(dú)的幀尾,這樣就能保證光口的一幀報(bào)文中的數(shù)據(jù)是完整的[15]。接收FIFO 的實(shí)例化代碼如下:
圖4 系統(tǒng)軟件結(jié)構(gòu)框圖
圖5 串口接收波形
本系統(tǒng)的另一關(guān)鍵設(shè)計(jì)之一是多路仲裁器,保證了高速的多路光口數(shù)據(jù)向低速的串口發(fā)送時(shí)不會(huì)出現(xiàn)混亂或丟失[16],當(dāng)3 路光口在同一時(shí)刻接收到報(bào)文時(shí),多路仲裁器會(huì)優(yōu)先使能光口1 向串口輸出,其它光口的數(shù)據(jù)被緩存,當(dāng)光口1 的一幀報(bào)文發(fā)送完成時(shí),多路仲裁器被釋放,然后再發(fā)送光口2 緩存的數(shù)據(jù),以此類推。多路仲裁器的Verilog 編碼如下:
本系統(tǒng)在某型導(dǎo)航設(shè)備中進(jìn)行了試驗(yàn)驗(yàn)證,測試結(jié)果如表1所示,該系統(tǒng)可實(shí)現(xiàn)3 路光纖與串口的雙向轉(zhuǎn)換,其中光纖接口可工作在4.8Gbps 或10Gbps 下,3 路光纖同時(shí)接收的報(bào)文可以通過串口依次發(fā)送不出現(xiàn)混亂或丟失,能夠滿足導(dǎo)航設(shè)備的光纖通信需求。
表1 測試結(jié)果
本文為解決傳統(tǒng)導(dǎo)航設(shè)備采用電纜接口在數(shù)據(jù)傳輸上的不足之處,提出了一種基于FPGA的多路光纖與串口轉(zhuǎn)換系統(tǒng),模塊化的設(shè)計(jì)使得該系統(tǒng)可在不改變現(xiàn)有導(dǎo)航設(shè)備的條件下,將導(dǎo)航設(shè)備串口輸出的導(dǎo)航報(bào)文轉(zhuǎn)換為多路光口數(shù)據(jù)報(bào)文,實(shí)現(xiàn)導(dǎo)航設(shè)備光口對(duì)外通信功能。通過試驗(yàn)驗(yàn)證,本系統(tǒng)工作可靠,體積小、功耗低,滿足導(dǎo)航設(shè)備接口多樣化需求,通過光纖通信可有效提高導(dǎo)航設(shè)備的通信速率、抗干擾能力和通信距離。