APP下载

ETC系统中HDLC协议解码控制器的Verilog HDL实现

2017-10-21邓昌晟李海洋王小松张海英

网络安全与数据管理 2017年19期
关键词:链路层解码校验

邓昌晟,刘 昱,李海洋,王小松,张海英

(1. 中国科学院微电子研究所 新一代通信射频芯片技术北京市重点实验室,北京 100029;2. 中国科学院大学 微电子学院,北京 100049)

ETC系统中HDLC协议解码控制器的VerilogHDL实现

邓昌晟1,2,刘 昱1,2,李海洋1,王小松1,张海英1,2

(1. 中国科学院微电子研究所 新一代通信射频芯片技术北京市重点实验室,北京 100029;2. 中国科学院大学 微电子学院,北京 100049)

电子不停车收费系统(Electronic Toll Collection, ETC)是解决目前交通拥堵问题最有效的手段。为规范ETC设计,统一国内ETC标准,我国制定了电子收费专用短程通信国家标准(Dedicated Short Range Communications, DSRC)。DSRC数据链路层采用由国际标准化组织(ISO)制定的高级数据链路控制规程(High-Level Data Link Control, HDLC)。文章遵循DSRC短程通信协议数据链路层标准规范,采用硬件描述语言Verilog HDL实现了一种基于串行结构的HDLC解码电路,并对其中‘0’比特删除模块、CRC校验模块着重分析,设计较短时延的解码电路。在解码时钟为256 kHz时,可以在0.2 ms时间内完成解码和读取工作。

电子不停车收费系统;DSRC;HDLC;Verilog HDL; CRC

0 引言

不停车收费系统(ETC)由路边读写设备(Road Side Unit, RSU)、车载单元(On Board Unit, OBU)、专用短程通信技术(DSRC)组成,如图1所示。

图1 ETC系统组成

DSRC通信协议遵循开放系统互联(Open System Interconnection, OSI)模型,将DSRC协议分为三层模型,即应用层、数据链路层、物理层。

数据链路层需要提供向下物理层的接口,同时也要向上为应用层提供服务,为此,数据链路层需要稳定的数据传输协议。DSRC中数据链路层采用高级数据链路控制协议HDLC。HDLC是一种面向比特的高级链路层控制协议。在通信领域中 , HDLC协议是应用最广泛的协议之一,具有强大的差错检测、流量控制、高效和同步传输的功能[1]。

使用硬件编程语言实现HDLC协议是比较理想的方式,相对于软件方式实现,有着更快的执行速度,更好的时序同步性;而相对于使用专用芯片有着更好的灵活性[2]。

1 HDLC协议

1.1HDLC协议帧结构

HDLC是面向比特字节数据的传输协议,与其他数据链路层传输协议相比,HDLC协议不依赖字符集,且较利于用硬件电路实现。HDLC协议以帧格式进行数据传输,数据帧格式如表1所示[3]。

表1 HDLC协议帧结构

HDLC帧格式由如下几位组成:

前后导码:其格式均为二进制序列01111110(0x7E),前后导码之间为信息位。如果解码控制器收到多个连续的0x7E,则以最后一个作为帧的前导码,表示数据起始。解码控制器在接收的比特数据中找到前后导码,就可以确定两个导码段中间为一帧完整的数据。

地址位:用于表示网络中发送或接收该帧的设备地址。并且用全‘1’即0xFF或者0xFFFF表示广播地址。

控制位:帧格式根据控制位的不同,将HDLC帧定义为不同类型的帧。

信息位:所需要传输的数据。字段长度取8 bit的整数倍。

帧校验位:为保证数据的正确性传输,HDLC帧校验位采用国际通行的CRC校验,根据所选的生成多项式,通常是16 bit或者32 bit的校验码。CRC校验不会对帧数据内容进行修改,但是可以通过校验是否正确来选择性接收这一帧数据[4]。

1.2‘0’比特插入机制

在前后导码之间的比特流数据中,如果出现了与前后导码一样的0x7E的比特数据,那么就会被认为是帧的边界,进而使接收的数据出错。HDLC协议使用‘0’比特插入机制来避免出现误检测边界的情况。当比特流数据中出现连续的5个‘1’时,在这5个‘1’的数据之后人为地插入一个无效位‘0’。这个位只在传输时存在,在设计HDLC解码控制器时需要考虑这个数据‘0’的存在,解码时要删除这个‘0’位数据,还原真实的数据流[5]。

1.3CRC校验

HDLC协议在每一帧数据后都加入了帧校验序列,以保证数据的正确性传输。HDLC采用循环冗余校验码(Cyclic Redundancy Check, CRC)。本设计中采用CRC-CCITT的生成多项式,即:

P(x)=x16+x15+x5+1

在HDLC协议中,除了前后导码和插入的‘0’比特无效位,所有的信息都要参与CRC校验[6]。

2 HDLC协议解码控制器设计

如图2所示,HDLC协议解码控制器采用串行结构。

图2 HDLC协议解码器框图

HDLC解码模块在接收了来自物理层的FM0解码数据后,经过删除前后导码、删‘0’、串并转换、CRC校验、FIFO各个模块后完成解码,将解码的数据存储在FIFO中,方便外部MCU读取。

2.1删除前后导码模块

通过找到连续的01111110的标志字段来判断数据的开始与结束,接收机只有在前导码和后导码中处理有效的数据。并且接收机会将01111110的前后导码和不是前后导码中的有效数据都删除,以防止在后面的删0模块中误检测到连续的5个“1”后将后导码删除[7]。

如图3所示,删除前后导码模块通过一个标志位flag来标志数据是否有效,初始状态标志位为0,当检测到输出了01111110(0x7E)时,将标志位翻转为1;再次检测到01111110(0x7E)时将标志位翻转为0,在标志位为1时其中的数据就是后续电路需要的有效数据,并用data_start表示有效数据段。data_start位寄存器和数据位一起传入后面待处理的模块,用于标志数据流中的有效数据[8]。

图3 删除前后导码流程图

2.2‘0’比特删除模块实现

HDLC数据中除了前后导码中会出现连续的6个1,在HDLC编码中一帧数据的有效数据中如果出现连续的5个1,则不管后面的数据是0还是1都在连续的5个1之后插入一个0以区别前后导码。所以在接收机中要通过判断有效数据中是否出现连续的5个1并且删除掉连续5个1以后的一个0[9]。

删除串行数据中的0会导致串行数据提前:当前的数据是0并且将其删除了,但是下一位的数据并没有来到。为了解决这个问题,可以设计一个足够长的FIFO来缓存接收到的串行数据,在检测到删0条件满足时就停止一位FIFO的输入,但是由于信息域长度不可知,有效数据中有多少个需要删除的0并不知道,FIFO的大小难以确定,太小的FIFO会造成数据的丢失和出错,太大的FIFO会造成过大的时钟延迟,所以用FIFO缓存不是一个理想的方案。

1 bit的串行数据需要通过串并转换模块转换为8 bit的并行数据,以方便后续CRC校验和FIFO缓存电路使用。串并转换的模块通过连续的8个D触发器实现,时钟上是通过计数器进行8分频实现。如图4所示,结合串并转换模块,可以在串并转换的同时利用D触发器的可以缓存数据的特性进行删0模块中数据的“提前”。用并行数据的低5位与0x1F做比较,如果相同就产生一个脉冲信号给用于时钟分频的计数器,这个脉冲信号可以给串并转换模块的计数器一个暂停的信号,使得计数器停止一个时钟周期的计数,并且用于输出的D触发器不储存当前的输入值,即要被删除的0数据。这样就可以达到删0的目的。

图4 删‘0’模块框图

假设一帧数据中有效的数据一共有nbit,无效的‘0’位数据有mbit,一个时钟周期时间为t,电路本身造成的其他延迟为T。则采用FIFO缓存实现‘0’比特删除模块时产生的时间延迟为:

而采用与串并转换结合的方式实现‘0’比特删除模块时产生的时间延迟为:

T2=T+m×t

当且仅当n=5×m时,T1=T2,即比特率数据的有效位全为1时,两者的延迟相等。然而实际情况中一帧数据几

乎不可能出现全1的情况,即在绝大部分的情况下T1>T2。

2.3CRC模块实现

串行CRC校验实现较为简单,但是处理速度相对较慢,所以本设计中采用并行CRC校验,能够在一个时钟周期内完成数据CRC校验。并行CRC校验原理与串行CRC相同,由于CRC各个位之间可以独立运算,并行的CRC输入可以在一个时钟周期中完成1 B的CRC校验,这样的效果与串行CRC校验的结果是相同的,但是相比串行CRC实现延迟能够减少8倍。对于生成多项式为gx=x16+x12+x5+1,其移位寄存器如图5所示。

3 仿真结果与分析

本文采用modelsim SE 10.0a 进行电路仿真,编写testbench文件进行仿真,模拟输入已编码的字符串0x ECF9ECF91932,其中0x32为CRC校验码。

3.1删除前后导码模块仿真结果

如图6所示,data_in是数据输入端,data_out是数据输出端,data_start表示数据的有效位。在除去前后导码后,data_out相比data_in延迟8个串行时钟周期。则删除前后导码模块的延迟为:

T1=16t

3.2‘0’比特删除模块

如图7所示,data_in是串行数据输入端,data_out是并行数据输出端,counter是串并转换用于时钟分频的计数器,如图中圈出delete_on是发生‘0’删时候的标志。当发生‘0’删事件的时钟,counter会停止计数,略过这一位,同时并行时钟输出端也会相应地延迟。总的延迟周期为:T2=11t。

图5 CRC移位寄存器示意图

图6 删除导码电路仿真结果

图7 ‘0’比特删除模块仿真结果

3.3CRC校验模块

如图8所示,data_in是数据输入端,data_out是数据输出端,通过CRC校验模块以后data_out与data_in相比减少了后8位的校验码,并且crc_right被置高,表示CRC校验正确,会被写入后续的FIFO中。CRC模块占用一个并行周期:T3=8t。

图8 CRC校验仿真结果

3.4仿真结果分析

通过解码电路,能够在FIFO输入端 rd_data 读取到解码后正确的并行数据0x ECF9ECF919。在使用256 kHz时钟时,一个时钟周期约为t=3.9 μs,因为FIFO的读取还占用了2个并行时钟周期,所以解码一共用时T=51 t个时钟周期,整个解码所占用时钟约为51×3.9 μs=199 μs。

4 结论

本文介绍了HDLC协议的原理,重点分析了HDLC中删‘0’模块,CRC校验模块的原理和设计实现。并且使用modelsim 仿真设计模块,验证了电路功能正确。并且能够在0.2 ms的时间内完成解码工作。

[1] 应三丛, 张行. 基于FPGA的HDLC协议控制器[J]. 四川大学学报(工程科学版), 2008, 40(3):116-120.

[2] 李晓娟, 黄翌. 基于FPGA的HDLC设计实现[J]. 现代电子技术, 2007, 30(6):35-37.

[3] LI G, TAN N. Design and implementation of HDLC protocol and manchester encoding based on FPGA in train communication network[C]. Third International Conference on Information and Computing. IEEE Computer Society, 2010:105-108.

[4] NAGPURWALA A H, SUNDARESAN C, CHAITANYA C. Implementation of HDLC controller design using verilog HDL[C]. International Conference on Electrical, Electronics and System Engineering. IEEE, 2013: 7-10.

[5] 邱婷. 电子不停车收费系统基带电路的设计与实现[D]. 南京:南京理工大学, 2009.

[6] GB/T 20851.1-2007[S]. 电子收费 专用短程通信 第1部分:物理层.2007.

[7] GB/T 20851.2-2007[S]. 电子收费 专用短程通信 第2部分:数据链路层.2007.

[8] 贾辉. HDLC帧收发器在TDM/以太网接口电路中的应用[D]. 成都:西南交通大学, 2013.

[9] 刘杰宇. 基于FPGA技术的HDLC 帧收发器的设计与实现[D]. 北京:北京交通大学, 2010.

Verilog HDL implementation of HDLC protocol decoding controller in ETC system

Deng Changsheng1,2, Liu Yu1,2, Li Haiyang1, Wang Xiaosong1, Zhang Haiying1,2

(1. Beijing Key Laboratory of Radio Frequency IC Technology for Next Generation Communications,Institute of Microelectronics of Chinese Academy of Sciences, Beijing 100029, China;2. School of Microelectronics, University of Chinese Academy of Sciences, Beijing 100049, China)

Electronic toll collection system is the most effective way to solve the current traffic problem. In order to uniform the standard of ETC, China has developed the national standard for Dedicated Short Range Communications (DSRC). The DSRC data link layer uses a High-Level Data Link Control protocol developed by the International Organization(ISO). This paper follows the standard specification of dedicated short range communication protocol data link layer, and implements a HDLC decoding circuit based on serial pipeline structure using hardware description language Verilog HDL, and focuses on the 0-bit delete module and CRC module for designing a shorter delay circuit. When the decoding clock is 256 kHz, decoding and reading can be completed within 0.2 ms.

ETC; DSRC; HDLC; Verilog HDL; CRC

TN92

A

10.19358/j.issn.1674- 7720.2017.19.009

邓昌晟,刘昱,李海洋,等.ETC系统中HDLC协议解码控制器的verilog HDL实现[J].微型机与应用,2017,36(19):30-33.

2017-03-28)

邓昌晟(1993-),男,硕士研究生,主要研究方向:数字电路设计。刘昱(1975-),男,博士,研究员,主要研究方向:射频集成电路。

猜你喜欢

链路层解码校验
《解码万吨站》
使用Excel朗读功能校验工作表中的数据
基于多空间内存共享的数据链路层网络包捕获方法
卫星网络中的TCP 跨层技术研究
一种基于PCI接口的1394B总线的设计与实现
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究