en
×

分享给微信好友或者朋友圈

使用微信“扫一扫”功能。
作者简介:

张宏群,女,硕士,副教授,主要研究方向为信号与信息处理.835274814@qq.com;

陈檑(通信作者),女,硕士生,主要研究数据通信网络.qqcldechenlei@hotmail.com

中图分类号:TN915.4

文献标识码:A

DOI:10.13878/j.cnki.jnuist.2022.06.016

参考文献 1
杨峰,秦兆涛.基于FPGA的USB-HDLC协议转换器的设计与实现[J].遥测遥控,2014,35(4):65-69;YANG Feng,QIN Zhaotao.Design and implementation of USB-HDLC protocol converter based on FPGA[J].Journal of Telemetry,Tracking and Command,2014,35(4):65-69
参考文献 2
张凡,王小力.基于形式验证的HDLC协议验证[J].中国新通信,2017,19(19):22;ZHANG Fan,WANG Xiaoli.Authentication of HDLC protocol based on formal validation[J].China New Telecommunications,2017,19(19):22
参考文献 3
陈曦原.信道编码技术在卫星通信中的重要应用研究[J].数字通信世界,2019(2):172,175;CHEN Xiyuan.Research on important application of channel coding technology in satellite communication[J].Digital Communication World,2019(2):172,175
参考文献 4
张晖,高萍萍.基于LabVIEW的串行通信接口设计[J].通信电源技术,2020,37(4):92-93,102;ZHANG Hui,GAO Pingping.Design of serial communication interface based on LabVIEW[J].Telecom Power Technology,2020,37(4):92-93,102
参考文献 5
桑峰,张宏伟,张坤.基于LabVIEW的帧同步码性能分析[J].无线电通信技术,2017,43(1):81-84;SANG Feng,ZHANG Hongwei,ZHANG Kun.Performance analysis of frame synchronization codes using LabVIEW[J].Radio Communications Technology,2017,43(1):81-84
参考文献 6
张修建,梁伟伟,王兵,等.基于HDLC协议的图像实时压缩传输技术研究[J].计算机测量与控制,2018,26(2):203-206;ZHANG Xiujian,LIANG Weiwei,WANG Bing,et al.Research on image real-time compression and transmission technology based on HDLC protocol[J].Computer Measurement & Control,2018,26(2):203-206
参考文献 7
黄致绮.基于FPGA平台的HDLC协议的应用与研究[J].中国新通信,2017,19(1):98;HUANG Zhiqi.Application and research of HDLC protocol based on FPGA platform[J].China New Telecommunications,2017,19(1):98
参考文献 8
周进松,李正宇,吴小艨.基于HDLC协议的通信通道设计[J].通信技术,2016,49(3):368-373;ZHOU Jinsong,LI Zhengyu,WU Xiaomeng.Communication channel based on HDLC protocol[J].Communications Technology,2016,49(3):368-373
参考文献 9
戴跃伟,刘光杰,曹鹏程,等.无线隐蔽通信研究综述[J].南京信息工程大学学报(自然科学版),2020,12(1):45-56;DAI Yuewei,LIU Guangjie,CAO Pengcheng,et al.A survey of wireless covert communications[J].Journal of Nanjing University of Information Science & Technology(Natural Science Edition),2020,12(1):45-56
参考文献 10
邓昌晟,刘昱,李海洋,等.ETC系统中HDLC协议解码控制器的Verilog HDL实现[J].微型机与应用,2017,36(19):30-33;DENG Changsheng,LIU Yu,LI Haiyang,et al.Verilog HDL implementation of HDLC protocol decoding controller in ETC system[J].Microcomputer & Its Applications,2017,36(19):30-33
目录contents

    摘要

    HDLC协议以其优异的性能在可靠性需求较高的场合得到了广泛应用.针对航天某领域的协议测试评估需求,解决传统协议测试设备程序复杂、开发周期长的问题.为了满足系统快速集成、协议参数灵活配置的总体要求,提出了一种基于LabVIEW软件构建HDLC协议收发器的方案,完成了HDLC核心收发模块设计,并以此为基础组成一套完整的测试系统.对HDLC协议处理及接收、发送程序设计进行了说明,着重介绍了收发器中核心循环校验码(CRC)校验模块及比特插入删除模块的实现方法,同时对收发器的主要功能模块进行了仿真和测试.使用LabVIEW设计的HDLC收发器轻量高效、运行灵活,可应用于HDLC协议设备的测试和协议性能分析等场合,提高数据通信系统的扩展性、实时性和稳定性.

    Abstract

    Traditional protocols are perplexed by complex testing equipment and long development cycle,thus are not appropriate for protocol testing and evaluation in a certain field of aerospace.The HDLC protocol has been widely used in applications demanding of high reliability because of its excellent performance.Here,we propose a scheme to build HDLC protocol transceiver based on LabVIEW software,with the aim of rapid system integration and flexible configuration of protocol parameters.The HDLC core transceiver module is designed,on which a complete test system is formed.This paper introduces the HDLC protocol processing as well as the program design of receiving and sending,and elaborates the realization of the Cyclic Redundancy Check(CRC) module and the bit insert & delete module in the transceiver.Meanwhile,the main function modules of the transceiver are simulated and tested.The results show that the proposed HDLC transceiver is light in weight,efficient and flexible in operation.It can be applied to scenarios such as the testing of HDLC protocol equipment and protocol performance analysis to improve the data communication system in scalability,real-time performance and stability.

  • 0 引言

  • 高层数据链路控制(High-level Data Link Control,HDLC)协议是由国际标准化组织制定的面向位的高级数据链控制规程,具有较强的差错检测、高效和同步传输的优点[1].HDLC协议采用首尾界符法进行帧同步,并使用比特填充技术来解决帧中数据和帧同步码重复的问题.这种同步方式通用性强、收发实现简单,具有很高的可靠性,适合于对可靠性要求很高的场合.国内已经对其在机载嵌入式计算机、军用指挥控制系统等方面的应用进行了研究[2-3].

  • 一般设备上,HDLC协议的实现可以考虑采用标准的协议芯片,如MT8952B、MC92460等; 对于使用条件苛刻的场合,可以采用高等级的FPGA来实现[4].为了便于对运行HDLC协议的设备测试,需要开发HDLC协议收发器.由于HDLC协议子标准较多,协议收发器应可以适应不同设备的测试需求,配置相应的HDLC协议数据.因此HDLC协议收发器应具有便捷、通用、低成本的特点.

  • LabVIEW是由美国NI公司推出的编程软件,具有友好的用户界面、强大的数据处理功能及广泛的对外接口.本文提供了一种基于LabVIEW的HDLC协议收发器的设计方案,并对该开发系统进行了测试.

  • 1 HDLC协议介绍

  • HDLC采用如图1所示帧结构传输数据.HDLC协议每帧的帧头、帧尾均有一个标识码(F),中间包含地址段(A)、控制段(C)、信息段(Info)、CRC校验(FCS).

  • 图1 HDLC的帧结构示意图

  • Fig.1 HDLC frame structure diagram

  • HDLC是面向比特型的协议,它比面向字符协议(如IBM提出的BSC协议,及目前卫星广泛使用的CCSDS协议等)具有更大的灵活性和更高的效率[5].其中,标识码(F)帧头、帧尾相同,均为二进制码“01111110”(对应于十六进制0x7E),地址段(A)、控制段(C)为8 bit,信息段(Info)必须为8 bit的整数倍; 采用CRC算法对数据进行校验,校验区间包括段(A)、控制段(C)和信息段(Info)[6].为了防止数据被误判断为标识码(F),协议采用比特填充(Bit Stuffing)方法来解决.具体做法是,在发送时,当除了标识码(F)之外的比特流中连续出现5个“1”码时,在第5个“1”码后自动插入一个“0”码; 在接收时,当除了标识码(F)外的比特流中连续出现5个“1”码时,自动剔除第5个“1”码后面的“0”码[7].

  • HDLC协议对地址段(A)、控制段(C)的选择均有详细规定.本文主要考虑HDLC协议的格式实现,对地址段和控制段不做特别要求,设计程序时,此两段可以自行定义.

  • 2 HDLC收发器的程序设计

  • 2.1 数据传输方式

  • HDLC收发器运行于PC机上,采用UDP协议(用户数据报协议)对外通信.UDP是运行于运输层的协议,而HDLC协议是运行于数据链路层上的,其层次级别比UDP协议要低.但是本文的目的是使用LabVIEW设计HDLC收发器,数据传输只是验证协议收发的正确性,传输方式不是本文主要解决和研究的内容.为了便于本地闭环自测试,本文采用UDP协议来建立数据传输链路,设本地及远程IP地址为10.126.14.14,发送端口使用7788,接收端口使用7799.

  • 2.2 核心程序单元设计

  • 2.2.1 CRC校验单元

  • CRC码是循环码中的一种,设其长度为n-k(信息码长度为k,编码后总长度为n),它能够检测出如下错误[7]:

  • 1)长度≤n-k的突发错误(突发错误是一个错误序列,首尾均为1,错误序列长度定义为包括首尾1在内的错误所波及的段落长度);

  • 2)大部分长度=n-k+1的突发错误(漏检概率为2-(n-k-1));

  • 3)大部分长度>n-k+1的突发错误(漏检概率为2-(n-k);

  • 4)所有奇数个随机错误;

  • 5)所有错误个数≤dmin-1个错误(dmin为许用码组的码距).

  • 目前,常用的CRC码标准[8]有4种:CRC-12,CRC-16,CRC-CCITT,CRC-32,其生成多项式分别为

  • CRC-12: x12+x11+x3+x2+x+1;

  • CRC-16: x16+x15+x2+1;

  • CRC-CCITT: x16+x12+x5+1;

  • CRC-32: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1.

  • 根据多项式理论,设CRC码的生成多项式为gx)、信息码元为Mx)、生成的校验码多项式为rx),则满足如下关系(n-k为校验码长):

  • M(x)g(x)=xn-kM(x)+r(x).
    (1)
  • 使用LabVIEW产生CRC校验的算法基于式(1),以CRC-CCITT为例,其生成多项式为gx)=x16+x12+x5+1,根据式(1),设计求解信息码元Mx)的CRC校验码的过程如下:

  • 1)将Mx)右移动r=16位,得到x16Mx)(设其为Nx)),也即在信息码元后面添加16个0.

  • 2)Nx)对gx)取余式,采用按位异或来实现除,具体做法为

  • a)将Nx)与gx)高位对齐,若Nx)最高位为0,则删除最高位后替换Nx),直到Nx)高位为1;

  • b)将Nx)高2~17位与g′(x)=x12+x5+1按位异或(由于此时Nx)最高位已经为1,而gx)高位也为异或值必然为0,因此可使用g′(x)异或),异或值添加到Nx)剩余位的前面,得到N1x),以N1x)取代Nx);

  • c)重复a)和b),直到Nx)次数小于16.

  • 3)此时的Nx)即为Mx)的CRC-CCITT校验码.

  • 4)将Mx)和其生成的CRC-CCITT校验码拼接,即为所需的码组.

  • 使用LabVIEW设计的CRC校验产生的图形化流程和图形化程序分别如图2和图3所示.

  • 2.2.2 比特填充单元

  • HDLC协议采用比特填充方法来解决帧中数据和标识码(F)重复的问题.在发送时,当除了标识码(F)外的比特流中连续出现5个“1”码时,在第5个“1”码后自动插入一个“0”码; 在接收机,当除了标识码(F)外的比特流中连续出现5个“1”码时,自动剔除第5个“1”码后面的“0”码[7].

  • 图2 使用LabVIEW产生CRC-CCITT校验程序流程

  • Fig.2 Flow chart of CRC-CCITT verification generated by LabVIEW

  • LabVIEW程序中处理字符和数据比较方便,而实现插“0”的处理涉及到对二进制的序列的操作,处理起来比较繁琐.本文设计了一个转换的方法,其具体流程如下.

  • 1)首先将输入的字符串转化为数组,数组的每个元素即为相应字符的ASCII码.

  • 2)将数组中的每个元素转换为布尔序列,并将布尔序列中的“真”替换为字符“1”,“假”替换为字符“0”,从而将字符串转换为“1”、“0”字符串序列.

  • 3)对于发送程序,利用LabVIEW的“搜索替换字符串”VI,搜索“1”、“0”字符串序列中的“11111”,并将其替换为“111110”.对于接收程序,搜索“1”、“0”字符串序列中的“111110”,并将其替换为“11111”.即实现了插“0”和删“0”的操作.

  • 4)由于插入“0”后,原先的“1”、“0”字符串序列长度有可能不再是8的整数倍,需要在序列后面添加若干“0”,将其调整为8的整数倍.

  • 2.2.3 UDP通信单元

  • UDP(用户数据报协议)为TCP/IP协议簇中传输层协议[9-10],可以为应用程序发送和接收数据报.UPD协议按照如图4的格式进行封装.

  • 图3 使用LabVIEW产生CRC校验的图形化程序框图

  • Fig.3 Graphical block diagram of CRC check generated by LabVIEW

  • 图4 UDP协议的封装格式

  • Fig.4 UDP protocol encapsulation format

  • 使用LabVIEW设计的UDP发送、接收程序如图5所示.在进行UDP数据发送前首先打开一个UDP连接,配置发送IP地址和发送端口,然后通过“UDP数据写入”VI将数据写入远程接收端口,发送完成后关闭UDP连接.

  • 在进行UDP数据接收时,首先配置接收数据的IP地址和端口,然后通过“UDP数据读取”VI将接收到的数据读出.

  • 2.3 接收、发送程序设计

  • 2.3.1 接收程序设计

  • HDLC帧头、帧尾的标识码(F)均为字符0x7E,且由于HDLC协议采用比特填充技术,在不出现误码的情况下可以保证数据中不会出现0x7E字符.因此,HDLC协议数据的接收以判断字符0x7E为开始,以判断下一个0x7E为结束.考虑到通信可能出现误码的情形,当标识码出现误码时能会导致报文的漏接收.因此,从可靠性的角度考虑,应考虑将每两个0x7E之间的报文接收,并对接收的报文数据进行校验.若校验正确,则认为其为合法的报文; 若校验不正确,则认为报文出现误码.为了尽可能地恢复数据,对出现误码的程序仍进行解析.接收程序的流程如图6所示.

  • 图5 UDP发送、接收程序框图

  • Fig.5 Block diagrams of UDP sending (a) and receiving (b) program

  • 2.3.2 发送程序设计

  • 在完成相关核心程序单元设计后,设计发送程序的设计流程如图7所示.程序首先将地址段(A)和控制段(C)的字符添加到待发送数据的头部,然后对整个待发送数据进行CRC校验计算,并将校验值添加到发送数据的尾部.根据HDLC协议的比特填充规则进行插“0”操作.完成上述操作后,首尾添加标识码(F),将数据发送出去.

  • 3 实现结果

  • 最终设计的HDLC协议的接收和发送程序如图8所示.配置地址段(A)为0xAA,控制段(C)为0x00,使用程序发送字符“上海卫星工程研究所”,原码为0xC9CF BAA3 CEC0 D0C7 B9A4 B3CC D1D0 BEBF CBF9,添加了地址段和控制段后的原码为0xAA00 C9CF BAA3 CEC0 D0C7 B9A4 B3CC D1D0 BEBF CBF9.使用CRC-CCITT校验码校验,校验多项式为gx)=x16+x12+x5+1,校验结果为0x97FD,发送原码为0xAA00 C9CF BAA3 CEC0 D0C7 B9A4 B3CC D1D0 BEBF CBF9 97FD,校验后的原码经过插“0”操作后为0xAA00 C9CF9D51 E760 6863 DCD2 59E6 68E8 5F2F B97D 997D E8,添加了标识码(F)后的原码为0x7FAA 00C9 CF9D 51E7 6068 63DC D259 E668 E85F2FB9 7D99 7DE8 7F,此即为最终发送的原码.

  • 图6 接收程序总体框图

  • Fig.6 General block diagram of receiving program

  • 接收端接收到的原码为0x7FAA 00C9 CF9D 51E7 6068 63DC D259 E668 E85F2FB9 7D99 7DE8 7F,去除头尾的标识码0x7F后,进行删“0”的操作,得到原码为0xAA00 C9CF BAA3 CEC0 D0C7 B9A4 B3CC D1D0 BEBF CBF9 97FD,对其进行CRC校验,提示CRC校验正确.程序最终恢复出地址段、控制端及发送字符信息.

  • 在测试时,人为设置一个错误的CRC多项式0x1022取代原先的0x1021(CRC-CCITT)进行发送.接收程序识别出了CRC校验的错误,并给出提示.同时为了尽可能保证数据的接收,接收程序也进行了数据解析处理,如图9所示.

  • 图7 发送程序总体框图

  • Fig.7 General block diagram of sending program

  • 4 总结

  • HDLC协议具有通用性强、可靠性高的特点,在航空、军事等领域已经逐步开始应用.本文使用LabVIEW软件完成了HDLC收发的核心模块设计,并以此为基础设计了完整的收发器.该收发器可以灵活地运行于PC机上,且可以方便地进行各项参数的配置,可以用于HDLC协议设备的测试和协议性能分析,有利于工程研制中对于HDLC协议的设计和应用研究.

  • 图8 HDLC协议演示程序界面

  • Fig.8 HDLC protocol demo program interface of sending (a) and receiving (b)

  • 图9 CRC校验错误时的处理

  • Fig.9 CRC handling check errors

  • 参考文献

    • [1] 杨峰,秦兆涛.基于FPGA的USB-HDLC协议转换器的设计与实现[J].遥测遥控,2014,35(4):65-69;YANG Feng,QIN Zhaotao.Design and implementation of USB-HDLC protocol converter based on FPGA[J].Journal of Telemetry,Tracking and Command,2014,35(4):65-69

    • [2] 张凡,王小力.基于形式验证的HDLC协议验证[J].中国新通信,2017,19(19):22;ZHANG Fan,WANG Xiaoli.Authentication of HDLC protocol based on formal validation[J].China New Telecommunications,2017,19(19):22

    • [3] 陈曦原.信道编码技术在卫星通信中的重要应用研究[J].数字通信世界,2019(2):172,175;CHEN Xiyuan.Research on important application of channel coding technology in satellite communication[J].Digital Communication World,2019(2):172,175

    • [4] 张晖,高萍萍.基于LabVIEW的串行通信接口设计[J].通信电源技术,2020,37(4):92-93,102;ZHANG Hui,GAO Pingping.Design of serial communication interface based on LabVIEW[J].Telecom Power Technology,2020,37(4):92-93,102

    • [5] 桑峰,张宏伟,张坤.基于LabVIEW的帧同步码性能分析[J].无线电通信技术,2017,43(1):81-84;SANG Feng,ZHANG Hongwei,ZHANG Kun.Performance analysis of frame synchronization codes using LabVIEW[J].Radio Communications Technology,2017,43(1):81-84

    • [6] 张修建,梁伟伟,王兵,等.基于HDLC协议的图像实时压缩传输技术研究[J].计算机测量与控制,2018,26(2):203-206;ZHANG Xiujian,LIANG Weiwei,WANG Bing,et al.Research on image real-time compression and transmission technology based on HDLC protocol[J].Computer Measurement & Control,2018,26(2):203-206

    • [7] 黄致绮.基于FPGA平台的HDLC协议的应用与研究[J].中国新通信,2017,19(1):98;HUANG Zhiqi.Application and research of HDLC protocol based on FPGA platform[J].China New Telecommunications,2017,19(1):98

    • [8] 周进松,李正宇,吴小艨.基于HDLC协议的通信通道设计[J].通信技术,2016,49(3):368-373;ZHOU Jinsong,LI Zhengyu,WU Xiaomeng.Communication channel based on HDLC protocol[J].Communications Technology,2016,49(3):368-373

    • [9] 戴跃伟,刘光杰,曹鹏程,等.无线隐蔽通信研究综述[J].南京信息工程大学学报(自然科学版),2020,12(1):45-56;DAI Yuewei,LIU Guangjie,CAO Pengcheng,et al.A survey of wireless covert communications[J].Journal of Nanjing University of Information Science & Technology(Natural Science Edition),2020,12(1):45-56

    • [10] 邓昌晟,刘昱,李海洋,等.ETC系统中HDLC协议解码控制器的Verilog HDL实现[J].微型机与应用,2017,36(19):30-33;DENG Changsheng,LIU Yu,LI Haiyang,et al.Verilog HDL implementation of HDLC protocol decoding controller in ETC system[J].Microcomputer & Its Applications,2017,36(19):30-33

  • 参考文献

    • [1] 杨峰,秦兆涛.基于FPGA的USB-HDLC协议转换器的设计与实现[J].遥测遥控,2014,35(4):65-69;YANG Feng,QIN Zhaotao.Design and implementation of USB-HDLC protocol converter based on FPGA[J].Journal of Telemetry,Tracking and Command,2014,35(4):65-69

    • [2] 张凡,王小力.基于形式验证的HDLC协议验证[J].中国新通信,2017,19(19):22;ZHANG Fan,WANG Xiaoli.Authentication of HDLC protocol based on formal validation[J].China New Telecommunications,2017,19(19):22

    • [3] 陈曦原.信道编码技术在卫星通信中的重要应用研究[J].数字通信世界,2019(2):172,175;CHEN Xiyuan.Research on important application of channel coding technology in satellite communication[J].Digital Communication World,2019(2):172,175

    • [4] 张晖,高萍萍.基于LabVIEW的串行通信接口设计[J].通信电源技术,2020,37(4):92-93,102;ZHANG Hui,GAO Pingping.Design of serial communication interface based on LabVIEW[J].Telecom Power Technology,2020,37(4):92-93,102

    • [5] 桑峰,张宏伟,张坤.基于LabVIEW的帧同步码性能分析[J].无线电通信技术,2017,43(1):81-84;SANG Feng,ZHANG Hongwei,ZHANG Kun.Performance analysis of frame synchronization codes using LabVIEW[J].Radio Communications Technology,2017,43(1):81-84

    • [6] 张修建,梁伟伟,王兵,等.基于HDLC协议的图像实时压缩传输技术研究[J].计算机测量与控制,2018,26(2):203-206;ZHANG Xiujian,LIANG Weiwei,WANG Bing,et al.Research on image real-time compression and transmission technology based on HDLC protocol[J].Computer Measurement & Control,2018,26(2):203-206

    • [7] 黄致绮.基于FPGA平台的HDLC协议的应用与研究[J].中国新通信,2017,19(1):98;HUANG Zhiqi.Application and research of HDLC protocol based on FPGA platform[J].China New Telecommunications,2017,19(1):98

    • [8] 周进松,李正宇,吴小艨.基于HDLC协议的通信通道设计[J].通信技术,2016,49(3):368-373;ZHOU Jinsong,LI Zhengyu,WU Xiaomeng.Communication channel based on HDLC protocol[J].Communications Technology,2016,49(3):368-373

    • [9] 戴跃伟,刘光杰,曹鹏程,等.无线隐蔽通信研究综述[J].南京信息工程大学学报(自然科学版),2020,12(1):45-56;DAI Yuewei,LIU Guangjie,CAO Pengcheng,et al.A survey of wireless covert communications[J].Journal of Nanjing University of Information Science & Technology(Natural Science Edition),2020,12(1):45-56

    • [10] 邓昌晟,刘昱,李海洋,等.ETC系统中HDLC协议解码控制器的Verilog HDL实现[J].微型机与应用,2017,36(19):30-33;DENG Changsheng,LIU Yu,LI Haiyang,et al.Verilog HDL implementation of HDLC protocol decoding controller in ETC system[J].Microcomputer & Its Applications,2017,36(19):30-33

  • 地址:江苏省南京市宁六路219号    邮编:210044

    联系电话:025-58731025    E-mail:nxdxb@nuist.edu.cn

    南京信息工程大学学报 ® 2024 版权所有  技术支持:北京勤云科技发展有限公司