EDN China > 设计实例 > 通信 > 网络传输与交换 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于FPGA的高速同步HDLC通信控制器设计

电子设计工程 陈晨 李志来 徐伟 金光?? 2010年12月03日 ?? 收藏0

  高级数据链路控制HDLC(High-level Data Link Control)广泛应用于数据通信领域,是确保数据信息可靠互通的重要技术。实施HDLC的一般方法通常是采用ASIC器件和软件编程等。HDLC的 ASIC芯片使用简易,功能针对性强,性能可靠,适合应用于特定用途的大批量产品中。但由于HDLC标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏应用灵活性。例如CCITT、ANSI、ISO/IEC等都有各种版本的HDLC标准,器件生产商都还有各自的标准,对HDLC的 CRC序列生成多项式等有不同的规定。况且,专用于HDLC的ASIC芯片其片内数据存储器容量有限,通常只有不多字节的FIFO可用。对于某些应用来说,当需要扩大数据缓存的容量时,只能对ASIC芯片再外接存储器或其他电路,ASIC的简单易用性就被抵销掉了。

  FPGA是现场可编程门阵列,属于超大规模集成电路,具有丰富的系统门、逻辑单元、块RAM和IO引脚等硬件资源。由于FPGA具有重装载功能,可以在其内部灵活实现各种数字电路设计,甚至可以动态改变其内部设计,动态实现不同的功能。

  因此,采用FPGA实现HDLC是一种可行的方法。HDLC通信控制器主要是对数据进行CRC校验、‘0’比特插入和加帧头帧尾操作。

  1 “0”比特插入模块

  HDLC规程规定信息的传送以帧为单位,每一帧的基本格式如图1所示。

基本格式

  HDLC规程指定采用8 bit的01111110为标志序列,称为F标志。用于帧同步,表示1帧的开始和结束,相邻2帧之间的F,既可作为上一帧的结束,又可作为下一帧的开始。标志序列也可以作为帧间填充字符,因而在数据链路上的各个数据站都要不断搜索F标志,以判断帧的开始和结束。

  由于HDLC具有固定的帧格式,以7EH为帧头和帧尾,为了保证透明传输,即只有帧头和帧尾出现连续的6个‘l’,其他地方不允许有连续5个以上的‘l’ 出现,否则就要进行‘0’比特插入,即只要遇到连续5个‘1’,就在其后插入1个‘O’。根据传输数据量的大小可采用以下2种思路实现‘0’比特插入操作。

  1.1 遇‘O’缓冲实现法

  由于数据中出现多少个连续的‘1’是不可控的,故最终插入‘0’的个数也是不可控的。例如要发送的“有效数据”(包含地址字段、控制字段、信息字段、帧校验字段)为320 bit,则最多会插入64个‘0’。数据是串行输入,每插入1个‘0’,则数据由5位变成6位,则插‘0’后要输入的数据就被“积压”来,插入的‘0’越多,“积压”的数据就越多。如果采用文献中的插‘0’方法,简单的将‘O’插入,将会丢失1位数据,设置1个64位的缓冲,每插入1个‘0’就把后面数据做为1位延时,插‘0’后在把已经延时1个时钟周期的数据加进来,就保证不丢失数据。实际利用VHDL语言编译时,其VHDL代码为:

VHDL代码

VHDL代码

  上述VHDL的思路:矢量a的第64位到第l位分别为datain延时64个时钟周期的串行数据到延时1个时钟周期的串行数据,i的初始数据为O,每遇到连续5个‘1’,插入1个‘0’后,dataout输出为datain延时i个时钟周期的数据。这样就做到了不丢失数据。图2是利用ISE 9.1i仿真的波形图。

仿真的波形图

  由图2可看到插‘0’操作后,数据比未插‘0’前变长了,而且变长了多少位是由数据内容决定的。

  该方法编程简单,占用FPGA资源少,在一个模块内就能完成‘0’比特插入操作。

  1.2 利用FIFO实现

  遇‘0’缓冲实现法在传输大容量数据时,需要设置许多位缓冲,这样就耗费大量的FPGA内部资源,而且随着延时位数增加,门延时呈指数增长,累积到一定程度就会产生误差,所有当数据量大时,上述的方法就不再适用,可以利用FIFO实现。

  当数据量大时,“积压”的数据相应也变大,可以利用FPGA内部资源FIFO节省逻辑资源,提高逻辑速度。选择异步FIFO,即读/写时钟不是同一个,这样可高速写入数据,再通过控制读时钟控制读的信息。
利用FPGA实现的VHDL代码为:

  FPGA实现的VHDL代码

  其基本思想是,一旦遇到5个连续的‘1’,就“抹掉”1个时钟,利用ISE 9.1i仿真的波形图如图3所示。

ISE 9.1i仿真的波形图

  设计一个FIFO与上述VHDL代码产生的模块相连,电路图如图4所示。

VHDL代码产生的模块


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


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

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

FPGA? HDLC通信控制器? CRC校验?

相关文章

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