tag 标签: hdlc

相关博文
  • 热度 16
    2014-12-8 18:49
    3683 次阅读|
    0 个评论
    HDLC 协议概述及其 FPGA 实现 引言 HDLC 协议由于其简单可靠、有利于远程传输,在上个世纪末的窄带互联网时代被通信行业大规模采用。期间 HDLC 协议芯片也应运而生,由于其大大简化了 HDLC 通信系统的开发,从而进一步推动 HDLC 协议在通信中的运用。 当今宽带通信技术的快速发展,以太网迅速成为网络通信的主要手段,而 HDLC 协议失去电信领域这个最大市场,其芯片需求量急剧萎缩,厂商也停止对 HDLC 芯片的研发和生产。但是,在有些高可靠通信行业,如航空、航天、铁路等领域, HDLC 协议依然是无法取代。在传输雷达信号数据、列车控制信号等关键场合,依然会采用 HDLC 通信系统。而曾经普遍使用的 HDLC 芯片均已停产多年,行业用户的 HDLC 通信系统保障,面临着巨大的隐患和风险。 FPGA 即现场可编程门阵列,由于其可编程的特点,能够快速完成原型的开发。因此,使用 FPGA 实现 HDLC 协议成为一种可行的方案。 1 HDLC 协议概述 高级数据链路控制( High-Level Data Link Control ),是一个在同步网上传输数据、面向比特的数据链路层的协议,它是由国际标准化组织( ISO )根据 IBM 公司的 SDLC ( Synchronous Data Link Control )协议扩展开发而成的 。 图 1 HDLC 数据格式示意图 HDLC 协议中数据按照帧为单位进行划分,如图 1 所示。 ① 、标志字段 标志字段用来表明一帧数据的边界,它由“ 0111_1110 ”组成,共 8bit 。该字段不允许出现在帧内部,以免引起歧义。为了保证它的唯一性, HDLC 协议规定发送端中出现 5 个连“ 1 ”,则立即插入一个“ 0 ”;而接收端在发现 5 个连“ 1 ”后,即将后续的“ 0 ”删除。 ② 、内容字段 内容字段包括地址字段、控制字段和信息字段。地址字段表明数据发送的目的地址,共 8bit ;控制字段用于信令、应答和管理;信息字段即需要传递的数据。该字段的数据格式即可按照 HDLC 协议规范进行设计,如接收端和发送端都使用 FPGA 实现,也可定制一套数据格式用于传递。内容字段与协议的 FPGA 实现关联度较小,在此不再赘述。 ③ 、帧校验序列 FCS 帧校验序列用于监督本帧中的误码(标志字段不在监督范围内)。 FCS 规定采用循环冗余校验( Cyclic Redundancy Check , CRC )法,所用的循环码生成多项式规定为 。 2 循环冗余编工作原理及电路设计 循环冗余编码(简称 CRC )是一种常见的冗余编码,其基本工作原理是:将数据流的二进制除以生产多项式,商数被放弃,余数作为冗余编码追加到数据流后并进行发送。在接收端,新的数据流被同一生产多项式去除,检查余数是否为零。如果余数为零,则认为传输正确,否则就认为传输中出现差错,数据流重发 。 图 2 CRC 编码生产电路结构图 CRC 编码可以通过线性移位寄存器和异或门求得,线性移位寄存器移一位,完成一次除法,异或门则完成不带进位的减法。如果商数为 1 ,则从被除数的高阶位减去除数,同时移位寄存器右移一位,准备为被除数的较低位进行运算。如果商数为 0 ,则移位寄存器直接右移一位 。电路设计如图 2 所示。 3 HDLC 的 FPGA 实现 3.1 HDLC 发送端的 FPGA 实现 HDLC 发送端接收总线上的并行数据 ( 内容字段 ) ,经过功能模块处理按照 HDLC 帧格式串行输出。其结构示意图如图 3 所示,由四个功能模块和帧数据发送控制器组成。并行数据通过并串转换模块输出,在 CRC16 校验模块中产生 16bit 的校验位附着于后,经过插零、添加标志字段,最终完成 HDLC 帧格式数据输出。 图 3 HDLC 协议发送端结构示意图 发送端**能模块间数据流的产生和协调由 HDLC 帧数据发送控制器进行控制的。当 tx_data_valid 信号有效(总线数据准备好)时,发送控制器开始按照图 4 所示的状态机进行切换,另外在脱离空闲状态时,启动一个计数器 counter ,用于向功能模块发送精准的控制信号。 图 4 HDLC 发送端控制器状态机示意图 对图 4 中的控制信号进行说明: load 信号有效时,将并行数据加载寄存器中,然后数据由高位向低串行输出。 send_fcs 信号用于输出信号的切换,当其无效时, CRC16 模块输出上级输入数据;有效时,则输出 CRC16 校验字段。主要保证校验字段会附着在数据后串行输出。 当插零模块检测到连续 5 个 1 后,会进行插零操作,此时会发送 block 信号给并串转换模块和 CRC16 校验模块使其阻塞,完成插零操作后继续正常输出。 start_flag 或者 end_flag 信号有效时,标志字段发生器都会输出 01111110 。 3.2 HDLC 接收端的 FPGA 实现 HDLC 接收端从外部管脚获得帧数据,按照帧格式进行解析,得到内容字段发送至 FPGA 内部总线上。其结构示意图如图 5 所示,是由 4 个功能模块和帧数据接收控制器组成。接收端通过识别外部数据的标志位字段,将帧数据采集到 FIFO 中,完成一帧数据采集后在删零模块对多余的零进行删除,并对其数据进行 CRC 验证,后将数据放置的数据总线上。 图 5   HDLC 协议接收端结构示意图 在接收端,由 FIFO 采集模块负责识别标志字段来判断数据帧的开始或者结束,在结束时发送 rx_start_flag 信号触发帧接收控制器,并从 FIFO 中读取数据发送给下一级模块。具体状态机切换如图 6 所示。 图 6   FIFO 采集模块状态机示意图 接收端**能模块间数据流的产生和协调由 HDLC 帧数据接收控制器进行控制。当 rx_start_flag 信号有效时,接收控制器开始按照图 7 所示进行状态机切换,另外在脱离空闲状态时,启动一个计数器 counter ,用于向功能模块发送精准的控制信号。 图 7 HDLC 接收端控制器状态机示意图 对状态机的控制信号进行说明: rx_start_flag 信号,是由 FIFO 采集模块向下一级模块发送数据时产生的,用于启动接收控制器。 load 信号为数据进行串并转换的有效信号。 rx_data_valid 信号有效说明信号 CRC 验证成功,接收数据有效。 rx_data_error 信号有效说明信号 CRC 验证失败,接收数据存在错误。 4 结论 为了验证以上设计的正确性,本文采用 Xilinx 公司的 Spartan6 XC6SLX4 来实现 HDLC 协议,发送内容字段 32bit 0xAA55AA55, 采用 CRC-16 CCITT-FALSE 产生 16bit 的校验参数为 0x4B6C ,并依照协议添加标志位字段,发送的一帧数据应为 0x7EAA55AA554B6C7E ,发送速率为 2Mhz 。将程序下载执行,并将示波器探针放置在输出管脚上,得到输出波形如图 8 所示。验证了 HDLC 协议发送端结构设计是正确的。 图 8 FPGA 发送帧数据波形图 为了验证接收端结构设计的正确性,在硬件上将 HDLC 发送管脚和接收管脚相连,利用 Xilinx 公司的 ChipScope 软件去观察接收端的波形 ,采用 rx_data_valid 信号进行触发,通过图 9 可以观察到接收端已经将内容字段识别出来,和发送端的数据完全一致,这就验证了接收端设计的正确性。 图 9 FPGA 接收端 ChipScope 观测波形图 另外,本文进一步的进行了回环测试,每 40us 发送一次,每次内容字段加一,经过 5h 时间的测试后,对比发送端和接收端的数据,没有发现丢数据包和错数据包的情况,根据以上测试结果可知, FPGA 来实现 HDLC 协议是完全可行的方案。      
相关资源
  • 所需E币: 5
    时间: 2022-7-27 09:54
    大小: 758.68KB
    上传者: ZHUANG
    基于FPGA平台的HDLC协议的应用与研究
  • 所需E币: 1
    时间: 2021-3-15 20:03
    大小: 79.36KB
    上传者: ZHUANG
    MIMO实验系统中基于DSP的HDLC实现
  • 所需E币: 0
    时间: 2021-3-7 21:19
    大小: 660.53KB
    上传者: kaidi2003
    基于FPGA+ARM的HDLC协议控制器的设计与实现.rar
  • 所需E币: 0
    时间: 2020-12-25 14:59
    大小: 661.63KB
    上传者: czd886
    基于FPGA+ARM的HDLC协议控制器的设计与实现
  • 所需E币: 3
    时间: 2020-11-17 22:05
    大小: 1.14MB
    上传者: xgp416
    PPP和HDLC协议资源大小:1.14MB[摘要]特性Low-VDD提单减少泄漏方法分开读端口由M10泄漏性能400mv@475khz3.28华盛顿大学320mVW/O读取错误@27℃380mVW/O写入错误@27℃Vmin=300mv@1%一点错误256bit
  • 所需E币: 4
    时间: 2019-12-28 21:37
    大小: 314.38KB
    上传者: 2iot
    介绍了HDLC协议控制器的IP核方案及实现方法,分别对发送和接收模块进行了分析,给出了仿真波形图.该设计采用VerilogHDL语言进行描述,用ModelSimSE6.0进行了功能仿真.HDLC协议控制器IP核昀设计与实坝王雅荣,鲍民权,邱智亮(西安电子科技大学ISN国家重点实验室,陕西西安710071)摘要:介绍了HDLC协议控制器的IP核方案及实现方法,分别对发送和接收模块进行了分析,给出了仿真波形图。该设计采用VerilogHDL语言进行描述,用ModelSimSE6.O进行了功能仿真。关键词:HDLC协议IP核VerilogHDL语言HDLC(HighLevelDataLinkContml)协议是通信领地址字段用于标识接收站的地址。控制字段实现了域中应用最广泛的协议之一,它是面向位的高级数据HDLC的许多重要功能,根据其最前面两个位的取值,可链路控制规程,具有差错检测功能强大、高效和同步传将HDLC帧划分为:信息帧、监督帧和无编号帧。信息字输的特点。目前市场上有很多专用的HDLC芯片,但这段为所要传……
  • 所需E币: 3
    时间: 2019-12-25 11:59
    大小: 60.86KB
    上传者: givh79_163.com
    HDLC的FPGA实现方法……
  • 所需E币: 5
    时间: 2019-12-25 01:58
    大小: 1.64MB
    上传者: quw431979_163.com
    高级数据链路控制(HDLC)协议是数字通信中的重要协议之一。本文介绍了一种符合中国移动标准要求的HDLC设计。采用Verilog语言完成了电路设计,并用FPGA验证了设计的可行性,并最终使得本设计作为一个完整的IP应用于系列转换器ASIC芯片设计中。体现了采用硬件语言设计电路强大的灵活性和可移植性。……
  • 所需E币: 5
    时间: 2019-12-28 23:57
    大小: 57KB
    上传者: 16245458_qq.com
    AppNote3345providesapplicationexamplesfortheDS31256HDLCController.……