CN105843759B - 一种基于hdlc的多串口通信方法 - Google Patents
一种基于hdlc的多串口通信方法 Download PDFInfo
- Publication number
- CN105843759B CN105843759B CN201610157480.1A CN201610157480A CN105843759B CN 105843759 B CN105843759 B CN 105843759B CN 201610157480 A CN201610157480 A CN 201610157480A CN 105843759 B CN105843759 B CN 105843759B
- Authority
- CN
- China
- Prior art keywords
- byte
- hdlc
- data
- fpga
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于HDLC的多串口通信方法,包括嵌入式系统设备,嵌入式系统设备包括CPU和FPGA,CPU接收HDLC数据的步骤为:FPGA从某个串口接收HDLC数据后,在接收的HDLC数据上加上4个字节头:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第4个字节为0;发送所述数据到CPU;CPU接收到数据后,去除4个字节头,并记录串口号;对接收的数据进行丢弃或者进一步处理操作。本发明利用FPGA的可编程性,可灵活改变接口个数,扩充缓存空间,设置速率范围;采用特定头部字节来区分不同的串口来源;通过对加上字节头使HDLC数据不用重新计算CRC,保证了数据的完整性。
Description
技术领域
本发明涉及通信领域,具体涉及一种基于HDLC的多串口通信方法。
背景技术
近年来,随着电子技术的飞速发展,接口技术也变得越来越重要,对于多串口通信的需求也随之增加了。
现有的串口通信技术中,串口通信本身还具有一定的缺陷,比如端口个数固定,缓存空间有限,速率范围固定,误码率高等。如果要更改端口个数或者缓存空间,需要增加硬件来实现,不利于系统扩展,同时还需要增加相应的成本。因此有待开发一种新的多串口通信方法以灵活改变接口个数,扩充缓存空间,设置速率范围等。
发明内容
本发明公开了一种基于HDLC的多串口通信机制技术,用于实现串口数量的灵活配置,扩充缓存空间,设置速率范围,同时保证串口原始数据完整性,降低硬件成本。
本发明的技术方案是:一种基于HDLC的多串口通信方法,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一CPU和第一FPGA,所述第二嵌入式系统设备包括第二CPU和第二FPGA;所述第一CPU和第一FPGA之间采用HDLC协议来实现数据收发,所述第二CPU和第二FPGA之间采用HDLC协议来实现数据收发,所述第一FPGA和第二FPGA之间采用平行多串口来实现数据收发;
所述第一CPU发送的HDLC数据依次向经过所述第一FPGA、第二FPGA最后被所述第二CPU接收;其中所述第二FPGA向所述第二CPU发送HDLC数据时,所述第二CPU接收HDLC数据的步骤如下:
步骤1)所述第二FPGA从与所述第一FPGA连接的某个串口接收HDLC数据后,在所述接收的HDLC数据上加上4个字节头形成新的HDLC数据,所述4个字节头的定义分别是:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第4个字节为0;
步骤2)发送所述新的HDLC数据到第二CPU;
步骤3)所述第二CPU接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号;
步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。
优选地,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下:
S1:所述第一CPU向第一FPGA发送HDLC数据前在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第4个字节为0;
S2:所述第一CPU发送加上4个字节头的新的HDLC数据给所述第一FPGA;
S3:所述第一FPGA收到新的HDLC数据后,去除掉加上的4个字节头;
S4:所述第一FPGA发送去除掉4个字节头后的HDLC数据到相应的串口。
优选地,所述第一字节的取值范围为0-255,最大支持256个串口。
优选地,所述第四字节0的插入保证原始HDLC数据的完整性,通过全0字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘1’需添加额外的‘0’。
优选地,所述CRC采用的16位CRC-ITU算法。
本发明利用FPGA的可编程性,使系统可以根据实际需要灵活改变接口个数,扩充缓存空间,设置速率范围;在HDLC数据处理的过程中采用特定头部字节来区分不同的串口来源;加上字节头的HDLC数据不用重新计算CRC,从而保证了原来数据的完整性。
附图说明
图1为本发明一种基于HDLC的多串口通信方法中整个系统连接结构框图;
图2为本发明一种基于HDLC的多串口通信方法中第二CPU接收HDLC数据流程图;
图3为本发明一种基于HDLC的多串口通信方法中第一CPU发送HDLC数据流程图;
图4为本发明一种基于HDLC的多串口通信方法中HDLC数据格式(未加4个字节头);
图5为本发明一种基于HDLC的多串口通信方法中HDLC数据格式(加了4个字节头)。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。
如图1-图5所示,一种基于HDLC的多串口通信方法,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一CPU和第一FPGA,所述第二嵌入式系统设备包括第二CPU和第二FPGA;所述第一CPU和第一FPGA之间采用HDLC协议来实现数据收发,所述第二CPU和第二FPGA之间采用HDLC协议来实现数据收发,所述第一FPGA和第二FPGA之间采用平行多串口来实现数据收发;
所述第一CPU发送的HDLC数据依次向经过所述第一FPGA、第二FPGA最后被所述第二CPU接收;其中所述第二FPGA向所述第二CPU发送HDLC数据时,所述第二CPU接收HDLC数据的步骤如下:
步骤1)所述第二FPGA从与所述第一FPGA连接的某个串口接收HDLC数据后,在所述接收的HDLC数据上加上4个字节头形成新的HDLC数据,所述4个字节头的定义分别是:第一个字节为标记串口号,取值范围为0-255,最大支持256个串口;第二个字节和第三个字节为根据CRC(CRC即循环冗余校验码Cyclic Redundancy Check,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性)算法原理计算得到的补偿字节,以保证原始数据添加该四个字节的头部后,对新数据流(CRC之前的部分)重新计算的CRC与原始数据的CRC是完全相同的(即保证处理前后CRC字段的不变性);第4个字节为0,0的插入保证原始HDLC数据的完整性,通过全0字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘1’需添加额外的‘0’。其中CRC采用的16位CRC-ITU算法,其中的CRC值在字节头加上前后是一样的;
步骤2)发送所述新的HDLC数据到第二CPU;
步骤3)所述第二CPU接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号;
步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。
优选地,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下:
S1:所述第一CPU向第一FPGA发送HDLC数据前在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第4个字节为0;
S2:所述第一CPU发送加上4个字节头的新的HDLC数据给所述第一FPGA;
S3:所述第一FPGA收到新的HDLC数据后,去除掉加上的4个字节头;
S4:所述第一FPGA发送去除掉4个字节头后的HDLC数据到相应的串口。
本发明利用FPGA的可编程特性,实现对串口数量的增加,利用软件的方法对数据进行加工处理,降低多串口通信误码率,并实现多路串口业务汇聚为一路HDLC数据,使用特定的头部字节以区分不同的串口。FPGA收到数据后,自动加上区分串口号的头,在此过程中不需要重新计算HDLC数据的CRC,保证了原始数据的完整性,然后把HDLC数据发往CPU,CPU收到数据后,去除FPGA添加的特定字节头,从字节头中提取串口号并记录,然后根据内容进行相应处理,是丢弃或作进一步处理等;当需要向串口发送数据时候,CPU需根据目的串口号,添加相应的特定字节头,发送HDLC数据到FPGA,然后由FPGA对特定字节头进行解码和去除后,将待发送的原始数据发往相应的串口。
根据上述说明书的揭示和指导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
Claims (7)
1.一种基于HDLC的多串口通信方法,其特征在于,包括第一嵌入式系统设备和第二嵌入式系统设备;所述第一嵌入式系统设备包括第一CPU和第一FPGA,所述第二嵌入式系统设备包括第二CPU和第二FPGA;所述第一CPU和第一FPGA之间采用HDLC协议来实现数据收发,所述第二CPU和第二FPGA之间采用HDLC协议来实现数据收发,所述第一FPGA和第二FPGA之间采用平行串口来实现数据收发;
所述第一CPU发送的HDLC数据依次经过所述第一FPGA、第二FPGA最后被所述第二CPU接收;其中所述第二FPGA向所述第二CPU发送HDLC数据时,所述第二CPU接收HDLC数据的步骤如下:
步骤1)所述第二FPGA从与所述第一FPGA连接的某个串口接收HDLC数据后,在接收的HDLC数据上加上4个字节头形成新的HDLC数据,其中4个字节头的定义分别是:第一个字节为标记串口号;第二个字节和第三个字节为根据CRC算法原理计算得到的补偿字节;第四个字节为0;
步骤2)发送所述新的HDLC数据到第二CPU;
步骤3)所述第二CPU接收到数据后,首先去除所述新的HDLC数据中的4个字节头,并记录串口号;
步骤4)根据接收的数据内容进行丢弃或者进一步处理操作。
2.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述第一CPU向所述第一FPGA发送HDLC数据,其中,所述第一CPU发送HDLC数据的过程如下:
S1:所述第一CPU向第一FPGA发送HDLC数据前,在所述HDLC数据前加上4个字节头,其中所述4个字节头的定义分别为:第一字节为串口号,第二个字节和第三个字节为保持CRC不变的补偿字节,第四个字节为0;
S2:所述第一CPU发送加上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的多串口通信方法,其特征在于,所述第四个字节0的插入保证原始HDLC数据的完整性,通过全0字节隔离了原始HDLC数据与头部字节,避免出现遇连续5个‘1’需添加额外的‘0’。
7.如权利要求1所述的一种基于HDLC的多串口通信方法,其特征在于,所述CRC采用的16位CRC-ITU算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610157480.1A CN105843759B (zh) | 2016-03-17 | 2016-03-17 | 一种基于hdlc的多串口通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610157480.1A CN105843759B (zh) | 2016-03-17 | 2016-03-17 | 一种基于hdlc的多串口通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843759A CN105843759A (zh) | 2016-08-10 |
CN105843759B true CN105843759B (zh) | 2018-11-20 |
Family
ID=56587404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610157480.1A Active CN105843759B (zh) | 2016-03-17 | 2016-03-17 | 一种基于hdlc的多串口通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843759B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489237A (zh) * | 2019-08-20 | 2019-11-22 | 深圳市丰润达科技有限公司 | 串口数据接收处理方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101146102A (zh) * | 2007-10-16 | 2008-03-19 | 深圳国人通信有限公司 | Rru网络中hdlc数据下行、上行的方法及通讯装置 |
CN102394719A (zh) * | 2011-09-21 | 2012-03-28 | 浙江铭道通信技术有限公司 | 基于fpga的多通道hdlc数据处理方法 |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
CN105243039A (zh) * | 2015-11-13 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | 一种串口通信系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014579A1 (en) * | 2001-07-11 | 2003-01-16 | Motorola, Inc | Communication controller and method of transforming information |
KR20050060766A (ko) * | 2003-12-17 | 2005-06-22 | 엘지전자 주식회사 | 멀티포인트 방식 hdlc 버스의 에러 검출 및 복구 방법 |
-
2016
- 2016-03-17 CN CN201610157480.1A patent/CN105843759B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101146102A (zh) * | 2007-10-16 | 2008-03-19 | 深圳国人通信有限公司 | Rru网络中hdlc数据下行、上行的方法及通讯装置 |
CN102394719A (zh) * | 2011-09-21 | 2012-03-28 | 浙江铭道通信技术有限公司 | 基于fpga的多通道hdlc数据处理方法 |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
CN105243039A (zh) * | 2015-11-13 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | 一种串口通信系统及方法 |
Non-Patent Citations (4)
Title |
---|
HDLC协议在通信系统中的应用及其在FPGA中的实现;付新虎;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070415;4-23 * |
基于PCI的HDLC协议处理器的设计与优化;徐涛;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070415;8-64 * |
多通道HDLC通信控制器在站间通信的应用;杨豪 等;《无线电工程》;20130905;第43卷(第9期);61-64 * |
紫光通信硬件平台的设计与实现;张文博;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115;16-36 * |
Also Published As
Publication number | Publication date |
---|---|
CN105843759A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4852127A (en) | Universal protocol data receiver | |
US8370716B2 (en) | USB device and correction method thereof | |
EP2096826B1 (en) | A method and device for transferring and receiving high speed ethernet mii block | |
US5748613A (en) | Communication pacing method | |
EP2999152A1 (en) | Data processing method and related device for fec coding and decoding | |
EP2966823B1 (en) | Encoding and decoding methods and apparatuses of ethernet physical layer | |
KR102516027B1 (ko) | 헤더 처리 장치, 프로세서 및 전자장치 | |
CN105187420A (zh) | 一种基于rs422总线的通讯协议匹配方法 | |
CN106160912A (zh) | 一种编码方法、相关设备及系统 | |
US20140281830A1 (en) | Data encoding and decoding | |
CN111698271A (zh) | 一种hdlc协议ip核 | |
CN111162869B (zh) | 一种数据流处理方法及装置 | |
CN105843759B (zh) | 一种基于hdlc的多串口通信方法 | |
CN113595980B (zh) | 基于tcp通信自定义协议的配置方法 | |
US20050144339A1 (en) | Speculative processing of transaction layer packets | |
CN108347292A (zh) | 一种物理编码子层的数据编解码方法和装置 | |
US6625223B1 (en) | Method and apparatus for encoding, transmitting and decoding digital data | |
CN104202124B (zh) | 一种erp数据包通讯方法 | |
JP7423367B2 (ja) | 通信システム、デバイス、及び通信方法 | |
CN109818705B (zh) | 传送、接收子速率信号方法及装置、设备 | |
JPH02262747A (ja) | データ通信方法 | |
CN109450517A (zh) | Rdss通信传输控制方法和系统 | |
JP3652591B2 (ja) | データ伝送制御方法及びデータ伝送システム | |
CN108833945B (zh) | 一种使用单通道dma同时传输多路ts流的方法及装置 | |
KR100223215B1 (ko) | 바이트정렬된 비트스터핑 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |