HDLC的DSP与FPGA实现

2011-07-08 07:24:36来源: 互联网
    引言

  HDLC(高级数据链路控制)广泛应用于数据通信领域,是确保数据信息可靠互通的重要技术。实施HDLC的一般方法通常是采用ASIC器件或软件编程等。

  HDLC的ASIC芯片使用简易,功能针对性强,性能可靠,适合应用于特定用途的大批量产品中。但由于HDLC标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏应用灵活性。有的芯片公司还有自己的标准,对HDLC的CRC(循环冗余码校验)序列生成多项式等有不同的规定。专用于HDLC的ASIC芯片其片内数据存储器容量有限,通常只有不多字节的FIFO(先进先出存储器)可用。对于某些应用来说,当需要扩大数据缓存的容量时,只能对ASIC再外接存储器或其他电路,ASIC的简单易用性就被抵销掉了。 HDLC的软件编程方法功能灵活,通过修改程序就可以适用于不同的HDLC应用。但程序运行占用处理器资源多,执行速度慢,对信号的时延和同步性不易预测。纯软件HDLC一般只能用于个别路数的低速信号处理。

  FPGA采用硬件技术处理信号,又可以通过软件反复编程使用,能够兼顾速度和灵活性,并能并行处理多路信号,实时性能能够预测和仿真。

  DSP采用软件技术处理信号,也可以反复编程使用。DSP、FPGA芯片虽成本略微高于ASIC芯片,但具有货源畅通、可多次编程使用等优点。在中小批量通信产品的设计生产中,用FPGA和DSP实现HDLC功能是一种值得采用的方法。

  HDLC的帧结构和CRC校验

  为了使FPGA的设计能够实现HDLC的基本功能并能按照各项标准的规定灵活采用不同的CRC校验算法,首先看一下HDLC基本的帧结构形式。

  HDLC是面向比特的链路控制规程,其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。以下是ISO/IEC 3309标准规定的HDLC的基本帧结构。

  其他的HDLC标准也有类似的帧结构。每帧的起始和结束以"7E"(01111110)做标志,两个"7E"之间为数据段(含地址数据、控制数据、信息数据)和帧校验序列。帧校验采用CRC算法,对除了插入的"零"以外的所有数据进行校验。为了避免将数据中的"7E"误为标志,在发送端和接收端要相应地对数据流和帧校验序列进行"插零"及"删零"操作。

  用FPGA+DSP实现HDLC功能

  对FPGA器件进行功能设计一般采用的是"Top to Down"("从顶到底")的方法,亦即根据要求的功能先设计出顶层的原理框图,该图通常由若干个功能模块组成。再把各个模块细化为子模块,对较复杂的设计还可把各子模块分成一层层的下级子模块,各层的功能可以用硬件描述语言或电路图来实现。

  DSP的设计则是按软件顺序执行的方法,主函数调用子函数,还可以把子函数分成下级子函数,目前的DSP设计软件主要是用C语言来完成。

  HDLC协议操作由FPGA、DSP共同完成:HDLC接收端:首先由FPGA来收数据,之后判断帧头“7E”及本机地址,如果是发给本机的数据,则对后续数据进行判断,如果有5个连“1”且后一位数据为“0”则将其后的一个“0”删除,删零后将数据存入FIFO中,收到帧尾“7E”时给出收结束标志;然后由DSP读收结束标志,如果标志为“1”读空FIFO,清标志位,将数据内容进行CRC校验。

  HDLC发送端:首先由DSP将数据写入FPGA的FIFO之后,DSP给出标志;FPGA收到标志后,先发送帧头“7E” ,然后发送数据,如果数据中有5个连“1”则在其后插入1个“0”,数据发送结束后发送帧尾“7E”。

  FPGA设计

  FPGA中实现的主要是链路层协议完成HDLC数据接口的收发,并完成与DSP的数据交互,该电路由接口模块inteRFace、HDLC数据发送模块transmitter和HDLC数据接收模块receiver三部分组成。

  FPGA接口模块interface

  interface模块的主要功能是:DSP通过数据、地址总线和读写信号向FPGA读写并行数据。

  在本例中数据总线的宽度取决于所使用的DSP的数据位。由于目前DSP处理器的多为64位或32位,而完成数据交互使用8位就够了,因此这里采用8位的数据总线cpu_data[7..0]。地址总线包括译码选通发送FIFO和接收FIFO的寄存器地址,命令寄存器和状态寄存器。

  对于DSP来说,FPGA可以看成是一个普通芯片,通过片选CS/、读写信号RD/和WR/,就可以选中FPGA并对其进行读写操作。

  当FPGA需要向DSP传递信息时,中断信号输出端interrupt/ 变为低电平,DSP响应后可到FPGA中的状态寄存器去读取详细的中断信息并做出相应的处理。

  FPGA数据发送模块HDLC_Send

  HDLC_Send模块的主要功能是:对HDLC产生内部数据发送时钟tx_clk;锁存DSP写入FIFO的发送数据并按指定时序启动发送;在发送数据段前加上"7E"起始标志;对发送的数据及CRC计算结果进行"插零"操作并附上"7E"结束标志把结果输出(见图1)。

FPGA数据发送模块HDLC

  txhdlc模块由发送数据子模块、标志数据插零子模块及“7E”发送等模块组成。

  HDLC的数据发送时钟tx_clk由外部输入时钟分频得到,能以高于比特发送的速度执行对内部操作。

关键字:HDLC

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0708/article_2291.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
HDLC

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved