10G EPON系统ONU MAC队列报告模块设计

时间:2022-10-14 11:55:50

10G EPON系统ONU MAC队列报告模块设计

摘要:随着三网融合技术的发展,10G EPON系统正以其低成本、高带宽等优点成为接入网的主流技术之一。文章提出了一种10G EPON系统ONU MAC队列报告模块的设计方案,在简要介绍队列报告原理的基础上,详细分析了队列报告逻辑的设计思路,重点阐述了报告更新过程的实现方法。

关键词:10G EPON 队列报告 阈值 帧间隔

中图分类号:TN46 文献标识码:A 文章编号:1007-9416(2013)07-0143-02

10EPON系统是由位于局端的OLT、位于用户端的ONU及由无源分光器和光纤线路构成的ODN等构成的点到多点系统[1]。处于局端的ONU必须在被分配的时间窗口向OLT发送数据,而OLT给ONU分配时间窗口的依据是ONU向OLT发送队列长度报告。很显然,在上行带宽一定的情况下,OLT不可能随时都给每个ONU分配足够的时隙,而只能根据局端时隙需求的大小,综合考虑,为每个ONU分配一定大小的时隙供ONU使用。ONU可以根据自身数据的特点,确定这部分时隙分配原则,比如按照优先级原则,高优先级数据先发送,低优先级数据后发送。因此,ONU向OLT发送的时隙请求,即队列长度非常重要,如果严格按照ONU队列长度报告,在数据发送的高峰期,每个ONU都几乎有全部上行带宽的时隙需求,势必造成部分ONU对上行带宽的长时间占用,而部分ONU一直无法获得时隙授权,使上行带宽的使用失去灵活性。为此,本文阐述了一种可以提供4个阈值的队列报告模块设计思路,这样,当OLT收到ONU的队列报告帧时,从报告域分别解析出对应4个阈值的队列报告,分配时序时,根据业务量的繁忙否选择4个报告中的一个为ONU分配一个合适的时隙。通过对每个逻辑链路的4个队列阈值的配置不仅有利于OLT依据业务量的大小分配最合适的带宽,还有利于系统通过控制4个阈值的大小来控制分配给每个逻辑链路的带宽。

1 功能划分

队列报告模块功能是生成队列长度报告表项,在新的数据帧被写入队列或新的数据帧被读出队列时更新队列长度报告表项[2]。基于前向兼容和后向兼容方面的考虑,10G EPON系统需同时支持1G和10G带宽的上下行数据传输,这样,MAC也应同时生成和维护基于1G数据传输速率和基于10G数据传输速率的队列长度报告,从而能够随时响应OLT的队列报告发送请求发送相应数据传输速率的队列长度报告。

队列长度以时间量子(TQ)为单位,当数据传输速率为1G时,1TQ表示传输2个字节的时间长度;当数据传输速率为10G时,1TQ表示传输20个字节的时间长度。队列长度不仅包含实际入队的数据帧长度,还包含前导码,帧间隔,FEC的长度。帧间隔为连续两帧之间的间隔,为传输12个字节所需要的时间,数据传输速率为1G时,帧间隔长度为96NS,数据传输速率为10G时,帧间隔长度为9.6NS。前导码长度为8个字节,主要用于比特同步。

数据帧的出队、入队和队列报告不存在直接联系,某个队列某时刻可能存在数据帧出队,也可能存在数据帧入队,还可能出入队同时出现或者出入队时间存在重叠,队列报告要求可能在此之前、之后或同时发生,在时间上没有必然的先后顺序。队列长度报告存储在寄存器表项中,受寄存器本身特点的限制,不能同时对队列长度报告表项执行读写操作。因此,队列长度报告表项的正常运行依赖于读取报告和更新报告的逻辑处理,必须避免因读取报告与出队报告更新、入队报告更新同时发生或者数据处理时间存在重合造成的读写队列长度表项冲突,在队列出入队和队列报告存在前述不确定性的基础上,给队列报告更新过程的时序设计带来了很大压力。

为了解决上述问题,本文提出了一种基于优先级管理的队列长度报告更新方法。一般来说,队列长度报告的根本目的是响应OLT的发送报告指示并发送报告,其接受响应和发送报告的时间间隔是严格限度的,留给生成报告数据帧的时间只有1个时钟周期。因此,收到报告指示后,ONU需要立刻从队列长度列表中读出相应队列的长度,组成报告帧,发送给OLT,以满足时序要求。另外,出队报告帧一般紧跟在出队数据帧后面被发送给OLT,这样组成出队报告帧的时间最长为1个最短数据帧传输的时间,考虑到最短数据帧为64字节,以64位数据传输,只需8个时钟周期传完,且出队没有缓存过程,这样出队数据处理过程只能在8个时钟周期内完成。相教而言,入队数据帧在入队之前可以进行缓存处理,时序处理较宽松。为此,以响应报告,出队报告更新,入队报告更新为顺序设定逻辑运算优先级,当有多个任务同时出现或数据处理的时间域有重叠时,优先处理高优先级任务,然后处理低优先级任务。

队列报告模块逻辑结构框图如图1所示,主要由读写报告控制逻辑,寄存器逻辑,报告生成逻辑等组成。

2 子模块设计

2.1 计数器模块设计

计数器模块包含两个计数器,分别对入队队列长度报告和出队队列长度报告的时钟周期进行计数,供控制逻辑对队列长度更新过程进行控制。当出队队列长度更新过程与入队队列长度更新过程存在冲突时,计数器的计数逻辑设计应与前述的队列长度报告更新方法协调一致。例如,入队报告更新任务正在进行时,如果存在数据桢出队,入队报告计数器需要立即复位,等出队报告更新任务完成之后重新计数。

2.2 读写报告控制模块设计

由于相互之间无先后顺序,当MAC报告任务、出队报告更新任务、入队报告更新任务读写队列长度报告表项寄存器时,可能存在时间冲突,读写报告控制模块依据基于优先级的策略生成队列长度报告列表读写逻辑。当MAC报告任务正在执行队列长度报告表项读写任务时,如果出队报告更新任务或者入队报告更新任务正在执行,则该任务应延时一个时钟周期供MAC报告任务读队列长度报告表项寄存器,相应的计数器也要延时一个时钟周期再恢复计数;当入队报告更新指示与出队报告更新指示同时有效时,需先处理出队报告更新任务;当入队报告更新任务正在处理,入队报告更新指示有效时,需初始化入队报告更新处理逻辑,待出队报告更新逻辑处理完后,再处理入队报告更新任务。

2.3 队列报告更新模块设计

当出现数据桢出队或者入队时,队列报告更新模块依据队列阈值设置更新相应队列长度报告。由于10G EPON系统同时支持1G、10G数据传输,因此队列报告模块同时生成和维护1G、10G队列长度报告表项,其生成逻辑和测试原理大致相同,本文只对10G速率的队列长度报告逻辑和测试方法进行阐述。

队列报告处理逻辑按照功能划分包含3个部分,分别是数据桢长度格式转换逻辑、出队报告生成逻辑、入队报告生成逻辑。数据桢的长度主要以字节为单位,而队列长度报告主要以TQ为单位,数据桢长度格式转换逻辑主要实现把基于字节的数据桢长度转换为基于TQ的数据桢长度。当数据传输速率为1G时,数据桢长度格式转换以寄存器的移位实现;当数据传输速率为10G时,需要设计单独的除法器实现,且需要对数据桢长度进行对齐处理,即除法运算的结果向上对齐,余数不为0时,商均按加1处理。CPU为每个队列配置了4个队列长度报告阈值,即阈值0,阈值1,阈值2,阈值3,其值由高到低排列,阈值0的值小于等于队列的最大长度,阈值3的长度大于等于0,数据桢出队或者入队时,队列报告生成逻辑需要同时生成4个阈值的队列报告。

队列组由8个先进先出的FIFO组成,来自用户侧的数据帧根据不同的优先级分别存入对应优先级的FIFO,即入队。考虑队列的先入先出特性,必须按照数据帧的顺序计算队列长度报告,也就是说针对任何阈值的队列长度报告所包含的数据帧必须在队列里是连续存储的。

基于上述原理,队列出队的报告更新逻辑算法是:当有新的数据帧出队时,只需判断相应阈值的原报告是否包含全部的数据帧,如果不包含,该阈值的队列报告保持不变,如果包含,用原阈值减去出队数据帧长度来更新该阈值下的队列报告。队列入队的报告更新逻辑算法伪码实现如下:

(1)对应阈值3的入队报告生成算法。

对应阈值3的队列长度报告值等于对应阈值3的原队列长度报告值加上入队帧长度;

(2)对应阈值2的入队报告生成算法。

if(阈值2大于或等于对应阈值2的队列长度报告值与入队帧长度值的和)

对应阈值2的队列长度报告值等于对应阈值2的原队列长度报告值与入队帧长度值的和。

else if (阈值2大于或等于对应阈值1的队列长度报告值与入队帧长度值的和)

对应阈值2的队列长度报告值等于对应阈值1的原队列长度报告值与入队帧长度值的和。

else if (阈值2大于或等于对应阈值0的队列长度报告值与入队帧长度值的和)

对应阈值2的队列长度报告值等于对应阈值0的原队列长度报告值与入队帧长度值的和。

else if (阈值2大于或等于入队帧长度值)

对应阈值2的队列长度报告值等于入队帧长度值。

else

阈值2报告值等于0。

(3)对应阈值1的入队报告生成算法。

if(阈值1大于或等于对应阈值1的队列长度报告值与入队帧长度值的和)

对应阈值1的队列长度报告值等于对应阈值1的原队列长度报告值与入队帧长度值的和。

else if (阈值1大于或等于对应阈值0的队列长度报告值与入队帧长度值的和)

对应阈值1的队列长度报告值等于对应阈值0的原队列长度报告值与入队帧长度值的和。

else if (阈值1大于或等于入队帧长度值)

对应阈值1的队列长度报告值等于入队帧长度值。

else

对应阈值1的队列长度报告值等于0。

(4)对应阈值0的入队报告生成算法。

if(阈值0大于或等于对应阈值0的队列长度报告值与入队帧长度值的和)

对应阈值0的队列长度报告值等于对应阈值0的原队列长度报告值与入队帧长度值的和。

else if (阈值0大于或等于入队帧长度值)

对应阈值0的队列长度报告值等于入队帧长度值。

else

对应阈值0的队列长度报告值等于0。

3 结语

本文针对10G EPON系统队列报告模块提出了一种设计方案,并使用VERILOG语言进行了描述,编写TESTBENCH对RTL电路进行了验证[3-4],仿真结果表明设计方案较好的实现了10G EPON系统队列报告模块的队列报告生成及更新功能。

参考文献

[1]尧昱,张静,王允,尚逢亮. 10G EPON技术及应用方案研究[J].广西:光通信技术,2011(11).

[2]朱华伟.10G EPON系统ONU交换模块设计[D].成都:电子科技大学,2010:44-46.

[3]伯杰龙.SYSTEM VERILOG验证方法学[M].北京:北京航空航天大学出版社,2007.

[4]克里斯·斯皮尔著,张春,麦宋平,赵益新等译. SYSTEM VERILOG验证:测试平台编写指南[M].北京:科学出版社,2009.

上一篇:基于三维混沌映射的彩色图像置乱加密 下一篇:IPv6及其安全问题分析