一种基于hdlc的多串口通信方法

文档序号:10488887阅读:214来源:国知局
一种基于hdlc的多串口通信方法
【专利摘要】本发明公开了一种基于HDLC的多串口通信方法,包括嵌入式系统设备,嵌入式系统设备包括CPU和FPGA,CPU接收HDLC数据的步骤为:FPGA从某个串口接收HDLC数据后,在接收的HDLC数据上加上4个字节头:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第4个字节为0;发送所述数据到CPU;CPU接收到数据后,去除4个字节头,并记录串口号;对接收的数据进行丢弃或者进一步处理操作。本发明利用FPGA的可编程性,可灵活改变接口个数,扩充缓存空间,设置速率范围;采用特定头部字节来区分不同的串口来源;通过对加上字节头使HDLC数据不用重新计算CRC,保证了数据的完整性。
【专利说明】
一种基于HDLC的多串口通信方法
技术领域
[0001]本发明涉及通信领域,具体涉及一种基于HDLC的多串口通信方法。
【背景技术】
[0002]近年来,随着电子技术的飞速发展,接口技术也变得越来越重要,对于多串口通信的需求也随之增加了。
[0003]现有的串口通信技术中,串口通信本身还具有一定的缺陷,比如端口个数固定,缓存空间有限,速率范围固定,误码率高等。如果要更改端口个数或者缓存空间,需要增加硬件来实现,不利于系统扩展,同时还需要增加相应的成本。因此有待开发一种新的多串口通信方法以灵活改变接口个数,扩充缓存空间,设置速率范围等。

【发明内容】

[0004]本发明公开了一种基于HDLC的多串口通信机制技术,用于实现串口数量的灵活配置,扩充缓存空间,设置速率范围,同时保证串口原始数据完整性,降低硬件成本。
[0005]本发明的技术方案是:一种基于HDLC的多串口通信方法,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一 CHJ和第一 FPGA,所述第二嵌入式系统设备包括第二 CPU和第二 FPGA;所述第一 CPU和第一 FPGA之间采用HDLC协议来实现数据收发,所述第二 CHJ和第二 FPGA之间采用HDLC协议来实现数据收发,所述第一 FPGA和第二FPGA之间采用平行多串口来实现数据收发;
[0006]所述第一 CPU发送的HDLC数据依次向经过所述第一 FPGA、第二 FPGA最后被所述第二 CPU接收;其中所述第二 FPGA向所述第二 CPU发送HDLC数据时,所述第二 CPU接收HDLC数据的步骤如下:
[0007]步骤I)所述第二FPGA从与所述第一FPGA连接的某个串口接收HDLC数据后,在所述接收的HDLC数据上加上4个字节头形成新的HDLC数据,所述4个字节头的定义分别是:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第4个字节为O;
[0008]步骤2)发送所述新的HDLC数据到第二CPU;
[0009]步骤3)所述第二CPU接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号;
[0010]步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。
[0011 ] 优选地,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下:
[0012]S1:所述第一CPU向第一FPGA发送HDLC数据前在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第4个字节为O;
[0013]S2:所述第一 CPU发送加上4个字节头的新的HDLC数据给所述第一 FPGA;
[0014]S3:所述第一 FPGA收到新的HDLC数据后,去除掉加上的4个字节头;
[0015]S4:所述第一FPGA发送去除掉4个字节头后的HDLC数据到相应的串口。
[0016]优选地,所述第一字节的取值范围为0-255,最大支持256个串口。
[0017]优选地,所述第四字节O的插入保证原始HDLC数据的完整性,通过全O字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘ I,需添加额外的‘ O ’。
[0018]优选地,所述CRC采用的16位CRC-1TU算法。
[0019]本发明利用FPGA的可编程性,使系统可以根据实际需要灵活改变接口个数,扩充缓存空间,设置速率范围;在HDLC数据处理的过程中采用特定头部字节来区分不同的串口来源;加上字节头的HDLC数据不用重新计算CRC,从而保证了原来数据的完整性。
【附图说明】
[0020]图1为本发明一种基于HDLC的多串口通信方法中整个系统连接结构框图;
[0021 ]图2为本发明一种基于HDLC的多串口通信方法中第二CPU接收HDLC数据流程图;
[0022]图3为本发明一种基于HDLC的多串口通信方法中第一CPU发送HDLC数据流程图;
[0023]图4为本发明一种基于HDLC的多串口通信方法中HDLC数据格式(未加4个字节头);
[0024]图5为本发明一种基于HDLC的多串口通信方法中HDLC数据格式(加了4个字节头)。
【具体实施方式】
[0025]下面结合附图对本发明的【具体实施方式】作进一步说明。
[0026]如图1-图5所示,一种基于HDLC的多串口通信方法,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一 CPU和第一 FPGA,所述第二嵌入式系统设备包括第二 (PU和第二 FPGA;所述第一 CPU和第一 FPGA之间采用HDLC协议来实现数据收发,所述第二 CHJ和第二 FPGA之间采用HDLC协议来实现数据收发,所述第一 FPGA和第二 FPGA之间采用平行多串口来实现数据收发;
[0027]所述第一 CPU发送的HDLC数据依次向经过所述第一 FPGA、第二 FPGA最后被所述第二 CPU接收;其中所述第二 FPGA向所述第二 CPU发送HDLC数据时,所述第二 CPU接收HDLC数据的步骤如下:
[0028]步骤I)所述第二FPGA从与所述第一FPGA连接的某个串口接收HDLC数据后,在所述接收的HDLC数据上加上4个字节头形成新的HDLC数据,所述4个字节头的定义分别是:第一个字节为标记串口号,取值范围为0-255,最大支持256个串口 ;第二个字节和第三个字节为根据CRC(CRC即循环冗余校验码Cyclic Redundancy Check,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性)算法原理计算得到的补偿字节,以保证原始数据添加该四个字节的头部后,对新数据流(CRC之前的部分)重新计算的CRC与原始数据的CRC是完全相同的(即保证处理前后CRC字段的不变性);第4个字节为O,O的插入保证原始HDLC数据的完整性,通过全O字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘I’需添加额外的‘O’。其中CRC采用的16位CRC-1TU算法,其中的CRC值在字节头加上前后是一样的;[0029 ] 步骤2)发送所述新的HDLC数据到第二CPU;
[0030]步骤3)所述第二CPU接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号;
[0031]步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。
[0032]优选地,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下:
[0033]S1:所述第一CPU向第一FPGA发送HDLC数据前在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第4个字节为O;
[0034]S2:所述第一 CPU发送加上4个字节头的新的HDLC数据给所述第一 FPGA;
[0035]S3:所述第一 FPGA收到新的HDLC数据后,去除掉加上的4个字节头;
[0036]S4:所述第一FPGA发送去除掉4个字节头后的HDLC数据到相应的串口。
[0037]本发明利用FPGA的可编程特性,实现对串口数量的增加,利用软件的方法对数据进行加工处理,降低多串口通信误码率,并实现多路串口业务汇聚为一路HDLC数据,使用特定的头部字节以区分不同的串口。FPGA收到数据后,自动加上区分串口号的头,在此过程中不需要重新计算HDLC数据的CRC,保证了原始数据的完整性,然后把HDLC数据发往CPU,CPU收到数据后,去除FPGA添加的特定字节头,从字节头中提取串口号并记录,然后根据内容进行相应处理,是丢弃或作进一步处理等;当需要向串口发送数据时候,CPU需根据目的串口号,添加相应的特定字节头,发送HDLC数据到FPGA,然后由FPGA对特定字节头进行解码和去除后,将待发送的原始数据发往相应的串口。
[0038]根据上述说明书的揭示和指导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的【具体实施方式】,对发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
【主权项】
1.一种基于HDLC的多串口通信方法,其特征在于,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一 CPU和第一 FPGA,所述第二嵌入式系统设备包括第二 CHJ和第二 FPGA;所述第一 CPU和第一 FPGA之间采用HDLC协议来实现数据收发,所述第二 CPU和第二 FPGA之间采用HDLC协议来实现数据收发,所述第一 FPGA和第二 FPGA之间采用平行串口来实现数据收发; 所述第一 CPU发送的HDLC数据依次向经过所述第一 FPGA、第二 FPGA最后被所述第二 CPU接收;其中所述第二 FPGA向所述第二 CPU发送HDLC数据时,所述第二 CPU接收HDLC数据的步骤如下: 步骤I)所述第二 FPGA从与所述第一 FPGA连接的某个串口接收HDLC数据后,在接收的HDLC数据上加上4个字节头形成新的HDLC数据,其中4个字节头的定义分别是:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第4个字节为O; 步骤2)发送所述新的HDLC数据到第二 CRJ; 步骤3)所述第二CHJ接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号; 步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。2.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下: SI:所述第一CPU向第一FPGA发送HDLC数据前,在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第4个字节为O; S2:所述第一 CRJ发送加上4个字节头的新的HDLC数据给所述第一 FPGA; S3:所述第一 FPGA收到新的HDLC数据后,去除掉加上的4个字节头; S4:所述第一FPGA发送去除掉4个字节头后的HDLC数据到相应的串口。3.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述第一FPGA和第二FPGA之间的平行串口数为多个。4.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述第一字节的取值范围为0-255。5.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,第一字节最大支持256个串口。6.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述第四字节O的插入保证原始HDLC数据的完整性,通过全O字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘ I ’需添加额外的‘ O ’。7.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述CRC采用的.16 位 CRC-1TU 算法。
【文档编号】G06F13/38GK105843759SQ201610157480
【公开日】2016年8月10日
【申请日】2016年3月17日
【发明人】陈莉勤, 胡国浩, 刘校矢, 黄望仟
【申请人】广州海格通信集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1