发明内容
本发明所要解决的技术问题在于提供一种ATM通用测试操作接口总线上地址扩展的系统及其方法,其可在ATM交换系统中实现UTOPIA总线上单个地址(PHY端口)扩展为多个地址(PHY端口),且不要求ATM交换芯片支持某种私有接口,并对每个PHY端口VPI/VCI取值不作限制。
为了实现上述目的,本发明提供了一个转换模块来实现不同接口之间转换,并通过在交换芯片内部对VPI/VCI作一定的划分以及在转换模块中建立特定的VP/VC表来实现不同端口的VPI、VCI交换。
具体的,本发明提供了一种ATM通用测试操作接口总线上地址扩展的系统,应用于ATM交换系统中,用于实现ATM通用测试操作接口总线上单个地址扩展为多个地址,其特点在于,该地址扩展系统包括:
一ATM交换芯片,在其内部对VPI/VCI以一预定规则作划分,供应用层依据该划分来识别端口;
一转换模块,建立有一VP表和一VC表,通过查找该VP/VC表来实现不同端口的VPI、VCI交换,该转换模块与该ATM交换芯片之间通过ATM通用测试操作接口连接,且该ATM交换芯片为主设备,转换模块为从设备;以及
多个物理层芯片,与该转换模块之间根据所要支持的物理端口数量而通过标准接口或者非标准的接口连接,且该转换模块为主设备,物理层芯片为从设备。
上述的ATM通用测试操作接口总线上地址扩展的系统,其特点在于,该转换模块还提供有主机接口,用于实现软件对VP/VC表的维护。
本发明还提供了一种ATM通用测试操作接口总线上地址扩展的方法,其特点在于,包括如下步骤:
构建一ATM通用测试操作接口总线上地址扩展的系统,该系统包括通过ATM通用测试操作接口连接的一ATM交换芯片和一转换模块,该转换模块还与多个物理层芯片连接;
对该ATM交换芯片内部的VPI/VCI以一预定规则进行划分;
在该转换模块内部建立一VP表和一VC表;
通过上下行的查找该VP/VC表实现不同端口的VPI、VCI交换,完成信元的路由。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,该VP/VC表中仅存放用户端的VPI/VCI,而ATM交换芯片侧的VPI/VCI隐含在信元的地址信息中。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,对该ATM交换芯片内部的VPI/VCI进行划分的预定规则如下:
如果VPI=0,则认为是VC连接;
VPI=0的VCI按域对应不同的扩展后的端口,VCI从32起连续分配,每端口包含m个连续的VCI值:vci=(portId<<n)+index+32,其中m为2的n次方,portId为扩展后的端口数,index为(0~(m-1));
转换模块端口仅需占用交换芯片内部VC表空间为(portId*m+32);
交换芯片所见的VCI仅为芯片内部可见,对外屏蔽;
对于VPI为非0的信元进行VP交换;
对于vpi=0除外的VPI按域对应不同的扩展后的端口,VPI从1起连续分配,每端口包含i个连续的VPI值:vpi=poriId<<j+index+1,其中i为2的j次方,portId为扩展后的端口数,index为(0~(i-1));
转换模块端口需占用交换芯片内部VP表空间为(portId*i+1)。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,该VP表中每端口提供i个条目,每条目对应一条VP连接,每条目包含有9个bit,其中Bit8为标识flag,Bit7~0为VPI,范围为0~255;该标识flag用来指示该连接是否有效,如果flag=1,该连接为有效连接,如果flag=0,则该连接为无效连接;且表地址空间连续分配,总共为poriId*I地址。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,该VC表中每端口提供m条目,每条目对应一条VC连接,每条目包含有25bit,其中Bit24为标识flag,Bit23~16为VPI,Bit15~0为VCI,支持VPI、VCI范围分别为0~255、0~65535,该标识flag用来指示该连接是否有效,如果flag=1,该连接为有效连接,如果flag=0,则该连接为无效连接;且表地址空间连续分配,总共有portId*m地址。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,在上行方向,该信元查表路由的过程如下:
该转换模块接收到一上行的ATM信元,并获取该信元的来源端口地址portId;
遍历转换模块VP表中该来源端口下的所有条目,以信元头VPI进行匹配进行VP表的查找;
如果找到匹配项,则将信元头VPI转换为该条目在VP表中的地址加1,VCI不变,将信元发送到该ATM通用测试操作接口,完成一次上行的信元路由;
如果没有找到匹配项,则继续遍历转换模块VC表中该来源端口下的所有条目,以信元头VPI/VCI进行匹配进行VP表的查找,找到则将信元头VPI置为0,VCI替换为该条目在VC表中的地址加上32,将信元发送到该ATM通用测试操作接口,完成一次上行的信元路由;否则丢弃信元,等待下一个信元。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,在下行方向,该信元查表路由的过程如下:
该转换模块接收到一下行的ATM信元,并从信元头中获取VPI值;
如果VPI值为0,则为VC连接,进行VC查表,由信元头中获取VCI值后直接索引到转换模块VC表的第(VCI-32)个条目,得到端口地址portId,查看该连接的flag位是否为1,如果flag=1,该连接有效,用该条目中的VPI和VCI值替换信元的VPI、VCI值,然后将信元发送到端口地址portId,完成一次下行的信元路由;如果flag=0,连接无效,丢弃信元;
如果VPI值不为0,则为VP连接,进行VP查表,直接索引到转换模块VP表中的第(VPI-1)个条目,得到端口地址portId,查看该连接的flag位是否为1,如果flag=1,该连接有效,用该条目中的VPI值替换信元的VPI值,而VCI值不变,然后将信元发送到端口地址portId,完成一次下行的信元路由;如果flag=0,连接无效,丢弃信元。
上述的ATM通用测试操作接口总线上地址扩展的方法,其特点在于,该转换模块还提供有主机接口,实现软件对VP/VC表的维护,其维护包括:
通过主机CPU读写所有表项;
通过主机CPU设置两端环回;
对外部读写和内部读进行保护,避免同时操作引起异常;
对上下行查表进行保护。
采用本发明,可以在不增加过多的成本情况下将ATM交换芯片总线上的单PHY方便地扩展为多个PHY端口,从而增加相关ATM交换芯片应用的灵活性。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
本发明的硬件框图如图1所示:包括一个ATM交换芯片10、一个转换模块20、及若干PHY芯片30(物理层芯片),其中ATM交换芯片与转换模块之间为UTOPIA(L2)标准接口12,ATM交换芯片10为主(master)设备,转换模块20为从(slave)设备,转换模块20占用一个PHY地址(图中A接口);转换模块20与PHY芯片30之间的接口23可以为标准的接口也可以为非标准的接口(图中B接口),根据所要支持的PHY端口数量而定,转换模块20为主(master)设备,PHY芯片30为从(slave)设备。例如,要扩展为32个PHY端口,则转换模块B接口可以是UTOPIA L2;如果要扩展为1024个PHY接口,则可以考虑诸如Any-PHY这样的接口。B接口的具体实现不在本发明中进行申明。
本发明将ATM交换芯片内部的VPI/VCI按照不同的域划分来区别不同的端口(指扩展后的端口),应用层可依据VPI/VCI的这种划分方法来识别端口。具体的划分方法将在下面的描述中说明。
为了实现交换芯片内部VPI/VCI到用户端口VPI/VCI的交换,本发明在转换模块中设计了一种VP/VC表以及相应的查找方法。VP/VC表的安排兼顾RAM空间的利用率及查找表的效率:表中仅存放用户端的VPI/VCI,交换芯片侧的VPI/VCI隐含在地址信息中,与一般的VP/VC表相比,节省了一半的空间;查表方面:
下行方向(图1所示的downstream方向)采用VPI/VCI到表地址的直接映射,效率可以充分保证:转换模块从UTOPIA总线上接收到ATM信元,根据VPI是否为0判断其需要进行VC还是VP查表,如果是VP查表,则直接索引到转换模块VP表中的第(VPI-1)个条目,并用该条目的VPI替换信元头的VPI,信元头VCI透传;如果是VC查表,则直接索引到转换模块VC表的第(VCI-32)个条目,并用该条目中的VPI和VCI替换信元的VPI、VCI。
上行方向(图1所示的upstream方向)最大查表次数为每端口支持的最大连接数:转换模块从图1接口B接收到ATM信元,并取得该信元的来源端口号,先进行VP表的查找(遍历转换模块VP表中该端口下的所有条目,以信元头VPI进行匹配查找),如果找到,则将信元头VPI转换为该条目在VP表中的地址加1,VCI不变;如果没有找到,则继续查找VC表(遍历转换模块VC表中该端口下的所有条目,以信元头VPI/VCI进行匹配查找),找到则将信元头VPI置为0,VCI替换为该条目在VC表中的地址加上32。
通过上下行的查表转换,实现了信元在交换芯片与各PHY芯片之间的路由。关于VP/VC表的设计和查找方法将在下面的描述中进行说明。
本系统的实现主要包括硬件模型的构建、约束条件的规定及软件处理流程的设计。如图6描述了系统实现步骤:
步骤601,首先构建硬件实现模型:
硬件实现模型见图1所示:包括一个ATM交换芯片、一个转换模块、及若干PHY芯片,其中ATM交换芯片与转换模块之间为UTOPIA标准接口,ATM交换芯片为主(master)设备,转换模块为从(slave)设备,转换模块占用一个PHY地址(图中A接口);转换模块与PHY芯片之间的接口可以为标准的接口也可以为非标准的接口(图中B接口),根据所要支持的PHY端口数量而定,转换模块为主(master)设备,PHY芯片为从(slave)设备。
步骤602,规定约束条件,包括对交换芯片内部VPI/VCI进行相关的规定:对交换芯片内部在转换模块所在端口上的VPI/VCI作如下规定:
(1)如果VPI=0(也可以是其它固定值),则认为是VC连接;
(2)VPI=0的VCI按域对应不同的端口(指扩展后的端口),VCI从32起连续分配,每端口包含m(m为2的n次方)个连续的VCI值:vci=(portId<<n)+index+32,其中portId为扩展后的端口数,index为(0~(m-1)),如图2所示(图中假设m=8,即每个端口支持8条VC连接);
(3)转换模块端口仅需占用交换芯片内部VC表空间为(portId*m+32)(假设portId=1024,m=8,则需要VC表空间:32+1024*8=8224);
(4)交换芯片所见的VCI仅为芯片内部可见,对外屏蔽;
(5)对于VPI为非0的信元进行VP交换;
(6)VPI(vpi=0除外)按域对应不同的端口,VPI从1起连续分配,每端口包含i(i为2的j次方)个连续的VPI值:vpi=poriId<<j+index+1,其中portId为扩展后的端口数,index(0~(i-1)),如图3所示(图中假设i=4,即每个端口支持4条VP连接);
(7)转换模块端口需占用交换芯片内部VP表空间为(portId*i+1)。
步骤603,在转换模块内部建立VP/VC查找表以及对转换模块为主机(HOST)提供的接口:
(一)在转换模块内部建立VP表、VC表各一:
如图4所示,对于VC表:
(1)每端口提供m条目(图中m=8),每条目对应一条VC连接;
(2)每条目25bit,Bit24为flag,Bit23~16为VPI,Bit15~0为VCI,支持VPI、VCI范围分别为0~255,0~65535;
(3)表地址空间连续分配,总共有portId*m地址;
(4)Flag用来指示该连接是否有效,如果flag=1,该连接为有效连接,如果flag=0,则该连接为无效连接。
对于VP表(如图5所示):
(1)每端口提供i个条目(图中i=4),每条目对应一条VP连接;
(2)每条目9个bit,Bit8为flag,Bit7~0为VPI,范围为0~255;
(3)表地址空间连续分配,总共为poriId*i=192;
(4)Flag用来指示该连接是否有效,如果flag=1,该连接为有效连接,如果flag=0,则该连接为无效连接。
(二)转换模块还必须提供主机接口,以实现软件对VP/VC表的维护,其维护包括:
(1)可以通过主机CPU读写所有表项,可对整张表刷新,也可对单条表项进行修改;
(2)可以通过主机CPU设置两端环回;
(3)需要对外部读写和内部读进行保护,避免同时操作引起异常;
(4)上下行查表需要保护(比如双口RAM)。
而软件处理流程(信元查找表、路由处理流程)的设计,如图7、8所示:
对于上行方向(图1的upstream方向),如图7所示:
步骤701,信元从B接口进入后,转换模块取得该信元PHY端口号portId;
步骤702,先查找VP表,计算出该端口在VP表的基地址为VP_TABLE_BASE_ADDR+i×portId(VP_TABLE_BASE_ADDR为整个VP表的基地址,i为每端口支持的最大VP连接数),然后遍历i个条目进行查找;
步骤703,判断是否找到匹配项?即如果flag=0,忽略该条目,转到步骤705;如果flag=1,比较条目中的VPI值和信元头中的VPI值是否相同,如果有相同的,则为VP连接,转到步骤704;
步骤704,将信元头部的VPI(8bit)用下列值进行替换:该条目在VP表的地址偏移量(相对于VP_TABLE_BASE_ADDR)+1,而VCI值透传;并将信元发送到接口A,完成一次上行的信元路由;同时继续等待下一信元到达(步骤709);
步骤705,如果VP表的所有条目中没有一个匹配,则接着查找VC表,确定该端口在VC表中的基地址为VC_TABLE_BASE_ADDR+m×portId(VP_TABLE_BASE_ADDR为整个VC表的基地址,m为每端口支持的最大VC连接数),然后遍历查找m个条目;
步骤706,判断是否找到匹配项?即如果flag=0,则忽略该条目,转到步骤708;如果flag=1,比较VPI/VCI值是否相同,如果有相同的,则为VC连接,转到步骤707;
步骤707,把信元头中的VPI值替换成0,16bitVCI用下列值进行替换:该条目在VC表的地址偏移量(相对于VP_TABLE_BASE_ADDR)+32;同时继续等待下一信元到达(步骤709);
步骤708,如果VC表中也没有匹配项,则丢弃信元;
步骤709,继续等待下一信元到达。
对于下行方向(图1的downstream方向),如图8所示:
步骤801,从接口A中接收一个从ATM交换芯片传过来的信元,并从该信元头中提取VPI(8bit)值;
步骤802,如果VPI值为0,为VC连接,转步骤804;如果VPI值不等于0,则为VP连接,转步骤803;
步骤803,对VP连接,进行VP表查找;取出信元头中的VPI值,(VPI-1)>>j(i为每端口支持的最大VP连接数,i为2的j次方),得到portId。用(VPI-1)作为地址直接指向VP表的条目,查看该连接的flag位是否为1,判断是否找到匹配项(步骤805)?如果flag=1,该连接有效,取出条目中的VPI值,用来替换信元头中的8bitVPI值,信元头中的VCI值透传输,然后将该信元发送到端口portId,完成一次下行的信元路由(步骤807),同时继续等待下一信元到达(步骤810);如果flag=0,连接无效,丢弃信元(步骤809),同时继续等待下一信元到达(步骤810);
步骤804,对VC连接,进行VC表查找;取出信元头中的VCI值,(VCI-32)>>n(m为每端口支持的最大VC连接数,m为2的n次方),得到portId。用(VCI-32)作为地址直接指向VC表的条目,查看该连接的flag位是否为1,判断是否找到匹配项(步骤806)?如果flag=1,该连接有效,取出条目中的VPI(8bit)/VCI(16bit)替换信元中的VPI(8bit)/VCI(16bit),然后将该信元发送到端口portId,完成一次下行的信元路由(步骤808),同时继续等待下一信元到达(步骤810);如果flag=0,连接无效,丢弃信元(步骤809),同时继续等待下一信元到达(步骤810)。
当信元按照上述的流程进行查找表、路由或丢弃后,即达到本系统设计所要达到的目标。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。