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

文档序号:7692882阅读: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.16位/32位CRC帧校验;8.帧校验错误和长/短帧错误的检测;9.支持字节内高低位比特的交换;10.支持端口数据取反。
已有的接收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个端口相连接,所说的接收高速数据链路控制协议处理器的输入端与该端口仲裁模块输出端相连,同时与所说的状态存储器模块双向连接,该接收高速数据链路控制协议处理器的输出端与后面电路的先进先出缓冲器的输入端相连。
本发明还提出一种用于上述的高速数据链路控制协议接收处理模块的数据处理方法,其特征在于,包括以下步骤;
1)端口仲裁模块对N个端口共享数据处理流水线提供仲裁,依据优先级别把需要处理的数据依次送给接收高速数据链路控制协议处理器;2)所说的接收高速数据链路控制协议处理器把该数据所属的高速数据链路控制通道的状态数据从状态存储器模块读出,对数据进行流水线处理,把处理后的数据送给后面电路中的先进先出缓冲器;3)所说的接收高速数据链路控制协议处理器再把该高速数据链路控制通道的新状态数据写回状态存储器。
本发明的特点及良好效果1、使用本发明方法中的并行接收高速协议处理器对所有端口的数据流进行处理,若端口同时有数据需要处理则按优先级顺序进行处理。采用对数据的并行和流水线处理,使得HDLC协议处理模块的处理能力大大提高,单向吞吐量为8乘以时钟速率。
2、本发明的高速处理器内部采用流水线结构,每个时钟即可处理一个8比特的数据,若支持16个端口的芯片在时钟33MHz时单向数据吞吐率达264Mbps,端口的最大速率可以达到52Mbps,平均端口速率为16Mbps。
3、由于本发明的模块只使用一个接收HDLC协议处理器可处理N个端口数据,协议处理部分所占用的控制芯片面积不会随端口的增多而线性增大。并且事实证明,该接收HDLC协议处理器所占用的芯片面积并不比单个的串行HDLC协议处理器大。也即是说,若支持的端口为16,使用该HDLC协议处理器的协议处理模块所占用的芯片面积只有使用已有串行HDLC协议处理器方案的约16分之一,如果需要支持的端口数更多,如32个、64个,其优势是无可比拟的。
图2为已有的串行通信控制器芯片结构框图。
图3为已有的HDLC协议控制模块结构框图。
图4为已有的接收HDLC协议处理模块结构框图。
图5为本发明的接收HDLC协议处理模块结构框图。
图6为本发明的三级流水线的结构示意图。
图7为本发明的接收HDLC协议处理状态机的示意图。
本实施例的HDLC协议接收处理模块对数据处理方法为端口仲裁模块为16个端口共享数据处理流水线提供仲裁,并把需要处理的数据依据优先级别依次送给接收HDLC协议处理器;接收HDLC协议处理器把该数据所属HDLC通道的状态数据从状态存储器模块读出,对数据进行流水线处理,把处理后的数据送给后面电路中的FIFO,并把该HDLC通道的新状态数据写回状态存储器。
本实施例的数据处理方法的具体实现步骤分别详细说明如下
对16个端口共享数据处理流水线提供仲裁的方法,具体包括以下步骤将16个端口的接收数据中速率高的数据通道放在端口号小的端口上,仲裁时端口号越小则优先级越高,即多个端口同时有数据时,先传送端口号低中的数据;设置端口速率不超过最大速率且数据总吞吐量不超过最大吞吐量。由于每个端口的数据是每隔(8×处理时钟频率/端口速率)个处理时钟才来一个数据,就不会出现前一个数据未被处理而下一个数据已来的情况。
接收HDLC协议处理器对数据进行流水线处理的具体实现步骤为首先看端口仲裁模块有没有数据需要处理,如果有数据要处理就启动处理流水线,如果没有数据处理则该时钟周期的处理流水线空闲。
由于对数据的处理过程比较复杂,在一个时钟周期难以处理完,本实施例的接收HDLC协议处理器的处理流水线采用三级流水线实现对数据处理,如图6所示。每一级流水线完成相应的工作,并把数据用时钟锁存送到下一级继续进行处理,从而使每个时钟可以处理一个8比特的并行数据。各级流水线的工作并行进行,所以可同时在处理3个通道的数据。这三级流水线对数据处理的具体方法如下第一级1.如果端口有数据就取端口数据;2.计算数据从最低位开始的连1和连0的个数(count0_low,count1_low);3.计算数据从最高位开始的连1和连0的个数(count0_high,count1_high);4.向状态存储器发出读使能信号;第二级1.锁存从状态存储器读出的状态数据;
2.端口数据进行翻转(需要对数据取反时)和计算,得到需要的中间数据(cur_count1_low,cur_count1_high);3.根据中间数据和读出的状态位信息,进行7E的检测、FF的检测和零删除,得到去除多余填零的数据;4.根据上面的结果进行处理状态机的跳转,得到当前状态;5.根据状态机的跳转情况得到帧开始、帧结束;6.若处于发送数据状态则将上次剩余的数据和得到的新数据合并得到去除多余0的纯数据,以及可以用来发给FIFO的8bit新数据并完成比特顺序选择;7.计算新的帧长;第三级1.若接收到整字节,则进行帧校验(CRC)计算;2.若数据可以送出,就向FIFO送出数据;3.若帧结束,则进行最大包长检查、最小包长检查、整字节检查、判断CRC的正确性;4.发写使能信息,把新的状态位写入到状态存储器(RAM)中去。
在上面第二级流水线处理中使用了接收HDLC协议处理状态机,该状态机用来控制HDLC协议接收处理过程,该状态机在模块处于“透传模式”的工作方式时无效。该状态机的状态转移图如图7所示。
各状态的含义如下空闲空闲状态帧标识帧标识状态,这时收到了帧标识数据数据接收状态,这时接收数据和帧校验各跳转条件解释如下(如不满足跳转条件,状态机默认保持状态不变)复位(rst)时状态机处于空闲状态,工作时各转移条件的解释如下
c1-如果检测到接收数据流中有帧标识(0x7E),则沿c1路径跳转从空闲状态跳转到帧标识状态;c2-如果检测到接收数据流中有帧中止标识(7个以上连1),则沿c2路径跳转从帧标识状态跳转到空闲状态;c3-如果检测到接收数据流中的数据不是帧标识或帧中止标识,则沿c3路径跳转从帧标识状态跳转到数据状态;c4-如果检测到接收数据流中有帧标识,则沿c4路径跳转从数据状态跳转到帧标识状态;c5-如果检测到接收数据流中有帧中止标识,则沿c5路径跳转从数据状态跳转到空闲状态;在上述流水线中的各步骤均可采用常规技术手段实现,由于采用8bit并行处理,其中的帧标识的检测、帧中止的检测、多余零的删除等也可采用以下方法帧标识的检测方法1)收到一个新的8bit数据(new_data)后,计算当前数据的从最低位向上数连1的个数(cur_count1_low)和从最高位向下数连1的个数(cur_count1_high),并在当前数据处理后将从最高位向下数连1的个数(cur_count1_high)保存到上次数据最高位向下连1计数个数(last_count1_high)里,以备下次数据来时使用;2)如果发现数据流中有6个连1(cur_count1_low+last_count1_high=6)或新数据本身就是一个帧标识(new_data=7E)则认为检测到了一个帧标识。
帧中止标识的检测方法如果检测到数据流中有7个以上的连1出现(cur_count1_low+last_count1_high>6)则认为检测到了一个帧中止标识。
多余零的删除方法
1)设置连1计数器,先令连1计数器为从最高位向下数连1的个数(count1=last_count1_high),2)然后对新来数据最低位(new_data
)到新来数据最高位(new_data[7])判断是否为1,若为1则连1计数器加1,否则判断连1计数器是否等于5,若等于5,则将该比特删除并将连1计数器复位到0。
上述的帧标识的检测、帧中止的检测、多余零的删除等的实现方法可以使用硬件描述语言(如Verilog HDL,VHDL语言)中的for循环语句或者case语句来实现,只需要占用一个时钟周期。用for循环语句设计出的电路面积较小,而用case语句设计出的电路速度更快。
使用本发明所述的高速数据链路控制协议接收处理模块及其数据处理方法可以实现新的高速HDLC协议模块。并可以组构成如图2所示的串行通信控制器芯片结构,这样整个芯片的性能得到了提高,同时芯片面积也变小了,使得成本更低。由于本发明的接收HDLC协议处理模块占芯片面积较小,还可以轻易地使用可编程逻辑器件实现(如FPGA),并应用到任何需要进行HDLC协议处理的产品中,使得产品的开发速度大大提高,有效的缩短开发周期。
权利要求
1.一种高速数据链路控制协议接收处理模块,其特征在于,由一个端口仲裁模块、一个接收高速数据链路控制协议处理器和一个状态存储器模块所组成;其中,所说的端口仲裁模块的输入端同时与N个端口相连接,所说的接收高速数据链路控制协议处理器的输入端与该端口仲裁模块输出端相连,同时与所说的状态存储器模块双向连接,该接收高速数据链路控制协议处理器的输出端与后面电路的先进先出缓冲器的输入端相连。
2.一种用于如权利要求1所述的高速数据链路控制协议接收处理模块的数据处理方法,其特征在于,包括以下步骤;1)端口仲裁模块对N个端口共享数据处理流水线提供仲裁,依据优先级别把需要处理的数据依次送给接收高速数据链路控制协议处理器;2)所说的接收高速数据链路控制协议处理器把该数据所属的高速数据链路控制通道的状态数据从状态存储器模块读出,对数据进行流水线处理,把处理后的数据送给后面电路中的先进先出缓冲器;3)所说的接收高速数据链路控制协议处理器再把该高速数据链路控制通道的新状态数据写回状态存储器。
3.如权利要求2所述的数据处理方法,其特征在于,所说的对N个端口共享数据处理流水线提供仲裁的方法,具体包括以下步骤1)将N个端口的接收数据中速率高的数据通道放在端口号小的端口上,仲裁时端口号越小则优先级越高;2)多个端口同时有数据时,先传送端口号低中的数据。
4.如权利要求2所述的数据处理方法,其特征在于,所说的接收高速数据链路控制协议处理器对数据的处理方法,具体包括以下步骤1)首先看端口仲裁模块有没有数据需要处理,如果有数据要处理就启动处理流水线;2)如果没有数据处理则该时钟周期的处理流水线空闲。
5.如权利要求4所述的数据处理方法,其特征在于,所说的处理流水线采用三级流水线对数据进行处理,每一级流水线完成相应的工作,并把数据用时钟锁存送到下一级继续进行处理,从而使每个时钟可以处理一个8比特的并行数据;各级流水线的工作并行进行,可同时处理3个通道的数据。
6.如权利要求5所述的数据处理方法,其特征在于,所说的三级流水线对数据进行处理的方法,具体包括以下步骤第一级1)如果端口有数据就取端口数据,2)计算数据从最低位开始的连1和连0的个数,3)计算数据从最高位开始的连1和连0的个数,4)向状态存储器发出读使能信号;第二级1)锁存从状态存储器读出的状态数据,2)端口数据在需要进行数据取反时,进行翻转和计算,得到需要的中间数据,3)根据中间数据和读出的状态位信息,进行7E的检测、FF的检测和零删除,得到去除多余填零的数据,4)根据上面的结果进行处理状态机的状态跳转,得到当前状态,5)根据状态机的跳转情况得到帧开始、帧结束,6)若处于数据处理状态,则将上次剩余的数据和得到的新数据合并,得到去除多余0的纯数据,以及用来发给所说缓冲模块的8bit新数据,并完成比特顺序选择,7)计算新的帧长;第三级1)若接收到整字节,则进行帧校验计算,2)若数据可以送出,就向接收缓冲送出数据,3)若帧结束,则进行最大包长检查、最小包长检查、整字节检查、判断帧校验的正确性,4)发写使能信息,把新的状态位写入到状态存储器中去。
7.如权利要求6所述的数据处理方法,其特征在于,所说的状态机的状态包括空闲状态、帧标识状态和数据接收状态;复位时状态机处于空闲状态,工作时所说的各状态跳转的条件包括c1-如果检测到接收数据流中有帧标识,则沿c1路径跳转从空闲状态跳转到帧标识状态;c2-如果检测到接收数据流中有帧中止标识,则沿c2路径跳转从帧标识状态跳转到空闲状态;c3-如果检测到接收数据流中的数据不是帧标识或帧中止标识,则沿c3路径跳转从帧标识状态跳转到数据状态;c4-如果检测到接收数据流中有帧标识,则沿c4路径跳转从数据状态跳转到帧标识状态;c5-如果检测到接收数据流中有帧中止标识,则沿c5路径跳转从数据状态跳转到空闲状态。
8.如权利要求6所述的数据处理方法,其特征在于,所说的帧标识的检测方法为1)收到一个新的8bit数据后,计算其从最低位向上数连1的个数和从最高位向下数连1的个数,并在当前数据处理后将从最高位向下数连1的个数保存到上次数据最高位向下连1计数个数里,以备下次数据来时使用;2)如果发现数据流中有6个连1或新数据本身就是一个帧标识,则认为检测到了一个帧标识。
9.如权利要求6所述的数据处理方法,其特征在于,所说的帧中止标识的检测方法为如果检测到数据流中有7个以上的连1出现,则认为检测到了一个帧中止标识。
10.如权利要求6所述的数据处理方法,其特征在于,所说的多余零的删除方法为1)设置连1计数器,先令连1计数器先令连1计数器为从最高位向下数连1的个数;2)然后对新来数据最低位到新来数据最高位判断是否为1,若为1则连1计数器加1,否则判断连1计数器是否等于5,若等于5,则将该比特删除并将连1计数器复位到0。
全文摘要
本发明属于网络互连设备技术领域,涉及一种HDLC协议接收处理模块及其数据处理方法。其模块由一个端口仲裁模块、一个接收HDLC协议处理器和一个状态存储器模块所组成;其数据处理方法为端口仲裁模块为N个端口共享数据处理流水线提供仲裁,并把需要处理的数据依据优先级别依次送给接收HDLC协议处理器;接收HDLC协议处理器把该数据所属的HDLC通道的状态数据从状态存储器模块读出,对数据进行流水线处理,并把该HDLC通道的新状态数据写回状态存储器。本发明使用一个并行HDLC协议接收处理器对所有端口的数据流进行处理,具有处理速度快,占用芯片的面积不会随端口的增多而线性增大,通用性强的优点。
文档编号H04L29/08GK1466347SQ0212299
公开日2004年1月7日 申请日期2002年6月15日 优先权日2002年6月15日
发明者黄勇, 张赞, 黄 勇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1