HDLC (High-level Data Link Control) VHDL 源码分享-FPGA开源项目社区-FPGA CPLD-ChipDebug

HDLC (High-level Data Link Control) VHDL 源码分享

HDLC

HDLC(高级数据链路控制)是一组用于在点对点节点之间传输同步数据包的协议。在这个控制器中,数据被组织成帧。HDLC 协议位于 OSI 模型的第 2 层,即数据链路层。它利用零插入/删除过程(位填充)来确保分隔符标志的位模式不会出现在标志之间的字段中。HDLC 控制器旨在允许同步和代码透明数据传输,此控制信息减少了出错的可能性。

HDLC(High-Level Data Link Control,高级数据链路控制),是链路层协议的一项国际标准,用以实现远程用户间资源共享以及信息交互。 HDLC协议用以保证传送到下一层的数据在传输过程中能够准确地被接收,也就是差错释放中没有任何损失,并且序列正确。

HDLC协议的特点:

1、协议不依赖于任何一种字符编码集,对于三层的封装协议选择比较自由;

2、数据报文可透明传输,用于透明传输的”0比特插入法”易于硬件实现;

3、全双工模式,不必等待确认可连续发送数据,有较高的数据链路传输效率;

4、数据帧均采用CRC校验,并对信息帧进行编号,防止漏收或重收,可靠性高;

5、传输控制功能与处理功能分离,具有较大的灵活性和较完善的控制功能。

HDLC帧结构:

fb3c819ff4085608

 

1、 Flag字段:为01111110,用以标志帧的开始与结束,也可以作为帧与帧之间的填充字符。

2、 Address字段:用于描述数据帧是属于单播、组播、广播帧。

3、 Control字段:用于构成各种命令及响应,以便对链路进行监视与控制。发送方利用控制字段来通知接收方来执行约定的操作;相反,接收方用该字段作为对命令的响应,报告已经完成的操作或状态的变化。

3.1 信息帧用于传送有效信息或数据,简称为I帧

3.2 监控帧用于差错控制和流量控制,简称S帧(监控帧中不能有Information字段)

3.3 无编号帧用于提供对链路的建立、拆除以及多种控制功能,简称U帧。

4、 Information字段:可以包含任意长度的二进制数,其上限由FCS字段或通讯节点的缓存容量来决定,目前用得较多的是1000-2000比特,而下限可以是0,即无信息字段。

5、 FCS字段:可以使用16位CRC对两个标志字段之间的内容进行校验。

HDLC状态检测:

15d4bf71da085622

 

 

1、HDLC设备以轮询时间间隔为周期,向链路上发送Keepalive消息

2、3个周期内无法收到对方发出的Keepalive消息,HDLC设备就认为链路不可用

3、同一链路两端设备的轮询时间间隔应设为相同的值

1、 HDLC分为IETF公用版本和思科私有版本,华为设备使用的HDLC是思科私有版本,理论上华为设备和思科设备可以用HDLC实现对接,但需要调整成相同的控制位。由于HDLC存在兼容性问题,所以使用的情况比较少。

2、 使用HDLC协议时,设备两端的IP地址可以使用不同子网段的地址,但由于HDLC不支持地址自动协商,需要手工配置静态路由。

3、 IP地址借用允许一个没有IP地址的接口从其它接口借用IP地址。这样可以避免一个接口独占IP地址,节省IP地址资源。一般建议借用loopback接口的IP地址,因为这类接口总是处于活跃(active)状态,能提供稳定可用的IP。

4、 由于广域网线路带宽普遍较低,所以HDLC支持数据报文和报头的压缩。

关于本项目

使用 VHDL 硬件描述语言的高级数据链路层控制 (HDLC) 协议(16 位)实现。

16 位地址。8 位数据和 16 位 CRC 校验。

接收端最终输出的 8 位数据、16 位地址和 16 位 CRC 的仿真结果,在 HDLC 中进行位填充和错误消除。

使用 Xilinx ISE design suite 编译。

 

请登录后发表评论

    没有回复内容