HDLC VHDL编程接口与FCS计算函数详解

1星 需积分: 15 18 下载量 114 浏览量 更新于2024-09-11 收藏 36KB DOC 举报
本文档主要介绍了HDLC (High-Level Data Link Control) 在VHDL (VHSIC Hardware Description Language) 语言中的实现,提供了一系列函数和操作来处理HDLC协议相关的任务。HDLC是一种面向比特的通信协议,常用于串行通信链路的数据链路层,确保数据的正确传输和控制。 1. **HDLC_set_options** 函数:此函数用于设置HDLC选项,输入一个新的选项值(UBYTEnew_options),并将当前的HDLC标志(hldc_flags)保存在返回变量ret中。这在调整通信参数或配置时非常有用。 2. **HDLC_get_options** 函数:用于获取当前的HDLC标志,提供对协议设置的读取访问。 3. **hldc_init** 函数:初始化HDLC模块,设置标志计数器(hldc_flag_count)为0,状态变量为正常模式(HLDC_STATE_NORM),接收缓冲区和位置(hldc_rx_start 和 hldc_rx_pos),并返回初始化成功。 4. **hldc_open** 函数:在开始通信之前,清除HDLC标志(hldc_flags)设置为默认值,确保无误开始。 5. **hldc_close** 函数:关闭HDLC连接,这里没有具体操作,仅返回一个成功的状态。 6. **hldc_prep** 函数:返回发送缓冲区(hldc_tx_buf),在发送数据前,可能包含了HDLC头信息,具体取决于hldc_flags中的配置。 7. **hldc_fcs16_update** 函数:用于计算新的循环冗余校验(CRC)值,输入是当前的CRC、数据指针(data)和数据长度(len)。函数通过位操作和HDLC_FCS_TABLE数组更新CRC值。 8. **hldc_send** 函数:发送数据的核心功能,接收数据长度(len)和是否压缩(can_compress)参数。如果数据长度为0,则直接返回。发送过程包括添加HDLC标志(如果启用压缩)、处理可能的压缩头、计算CRC(如果适用),然后将数据发送到通信链路。 这些函数共同构成了HDLC协议在VHDL环境下的关键实现部分,通过它们可以配置、初始化、管理和维护数据包的发送与接收,确保数据的准确性和链路的有效管理。对于理解和使用HDLC协议进行串口通信的开发人员来说,理解这些函数的逻辑和调用顺序至关重要。