专利名称:基于fpga的多通道hdlc数据处理方法
技术领域:
本发明涉及一种HDLC数据处理器,特指一种应用于El TDM通信信号的基于FPGA的多通道HDLC数据处理方法。
背景技术:
El TDM是指一种通过不同信道或时隙中的交叉位脉冲的时分复用,同时在同一个通信媒体上传输多个数字化数据、语音和视频信号等的技术。支持2. 048 Mbps通信链路,将它划分为32个时隙(每32时隙为El帧),每间隔为64 kbps。高级链路控制(High-Level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的数据链路层协议。格式如图1所示。CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。FPGA (Field - Programmable Gate Array),SP现场可编程门阵列。每个HDLC帧前、后均有一标志码01111110,用作帧的起始、终止指示及帧的同步。标志码不允许在帧的内部出现,以免引起歧义。为保证标志码的唯一性但又兼顾帧内数据的透明性,可以采用“0比特插入法”来解决。该法在发送端监视除标志码以外的所有字段,当发现有连续5个‘1’出现时,便在其后添插一个‘0’,然后继续发后继的比特流。在接收端,同样监视除起始标志码以外的所有字段。当连续发现5个‘1’出现后,若其后一个比特‘0’则自动删除它,以恢复原来的比特流;若发现连续6个‘1’,则可能是插入的‘0’发生差错变成的‘1’,也可能是收到了帧的终止标志码。后两种情况,可以进一步通过帧中的帧检验序列来加以区分。由于目前现有的HDLC接收和发送进行数据处理时采用的是逐位进行处理方式或者每8比特进行处理,前者处理方法由于逐位处理,处理中断时间受采样率的限制。后者的处理方法是每8比特进行处理,统计当前八比特中的连‘1’数,还需要搜索前一个八比特的连‘1’数来判定连‘1’的数量,待数据成包后再进行CRC的校验。前者的这种方式效率较低,特别是对于El TDM信号,由于每个时隙的数据时独立的,按照比特流的处理很不方便,不适合高速HDLC处理;后者对前者的采样中断上有所改进,降低了中断的频率,但是在统计连比特‘1’数量时,还需要获取和本次8bit相关的连‘1’的数量,同时在处理CRC时,使用成包后的数据来处理计算,增加了 FPGA的运算量且实时性较差,没有很好的发挥出FPGA的高速实时的优势。同时以上几种处理方式都没有解决不同速率不同通路的HDLC处理。
发明内容
本发明解决的技术问题是提供了一种用FPGA实现的一种应用于El TDM的HDLC的接收发送的方法,并解决了多个通道和不同速率的数据流的处理,且提高了 HDLC的处理能力和稳定性。
为解决上述技术问题,本发明通过以下步骤来实现一种基于FPGA的多通道HDLC 数据处理方法,其特征在于,在FPGA上实现多路复用信号El TDM数据码流的输入输出及 HDLC数据的处理;
(1)根据ElTDM提供的帧同步信号、采样时钟或根据数据提取的帧同步信号,FPGA将串行的数据流转化为多通道并行数据存储到FPGA上指定的的双接收缓存区中;
设置码流的每个时隙对应的用于HDLC数据收发处理的HDLC模块的序号,不同时隙可设置相同的HDLC模块;每个时隙分配一个FPGA上HDLC模块序号寄存器,用于HDLC模块序号的选择;
按照序号低的八位组在前的顺序,根据对应的FPGA上的接收寄存器中指定的HDLC模块的序号,调用HDLC模块入口,进行数据的处理;
HDLC模块接收到对应时隙的八位组数据(参见图2),逐位比较,进行连‘1’计数处理; 当比特为‘0’时,若出现了 5个连‘1’,则将该比特剔除;或者出现6个连‘1’,说明检测到了标记FLAG,则判定CRC校验电路的校验结果及数据的完整性;
若接收到的正常比特,将该有效比特放入到对应的CRC校验电路中,每次处理一个比
特;
每次处理一个比特的方式可将数据处理的时间均分到每个时刻,最后将数据另存到指定的FPGA上的接收缓存区中;
(2)当检测到有数据需要发送,每次提取一个八位组,检测5个连‘1’,后面数据添‘0’, 经过添‘0’的处理后的数据重组,依次取出其中的八位组,并根据对应时隙的HDLC模块序号寄存器输入到指定的HDLC模块处理,处理后的数据输出到对应的FPGA上的发送缓存区;
在检测5个连‘1’时,对每个比特进行判断同时,进行CRC校验电路检验,产生校验码, 直到发送最后一个比特,将CRC校验电路校验值添加到按照数据模式发送。本发明基于FPGA现场可编程门阵列完成从串行数据到HDLC数据包的处理删‘0’ 处理,同时进行CRC校验码的生成,及将原始数据包经过插‘0’,到数据包发送到串行数据上。发明了便捷实现多通道,多速率的实现方式,同时将数据按照串行数据帧数据包的方式来处理数据,解决了每个时钟周期只能处理单个比特,和完全抛弃了比特全部以8位组方式处理的弊端。本发明可提高了处理速度,极大发挥了 fpga的高效实时性的特点,满足高速,多通道,多速率数据的处理需求。本发明实施例中提供的技术方案也可同时针对不同的串行数据的并行处理。本发明的提供的实施例并不局限于特定厂家的FPGA。
图1是本发明参考的HDLC帧数据结构图; 图2是本发明参考的定义的串行数据流及时钟信号; 图3是本发明参考CRC-CCITT生成移位寄存器作用原理; 图4是本发明中FPGA接收处理框图; 图5是本发明中FPGA发送处理框图。
具体实施例方式为了更清楚地说明本发明实施例的技术方案,下面结合附图对发明的实施例进行详细的介绍,下面的方案仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。一种基于FPGA的多通道HDLC数据处理方法,其特征在于,在FPGA上实现多路复用信号El TDM数据码流的输入输出及HDLC数据的处理;
如图4所示,接收过程由FPGA中设置的串并/并串转换电路、双缓存选择器、5连‘1’比较器、6连‘1,比较器、7连‘1,比较器、删零处理、CRC校验和数据存储接收组成;接收过程步骤如下
步骤TlOl 将El TDM串行数据统一经过串并转换后的电路,将El帧数据共32时隙256bit的数据保存到指定的连续的256bit接收缓存区中,接口提供双接收缓存区,根据帧的顺序交叉存放;
步骤T102 根据用户配置的八位组的对应的HDLC模块,调用HDLC接收处理,根据不同的HDLC模块对应的接收寄存器,可以很方便的将不同的数据分流到指定HDLC模块,实现多通道的处理和不同速率的处理;
步骤T103 按照输入的256个比特的数据,取得比特0,将数据左移一位便于下次取得比特0,取得的比特输入到5连‘1’比较器比较,结果输出A信号到删零处理;A信号为‘0’,说明检测到5个连‘1’相等,则直接丢弃该比特;否则输出该比特;转入步骤T105 ;
步骤T104:同步骤3获取到比特后,输入到6连‘1’比较器比较,结果输出B信号到数据存储模块中,指示帧标志是否接收到;
同时输入到7连‘1’比较器比较,结果输出C信号到数据存储模块中,指示该帧数据是否异常;转入步骤T106;
步骤T105 经过步骤3输出的比特,输入到CRC生产移位接收寄存器中(如图3所示),得到一个新的CRC值,按照D信号输出到数据存储模块;
步骤T106 检测数据包状态信号,B信号、C信号和D信号;
当检测到C信号指示7个连‘ 1’,放弃数据包;获取到的比特后,重组8位组,每得到一个8位组,同时判断B信号,当指示检测到帧标志,认为HDLC数据包已经结束,检测数据的完整性和根据D信号来检查CRC校验码是否正确;否则数据存储。如图5所示,发送过程由FPGA中设置的HDLC模块选择、5连‘1,比较器、CRC校验电路、添零处理和并串转换电路组成;
发送过程步骤如下
步骤T201 从发送缓存区获取数据,并根据每个时隙对应的HDLC模块,获取对应HDLC模块的数据,每次获取8位组中的一个比特;同步进入步骤2和3 ;
步骤T202:经过步骤1处理的数据bit,进入到CRC校验电路产生校验码,当数据发送完毕后,将CRC校验电路产生的校验码添加到数据后面一起发送;
步骤T203:经过步骤1处理的数据bit,进入5连‘1’比较器,判断数据是否是5个连‘1’,给出是否需要添零操作,当添加零后,该数据比特暂存于指定的HDLC模块缓存中;
步骤T204 经过步骤3后的数据,进入移位发送寄存器输出到256比特的发送缓存区,使用双发送缓存区交叉使用;步骤T205 并串转换电路将处理后的数据根据指定的时钟和同步信号以串行的方式发送。本发明基于FPGA现场可编程门阵列完成从串行数据到HDLC数据包的处理删“0” 处理,同时进行CRC校验码的生成,及将原始数据包经过插“0”,到数据包发送到串行数据上。发明了便捷实现多通道,多速率的实现方式,同时将数据按照串行数据帧数据包的方式来处理数据,解决了每个时钟周期只能处理单个比特,和完全抛弃了比特全部以8位组方式处理的弊端。本发明可提高了处理速度,极大发挥了 fpga的高效实时性的特点,满足高速,多通道,多速率数据的处理需求。本发明实施例中提供的技术方案也可同时针对不同的串行数据的并行处理。本发明的提供的实施例并不局限于特定厂家的FPGA。以上所述,仅为本发明的具体实施方法,但本发明的保护范围并不局限于此,以权力要求的保护范围为准。
权利要求
1.一种基于FPGA的多通道HDLC数据处理方法,其特征在于,在FPGA上实现多路复用信号El TDM数据码流的输入输出及HDLC数据的处理;(1)根据ElTDM提供的帧同步信号、采样时钟或根据数据提取的帧同步信号,FPGA将串行的数据流转化为多通道并行数据存储到FPGA上指定的的双接收缓存区中;设置码流的每个时隙对应的用于HDLC数据收发处理的HDLC模块的序号,不同时隙可设置相同的HDLC模块;每个时隙分配一个FPGA上HDLC模块序号寄存器,用于HDLC模块序号的选择;按照序号低的八位组在前的顺序,根据对应的FPGA上的接收寄存器中指定的HDLC模块的序号,调用HDLC模块入口,进行数据的处理;HDLC模块接收到对应时隙的八位组数据,逐位比较,进行连’ 1’计数处理;当比特为‘0’时,若出现了 5个连‘1’,则将该比特剔除;或者出现6个连‘1’,说明检测到了标记FLAG,则判定CRC校验电路的校验结果及数据的完整性;若接收到的正常比特,将该有效比特放入到对应的CRC校验电路中,每次处理一个比特;每次处理一个比特的方式可将数据处理的时间均分到每个时刻,最后将数据另存到指定的FPGA上的接收缓存区中;(2)当检测到有数据需要发送,每次提取一个八位组,检测5个连‘1’,后面数据添‘0’,经过添‘0’的处理后的数据重组,依次取出其中的八位组,并根据对应时隙的HDLC模块序号寄存器输入到指定的HDLC模块处理,处理后的数据输出到对应的FPGA上的发送缓存区;在检测5个连‘1’时,对每个比特进行判断同时,进行CRC校验电路检验,产生校验码,直到发送最后一个比特,将CRC校验电路校验值添加到按照数据模式发送。
2.根据权利要求1所述的基于FPGA的多通道HDLC数据处理方法,其特征在于,接收过程由FPGA中设置的串并/并串转换电路、双缓存选择器、5连‘1,比较器、6连‘1,比较器、7连‘1’比较器、删零处理、CRC校验和数据存储接收组成;接收过程步骤如下(1)将El TDM串行数据统一经过串并转换后的电路,将El帧数据共32时隙256bit的数据保存到指定的连续的256bit接收缓存区中,接口提供双接收缓存区,根据帧的顺序交叉存放;(2)根据用户配置的八位组的对应的HDLC模块,调用HDLC接收处理,根据不同的HDLC模块对应的接收寄存器,可以很方便的将不同的数据分流到指定HDLC模块,实现多通道的处理和不同速率的处理;(3)按照输入的256个比特的数据,取得比特0,将数据左移一位便于下次取得比特0,取得的比特输入到5连‘1’比较器比较,结果输出A信号到删零处理;A信号为‘0’,说明检测到5个连‘1’相等,则直接丢弃该比特;否则输出该比特;转入步骤5 ;(4)同步骤3获取到比特后,输入到6连‘1’比较器比较,结果输出B信号到数据存储模块中,指示帧标志是否接收到;同时输入到7连‘1’比较器比较,结果输出C信号到数据存储模块中,指示该帧数据是否异常;转入步骤6;(5)经过步骤3输出的比特,输入到CRC生产移位接收寄存器中,得到一个新的CRC值,按照D信号输出到数据存储模块;(6)检测数据包状态信号,B信号、C信号和D信号;当检测到C信号指示7个连‘ 1’,放弃数据包;获取到的比特后,重组8位组,每得到一个8位组,同时判断B信号,当指示检测到帧标志,认为HDLC数据包已经结束,检测数据的完整性和根据D信号来检查CRC校验码是否正确;否则数据存储。
3.根据权利要求1或2所述的基于FPGA的多通道HDLC数据处理方法,其特征在于,发送过程由FPGA中设置的HDLC模块选择、5连‘1,比较器、CRC校验电路、添零处理和并串转换电路组成;发送过程步骤如下(1)从发送缓存区获取数据,并根据每个时隙对应的HDLC模块,获取对应HDLC模块的数据,每次获取8位组中的一个比特;同步进入步骤2和3 ;(2)经过步骤1处理的数据bit,进入到CRC校验电路产生校验码,当数据发送完毕后, 将CRC校验电路产生的校验码添加到数据后面一起发送;(3)经过步骤1处理的数据bit,进入5连‘1,比较器,判断数据是否是5个连‘ 1’,给出是否需要添零操作,当添加零后,该数据比特暂存于指定的HDLC模块缓存中;(4)经过步骤3后的数据,进入移位发送寄存器输出到256比特的发送缓存区,使用双发送缓存区交叉使用;(5)并串转换电路将处理后的数据根据指定的时钟和同步信号以串行的方式发送。
全文摘要
本发明公开了一种基于FPGA的多通道HDLC数据处理方法,以FPGA为控制处理核心,实现对HDLC数据的处理。该方法的实现过程是输入数据为串行数据流,同时提供帧同步信号和同步时钟,根据高级链路控制方式,检测到“01111110”六个连1,即视为检测到帧标记(FLAG),在后续的比特流中,进行删零和CRC校验,当检测到下一个FLAG数据后,检测数据的完整性和CRC校验值是否正确。将处理数据包存入数据存储器。在发送侧,获取发送数据存储区的数据,对于5个连续的“1”添加1个“0”,同时计算CRC校验值,当数据发送完毕后,将获取到的CRC校验数据一并发送出去。该方法可实现多个通道的HDLC数据的收发,以及处理不同速率的数据,同时进行CRC的校验,并将处理完毕的数据包保存到指定的数据存储取。
文档编号H04L1/00GK102394719SQ20111028074
公开日2012年3月28日 申请日期2011年9月21日 优先权日2011年9月21日
发明者丁子春, 余晓波, 卢凯杰, 徐佐, 欧阳添倍, 苏应兵, 陈创业, 陈博, 陈文增 申请人:浙江铭道通信技术有限公司