摘要:介紹了一種光纖收發(fā)器芯片中基于現(xiàn)場可編程邏輯門陣列(field programmable gate array,F(xiàn)PGA)的TS-1000 協(xié)議處理器的設(shè)計與實(shí)現(xiàn)。首先,介紹了TS-1000 協(xié)議的幀結(jié)構(gòu)和工作原理;其次,采用自頂向下的方法對TS-1000 協(xié)議處理器進(jìn)行總體設(shè)計與模塊劃分,同時使用Verilog 硬件描述語言完成各模塊的電路設(shè)計;最后,對相應(yīng)模塊進(jìn)行仿真并且采用NCVerilog 工具和XC3S500E-4PQ208 芯片進(jìn)行FPGA 驗(yàn)證。驗(yàn)證結(jié)果顯示,基于FPGA 的TS-1000 協(xié)議處理器能夠?qū)崿F(xiàn)數(shù)據(jù)轉(zhuǎn)換、管理幀處理等功能。
關(guān)鍵詞:TS-1000 協(xié)議;網(wǎng)絡(luò)管理;環(huán)回測試;現(xiàn)場可編程邏輯門陣列
中圖分類號:TN79+1;TP391.4 文獻(xiàn)標(biāo)識碼:A
0 引言
隨著光纖通信技術(shù)的快速發(fā)展,用戶逐漸考慮用“光纖到戶”和“光纖到桌面”來代替?zhèn)鹘y(tǒng)的網(wǎng)絡(luò)布線方式。在光纖通信中,光纖收發(fā)器是一種將短距離電信號和長距離光信號進(jìn)行互換的以太網(wǎng)傳輸媒體轉(zhuǎn)換單元。鑒于通信業(yè)務(wù)量持續(xù)攀升,組網(wǎng)復(fù)雜度也日益增加,為確保網(wǎng)絡(luò)設(shè)備穩(wěn)定運(yùn)行,對網(wǎng)絡(luò)管理功能的需求變得愈發(fā)迫切。
TS-1000 協(xié)議是日本為推進(jìn)其光纖入戶(fiberto the home,F(xiàn)TTH) 戰(zhàn)略而制定的標(biāo)準(zhǔn)協(xié)議[1]。TS-1000 協(xié)議是一種用于100 Mbit/s 單模光纖雙向光口的通信協(xié)議,使用該協(xié)議可以開展網(wǎng)絡(luò)管理和環(huán)回測試工作,從而實(shí)現(xiàn)對以太網(wǎng)連接設(shè)備的狀態(tài)監(jiān)測和遠(yuǎn)程控制。
1 TS-1000協(xié)議概述
1.1 TS-1000 協(xié)議幀結(jié)構(gòu)
TS-1000 協(xié)議的管理幀主要有5 個字段,分別為F、C、S、M、E。其中,F(xiàn) 字段為管理幀的前導(dǎo)碼,在幀檢測中負(fù)責(zé)定位幀頭;C 字段為控制信息,用于傳遞管理幀的各種命令;S 字段為狀態(tài)信息,用于報告設(shè)備的當(dāng)前狀態(tài);M 字段為用戶碼和模塊編號信息;E 字段為管理幀的校驗(yàn)值,通常采用CRC-8 校驗(yàn)算法進(jìn)行計算。圖1 展示了TS-1000協(xié)議在介質(zhì)無關(guān)接口(media independent interface,MII)環(huán)境下使用的管理幀格式。表1 為管理幀各比特的功能說明。
1.2 TS-1000 協(xié)議工作原理
在光纖通信網(wǎng)中,為了便于網(wǎng)絡(luò)管理,通信設(shè)備被劃分為中心端和終端。TS-1000 協(xié)議定義了多種類型的管理幀,中心端設(shè)備利用這些管理幀獲取終端的設(shè)備狀態(tài),也可以實(shí)現(xiàn)對終端設(shè)備的環(huán)回檢測。
(1)狀態(tài)監(jiān)測功能。當(dāng)中心端設(shè)備想獲取終端設(shè)備的狀態(tài)時,它會向終端發(fā)送請求終端狀態(tài)的管理幀(C15 ~ C0=000000000100110);終端接收到該狀態(tài)請求幀后,會將其狀態(tài)信息放在S 字段,然后通過狀態(tài)應(yīng)答幀(C15 ~ C0=000000000101100)將狀態(tài)信息發(fā)送至中心端。另外,當(dāng)終端狀態(tài)發(fā)生變化時,它會向中心端自動發(fā)送狀態(tài)指示幀(C15 ~ C0=0000001000001000),以通知中心端自身的相關(guān)變化。
(2)環(huán)回檢測功能。當(dāng)中心端對終端進(jìn)行環(huán)回檢測時,其檢測過程如圖2 所示。
首先,由中心端發(fā)出環(huán)回檢測開始的請求管理幀(C15 ~ C0=0000000100001010), 并啟動T1 定時器。終端接收到中心端發(fā)送的開始請求管理幀后,進(jìn)入環(huán)回工作狀態(tài),此時啟動T2 定時器,并向中心端發(fā)送開始環(huán)回請求的應(yīng)答幀(C15 ~ C0=0000000100001100)。T1 和T2 是用于在測試過程中發(fā)生異常時強(qiáng)制退出環(huán)回測試的超時計數(shù)器。正常情況下,中心端在收到終端的開始應(yīng)答管理幀后,就會發(fā)送用于環(huán)回測試的測試幀。在所有測試幀發(fā)送完畢后,如果所有測試幀均被正確環(huán)回,中心端將報告環(huán)回測試結(jié)果正確;如果檢測出環(huán)回測試幀存在錯誤,中心端則報告環(huán)回測試結(jié)果錯誤。然后,中心端會發(fā)送結(jié)束環(huán)回檢測的請求幀(C15 ~ C0=0000000000000110), 終端收到該請求幀后,將關(guān)閉T2 定時器,同時退出環(huán)回模式,并向中心端發(fā)送結(jié)束環(huán)回檢測的應(yīng)答幀(C15 ~ C0=0000000000001100)。中心端收到應(yīng)答幀后,將關(guān)閉T1 定時器,至此環(huán)回檢測過程結(jié)束。
2 TS-1000協(xié)議處理器的總體設(shè)計
在光纖收發(fā)器的芯片中實(shí)現(xiàn)TS-1000 協(xié)議的功能,需要根據(jù)芯片的功能定義和應(yīng)用情況制定具體方案。根據(jù)系統(tǒng)需求,TS-1000 協(xié)議處理器能完成中心端或終端設(shè)備各種TS-1000 管理幀的發(fā)送和接收工作。其還能響應(yīng)中心端的請求,及時獲取并報告終端狀態(tài)。此外,處理器還需要具備自動環(huán)回測試功能和軟件環(huán)回測試功能。在自動環(huán)回測試中,當(dāng)芯片管腳AUTO_TEST 上有一個0→1 的跳變時,TS-1000 協(xié)議處理器能夠根據(jù)環(huán)回測試流程自動進(jìn)行各種管理幀與測試幀的發(fā)送和接收。當(dāng)進(jìn)行軟件環(huán)回測試時,外部的微控制單元(microcontrollerunit,MCU)通過控制寄存器來觸發(fā)各種管理幀的發(fā)送和接收。自動環(huán)回測試結(jié)果會保存在內(nèi)部寄存器中,或通過芯片管腳連接的發(fā)光二極管(lightemitting diode,LED)指示燈進(jìn)行指示。
本文采用“自頂向下”的設(shè)計思路,使用圖形設(shè)計工具由上而下地進(jìn)行模塊設(shè)計和信號定義,并將整個設(shè)計劃分為發(fā)送模塊(TS-1000_TRAN 模塊) 和接收模塊(TS-1000_RECV 模塊), 再根據(jù)具體功能對這兩個模塊的設(shè)計進(jìn)行細(xì)化。底層電路則采用業(yè)內(nèi)流行的Verilog 硬件描述語言進(jìn)行設(shè)計[2-3]。
2.1 TS-1000_TRAN 模塊
TS-1000_TRAN 模塊負(fù)責(zé)發(fā)送不同類型的TS-1000 幀,根據(jù)具體功能將其進(jìn)一步劃分為3 個模塊:TS1K_AUTO_TBPCK_GEN 模塊、TS1K_PCK_GEN模塊和TRAN_PCK_SEL 模塊。
TS1K_AUTO_TBPCK_GEN 模塊負(fù)責(zé)生成硬件自動環(huán)回測試所需的測試數(shù)據(jù);TS1K_PCK_GEN 模塊則負(fù)責(zé)生成狀態(tài)指示幀、狀態(tài)請求與應(yīng)答幀、環(huán)回開始與結(jié)束請求幀及其應(yīng)答幀,以及讀/ 寫遠(yuǎn)端寄存器的擴(kuò)展幀。TRAN_PCK_SEL 模塊具備TS-1000 幀的發(fā)送選擇功能,負(fù)責(zé)發(fā)送的數(shù)據(jù)主要來自TS1K_AUTO_TBPCK_GEN 模塊或TS1K_PCK_GEN 模塊。TS-1000_TRAN 模塊電路結(jié)構(gòu)如圖3 所示。
2.2 TS-1000_RECV 模塊
TS-1000_RECV 模塊負(fù)責(zé)接收不同類型的TS-1000 幀,根據(jù)具體功能可將其進(jìn)一步劃分為TS1K_AUTO_TBPCK_CHK 和TS1K_PCK_RECV 兩個模塊。TS-1000_RECV 模塊電路結(jié)構(gòu)如圖4 所示。
TS1K_AUTO_TBPCK_CHK 模塊具備TS-1000自動環(huán)回測試包的檢測功能;S1K_PCK_RECV 模塊則負(fù)責(zé)接收狀態(tài)請求與應(yīng)答幀、環(huán)回開始與結(jié)束請求幀及其應(yīng)答幀,以及讀/ 寫遠(yuǎn)端寄存器的擴(kuò)展幀。
3 模塊仿真與FPGA驗(yàn)證
3.1 模塊仿真
發(fā)送模塊接收到各種控制信號后,將生成并發(fā)送TS-1000 協(xié)議定義的管理幀或測試幀。接收模塊會對接收的管理幀進(jìn)行檢測,生成各種幀類型的指示,同時將管理幀的所有字段以及狀態(tài)信息進(jìn)行鎖存;同時,該模塊也會對接收的環(huán)回測試幀進(jìn)行檢測,并輸出測試結(jié)果。核心模塊設(shè)計如下。
3.1.1 TS1K_PCK_GEN 模塊
當(dāng)管腳信號AUTO_SEND=1 或寄存器控制信號mg_auto_tx_mf_en=1 時,在終端模式下,接收光信號出現(xiàn)失效或恢復(fù)、MC failer 故障發(fā)生或恢復(fù)、以太網(wǎng)連接成功或失敗,以及終端掉電事件均會觸發(fā)TS-1000 的狀態(tài)指示幀,該幀會將相應(yīng)的狀態(tài)信息通過光纖發(fā)送至中心端。 此時,中心端可以通過配置寄存器來生成管理幀,進(jìn)而獲取終端的工作狀態(tài);而終端會通過狀態(tài)應(yīng)答幀將自身狀態(tài)發(fā)送回中心端。
當(dāng)AUTO_TEST 管腳有0→1 的跳變, 或在MCU 的控制下會觸發(fā)環(huán)回測試開始請求幀。當(dāng)終端接收到環(huán)回開始請求的管理幀后,生成回復(fù)此請求的應(yīng)答幀并發(fā)送給相應(yīng)的端口。當(dāng)本地環(huán)回測試結(jié)束后,如果是自動環(huán)回測試,則由電路自動發(fā)送表示環(huán)回測試結(jié)束的幀;如果是MCU 控制下的環(huán)回測試,軟件配置寄存器會在中心端觸發(fā)環(huán)回測試結(jié)束幀。環(huán)回測試開始請求幀的仿真波形如圖5 所示。
3.1.2 TS1K_PCK_RECV 模塊
該模塊負(fù)責(zé)各種類型TS-1000 管理幀的接收。當(dāng)該模塊收到TS-1000 管理幀后會出現(xiàn)以下情況:①若檢測到管理幀的C1=0、C2 ~ C3=01、C8 ~ C9=01, 則說明發(fā)送端為終端, 則根據(jù)該管理幀的S[15:0] 字段將本地狀態(tài)寄存器的相應(yīng)比特更新。② 若檢測到管理幀的C1=1、C2 ~ C3=10、C8 ~ C15=10000000 時, 則說明發(fā)送端為中心端,并且要求接收端開始進(jìn)行環(huán)回測試。③若檢測到管理幀的C1=0、C2 ~ C3=11、C8 ~ C15=10000000 時,則說明本地為中心端并且接收到終端發(fā)送的開始環(huán)回應(yīng)答幀,此時將環(huán)回請求信號tp_loop_req 的值設(shè)置為1。④若檢測到管理幀的C1=1、C2 ~ C3=10、C8 ~ C15=00000000時,則說明接收到中心端發(fā)送的結(jié)束環(huán)回的請求幀; ⑤ 若檢測到管理幀的C1=0、C2 ~ C3=11、C8 ~ C15=00000000 時,則說明中心端接收到終端發(fā)送的結(jié)束環(huán)回請求的應(yīng)答幀,此時將環(huán)回請求信號tp_loop_req 的值設(shè)置為0,并結(jié)束環(huán)回測試。⑥ 若檢測到管理幀的C1=1、C2 ~ C3=10、C8 ~ C15=01000000 時, 則說明接收到中心端發(fā)來的狀態(tài)請求幀。⑦若檢測到管理幀的C1=0、C2 ~ C3=11、C8 ~ C15=01000000 時, 則說明接收到中心端發(fā)來的狀態(tài)請求應(yīng)答幀。TS1K_PCK_RECV 模塊每次接收到TS-1000 管理幀時,都會在寄存器中出現(xiàn)相應(yīng)的指示,并且該管理幀的所有的字段都會被鎖存在一組寄存器中,以便后續(xù)查詢。
3.1.3 TS1K_AUTO_TBPCK_CHK 模塊
在自動環(huán)回測試模式下,當(dāng)TS1K_PCK_RECV模塊發(fā)送環(huán)回請求信號tp_loop_req =1 時,根據(jù)寄存器配置的測試包格式對接收的數(shù)據(jù)包進(jìn)行檢測,并輸出環(huán)回測試結(jié)果。當(dāng)檢測結(jié)果正確時,產(chǎn)生正確結(jié)果指示;當(dāng)檢測結(jié)果錯誤時,產(chǎn)生錯誤結(jié)果指示。
3.2 FPGA 驗(yàn)證
作為以太網(wǎng)到光轉(zhuǎn)換器芯片中的一部分,本設(shè)計已經(jīng)進(jìn)行了充分的系統(tǒng)仿真。選用楷登電子(Candence) 公司開發(fā)的NCVerilog 工具進(jìn)行系統(tǒng)仿真,并采用賽靈思(Xilinx)公司生產(chǎn)的XC3S500E 系列芯片進(jìn)行現(xiàn)場可編程邏輯門陣列(field programmable gate array,F(xiàn)PGA)驗(yàn)證[4]。硬件測試平臺結(jié)構(gòu)如圖6 所示,該測試使用了FPGA上的2 370 個觸發(fā)器和3 432 個查找表(look-uptable,LUT)。
測試系統(tǒng)通電后,下載設(shè)計完成的比特文件。通過 MCU 分別配置兩個FPGA 的寄存器,以完成TS-1000 協(xié)議各個功能的測試。將MCU 的兩個寄存器調(diào)整為10 Mbit/s 或100 Mbit/s 工作模式,然后通過測試卡發(fā)送以太網(wǎng)包,并調(diào)整測試卡上以太網(wǎng)包的發(fā)送速率、發(fā)送包長以及發(fā)送包內(nèi)容等參數(shù)。最后,通過測試卡軟件監(jiān)測以太網(wǎng)包的接收情況,尤其要注意丟幀、FCS 幀錯誤以及凈荷錯誤等問題。
本文采用XC3S500E-4PQ208 芯片進(jìn)行功能測試。結(jié)果表明, 該設(shè)計實(shí)現(xiàn)了將10 Mbit/s 或100 Mbit/s 以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換為100 Mbit/s 光接口數(shù)據(jù)的功能,支持TS-1000 管理幀的處理,能夠發(fā)送狀態(tài)指示幀,具備TS-1000 硬件的自動環(huán)回檢測功能以及在MCU 控制下的環(huán)回檢測功能。
4 結(jié)語
本文基于FPGA 實(shí)現(xiàn)了TS-1000 協(xié)議中的管理幀功能。整個設(shè)計流程采用了自頂向下的模塊設(shè)計方法,并使用Verilog 硬件描述語言設(shè)計了電路,從而有效縮短了設(shè)計周期,提高了設(shè)計的靈活性和可遷移性。
參考文獻(xiàn)
[1] TS-1000 optical subscriber line interface-100Mbit/s single fiber bi-directional interface byWDM-(English Edition)[EB/OL].(2004-1-27)[2024-10-10]. https://www.ttc.or.jp/application/files/7015/5468/6638/TS-1000Ev2.pdf
[2] 夏宇聞. Verilog 數(shù)字系統(tǒng)設(shè)計教程[M]. 北京:北京航空航天大學(xué)出版社,2003:177.
[3] 貝斯克. Verilog HDL 硬件描述語言[M]. 2 版. 許振林等,譯. 北京:機(jī)械工業(yè)出版社,2000.
[4] 王杰,王誠,謝龍漢. Xilinx FPGA/CPLD 設(shè)計手冊[M]. 北京:人民郵電出版社,2011:223.