HDLC协议IP核的设计

时间:2022-08-21 10:53:14

HDLC协议IP核的设计

《电子设计工程杂志》2014年第十一期

1HDLC的帧结构

首先回顾一下HDLC基本的帧结构形式。HDLC是面向比特的链路控制规程,其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。每帧的起始和结束以"7E"(01111110)做标志,两个"7E"之间为数据段(包括地址数据、控制数据、信息数据)和帧校验序列。帧校验采用CRC算法,对除了插入的"零"以外的所有数据进行校验。为了避免将数据中的"7E"误为标志,在发送端和接收端要相应地对数据流和帧校验序列进行"插零"及"删零"操作。

2原理框图

基于FPGA的HDLC协议的实现原理框图如图1所示。该框图包括3个部分:对外接口部分、HDLC发送部分、HDLC接收部分。以下对3个部分的实现分别进行论述。

2.1对外接口模块对外接口部分主要实现HDLC对外的数据交换。包括CPU接口、发送FIFO、发送接口、接收FIFO以及接收接口。本设计是以总线的形式实现HDLC与外部CPU的通信。当需要发送数据时,外部CPU通过总线将待发数据写入FIFO(FIFO的IP核在各开发软件中都是免费提供的,在程序中只需直接调用即可,故在此不再详细描述)。之中。发送数据准备就绪标志(TX_DAT_OK);接收数据时,当对外接口模块接收到数据有效信号时,根据接收模块发来的写信号(WR_MEM)将数据写入接收FIFO中。接收完一帧数时向CPU发送中断信号(INT),通知CPU读取数据。

2.2HDLC发送模块HDLC发送部分主要实现HDLC发送功能。当接收到数据准备就绪标志(TX_DAT_OK)后,向对外接口模块发送读使能(RD_MEM_EN)和读信号(RD_MEM),通过局部总线将待发数据存入发送缓冲区,在T_CLK的控制下将数据从HDLC_TXD管脚发出。数据发送模块采用状态机来完成发送各个阶段的切换。状态切换流程图如图2所示。State0状态是发送的起始状态也是空闲状态。当没有数据要发送时(TX_DAT_OK=0),程序以7E填充发送;当程序检测到有新数据时(TX_DAT_OK=1),程序检测7E是否发送结束如果没结束则继续发送7E,如果7E发送结束则状态在下一周期切换为State1。State1状态主要完成接收并发送数据功能,在第二个CLK周期先将读使能和读信号拉高,在第三个CLK周期再将其拉低,在第五个CLK周期开始读数。在并行的数据发送PROCESS中根据CLK周期和发送计数器,将接收到的数据通过移位进行发送同时对连续‘1’的个数和发送个数进行计数。当连续‘1’的个数为5时在下一个周期插入发送‘0’,将连续‘1’的计数器清零,发送个数不变。在发送数据的同时进行CRC校验的计算。帧校验序列字段使用CRC-16,对两个标志字段之间的整个帧的内容进行校验。CRC的生成多项式为X16+X12+X5+1,对在校错范围内的错码进行校验。标志位和按透明规则插入的所有‘0’不在校验的范围内。程序设计中的CRC校验算法的原理框图如图3所示。State3状态主要完成发送字尾,发送完成后直接转入state0。

2.3HDLC接收模块接收模块接收到一个非“7E”字节时,即判定为地址数据,直到再次接收到“7E”即判定为接收到了一个完整的一帧数。当接收到一个非“7E”数据后就通过内部数据总线(DAT_OUT_BUS)传送给接口模块,接口模块根据FRAME_LENGTH和DAT_VALIDITY来判断数据帧的长度和有效性。接收数据个阶段的状态切换流程如图4所示。在State0状态程序判断接收到的数据是否为7E,如果为7E,则表明已收到了帧头,状态切换到State1。在State1状态程序接收到的下一个数不是7E则表明收到了地址数据,将状态机切换到State2。在State2状态判断是否收到字尾,如果不是字尾则将接收的数据存入接收缓冲区同时启动写数据,将接收到的数据通过总线写入接收fifo。在收数的过程中同时进行删除‘0’的操作,即当收到连续5个1时将下一个‘0’主动删除。当收到字尾时对地址数据、控制数据和信息数据

3仿真与应用

的CRC校验结果与最后两个字节进行比对形成数据有效标志(DAT_VALIDITY)。根据上述设计,在QuartusII9.0上对发送数据和接收数据进行了仿真如图5、6所示。从仿真波形可以看出发送模块能够将FIFO中的数按照设计的波形输出到HTXD管脚;接收模块能够正确的将HRXD管脚的波形数据解出来并存入接收缓冲区中,接收完成后给接口模块发出END标志。根据上述设计方法,已成功地在可编程逻辑芯片上实现。FPGA芯片选用的是Altera公司的Cyclone系列FPGA:EP1C6T144。

4结束语

上述详细介绍了一种基于FPGA的HDLC协议IP核的方案及设计实现方法。根据本文介绍的实现方法设计出的HDLC接口板已应用于某雷达天线的同步引导数据的收发通信链路中,成功实现了双向数据通信。应用结果表明该方法具有简单实用、性能可靠以及成本低等特点。能够广泛应用于HDLC协议应用场合。

作者:闫军虎张明社郗海燕单位:中国电子科技集团公司第39研究所

上一篇:基于FPGA的激光转台控制系统 下一篇:无线传输数据采集系统设计