高速数据链路控制协议发送处理模块及其数据处理方法

文档序号:7692885阅读:235来源:国知局
专利名称:高速数据链路控制协议发送处理模块及其数据处理方法
技术领域
本发明属于网络互连设备技术领域,特别涉及特别涉及高速数据链路控制(HDLC)协议发送处理模块的结构设计及其数据处理方法。
HDLC协议处于开放系统互连(OSI)七层网络参考模型的第二层数据链路层。HDLC协议的数据帧结构如

图1所示,图中HDLC数据帧以16进制数7E(0x7E)为帧起始、帧结束标志,在帧结束符前还有一个帧校验字段(FCS)用来进行数据的帧校验(CRC),该字段为可选字段,可以没有帧校验。帧与帧之间用0x7E或0xFF填充,两个连续帧可以共享一个0x7E作为帧起始和帧结束。另外,若发送一个帧时出现错误,则可以发帧中止标识(0xFF),表明该帧数据有误,在接收时发现7个以上的连1就认为是帧中止标识。在发送时,由于数据中可能也有0x7E,为了避免将数据中的0x7E误认为是帧标识,需要使用零插入功能在数据和帧校验字段里若发现有5个连1就在5个连1的后面插入一个零,这样数据和帧校验字段里就不会有帧标识了。这时在接收端就要使用零删除功能在数据和帧校验字段里若发现有5个连1就将后面紧跟的一个零去掉,从而恢复原数据。
已有的一种串行通信控制器芯片的结构如图2所示,包括物理层接口模块、协议处理模块、先进先出缓冲器(FIFO)、直接存储器访问(DMA)模块和周边元件扩展接口(PCI)模块;其中,物理层接口模块模块负责与OSI参考模型第一层物理层的接口,将物理层收到的串行数据变成8bit并行数据送给协议处理模块,或将协议处理模块发送的8bit并行数据变成串行的数据送给物理层处理。
协议处理模块包括HDLC协议处理模块和异步串口协议处理模块,分别进行同步HDLC串口和异步串口的协议处理,异步串口的协议处理与本发明无关,不再介绍。
HDLC协议处理模块的结构如图3所示,由一个接收HDLC协议处理模块和一个发送HDLC协议处理模块组成。这两个模块相互独立,分别处理接收的数据和发送的数据,使得系统可以全双工的工作。
其中发送协议处理模块要完成的功能1.支持M个HDLC通道;2.支持N个端口,每个端口可同时有多个HDLC通道;3.支持透明传输;4.帧开始、帧结束标志的自动生成;5.支持共享的帧开始和帧结束标志;6.两个传输帧之间数据自动填充,填充字符可编程;7.支持零插入功能;8.16位/32位CRC帧校验生成(CRC16和CRC32);9.支持字节内高低位比特的交换;10.支持端口数据取反;11.支持流控功能。
已有的发送HDLC协议处理模块的结构如图4所示,它由N个接收HDLC协议处理器、一个状态存储器、一个状态仲裁模块和一个取数据仲裁模块组成。
为了便于说明发送HDLC协议处理模块及其数据处理方法所存在的问题,下面以对16个端口的256个通道进行HDLC协议的发送处理为例。
从图4中可以看到,使用已有的串行HDLC协议处理模块对16端口的串行数据进行处理,需要有16个(每个端口一个)发送HDLC协议处理器,但由于每个HDLC通道有大量的中间数据(约一百多比特)需要保存,所以必须16个处理器共用一个状态存储器进行256个HDLC通道中间数据的存取,因此对状态存储器的操作需要进行仲裁。同时由于是16个发送HDLC协议处理器同时从后面电路的先进先出缓冲器(FIFO)接收数据,因此这里也需要进行仲裁。这些地方的仲裁成为系统速度的瓶颈,所以即使提高每个处理器的速度,端口的速率也不能有效提高。使用这种方案在主时钟为33MHz时,每个端口的最大端口速率最多也只能达到8Mbps左右,并且由于要使用16个发送HDLC协议处理器,占用的芯片面积也很大。
本发明提出一种高速数据链路控制协议发送处理模块,其特征在于,由一个端口仲裁模块、一个发送高速数据链路控制协议处理器和一个状态存储器模块所组成;其中,所说的端口仲裁模块的输入端与N个端口相连,所说的发送高速数据链路控制协议处理器的输入端分别与该端口仲裁模块输出端和后面电路的先进先出缓冲器的输入端相连,同时与所说的状态存储器模块双向连接,该发送高速数据链路控制协议处理器的输出端与N个端口相连接。
本发明还提出一种用于上述模块的数据处理方法,其特征在于,包括以下步骤
1)端口仲裁模块接收N个端口的数据请求信号,把端口的请求信号依据优先级别依次传给发送高速数据链路控制协议处理器,并为N个端口共享数据处理流水线提供仲裁;2)该发送高速数据链路控制协议处理器从后面电路的先进先出缓冲器读出未处理数据,把该数据所属高速数据链路控制通道的状态数据从状态存储器模块读出,对其数据进行流水线处理,把处理后的数据送到相应的端口;3)该数据所属高速数据链路并把该高速数据链路控制通道的新状态数据写回状态存储器。
本发明的特点及良好效果1)使用本发明方法中的并行的发送高速协议处理器对所有端口的数据流进行处理,若端口同时有数据需要处理则按优先级顺序进行处理。采用对数据的并行和流水线处理,使得HDLC协议处理模块的处理能力大大提高,单向吞吐量为8乘以时钟速率。
2)本发明的高速处理器内部采用流水线结构,每个时钟即可处理一个8比特的数据,若支持16个端口的芯片在时钟33MHz时单向数据吞吐率达264Mbps,端口的最大速率可以达到52Mbps,平均端口速率为16Mbps。
3)由于本发明只使用一个发送HDLC协议处理器可处理N个端口数据,协议处理部分所占用的控制芯片面积不会随端口的增多而线性增大。并且事实证明,该发送HDLC协议处理器所占用的芯片面积并不比单个的串行HDLC协议处理器大。也即是说,若支持的端口为16,使用该HDLC协议处理器的协议处理模块所占用的芯片面积只有使用已有串行HDLC协议处理器方案的约16分之一,如果需要支持的端口数更多,如32个、64个,其优势是无可比拟的。
图1为HDLC帧结构示意图。
图2为已有的串行通信控制器芯片结构框图。
图3为已有的HDLC协议控制模块结构框图。
图4为已有的发送HDLC协议处理模块结构框图。
图5为本发明的发送HDLC协议处理模块结构。
图6为本发明的三级流水线的结构示意图。
图7为本发明的发送HDLC协议处理状态机的示意图。
本实施例的发送HDLC协议处理模块的数据处理方法为该端口仲裁模块接收16个端口的数据请求信号,把端口的请求信号依据优先级别依次传给发送HDLC协议处理器,并为16个端口共享数据处理流水线提供仲裁;该发送HDLC协议处理器从FIFO读出数据,把该数据所属HDLC通道的状态数据从状态存储器模块读出,对从FIFO读出的数据进行流水线处理,把处理后的数据送到相应的端口,并把该HDLC通道的新状态数据写回状态存储器。
为了提高发送效率,本实施例的HDLC协议发送处理器设置了由数据缓冲寄存器(一级缓冲)和数据暂存寄存器(二级缓冲)组成的二级缓存结构对从FIFO读出的数据进行缓存,即把从FIFO读出的数据放入一级缓冲中,第二级缓冲从一级缓冲取数据,发送协议处理器对第二级缓冲的数据进行处理,这样在该协议处理器对对第二级缓冲的数据进行处理的同时,一级缓冲可以从FIFO读取后面的数据。
本实施例的数据处理方法的具体实现步骤分别详细说明如下上述的对16个端口共享数据处理流水线提供仲裁的方法,具体包括以下步骤将16个端口的请求数据中速率高的数据通道放在端口号小的端口上,仲裁时端口号越小则优先级越高,即多个端口同时请求数据时,先处理端口号低的。使用时可设置端口速率不超过最大速率且数据总吞吐量不超过最大吞吐量。由于每个端口的数据请求是每隔(8×处理时钟频率/端口速率)个处理时钟才来一个数据,就不会出现前一个数据请求未被处理而下一个数据请求已来的情况。
上述发送HDLC协议处理器对数据进行流水线处理的方法,具体步骤为看端口仲裁模块有没有通道申请数据,如果有申请就启动协议处理流水线,如果没有申请则该时钟周期的处理流水线空闲。
由于对数据的处理过程比较复杂,在一个时钟周期难以处理完,所以本实施例的处理流水线采用三级流水线实现数据处理,如图6所示,每个时钟可以处理一个8比特的并行数据。每一级流水线完成相应的工作,并把数据用时钟锁存送到下一级继续进行处理,各级流水线的工作并行进行,所以有可能同时在处理3个通道的数据,这三级流水线进行数据处理的方法,具体包括以下步骤第一级1.如果端口有申请就锁存所申请数据的通道号、所在端口、以及工作模式、流控指示信号;2.向状态存储器发出读使能信号;
第二级1.锁存从状态存储器读出的状态数据;2.对读出的待发送数据,若当前处于发送数据或帧校验状态,则进行5个连1的检测,进行零插入,得到填零后的数据;3.将本次待发送数据与上次剩余数据合并,得到总的待发送数据;4.根据状态位信息进行处理状态机的状态跳转;5.根据状态机的状态得到新的待发送数据;6.若数据缓冲寄存器(一级缓冲)已被送入到数据暂存寄存器(二级缓冲),则向发送FIFO请求新的数据;第三级1.对待发送数据完成数据翻转操作(可选),并把数据送到相应的端口;2.若状态机处于发送数据状态,则对当前准备的数据进行帧校验计算;3.若数据暂存寄存器(二级缓冲)被取空且缓冲寄存器(一级缓冲)的数据有效,则把一级缓冲中的数据送入到二级缓冲中,同时完成比特顺序选择功能;4.若第一级已向FIFO发出请求数据则把从FIFO请求得到的新数据写入到缓冲寄存器中;若缓冲寄存器的数据被送出,则清空缓冲寄存器,否则缓冲寄存器不变;5.发写使能信息,把新的状态位写入到状态存储器中去。
在上面第二级流水线处理方法中使用了发送HDLC协议处理状态机,该状态机用来控制HDLC协议发送的处理过程。该状态机的状态转移图如图7所示。状态机的状态包括空闲状态、帧间填充、异常处理、插入帧头、发送数据、帧校验和帧尾插入;各跳转条件解释如下
在没有发现线路错误时,各状态跳转的条件包括复位(rst)时状态机处于空闲状态;a-如果数据暂存寄存器中有数据,且为非透传模式,如果帧间填充选择比特为0000或0001,而且流控寄存器为高时。则沿a路径跳转,从空闲状态跳到帧头插入状态;b-而且流控寄存器为高时,如果帧间填充选择比特不为0000或0001,则沿b路径跳转,从空闲状态跳到帧间填充状态;c-无条件沿c路径跳转;d-若该帧数据发送完,工作于非透传模式时且流控打开,帧校验选择为CRC16或CRC32时,沿d路径跳转,从发送数据状态跳转到帧校验状态;e-若该帧数据发送完,且流控打开,帧校验选择不为CRC32或CRC16时,沿e路径跳转,从发送数据状态跳转到帧尾插入状态。
g-如果帧校验选择为CRC16,则在帧校验发送字节计数为2时沿g路径跳转;如果CRC选择为CRC32,则在帧校验发送字节计数为4时沿g路径跳转,从CRC状态跳转到帧尾插入状态;h-如果暂存数据有效寄存器为高,且帧间填充选择比特为0000,这时相邻帧的帧标识复用,而且流控打开,则沿h路径跳转,从帧尾插入状态直接跳到发送数据状态,此时连续的数据帧共享帧标志;i-如果暂存数据有效寄存器为高,且帧间填充选择比特为0001,则沿i路径跳转,从帧尾插入状态跳到帧头插入状态;j-如果暂存数据有效寄存器为高,且帧间填充选择比特不为0000或0001,则沿j路径跳转,从帧尾插入状态跳到帧间填充状态;k-如果暂存数据有效寄存器为低,或流控寄存器关闭;则沿k路径跳转,从帧尾插入状态跳转到空闲状态;r-如果已发送完帧间填充,则沿r路径跳转,从帧间填充状态跳转到帧头插入状态;
在发现有线路错误的情况下,如果流控关闭或要求发生错误时一直发送帧中止标识,则状态机一直处在异常处理状态,否则转移条件如下f-如果暂存数据有效寄存器为低(可能是错误引起的),且数据帧未结束时,沿f路径跳转,从发送数据状态跳转到异常处理状态;l-如果暂存数据有效寄存器为高,且帧间填充选择比特为0000或0001,则沿1路径跳转,从异常处理状态跳转到帧头插入状态;m-如果暂存数据有效寄存器为高,且帧间填充选择比特不为0000或0001,则沿m路径跳转,从异常处理状态跳转到帧间填充状态;n-如果暂存数据有效寄存器为低,则沿n路径跳转,从异常处理状态跳转到空闲状态;o-如果发现发生了错误,则沿o路径跳转,从空闲状态跳转到异常处理状态;p-如果是透传模式,且暂存数据有效寄存器为高,则沿p路径跳转,从异常处理状态直接跳转到发送数据状态;如不满足上述各跳转条件,则状态机默认保持状态不变。
由于采用8bit并行处理,零插入功能的设计与串行处理就大不相同零插入的方法为对当前的8bit待发送数据数据(new_data)计算其从最低位向上数连1的个数(cur_count1_low)和从最高位向下数连1的个数(cur_count1_high),该数据处理后将cur_count1_high保存为从最高位向下数连1的个数(last_count1_high);令连1计数器count1=last_count1_high,对数据最低位(new_data
)到数据最高位(new_data[7])依次判断是否为1,若为1则连1计数器加1,并判断连1计数器是否等于5,若等于5则将该比特后面插入一个0,并将连1计数器复位到0。
上述状态机中的零插入实现方法可以使用硬件描述语言(如verilogHDL,VHDL语言)中的for循环语句或者case语句来实现,只需要占用一个时钟周期。用for循环语句设计出的电路面积较小,而用case语句设计出的电路速度更快。
由于其它功能的实现比较简单,可用常规技术手段实现,这里就不再阐述。
使用本发明所述的高速数据链路控制协议发送处理模块及其数据处理方法可以实现新的高速HDLC协议模块。并可以组构成如图2所示的串行通信控制器芯片结构,这样整个芯片的性能得到了提高,同时芯片面积也变小了,使得成本更低。由于HDLC协议处理模块占芯片面积较小,还可以轻易地使用可编程逻辑器件实现(如FPGA),并应用到任何需要进行HDLC协议处理的产品中,使得产品的开发速度大大提高,有效的缩短开发周期。
权利要求
1.一种高速数据链路控制协议发送处理模块,其特征在于,由一个端口仲裁模块、一个发送高速数据链路控制协议处理器和一个状态存储器模块所组成;其中,所说的端口仲裁模块的输入端与N个端口相连,所说的发送高速数据链路控制协议处理器的输入端分别与该端口仲裁模块输出端和后面电路的先进先出缓冲器的输入端相连,同时与所说的状态存储器模块双向连接,该发送高速数据链路控制协议处理器的输出端与N个端口相连接。
2.如权利要求1述的高速数据链路控制协议发送处理模块,其特征在于,所说的发送高速数据链路控制协议处理器包括由数据缓冲寄存器和数据暂存寄存器组成的二级缓存结构。
3.一种用于如权利要求1所述的高速数据链路控制协议发送处理模块的数据处理方法,其特征在于,包括以下步骤1)端口仲裁模块接收N个端口的数据请求信号,把端口的请求信号依据优先级别依次传给发送高速数据链路控制协议处理器,并为N个端口共享数据处理流水线提供仲裁;2)该发送高速数据链路控制协议处理器从后面电路的先进先出缓冲器读出未处理数据,把该数据所属高速数据链路控制通道的状态数据从状态存储器模块读出,对其数据进行流水线处理,把处理后的数据送到相应的端口;3)该数据所属高速数据链路并把该高速数据链路控制通道的新状态数据写回状态存储器。
4.如权利要求3所述的数据处理方法,其特征在于,所说的对N个端口共享数据处理流水线提供仲裁的方法,具体包括以下步骤1)将N个端口的请求数据中速率高的数据通道放在端口号小的端口上,仲裁时端口号越小则优先级越高;2)多个端口同时请求数据时,先传送端口号低中的数据。
5.如权利要求3所述的数据处理方法,其特征在于,所说的发送高速数据链路控制协议处理器对数据的处理方法,具体包括以下步骤1)所说的发送高速数据链路控制协议处理器把从后面电路的先进先出缓冲器读出的数据放入一级数据缓冲寄存器中,第二级数据暂存寄存器从一级数据缓冲寄存器取数据;2)在对第二级数据暂存寄存器的数据进行流水线处理的同时,一级数据缓冲寄存器可从先进先出缓冲器读取后面的数据。
6.如权利要求5所述的数据处理方法,其特征在于,所说的发送高速数据链路控制协议处理器对数据进行流水线处理的方法,具体包括以下步骤1)首先看端口仲裁模块有没有通道申请数据,如果有申请就启动协议处理流水线;2)如果没有申请则该时钟周期的处理流水线空闲。
7.如权利要求6所述的数据处理方法,其特征在于,所说的对数据进行流水线处理采用三级流水线处理,每一级流水线完成相应的工作,并把数据用时钟锁存送到下一级继续进行处理,从而使每个时钟可以处理一个8比特的并行数据,各级流水线的工作并行进行,同时处理3个通道的数据。
8.如权利要求7所述的数据处理方法,其特征在于,所说的三级流水线对数据进行处理的方法,具体包括以下步骤第一级1)如果端口有申请就锁存所申请数据的通道号、所在端口、以及工作模式、流控指示信号,2)向状态存储器发出读使能信号;第二级1)锁存从状态存储器读出的状态数据,2)对读出的待发送数据,若当前处于数据处理状态或帧校验状态,则进行5个连1的检测,进行零插入,得到填零后的数据,3)将本次待发送数据与上次剩余数据合并,得到总的待发送数据,4)根据状态位信息进行处理状态机的跳转,5)根据状态机的状态得到新的待发送数据,6)若数据缓冲寄存器已被送入到数据暂存寄存器,则向先进先出缓冲器请求新的数据;第三级1)把待发送数据送到相应的端口,2)若状态机处于发送数据状态,则对当前准备的数据进行帧校验计算,3)若数据暂存寄存器被取空且缓冲寄存器的数据有效,则把缓冲寄存器中的数据送入到数据暂存寄存器中,同时完成比特顺序选择功能,4)若第一级已向先进先出缓冲器发出请求数据则把从先进先出缓冲器请求得到的新数据写入到缓冲寄存器中;若缓冲寄存器的数据被送出,则清空缓冲寄存器,否则缓冲寄存器不变,5)发写使能信息,把新的状态位写入到状态存储器中去。
9.如权利要求8所述的数据处理方法,其特征在于,用所说的状态机控制高速数据链路控制协议发送的过程,该状态机的状态包括空闲状态、帧间填充、异常处理、插入帧头、发送数据、帧校验和帧尾插入;在没有发现线路错误时,各状态跳转的条件包括复位时状态机处于空闲状态;a-如果暂存数据有效寄存器为高,且为非透传模式,如果帧间填充选择比特为0000或0001,而且流控寄存器为高时,则沿a路径跳转,从空闲状态跳到帧头插入状态;b-如果暂存数据有效寄存器为高,且为非透传模式,而且流控寄存器为高时,如果帧间填充选择比特不为0000或0001,则沿b路径跳转,从空闲状态跳到帧间填充状态;c-无条件沿c路径跳转;d-若该帧数据发送完,工作于非透传模式时且流控打开,帧校验选择为CRC16或CRC32时,沿d路径跳转,从发送数据状态跳转到帧校验状态;e-若该帧数据发送完,且流控打开,帧校验选择不为CRC32或CRC16时,沿e路径跳转,从发送数据状态跳转到帧尾插入状态;g-如果帧校验选择为CRC16,则在帧校验发送字节计数为2时沿g路径跳转;如果帧校验选择为CRC32,则在帧校验发送字节计数为4时沿g路径跳转,从帧校验状态跳转到帧尾插入状态;h-如果暂存数据有效寄存器为高,且帧间填充选择比特为0000,这时相邻帧的帧标识复用,而且流控打开,则沿h路径跳转,从帧尾插入状态直接跳到发送数据状态,此时连续的数据帧共享帧标志;i-如果暂存数据有效寄存器为高,且帧间填充选择比特为0001,则沿i路径跳转,从帧尾插入状态跳到帧头插入状态;j-如果暂存数据有效寄存器为高,且帧间填充选择比特不为0000或0001,则沿j路径跳转,从帧尾插入状态跳到帧间填充状态;k-如果暂存数据有效寄存器为低,或流控寄存器关闭,则沿k路径跳转,从帧尾插入状态跳转到空闲状态;r-如果已发送完帧间填充,则沿r路径跳转,从帧间填充状态跳转到帧头插入状态;在发现有线路错误的情况下,如果流控关闭或要求发生错误时一直发送帧中止标识,则状态机一直处在异常处理状态,否则转移条件如下f-如果暂存数据有效寄存器为低,且数据帧未结束时,沿f路径跳转,从发送数据状态跳转到异常处理状态;l-如果暂存数据有效寄存器为高,且帧间填充选择比特为0000或0001,则沿1路径跳转,从异常处理状态跳转到帧头插入状态;m-如果暂存数据有效寄存器为高,且帧间填充选择比特不为0000或0001,则沿m路径跳转,从异常处理状态跳转到帧间填充状态;n-如果暂存数据有效寄存器为低,则沿n路径跳转,从异常处理状态跳转到空闲状态;o-如果发现发生了错误,则沿o路径跳转,从空闲状态跳转到异常处理状态;p-如果是透传模式,且暂存数据有效寄存器为高,则沿p路径跳转,从异常处理状态直接跳转到发送数据状态;如不满足所说的跳转条件,则状态机默认保持状态不变。
10.如权利要求9所述的数据处理方法,其特征在于,所说的零插入的方法,具体包括以下步骤1)对当前的待发送数据数据计算其从最低位向上数连1的个数和从最高位向下数连1的个数,该数据处理后将从最高位向下数连1的个数保存为从最高位向下数连1的个数;2)令连1计数器为从最高位向下数连1的个数,对数据最低位到数据最高位依次判断是否为1,若为1则连1计数器加1,并判断连1计数器是否等于5,若等于5则将该比特后面插入一个0,并将连1计数器复位到0。
全文摘要
本发明属于网络互连设备技术领域,涉及HDLC协议发送处理模块及其数据处理方法。该模块包括由一个端口仲裁模块、一个发送HDLC协议处理器和一个状态存储器模块所组成;其数据处理方法为端口仲裁模块接收N个端口的数据请求信号,把端口的请求信号依据优先级别依次传给发送HDLC协议处理器,并为N个端口共享数据处理流水线提供仲裁;发送HDLC协议处理器从FIFO读出未处理数据,把数据所属HDLC通道的状态数据从状态存储器模块读出,对其数据进行流水线处理,把处理后的数据送到相应的端口;并把HDLC通道的新状态数据写回状态存储器。本发明具有处理速度快、芯片的面积不会随端口的增多而线性增大且通用性强的优点。
文档编号H04L12/40GK1466348SQ0212299
公开日2004年1月7日 申请日期2002年6月15日 优先权日2002年6月15日
发明者黄勇, 张赞, 黄 勇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1