首页> 中国专利> HDLC控制器及HDLC控制器上报中断的方法

HDLC控制器及HDLC控制器上报中断的方法

摘要

本发明公开了一种HDLC控制器及HDLC控制器上报中断的方法。所述HDLC控制器在接收方向包括:RHDLC、RFIFO1、RFIFO2、接收检帧单元和接收逻辑;在发送方向包括:THDLC、TFIFO、发送检帧单元和发送逻辑。利用本发明所提供的技术方案,能够优化HDLC控制器向CPU上报中断的次数和频率,提高设备处理性能。

著录项

  • 公开/公告号CN101321038A

    专利类型发明专利

  • 公开/公告日2008-12-10

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN200810117056.X

  • 发明设计人 谢世成;

    申请日2008-07-23

  • 分类号H04L1/00(20060101);

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人宋志强;麻海明

  • 地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地

  • 入库时间 2023-12-17 21:06:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-03

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L1/00 变更前: 变更后: 申请日:20080723

    专利权人的姓名或者名称、地址的变更

  • 2010-12-08

    授权

    授权

  • 2009-04-01

    实质审查的生效

    实质审查的生效

  • 2008-12-10

    公开

    公开

说明书

技术领域

本发明涉及数据通信技术,尤其涉及一种高级数据链路控制(HDLC,High Level Data Link Control)控制器及HDLC控制器上报中断的方法。

背景技术

目前,E1接口作为一种2M串行接入方式在数据通信系统中得到了广泛应用,一般路由器等通信设备上都支持E1接口。按照是否支持通道化,E1接口分为CE1和E1-F。图1示出了E1-F接口电路示意图,包括:HDLC控制器和成帧器(Framer),Framer与电缆相连,HDLC控制器和Framer之间通过时分复用(TDM,Time Division Multiplexing)接口对接。其中,Framer为外置芯片,而HDLC控制器既可以由系统主CPU集成,也可以外接在CPU上。

图2示出了HDLC控制器集成在CPU上的结构示意图,CPU内部集成HDLC控制器,并提供TDM接口与Framer芯片对接。但是,这种方式需要CPU提供可用的HDLC控制器资源和TDM接口,这对于成本压力越来越大的中低端通信设备来说,无疑是很大的限制。

图3示出了HDLC控制器外置的结构示意图,CPU通过本地总线(Localbus)外接HDLC控制器与Framer芯片互通。由于Local bus是一般CPU都具有的总线资源,因此这种方式不受CPU是否内置HDLC控制器资源的限制。其中,HDLC控制器主要包括:接收方向上的HDLC单元(RHDLC)、发送方向上的HDLC单元(THDLC)、接收方向上的先入先出缓冲存储器(RFIFO)和发送方向上的先入先出缓冲存储器(TFIFO),RFIFO和TFIFO的深度均固定为32B。在接收方向上,线路侧的数据通过Framer芯片解码后通过TDM接口传送到RHDLC,RHDLC将数据送入RFIFO,只要RFIFO中有数据,逻辑就上报中断到CPU,通知Local bus来读取数据;在发送方向上,CPU将要发送的数据通过Local bus写入TFIFO,只要TFIFO中有数据,逻辑就启动THDLC发送数据,当TFIFO为空时,逻辑上报中断到CPU,通知Local bus继续进行后续数据发送。

由以上描述可见,图3所示外接HDLC控制器是通过中断与CPU交互,从而触发Local bus操作的,中断的产生与RFIFO/TFIFO的状态有关。由于RFIFO/TFIFO的深度只有32B,因此当有长数据帧收发时,HDLC控制器就会产生大量的收发中断不断触发CPU的Local bus操作,从而占用大量的Local bus带宽以及CPU的时间片,这样不仅给Local bus的带宽性能带来很大挑战,同时也会造成CPU占有率饱和,从而影响到整个通信设备的性能。甚至当业务繁忙时,会因为RFIFO/TFIFO的深度较小而产生数据包丢失。另外,当设备上同时有其它业务需要处理时,如果HDLC控制器产生的中断过多,也会造成CPU对其它业务处理的延迟。

发明内容

有鉴于此,本发明的目的在于提供一种HDLC控制器及HDLC控制器上报中断的方法,优化HDLC控制器上报中断的频率和次数,提升设备处理性能。

为达到上述目的,本发明提供的技术方案如下:

一种HDLC控制器,在接收方向上包括:第一接收方向上的先入先出缓冲存储器RFIFO1、第二接收方向上的先入先出缓冲存储器RFIFO2、接收检帧单元、接收方向上的高级数据链路控制单元RHDLC和接收逻辑,所述RFIFO2的深度大于RFIFO1的深度,其中,

RHDLC,用于接收Framer发来的数据,对收到的数据进行解帧处理打上帧头、帧尾,并送入RFIFO2;

RFIFO2,用于存储RHDLC发来的数据,并在接收逻辑的控制下将数据传送给RFIFO1;

接收检帧单元,位于RFIFO1和RFIFO2之间,用于在RFIFO2向RFIFO1传送数据的过程中检测数据帧,在检测到帧尾时向接收逻辑发送帧尾通知;

接收逻辑,用于在接收到帧尾通知后,停止RFIFO2和RFIFO1之间的数据传递,向CPU上报RME中断,通知CPU用Local bus来读取RFIFO1中的数据;在RFIFO1满时,停止RFIFO2和RFIFO1之间的数据传递,向CPU上报RPF中断,通知CPU用Local bus来读取RFIFO1中的数据;在收到CPU在数据读取完毕后写入的RMC标识后,触发RFIFO2向RFIFO1继续传递数据。

所述RFIFO1和RFIFO2的深度根据实际业务的数据包长确定。

在发送方向上,所述HDLC控制器进一步包括:发送方向上的先入先出缓冲存储器TFIFO、发送检帧单元、发送方向上的高级数据链路控制单元THDLC和发送逻辑,其中,

TFIFO,用于存储CPU写入的数据;

发送检帧单元,位于TFIFO和THDLC之间,用于在THDLC发送TFIFO中数据的过程中,通过检测数据帧帧尾确定从TFIFO中发送出去的数据帧个数;

发送逻辑,用于在收到来自CPU的发送请求标识后,判断已使用的TFIFO长度TFIFO_USED是否小于设置的低水标TFIFO_DOWN,在TFIFO_USED小于TFIFO_DOWN时向CPU返回INT_TX中断,通知CPU向TFIFO中写入数据;并且,通过计算CPU写入的XME标识个数与发送检帧单元检测到的已发送数据帧个数之差确定TFIFO中的数据帧个数,在TFIFO内有一帧或一帧以上的数据时,或者在TFIFO_USED超过设置的高水标TFIFO_UP时,触发THDLC发送TFIFO中的数据;其中,所述XME标识为CPU在向TFIFO中写完一帧数据时发送的标识。

所述TFIFO的深度、TFIFO的高低水标TFIFO_DOWN和TFIFO_UP根据实际业务的数据包长确定。

所述HDLC控制器通过Local bus与CPU连接。

一种HDLC控制器上报中断的方法,在HDLC控制器内设置RFIFO1和RFIFO2,且RFIFO2的深度大于RFIFO1的深度,该方法包括:

在接收方向上,HDLC控制器收到来自Framer的数据后,对收到的数据进行解帧处理打上帧头、帧尾送入RFIFO2,并将RFIFO2中存储的数据传到RFIFO1,当一个数据帧传送完毕时以及RFIFO1满时,都向CPU上报中断,通知CPU用Local bus来读取RFIFO1中的数据,同时停止RFIFO2和RFIFO1之间的数据传递;并且,在收到CPU在数据读取完毕后写入的RMC标识后,触发RFIFO2向RFIFO1继续传递数据。

所述RFIFO1和RFIFO2的深度根据实际业务的数据包长确定。

所述HDLC控制器内还包括TFIFO,该方法进一步包括:

在发送方向上,HDLC控制器收到来自CPU的发送请求标识后,判断TFIFO_USED是否小于设置的低水标TFIFO_DOWN,在TFIFO_USED小于TFIFO_DOWN时向CPU返回INT_TX中断,通知CPU向TFIFO中写入数据;并在TFIFO内有一帧或一帧以上的数据时或者在TFIFO_USED超过设置的高水标TFIFO_UP时,发送TFIFO中的数据。

所述HDLC控制器通过计算CPU写入的XME标识个数与已发送的数据帧个数之差确定TFIFO中的数据帧个数,其中,所述XME标识为CPU在向TFIFO中写完一帧数据时发送的标识。

所述TFIFO的深度、TFIFO的高低水标TFIFO_DOWN和TFIFO_UP根据实际业务的数据包长确定。

由此可见,在接收方向上,采用本发明所提供的一大一小两级接收FIFO结构,既可以通过大的RFIFO2来保证HDLC控制器在接收方向上有足够的数据缓存能力,避免数据包丢失,也可以通过合理设置RFIFO1深度,避免因深度不足而产生过多中断或者因深度太大而造成CPU一次中断处理时间过长,减少中断对其它业务的影响;另外,HDLC控制器在一个数据帧传送完毕或RFIFO1满时才向CPU上报中断,而不是RFIFO中一有数据就向CPU上报中断,优化了接收方向中断产生的频率和次数,减少了Local bus操作,降低了CPU占有率,提升了设备处理性能。

进一步地,在发送方向上,也可以通过合理设置TFIFO的深度来避免因深度不足而产生过多中断;并且,高低水标TFIFO_DOWN和TFIFO_UP的灵活设置可以更好地控制发送方向上中断产生的次数和频率;另外,在TFIFO内容TFIFO_USED超过TFIFO_UP,或者在TFIFO中有完整的一帧数据时才启动THDLC发送数据,而不是TFIFO中一有数据就即刻发送,可以避免因CPU业务繁忙只将一帧数据的一部分写入TFIFO就忙于处理其它业务而造成的under run错误。

附图说明

图1为现有技术中的E1-F接口电路示意图;

图2为现有技术中HDLC控制器集成在CPU上的结构示意图;

图3为现有技术中HDLC控制器外置的结构示意图;

图4为本发明实施例中的HDLC控制器结构示意图;

图5为图4所示HDLC控制器接收方向的处理流程图;

图6为图4所示HDLC控制器发送方向的处理流程图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。

由背景技术描述可见,在图3所示CPU外接HDLC控制器的情况下,HDLC控制器是通过中断与CPU交互的,过多或过频的中断会占用大量的Local bus带宽及CPU的时间片,影响设备的处理性能。考虑到中断的产生与收发FIFO的状态有关,本发明的基本思想是:通过合理配置HDLC控制器收发FIFO的结构和深度,优化中断产生的频率和次数,以减少Local bus操作,降低CPU占有率。

图4示出了本发明实施例中的HDLC控制器结构示意图。HDLC控制器的接收方向和发送方向相互独立,接收方向包括:RHDLC、RFIFO1、RFIFO2、接收检帧单元和接收逻辑;发送方向包括:THDLC、TFIFO、发送检帧单元和发送逻辑。下面分别对图4所示HDLC控制器接收方向和发送方向的处理过程进行详细说明。

图5示出了图4所示HDLC控制器接收方向的处理流程图,包括以下步骤:

步骤501:RHDLC接收到Framer发来的数据后,对数据进行解帧处理打上帧头、帧尾,并送入RFIFO2。

RFIFO2的深度可根据实际业务的数据包长进行合理设置。较佳地,可将RFIFO2的深度设置得大一些,以保证RFIFO2有足够的深度来容纳数据包,避免因RFIFO2太小而造成的数据包丢失。本实施例中,将RFIFO2的深度设置为6K。

步骤502:只要RFIFO2中有数据,接收逻辑就控制RFIFO2向RFIFO1传递。

RFIFO1的深度要比RFIFO2的深度小,可根据实际业务的数据包长进行合理设置,不宜过小,也不宜过大。过小则会产生像现有技术中那样的深度不足问题,在接收长数据帧时产生过多的中断;过大则会造成CPU的一次中断处理时间过长,影响CPU对其它业务的响应。本实施例中,将RFIFO1的深度设置为512B。

步骤503:接收检帧单元位于RFIFO2和RFIFO1之间,用于在RFIFO2向RFIFO1传送数据的过程中检测数据帧。当接收的数据帧的帧长小于RFIFO1的深度时,RFIFO2会将该数据帧一次性传输到RFIFO1中;在该帧传输完毕时,接收检帧单元就会检测到一个数据帧帧尾,此时接收检帧单元向接收逻辑发送帧尾通知;接收逻辑收到帧尾通知后,停止RFIFO2和RFIFO1之间的数据传递,并向CPU上报帧接收结束中断(下称RME中断),通知CPU用Local bus来读取RFIFO1中的数据。

当接收的数据帧的帧长大于RFIFO1的深度时,在RFIFO2向RFIFO1传送数据的过程中,可能会遇到若干次RFIFO1满的情况。每当RFIFO1满时,接收逻辑就停止RFIFO2和RFIFO1之间的数据传递,并向CPU上报RFIFO1满中断(下称RPF中断),通知CPU用Local bus来读取RFIFO1中的数据。在该长数据帧的最后一部分传入RFIFO1时,接收检测单元会检测到一个数据帧帧尾,随即向接收逻辑发送帧尾通知;接收逻辑收到帧尾通知后,停止RFIFO2和RFIFO1之间的数据传递,并向CPU上报RME中断,通知CPU用Local bus来读取RFIFO1中的数据。

步骤504:CPU收到HDLC控制器发来的RME中断或RPF中断后,触发Local bus从RFIFO1读取数据,并在数据读取完毕后向HDLC控制器写入读取确认标识(下称RMC标识)。

步骤505:接收逻辑收到CPU写入的RMC标识后,触发RFIFO2向RFIFO1继续传递数据,返回执行步骤502。

采用图4所示的两级接收FIFO结构以及图5所示的中断上报方式,能够达到以下有益效果:

一、RFIFO1深度的合理设置,可以解决现有技术中RFIFO深度不足的问题,避免在接收长数据帧时产生过多的中断;并且,也不会使CPU一次中断处理时间过长,以免对CPU处理其它业务产生影响。

二、RFIFO2的设置可以保证HDLC控制器在接收方向上有足够的数据缓存能力,避免数据包丢失。

三、在一个数据帧传送完毕或RFIFO1满时向CPU上报中断的方式,优化了接收方向中断产生的频率和次数,减少了Local bus操作,降低了CPU占有率,提升了设备处理性能。

图6示出了图4所示HDLC控制器发送方向的处理流程图,包括以下步骤:

步骤601:当CPU有数据帧需要向HDLC控制器发送时,CPU首先向HDLC控制器写入一个发送请求标识(下称XF标识),用以确认TFIFO空间是否可用。

步骤602:HDLC控制器的发送逻辑收到CPU写入的XF标识后,判断已使用的TFIFO长度即TFIFO内容TFIFO_USED是否小于预先设置的低水标TFIFO_DOWN,如果小于,则向CPU返回一个发送确认中断(下称INT_TX中断),通知CPU可以向TFIFO中写入数据;否则,不返回INT_TX中断。

步骤603:CPU收到INT_TX中断后,触发Local bus向TFIFO中写入数据,并在写完一帧数据时,向HDLC控制器写一个发送结束标识(下称XME标识),表示一帧结束。

步骤604:发送逻辑统计TFIFO中的数据帧个数,在TFIFO内部有一帧或一帧以上的数据时,触发THDLC发送TFIFO中的数据;并且,发送逻辑判断TFIFO内容TFIFO_USED是否超过预先设置的高水标TFIFO_UP,如果超过,也触发THDLC发送TFIFO中的数据。

其中,发送检帧单元位于TFIFO和THDLC之间,用于在THDLC发送TFIFO中数据的过程中,通过检测数据帧帧尾确定从TFIFO中发送出去的数据帧个数。发送逻辑通过计算CPU写入的XME标识个数与发送检帧单元检测到的已发送的数据帧个数之差确定TFIFO中的数据帧个数。

其中,TFIFO的深度、TFIFO的高低水标TFIFO_DOWN和TFIFO_UP都可根据实际业务的数据包长进行合理设置。本实施例中,可将TFIFO的深度设置为2K,以避免因FIFO深度不足而产生过多中断。TFIFO_DOWN和TFIFO_UP的值可相同或不同,它们都是软件可编程的,用户可以根据实际需求进行灵活调整,这样可以更好地控制中断产生的个数和频率以及启动THDLC发送数据的时机。另外,在TFIFO中有完整的一帧数据时才启动THDLC发送数据,而不是TFIFO中一有数据就即刻发送,可以避免因CPU业务繁忙只将一帧数据的一部分写入TFIFO就忙于处理其它业务而造成的under run错误。

需要说明的是,本发明所提供的HDLC控制器接收方向结构和发送方向上结构既可以结合使用,也可以分开使用。

最后需要说明的是,本发明所提供的技术方案不仅适用于E1接口,也适用于其它接口,如T1接口、串口等。

以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号