实现高层数据链路控制的装置及方法转让专利

申请号 : CN200610060670.8

文献号 : CN1984148B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈东斌吴奇祥

申请人 : 华为技术有限公司

摘要 :

本发明涉及一种实现高层数据链路控制的装置,包括有用于通过先进高性能总线与外设交互的总线接口模块和与所述总线接口模块连接的HDLC处理通道,所述HDLC处理通道包括有核心处理模块以及核心控制模块,所述核心控制模块根据外设的DMA搬移请求信号控制核心处理模块通过总线接口模块从外设读取数据并进行HDLC处理、并在核心处理模块处理完成后通知相关外设或CPU读取处理完成的数据。本发明还提供一种对应的实现高层数据链路控制的方法。本发明通过在HDLC处理中提供DMA数据搬移功能,减轻了CPU运行负荷,节省了CPU处理资源。

权利要求 :

1.一种实现高层数据链路控制HDLC的装置,其特征在于,包括:

用于与外设交互的总线接口模块;

与所述总线接口模块连接的HDLC处理通道,所述HDLC处理通道包括有核心处理模块以及核心控制模块,所述核心控制模块接收源外设通过AHB总线输入的DMA搬移请求信号,所述DMA搬移请求信号包括:组传输请求信号hdlc_breq,该hdlc_breq信号引发一次组传输,组长度预先设定、单次传输请求信号hdlc_sreq,该hdlc_sreq信号引发一次单次传输、最后一次组传输请求信号hdlc_lbreq和最后一次单次传输请求信号hdlc_lsreq;通过所述DMA搬移请求信号控制核心处理模块通过总线接口模块从所述源外设读取数据并对所读取数据进行HDLC处理,并在核心处理模块处理完成后通知目的外设通过AHB总线输出读取处理完成的数据。

2.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,所述总线接口模块通过先进高性能总线连接到外设。

3.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,所述装置还包括配置编程接口,所述HDLC处理通道通过配置编程接口接收来自CPU的配置参数并向CPU上报状态变化。

4.根据权利要求3所述的实现高层数据链路控制的装置,其特征在于,所述HDLC处理通道包括有参数配置模块,所述参数配置模块解析所述配置编程接口发送的配置参数并分配给核心控制模块和核心处理模块,同时所述参数配置模块还汇总来自核心控制模块和核心处理模块的状态变化,并通过所述配置编程接口供CPU回读。

5.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,所述核心处理模块包括有依次连接的用于FCS计算和校验的FCS模块、用于透明化处理的透明化处理模块、用于帧标志序列插入和删除的标志序列处理模块。

6.根据权利要求5所述的实现高层数据链路控制的装置,其特征在于,所述核心处理模块还包括有用于存放处理完毕的接收数据的目的输出缓冲和用于存放没有处理的发送数据的源输入缓冲。

7.根据权利要求6所述的实现高层数据链路控制的装置,其特征在于,所述核心控制模块包括:

输入控制模块,用于在数据搬移过程中所述源输入缓冲为空时将源外设数据读入核心处理模块进行处理;

输出控制模块,用于在所述目的输出缓冲满时将所述目的输出缓冲的数据输出到目的外设的输出控制模块;

其中所述输入控制模块和核心控制模块的输出控制模块分别与核心处理模块连接。

8.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,当所述装置包括多个HDLC处理通道时,所述装置还包括有仲裁模块,所述多个HDLC处理通道经由仲裁模块连接到总线接口模块,所述仲裁模块用于使用仲裁算法在多个HDLC处理通道之间选择特定HDLC处理通道进行总线访问。

9.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,所述装置还包括有接收源外设或目的外设的DMA请求并将所述DMA请求分配到各个HDLC处理通道的同步模块。

10.根据权利要求1所述的实现高层数据链路控制的装置,其特征在于,所述核心控制模块还包括有根据来自同步模块的DMA请求产生DMA请求响应或中断上报的响应接口,所述响应接口在核心处理模块完成数据转换后发送DMA请求清除信号。

11.根据权利要求10所述的实现高层数据链路控制的装置,其特征在于,所述装置还包括将来自各HDLC处理通道的DMA清除响应和中断上报响应输出的汇总模块。

说明书 :

技术领域

本发明涉及数据通信领域,更具体地说,涉及一种实现高层数据链路控制的装置及方法。

背景技术

HDLC(High-Level Data Link Control,高层数据链路控制)是面向比特的数据链路控制协议。由于HDLC协议的传输控制功能和处理功能分离,并具有传输透明、可靠性高、传输效率高、灵活性高等特点,其已广泛应用于数据通信领域,是确保数据信息可靠互通的重要技术。
如图1所示,完整的HDLC帧由标志序列F、地址字段A、控制字段C、信息字段I和帧校验序列字段FCS组成。其中在HDLC帧中指定比特组合01111110作为帧标志序列,所有帧必须以F开始,并以F结束。为做到透明传输,HDLC中采用“0”比特插入的方法,防止标志序列F在包括A、C、I以及FCS在内的整个比特序列中出现。具体方法为:标志序列间如有5个连“1”的话,则在发送端插入1个“0”;接收端检查接收帧的内容,发现标志序列之间若有5个连续的“1”,则将后面的1个“0”删去,如图2所示。HDLC协议的基本工作原理如下:
在发送端按照HDLC数据帧格式,接收高层下发的信息字段,插入地址字段信息,将链路监控信息填入控制字段,对地址字段+控制字段+信息字段进行CRC校验,附加CRC校验比特。以0x7e隔离HDLC数据帧,并且将并行HDLC数据转换成串行数据,″0″bit插入。将整个数据段下发次层。
在接收端接收次层上传的HDLC帧,检查接收方向上进行帧定界、串并转换和CRC校验,″0″bit去除。按照HDLC帧格式,进行CRC解校验,提取地址字段、控制字段、信息字段等信息。完成寻址和链路监控功能。将信息字段上传高层。
目前,通常采用软硬件协同的方式实现整个HDLC功能。具体来说,采用ASIC实现HDLC物理层的组帧/拆帧、CRC编码或译码、信息透传处理(“0”比特插入和删除)以及数据的发送和接受等功能;而地址域、控制域、信息域等处理则由软件实现。
如图3所示,现有的HDLC模块由接口模块31、HDLC数据发送模块32、HDLC数据接收模块33等3个部分组成。其中,HDLC接口模块31提供有时钟,其通过数据、地址总线和读写信号读写并行数据,并产生和处理中断信号。HDLC数据发送模块32锁存外部CPU写入的发送数据并按照指定的时序启动发送;在发送数据段前加上“7E”启始标志;对发送数据逐位做CRC计算并把计算结果附在发送数据之后;对包括CRC计算值在内的数据进行“插零”操作并附上“7E”结束标志并把结果送出。HDLC数据接收模块33用于在接收的数据流中检测有无“7E”标志;当检测到数据流中有“1F”信号时,则对数据进行“删零”操作;对经过“删零”后的数据进行CRC校验;把接收到的数据进行串/并转换并存入双端口RAM;当接收到结束标志后,检查CRC校验值是否正确,通知接口模块数据接收完毕。
然而上述HDLC模块没有提供DMA功能,因此HDLC数据读取或发送,都需要CPU干预,需要占用宝贵的CPU处理资源。此外,上述HDLC模块仅提供CPU接口,而不提供总线接口,使其无法集成到SOC,从而在面积、功耗、可靠性等方面略显不足。上述的HDLC模块还不能进行数据块连续处理,每次处理完毕1个HDLC数据块之后,需要等待CPU重新下发数据(发送方向)或等待CPU全部取走上传数据(接收方向)之后,进行HDLC物理层协议操作,效率相对较低。

发明内容

本发明要解决的技术问题在于,针对上述现有系统进行HDLC处理时CPU运行负荷大和处理效率低下的缺陷,提供一种新的实现高层数据链路控制的装置及方法。
本发明解决其技术问题所采用的技术方案是:构造一种实现高层数据链路控制的装置,包括有用于通过先进高性能总线与外设交互的总线接口模块和与所述总线接口模块连接的HDLC处理通道,所述HDLC处理通道包括有核心处理模块以及核心控制模块,所述核心控制模块根据外设的DMA搬移请求信号控制核心处理模块通过总线接口模块从外设读取数据并进行HDLC处理、并在核心处理模块处理完成后通知相关外设或CPU读取处理完成的数据。
在本发明所述的实现高层数据链路控制的装置中,所述HDLC处理包括将输入的原始数据转换为HDLC帧或将输入的HDLC帧转换为原始数据。
在本发明所述的实现高层数据链路控制的装置中,所述装置还包括配置编程接口,所述HDLC处理通道通过配置编程接口接收来自CPU的配置参数并向CPU上报状态变化。
在本发明所述的实现高层数据链路控制的装置中,所述HDLC处理通道包括有参数配置模块,所述参数配置模块解析来自CPU的配置参数并分配给核心控制模块和核心处理模块,同时所述参数配置模块还汇总来自核心控制模块和核心处理模块的状态变化供CPU回读。
在本发明所述的实现高层数据链路控制的装置中,所述核心处理模块包括有依次连接的用于FCS计算和校验的FCS模块、用于透明化处理的透明化处理模块、用于帧标志序列插入和删除的标志序列处理模块。
在本发明所述的实现高层数据链路控制的装置中,所述HDLC处理通道还包括有用于存放处理完毕的接收数据的目的输出缓冲和用于存放没有处理的发送数据的源输入缓冲。
在本发明所述的实现高层数据链路控制的装置中,所述核心控制模块包括有在数据搬移过程中核心处理模块的源输入缓冲为空时将源外设数据读入核心处理模块进行处理的输入控制模块,以及在核心处理模块的目的输出缓冲满时将核心处理模块目的输出缓冲的数据输出到目的外设的输出控制模块,其中所述输入控制模块和输出控制模块分别与核心处理模块连接。
在本发明所述的实现高层数据链路控制的装置中,所述装置包括有仲裁模块,所述HDLC处理通道包括有多个,所述多个HDLC处理通道经由仲裁模块连接到总线接口模块,所述仲裁模块用于使用仲裁算法在多个HDLC处理通道之间选择特定HDLC处理通道进行总线访问。
在本发明所述的实现高层数据链路控制的装置中,所述装置还包括有接收源外设或目的外设的DMA请求并将所述DMA请求分配到各个HDLC处理通道的同步模块。
在本发明所述的实现高层数据链路控制的装置中,所述核心控制模块还包括有根据来自同步模块的DMA请求产生DMA请求响应或中断上报的响应接口,所述响应接口在核心处理模块完成数据转换后发送DMA请求清除信号。
在本发明所述的实现高层数据链路控制的装置中,所述装置还包括将来自各HDLC处理通道的DMA清除响应和中断上报响应输出的汇总模块。
本发明还提供一种实现高层数据链路控制的方法,包括以下步骤:
(a)HDLC模块根据来自外设的DMA搬移请求信号从外设读取数据;
(b)HDLC模块将从外设将数据读入的数据进行HDLC处理;
(c)HDLC模块在处理完读入数据后通知相关外设或CPU读取已处理完毕数据。
在本发明所述的实现高层数据链路控制的方法中,所述步骤(b)中的HDLC处理包括包括:帧标志检测、透明化处理、FCS处理。
在本发明所述的实现高层数据链路控制的方法中,所述步骤(b)中的HDLC处理包括将输入的原始数据转换为HDLC帧和/或将输入的HDLC帧转换为原始数据。
本发明的实现高层数据链路控制的装置及方法,通过在HDLC处理中提供DMA数据搬移功能,减轻了CPU运行负荷,节省了CPU处理资源。本发明还通过提供先进高性能总线接口模块,使得本发明的装置可以集成到SOC系统。此外,本发明通过使用数据缓冲区和定时查询机制,实现了与CPU的交互,确保HDLC处理通道在满足数据流量的前提下,可以实现流水作业,提高了传输处理效率。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是HDLC帧的结构示意图;
图2是透明化处理的示意图;
图3是现有的HDLC模块的结构框图;
图4是本发明实现高层数据链路控制的装置的结构框图;
图5是图4中HDLC处理通道的结构框图;
图6是图5中核心处理模块的结构框图;
图7是本发明实现高层数据链路控制的装置中的一个缓冲的数据结构示意图;
如图8是HDLC模块进行数据搬移的流程图;
如图9是HDLC模块在发送数据时进行数据转换的流程图;
如图10是HDLC模块在接收数据时进行数据转换的流程图。

具体实施方式

如图4所示,在本发明的一个实施例中,实现高层数据链路控制的装置(简称HDLC模块)包括HDLC处理通道(Hdlc_Channel)44、总线接口模块(Ahb_Master)46。其中HDLC处理通道44通过总线接口模块46经由先进高性能总线(Advanced High-performance Bus,AHB)连接到外设,从而与外设交互。HDLC处理通道44用于实现DMA数据搬移功能和HDLC物理层基本处理,例如发起DMA请求、实现源外设到HDLC模块数据搬移、HDLC基本处理流程、实现HDLC模块到目的外设数据搬移。总线接口模块46连接先进高性能总线,用于提供HDLC协议的业务数据进出通道,其中下行HDLC处理之前数据输入或处理之后数据输出、上行HDLC处理之前数据输入或处理之后数据输出都通过总线接口模块46。
本发明所述的HDLC处理包括将输入的原始数据转换为HDLC帧和/或将输入的HDLC帧转换为原始数据。
如图5所示,是图4中HDLC处理通道44的结构框图。HDLC处理通道44包括有核心控制模块442以及核心处理模块443。
核心控制模块442用于提供DMA请求响应或中断上报的接口,同时提供访问AHB总线的数据访问接口,其包括输入控制模块和输出控制模块,其中输入控制模块和输出控制模块分别与核心处理模块443连接。在搬移开始之前,核心控制模块442将申请AHB总线传输中止请求和正常的AHB总线传输请求、以及各类AHB传输参数,输出给总线接口模块45;在数据搬移的过程,如果核心处理模块443空闲,核心控制模块442通过输入控制模块将源外设数据读入核心处理模块443进行处理;核心控制模块442还通过输出控制模块将经由核心处理模块443处理完成的数据输出到目的外设;在搬移结束之后,核心控制模块442将DMA请求清除信号输出给CPU。核心控制模块442还在搬移过程之中将传输错误中断信号或传输结束中断信号,输出给CPU。
核心处理模块443用于完成HDLC基本功能,包括CRC生成和校验、透明化处理、帧标志序列的添加或删除等。如图6所示,核心处理模块443包括有依次连接的完成FCS计算和校验的FCS模块、完成透明化处理(零插入和零删除)的透明化处理模块以及完成帧标志序列插入和删除的标志序列处理模块。
其中,FCS模块用于FCS的计算,FCS计算的范围包括地址字段、控制字段以及未透明化处理的信息字段。透明化处理模块用于在发送端发送连续5个“1”之后插入1个“0”,在接收端连续接收到5个“1”删除后面的那个“0”;透明化处理的范围包括地址字段、控制字段、信息字段、帧校验序列。从而在一个HDLC帧中,仅有首尾存在7E。标志序列处理模块用于在HDLC帧间隙进行帧标志序列(0X7E)的插入。
核心处理模块443在发送HDLC帧时,首先由FCS模块对地址字段、控制字段以及未透明化处理的信息字段进行CRC校验,并将生成的校验序列放入FCS字段(即对发送数据逐位做CRC计算并把计算结果附在FCS字段);然后通过透明化处理模块将上述生成的数据进行透明化处理,即在连续发送5个”1”之后插入1个”0”,透明化处理的范围包括地址字段、控制字段、信息字段和FCS字段,从而在一帧HDLC数据中,除了首尾有7E外,其他地方都不应该出现7E字符;最后通过标志序列处理模块在HDLC帧间隙插入帧标志序列(0X7E)。
核心处理模块443在接收HDLC帧时,首先通过标志序列处理模块进行帧定界,即去除帧标志序列(0X7E);然后通过透明化处理模块对取出帧标志序列的数据进行透明化处理,即连续接收到5个”1”删除后面的那个”0”,透明化处理的范围包括地址字段、控制字段、信息字段和FCS字段;最后通过FCS模块进行FCS删除,得到原始数据。
核心处理模块443还包括有目的输出缓冲和源输入缓冲,其中目的输出缓冲用于存放处理完毕的接收数据,等待CPU读取;源输入缓冲用于存放没有处理的发送数据,准备等待进行HDLC处理。在本实施例中,源输入缓冲和目的输出缓冲都位于外部存储单元中,各被划分为32块,每块2KB,每个数据块记录1个HDLC帧。
核心控制模块442为输入缓冲和输出缓冲各自维护1个32Bit状态寄存器。输入缓冲状态寄存器记录32个数据缓冲的状态信息,显示CPU接收缓冲的归属状态:“0”:HDLC拥有数据缓冲控制权,可写入收到的数据;“1”:CPU拥有数据缓冲控制权,可读取收到的数据。CPU在读完1个缓冲的数据后,需要对相应的缓冲标志位清0,以便HDLC进行写。在对每个寄存器的写操作中,只能将要清0的位设置为0,其他位设置为1。在本实施例中,缓冲必须按顺序读,即只有在缓冲0读完以后才能读缓冲1,依次类推。
输出缓冲状态寄存器记录32个数据缓冲的状态信息,显示CPU发送缓冲的归属状态:“0”表示CPU拥有数据缓冲控制权,可写入要发送的HDLC数据;“1”表示HDLC拥有数据缓冲控制权,可启动HDLC数据发送。当HDLC发送完一个缓冲的数据后,会自动将对应的缓冲标志位清0,以便CPU进行写。CPU在完成一个缓冲的写操作后,需要将相应位置1。在对寄存器的写操作中,只能将要设1的位设置为1,其他位设置为0。同样该处的缓冲也必须按顺序写。在核心控制模块442进行数据搬移的时候,如果核心处理模块443的源输入缓冲为空,则核心控制模块442的输入控制模块将源外设数据读入核心处理模块443进行处理;如果核心处理模块443的目的输出缓冲满,则核心控制模块442的输出控制模块将核心处理模块443目的输出缓冲的数据输出到目的外设。
为方便控制,在本实施例中,如图5所示,HDLC处理通道44还包括有参数配置模块441。参数配置模块441用于提供配置接口,所有的参数配置或状态回读都经由该参数配置模块441完成。参数配置模块441将来自CPU的配置参数解析之后,分配给核心控制模块442和核心处理模块443,同时收集汇总来自核心控制模块442和核心处理模块443的状态变化,以备CPU回读之需。
如图4所示,为实现较大数据量的处理,在本发明中,HDLC处理通道44还可包括有多个,而HDLC模块还包括有配置编程接口41(Ahb_Slave)、仲裁模块(Ahb_Arbiter)45、同步模块(Req_Sync)42以及汇总模块(Rsp_Route)43。
配置编程接口41用于提供CPU配置编程接口,其将HDLC配置参数解析、分配到各个独立的HDLC处理通道44,同时将各个独立的HDLC处理通道44信息回读、汇总后上报CPU。仲裁模块45用于按照固定优先级或轮循等仲裁算法,在多个HDLC处理通道44之间进行仲裁,以选择特定HDLC处理通道,授予其AHB总线访问控制权。
同步模块42用于对DMA搬移请求信号(hdlc_b/sreq)进行同步化处理(锁存2个时钟周期),并提供DMA请求接口以将来自源或目的外设的DMA(Direct Memory Access,直接存储器访问)请求分配到各个独立通道。同步模块42可为20个外设提供DMA搬移请求信号,用于DMA搬移请求,其为每个外设提供了4种DMA请求信号输入,分别为:
·组(burst)传输请求信号(hdlc_breq),该信号引发一次组传输,组长度预先设定;
·单次传输请求信号(hdlc_sreq),该信号引发一次单次传输,即从/向外设读取/写入1个数据。
·最后一次组传输请求信号(hdlc_lbreq)。
·最后一次单次传输请求信号(hdlc_lsreq)。
汇总模块41用于将来自各个独立通道的DMA清除响应(hdlc_clrX(X=0~19))、DMA传输结束响应(hdlc_TcY(Y=0~19))和中断上报响应(hdlc_IntZ(Z=0~19))汇总,得到统一的DMA清除响应(hdlc_clr)和中断上报响应(hdlc_int)输出。其中:
·DMA清除响应信号或确认信号用于应答外设的DMA请求信号;
·DMA传输结束响应信号用于表示整个数据块的传输已结束;
·HDLC中断上报响应信号通知CPU此时HDLC检测到某类中断;CPU可以通过查询中断状态寄存器确定中断源或中断类型。
如图7所示,核心处理模块442的一个输入缓冲(或输出缓冲)包括有长度域、状态域和有效数据域。其中长度域为2个字节,表示HDLC帧数据有多少字节(除去长度域、状态域的有效字节,不包括FCS);状态域为2个字节,指示帧错误信息,标志位都是1位。在标志序列01111110之间的字节数超过2K-4字节的HDLC帧定义为过长;在标志序列01111110之间的字节数小于4Byte的帧定义为过短;对于来自CPU的输入,状态域为全0。有效数据域是HDLC帧的一个子集,包括地址、控制和信息域。
当然,本发明的实现高层数据链路控制的装置中,HDLC处理通道也可通过其他方式与外设或CPU连接(例如仅通过CPU接口等),并实现数据的DMA搬移和HDLC处理。
如图8所示,为本发明实现高层数据链路控制的装置进行数据搬移的流程图。
步骤S81:HDLC模块进行数据的输入或输出,该搬移可以是组传输方式或者单次传输方式。当HDLC模块进行外设和外设之间或者外设和外部存储单元之间的数据搬移时,DMA数据搬移由来自外设的DMA搬移请求发起,HDLC模块接收到来自外设的DMA搬移请求后进行数据搬移;HDLC模块进行外设存储单元和外部存储单元之间的数据搬移时,HDLC模块自行完成数据输入和输出。
步骤S82:HDLC模块每完成一次组传输或单次传输数据搬移后,通知外设本次组传输或单次传输数据搬移完毕(进行外设间或者外设与外部存储单元间的数据搬移时),或者自动对配置传输长度递减1(进行外设存储单元和外部存储单元间的数据搬移时)。
步骤S83:在全部数据搬移结束之后,HDLC模块通过中断上报CPU,释放本次传输占用的DMA通道。
在进行外设间或者外设与外部存储单元间的数据搬移时,HDLC模块还通知外设本次数据搬移完毕;而在进行外设存储单元和外部存储单元间的数据搬移时,当配置传输长度递减为0时表明全部数据搬移结束。
如图9所示,为HDLC模块在发送数据时进行数据转换的流程图。
步骤S91:当HDLC发送数据帧在存储单元准备完毕,HDLC模块从指定的存储单元读取HDLC帧数据,进行FCS处理、透明化处理和帧标志插入处理,直到数据全部读完;
步骤S92:HDLC模块发送1个HDLC帧数据之后,通过中断或者软件查询的方式与软件交互,通知某个HDLC帧已经发送完毕。
如图10所示,为HDLC模块在接收数据时进行数据转换的流程图。
步骤S101:外设(SPI、UART)通过驱动DMA搬移请求信号,通知HDLC模块有数据输入;
步骤S102:HDLC模块从外设将数据读入,然后对读入数据进行帧标志检测、透明化处理(连续5个之后自动零删除)、FCS处理(CRC校验处理),最后将处理后数据写入指定存储单元,直到接收处理完1个完整的HDLC帧;
步骤S103:HDLC模块在接收完1个HDLC帧之后,通过中断与CPU交互,通知CPU读取已处理完毕的HDLC帧。
CPU在读取完毕存储单元的HDLC帧之后,通知HDLC模块HDLC接收数据帧已经在存储单元读取完毕。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。