EDN China > 技术文章 > 微处理器与DSP > DSP应用 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

HDLC的DSP与FPGA实现

电子产品世界?? 2011年03月29日 ?? 收藏0

  引言

  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由外部输入时钟分频得到,能以高于比特发送的速度执行对内部操作。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

HDLC? DSP? FPGA? CRC校验?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈