朱華偉(四川文理學院,四川 達州 635000)
10G EPON系統繼承了EPON系統的點到點仿真機制[1],這樣邏輯上點到多點的物理鏈路被模擬為多條點到點的邏輯鏈路的集合,每條邏輯鏈路通過一個唯一的LLID標志。從OLT發送到ONU或者從ONU發送到OLT的數據幀均需包含LLID標志,不包含LLID標志的數據幀均會被當做非法幀,并被過濾掉。
802.3 av協議只為10G EPON系統規范了單LLID的標準數據傳輸模式[2],在目前網絡傳輸多為多業務數據,不同業務數據對時效的要求差異很大的情況下,這種單LLID模式無法保證多業務的QOS。相較而言,多LLID模式改善了上述不足,該模式下的多LLID就好似多個單一的LLID,每個LLID由OLT的DBA單獨調度。通過為每種業務的數據設置在特定的LLID鏈路傳輸,既可以提高數據傳輸的QOS,又可避免在ONU里對多業務數據進行調度的困難,減少ONU設計的復雜度[3]。
隊列管理模塊接收來自用戶側的數據幀后,根據LLID模式配置,提取數據幀的優先級及長度信息,存儲數據幀到相應的隊列,同時向隊列報告模塊報告數據幀入隊,供其更新隊列長度報告表項。數據幀全部寫入隊列前,隊列滿溢出,則丟棄正在發送的數據幀。隊列管理模塊收到MAC的數據幀發送請求后,從隊列組中調度出數據幀并發送給MAC,同時向隊列長度報告邏輯發送數據幀出隊指示,供其更新隊列報告表項。圖1所示為隊列管理模塊結構框圖,由圖可以看出,隊列管理模塊主要由數據接收處理模塊,數據幀出入隊指示模塊,數據發送處理模塊,隊列組模塊組成。

數據接收處理模塊接收到用戶側的數據幀后,在數據接收狀態機的控制下,向隊列組寫入數據幀。數據接收狀態機由空閑狀態,幀入隊狀態,丟棄幀狀態組成,狀態之間的轉換關系如圖2所示。無數據傳輸時,狀態機處于空閑狀態;當收到用戶側的數據發送指示時,狀態機從空閑狀態轉換為數據幀幀入隊狀態,此時,寫數據邏輯從入隊數據幀中提取本地優先級信息,根據本地優先級設置向對應的隊列中寫入數據,數據幀數據完全入隊后,狀態機重新恢復空閑狀態。如果數據幀正在入隊的過程中,隊列溢出,狀態機跳轉到丟幀狀態,寫數據邏輯丟棄該數據幀已入隊的數據,同時恢復該隊列寫數據地址指針值。

圖2 數據接收狀態機
當有數據幀入隊或者出隊時,均需向ONU隊列報告邏輯發送數據幀入隊或者出隊信息,供報告邏輯更新隊列長度報告列表表項。數據幀出隊指示邏輯通過握手邏輯實現,當有數據幀出隊時,數據幀出隊指示邏輯開始向ONU報告邏輯發送出隊指示信號,同時發送出隊數據幀長度信息和對應隊列指示信息;數據幀入隊邏輯同數據幀出隊邏輯類似,不同的是數據幀入隊指示信號是在數據幀完全出隊的時候發送。
隊列組模塊由8個塊RAM和相應的隊列控制器組成。隊列組模塊除了為每組隊列維護讀寫地址指針,空滿標志外,還維護了一個基址指針,供丟棄數據幀時的寫地址復位。隊列組模塊響應數據接收處理模塊的數據發送請求并向對應的隊列寫入數據,如果隊列溢出,丟棄該數據幀數據,同時恢復數據幀寫地址;此外,隊列組模塊響應MAC的數據發送請求,從對應隊列讀取數據,發送給MAC。
隊列組的入口與數據幀的8個本地優先級一一對應,隊列組的出口分別映射為8個邏輯鏈路,每個邏輯鏈路單獨受OLT DBA動態帶寬分配算法調度。同時,由于802.3av標準對每個ONU只規定了單一的LLID,這里在采取多LLID方案的同時,保留了單LLID的標準模式。與多LLID模式不同,在隊列組出口,響應MAC的數據發送請求發送數據前需要進行基于嚴格優先級的隊列調度。單LLID邏輯設計方法同多LLID邏輯實現方法基本相同,本文只針對LLID配置模式0,即單LLID模式設計方法及仿真結果進行闡述。
數據發送處理邏輯主要完成隊列出隊操作,依據隊列模式的不同,數據發送處理邏輯選擇不同的隊列調度方式從隊列中調度數據。當隊列模式為0時,調度方式為基于嚴格優先級的方式調度數據,8個隊列分別存儲的是8個優先級的隊列,隊列7優先級最高,其余隊列優先級依次降低;當隊列模式為1時,調度方式為按照LLID序列號的值調度數據,8個隊列分別存儲的是對應8個LLID序列的數據幀。
數據發送處理邏輯收到MAC發送來的數據發送指示信號的上升沿后,使用SP調度算法從隊列中調度數據幀。隊列組包含8個隊列,分別對應8個優先級的數據,從隊列0到隊列7優先級依次升高。SP調度時,先從最高優先級隊列調度數據幀,最高優先級隊列數據發送完后,再從次優先級隊列調度數據幀,然后依次類推,直到MAC數據發送指示變為無效。
確定調度隊列后,開始從隊列讀出數據幀并發送給MAC,每次讀取一個完整數據幀。數據讀取與發送邏輯通過計數器邏輯實現,計數器邏輯包含剩余幀數據字節長度計數器和讀數據周期計數器兩個計數器,分別標識還需讀取的數據幀的字節數和目前讀數據的所處的周期數。后者用于標識數據幀長度信息所屬的位置,從而用來初始化剩余幀數據字節長度計數器;前者用于控制從隊列中讀取數據的長度。
本文針對10G EPON系統ONU隊列管理模塊提出了一種設計方案,并使用Verilog語言進行了描述,編寫Testbench對RTL電路進行了驗證[4-5],仿真結果表明設計方案較好的實現了10G EPON系統ONU隊列管理模塊的隊列管理功能。
[1]堯昱,張靜,王允,尚逢亮.10G EPON技術及應用方案研究[J].廣西:光通信技術,2011(11)
[2]朱華偉,侯曉榮,何崢.10G EPON系統ONU注冊技術研究[J].光通信技術.2010(2)
[3]朱華偉.10G EPON系統ONU交換模塊設計[D].成都:電子科技大學,2010:44-46
[4]伯杰龍.System Verilog驗證方法學[M].北京:北京航空航天大學出版社,2007
[5]克里斯·斯皮爾著,張春,麥宋平,趙益新等譯.System Verilog驗證:測試平臺編寫指南[M].北京:科學出版社,2009