HDLC协议控制器的设计.docx

上传人:b****4 文档编号:24798343 上传时间:2023-06-01 格式:DOCX 页数:25 大小:480.90KB
下载 相关 举报
HDLC协议控制器的设计.docx_第1页
第1页 / 共25页
HDLC协议控制器的设计.docx_第2页
第2页 / 共25页
HDLC协议控制器的设计.docx_第3页
第3页 / 共25页
HDLC协议控制器的设计.docx_第4页
第4页 / 共25页
HDLC协议控制器的设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

HDLC协议控制器的设计.docx

《HDLC协议控制器的设计.docx》由会员分享,可在线阅读,更多相关《HDLC协议控制器的设计.docx(25页珍藏版)》请在冰豆网上搜索。

HDLC协议控制器的设计.docx

HDLC协议控制器的设计

内容摘要……………………………………………………………………1

关 键词……………………………………………………………………1

Abstract……………………………………………………………………1

  KeyWords …………………………………………………………………1

1.绪论……………………………………………………………………2

1.1研究的意义 ………………………………………………………2

1.2本设计的主要功能 ………………………………………………2

2.HDLC协议综述………………………………………………………… 3

2.1HDLC协议的产生背景 ………………………………………… 3

2.2 HDLC协议的帧结构……………………………………………4

2.3HDLC协议的规程分析…………………………………………7

3.HDLC协议控制器的设计……………………………………………… 8

3.1HDLC协议控制器设计方案选择…………………………………8

3.2FPGA的设计原则 ………………………………………………9

3.3HDLC协议控制器总框架………………………………………10

3.4 HDLC帧发送器的设计……………………………………………11

3.5HDLC帧接收器的设计……………………………………………15

参考文献………………………………………………………………… 18

致 谢………………………………………………………………………19

[说明:

在本页中,“目录”二字居中,宋体小二号,加黑,

其它统一由宋体小四号,不加黑排版打印、行间距为1.5]

 

内容摘要:

 HDLC(高级数据链路控制)协议是一种面向比特的链路控制规程,广泛的用作数据链路层的控制协议。

论文在分析和研究HDLC协议的基础上,提出了一种基于FPGA(现场可编程门阵列)的HDLC协议控制器的设计。

对HDLC协议控制器的功能进行划分,分别设计了标志位的检测和生成、插零和删零、FCS的校验等控制模块。

采用VHDL硬件描述语言在FPGA内部实现HDLC协议的各功能模块,本设计使用QuartusII9.1平台实现代码编写、综合、编译、仿真。

对HDLC链路控制规程功能,帧控制和FCS校验功能进行了仿真实现。

关 键词:

HDLC;FPGA;帧收发器;

Abstract:

(宋体,小四号,加黑)××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。

(宋体,小四号,不加黑)

Keywords:

(宋体,小四号,加黑)×××□□×××□□×××□□ (宋体,小四号,不加黑)

 

1绪论

1.1  研究的意义

HDLC是一个在同步网上传输数据、面向位的数据链路层协议,它是由国际标准化组织(ISO)制订的。

该协议被广泛的用作数据链路层的控制协议,HDLC控制器在网络设备中得到大量的使用,如列车通信网络技术、综合业务数字网ISDN、X.25分组交换网以及帧中继网等。

怎样在产品中设计与实现HDLC网络协议也是一个技术研究的热点。

HDLC的一般实现方法为采用ASIC器件和软件编程等。

ASIC的芯片有Motorola公司的MC92460,ST公司的MK5025等。

应用这些ASIC器件时设计简单,功能针对性强,性能可靠,适用于特定用途的大批量产品中。

但是这类ASIC芯片存在开发时间长,一旦芯片固有缺陷就不容易解决等问题,而且HDLC标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏灵活性。

HDLC的软件编程方法灵活,通过修改程序就可适用于不同的HDLC应用,但程序运行占用处理器资源多,执行速度慢,实时性不易预测。

FPGA(FieldProgrammableGateArray, 现场可编程门阵列)器件采用硬件处理信号,可以反复编程,能够兼顾速度和灵活性,并能多路并行处理。

在中小批量通信产品的设计中,FPGA是取代ASIC实现HDLC 功能的一种合适选择。

1.2本设计的主要功能

本文实现了一种采用FPGA的HDLC协议控制器的设计和功能仿真。

首先综述了HDLC协议的产生背景和帧结构,提出了基于FPGA设计模式的控制器。

以HDLC协议帧的接收和发送为主体,在明确FPGA的设计原则的基础上,对帧收发器进行分功能模块设计,编写代码,时序分析。

以发送器为例,其中包括了标志位的生成,插零,FCS校验等模块的设计。

接收器跟发送器设计思想类似。

在完成各个模块的设计后,使用了QuartusII9.1自带仿真器对各个模块的功能一一进行了仿真,并对HDLC协议及其规程进行了验证和分析。

 

2HDLC协议综述

2.1HDLC 协议的产生背景

ﻩ计算机通信的早期,人们发现对于经常发生误码的实际链路,只要加上了合适的控制规程,就可以是通信变得比较可靠。

这些规程都是数据链路层的协议,都是面向字符的。

所谓面向字符,就是说在链路上所传送的数据都是由规定的字符集中的字符所组成的。

而且,链路上传送的控制信息也必须由同一个字符集中的若干指定的控制字符构成。

ﻩ面向字符的链路控制规程曾在计算机网络的发展过程中起了重要的作用,但

随着发展,这种规程就逐渐暴露出其弱点。

其主要限制是:

1.通信线路的利用率低,因为它采用的是停止等待协议,收发双方交替地工作。

2.所有通信设备必须使用同样字符的代码,而不同版本的规程要求使用不同的代码。

3.只对数据部分进行差错控制,若控制部分出错就无法控制,因而可靠性差。

4.不易扩展,每增加一种功能就需要设定一个新的控制字符。

1974年,IBM公司推出了著名的体系结构SNA。

在 SNA的数据链路层规程上采用了面向比特的规程 SDLC(SynchronousData LinkControl)。

后来 IBM将此

规程提交美国国家标准协会ANSI和国际标准化组织ISO,建议成为国家和国际

标准。

ANSI把 SDLC修改为ADCCP(AdvancedDataCommunicationControl

Procedure)作为美国国家标准,而ISO把SDLC 修改后称为HDLC(High-levelData

Link Control),并作为国际标准ISO3309。

HDLC协议有两种链路配置和三种数据传送方式:

1.非平衡模式:

a.正常响应方式NRM(NomalResponseMode)

b.异步响应方式ARM(Asynchronous ResponseMode)

2.平衡模式:

c.异步平衡方式ABM(Asynchronous BalancedMode)

2.2 HDLC协议的帧结构

HDLC的帧格式由六个字段组成,这六个字段可以分为五种类型,即标志序列(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验字段(FCS)。

在帧结构中允许不包含信息字段I。

标志

地址

控制

信息

帧校验序列

标志

F

C

I

FCS

F

16/8位

16/8位

N位

16/32位

图1HDLC帧结构

●标志序列(F)

HDLC指定采用01111110为标志序列,称为F标志。

要求所有的帧必须以F标志开始和结束。

接收设备不断地搜寻F标志,以实现帧同步,从而保证接收部分对后续字段的正确识别。

另外,在帧与帧的空载期间,可以连续发送F,用来作时间填充。

在一串数据比特中,有可能产生与标志字段的码型相同的比特组合。

为了防止这种情况产生,保证对数据的透明传输,采取了比特填充技术。

当采用比特填充技术时,在信码中连续5个“1”以后插入一个“0”;而在接收端,则去除5个“1”以后的“0”,恢复原来的数据序列,如图4所示。

比特填充技术的采用排除了在信息流中出现的标志字段的可能性,保证了对数据信息的透明传输。

数据中某一段比特组合恰好 00100 11 11110001010

   出现和F字段一样的情况  会误认为是F字段

  发送端在5个连1之后 00100 1 111 10 100010 10

   填入0比特再发送出去      填入0比特

在接收端将5个连1之后  001 0 01 11 11100 0 1010

图2比特填充

当连续传输两帧时,前一个帧的结束标志字段F可以兼作后一个帧的起始标志字段。

当暂时没有信息传送时,可以连续发送标志字段,使接收端可以一直保持与发送端同步。

●地址字段(A)

地址字段表示链路上站的地址。

使用平衡方式(采用ABM),地址字段写入应答站的地址。

HDLC协议没有给出地址字段的具体格式,只对其扩充方法及全站地址、无站地址给出了定义。

考虑到实际的需要与实现上的方便,定义地址字面结构如下:

0

 1

2

3

4

5

7

1

C/R

X

X

X

X

X

X

X– 未使用

Bit0置“1”,表示地址字段只有一个字节

C/R 置“1”表示命令帧,置“0”表示响应帧

图3地址字段定义

地址字段的长度采用8bit时,最多可以表示64个站的地址。

地址字段bit2~bit7为“111111”时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动作;bit2~bit7为全“0”比特为无站地址,用于测试数据链路的状态。

因此有效地址共有62个。

●控制字段(C)

控制字段用来表示帧类型、帧编号以及命令、响应等。

由于C字段的构成不同,可以把HDLC帧分为三种类型:

信息帧、监控帧、无编号帧,分别简称I帧(Information)、S帧(Supervisory)、U帧(Unnumbered)。

在控制字段中,第1位是“0”为I帧,第1、2位是“10”为S帧,第1、2位是“11”为U帧。

比特

1

3

5

6

8

I帧

0

N(S)

P/F

N(R)

S帧

S1

S2

P/F

X

X

X

U帧

1

1

M1

M2

P/F

M3

M4

M5

图4基本模式控制字段

比特

2

4

5

7

8

9

1

16

I帧

N(S)

P/F

N(R)

S帧

0

S1

S2

X

X

X

X

P/F

N(R)

U帧

1

1

M1

M2

U

M3

M4

M5

P/F

X

X

X

X

X

X

注:

X-未使用,置0U-未定义,置1。

图5扩充模式控制字段

●信息字段(I)

信息字段内包含了用户的数据信息和来自上层的各种控制信息。

长度小于58Bytes。

●帧校验序列字段(FCS)

帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内,长度定义由于单板中有部分HDLC链路采用HDLC控制器实现,而HDLC控制器只能支持16bits的CRC

 

2.3HDLC协议的规程分析

1.使用统一的帧格式:

实现数据、命令和响应的传输,实施起来方便;

2.采用‘0’位插入法:

使得规程可以支持任意的位流传输,保证了信息传输的透

明性;

3.采用窗口机制和捎带应答机制:

全双工工作方式,允许在未收到确认的情况下,

连续发送多个帧,提高了信息传输的效率;

4.采用帧校验序列,并设置窗口序号,可以提高信息传输的正确性和可靠性。

总之,面向二进制位的控制规程比面向字符型的控制规程具有较高的优越性。

 

 

3HDLC协议控制器的设计

3.1 HDLC协议控制器设计方案选择

HDLC协议控制器实现方法有三种:

ASIC器件、软件编程以及FPGA器件。

ﻩ实现HDLC协议的ASIC芯片有Motorola公司的 MC92460、ZILOG公司的

Z80230/85230、ST公司的MK5025等。

这些集成电路使用简易,功能针对性强,适用于特定用途的大批量产品中。

但HDLC标准的文本较多,ASIC芯片出于专用性的目的难于通用于不同版本,缺乏灵活性。

而且,专用于HDLC的ASIC芯片其片内数据存储器容量有限,通常只有不多字节的FIFO(先进先出存储器)可用,存储深度较浅,对于某些应用来说,当需要扩大数据缓存的容量时,只能对ASIC芯片再外接存储器或其它电路,这样,ASIC芯片在使用中就会有一定的限制。

HDLC的软件编程实现,包括PC机和单片机,方法灵活,具有成本低、硬件结构简单、软件编程容易等特点。

通过修改程序就可以适用于不同的HDLC协议要求的应用。

但是程序运行占用处理器资源多,执行速度慢,对信号的时延和同步性不易预测。

使用FPGA(FieldProgrammableGateArray,现场可编程门阵列),能够有效的综合前两种方法的优点。

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

VHDL语言设计灵活,可以用模拟器来验证程序的功能和时序的正确;不要求设计者非常熟悉器件的内部结构,使得设计者可以集中精力从事设计构思,可以在各EDA平台上运行。

在中小批量通信产品的设计生产中,用FPGA实现HDLC功能是一种较好的实现途径。

3.2 FPGA的设计原则

完整的FPGA设计流程分为电路设计与输入、功能仿真、综合、综合后仿真、

实现、布局布线后仿真、配置下载与调试等主要步骤。

在设计FPGA系统时,主要考虑以下几个原则:

面积和速度的平衡原则与互换原则、硬件原则、系统原则和同步设计原则。

1)面积和速度的平衡原则与互换原则:

这里的“面积”是指一个设计所消耗的FPGA的逻辑资源数量。

“速度”是指

设计在芯片上稳定运行时所能够达到的最高频率,与设计时众多时序特征量密切

相关。

一般来说,速度的优先级要高于资源耗费。

当两者冲突时,采用速度优先的准则。

2)硬件原则

对HDL代码编写而言,它的本质作用在于描述硬件。

所以评判一段HDL代码的优劣的最终标准是其描述并实现的硬件电路的性能(包括速度和面积两个方面的指标)。

3)系统原则

系统原要求设计者能够通过全局、整体上把握设计,从而提高设计质量,优化设计效果。

4)同步设计原则

同步时序设计是FPGA设计的最重要原则之一。

异步电路容易产生毛刺和竞争冒险;同步时序电路主要信号和输出信号都由时钟驱动触发器产生,能够避免毛刺,信号稳定。

从资源使用方面考虑,在FPGA中,同步设计并不比异步设计浪费资源。

特别需要注意的是,不同的时钟域的接口需要进行同步。

还要考虑全局时钟布线资源的利用。

全局时钟资源由特殊的工艺实现,具有很高的扇出性能,且到达芯片内部的所有可配置单元、FO单元和选择性块RAM的时延和抖动都为最小。

逻辑设计中使用非常频繁的时钟信号、预设置信号、复位信号和使能信号均应从全局脚引入。

 

3.3HDLC协议控制器总框架

帧发送器

ﻩ由结构图可以看出,HDLC协议控制器分为总控制模块、帧发送器、帧接收器,按具体功能模块划分,每个帧控制器又划分为控制、数据缓冲、插零、删零、标志位等模块。

各个模块之间的连接时依靠控制信号和寄存器的配置实现的,通过配置好总控制模块的各个控制信号,从而组成整体的HDLC帧的收发功能。

具体电路如下图所示:

 

3.4HDLC帧发送器的设计

ﻩ帧发送器是将信息按照HDLC协议的格式封装成帧并发送出去,其中包括了帧头帧尾标志位的插入、插零、FCS校验和发送模块。

通过配置功能选择寄存器addr选择发送功能,并设置好时钟、复位等控制信号即可实现帧发送器的功能。

3.4 .1帧发送器的主要功能

1)插零

发送器接收到数据时,首先检测是否数据中有5个连续的‘1’,如若有就在其后面插入一个‘0’。

2)标志位生成

ﻩ当接收到信号开始发送数据时,将“7E”加在帧头和帧尾,并发送出去。

3)CRC校验

帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内。

4)数据缓冲

3.4.2帧发送器的组成

   帧发送器功能组成模块

●数据缓冲模块( txbuff):

数据缓冲模块负责将接收到的数据缓存起来,然后供后续模块调用数据。

其端口定义如下图:

        数据缓冲模块管脚定义图

初始化之后,当控制端收到发送数据的信号时,将txenable和wr端口置‘1’,数据由txdatainbuff输入,txbuff开始缓冲数据,当数据缓冲满了将full置‘1’或达到了预定的数值时会将txdone置‘1’。

数据缓冲完后,txdataavail置‘1’表示此时缓冲器内数据可以供调用,数据由txdataoutbuff输出。

ﻩtxbuff模块对帧的数据量根据存储模块的大小和后面数据处理能力来决定,模块输出的8比特并行数据。

●CRC校验模块(txfcs):

在通信系统中传输数据的可靠性即误码率是非常重要的,因此在传输的数据中需

要插入一定的校验信息。

根据HDLC协议的要求,数据发送前要对帧内所有的数据进行CRC多项式的计算,并将结果一起发送出去,CRC校验的模块引脚图如下图:

      发送器CRC校验模块

系统初始处于idle_st状态,当收到读数据信号时(rdy置‘1’),进入read_st状态,如果txdataavail有效txfcs将rdbuff置“1”开始从txbuff中读取数据,然后将数据一一进行CRC多项式运算,并将数据一起封装在帧里面发送出去。

●txsynch模块:

txsynch模块的功能是将总控制模块、txbuff模块、txfcs模块和txchannel模块连接,模块引脚图如下:

      txsynch模块引脚图

●txchannel模块:

txchannel模块又由zeroins、txcont、flag_ins3个模块构成,分别负责标志位的生成和插零功能的实现,其模块引脚图如下:

    txchannel模块引脚图

1)标志位生成模块flag_ins:

标志位生成模块负责对待发送的数据进行帧头尾的添加,其端口定义图如下图:

  flag_ins模块引脚图

ﻩ当该模块接收到控制使能信号时(TXEN置”1”),串行数据由TXD端口输入,TX端口输出已加好标志位的串行数据流。

标志位的仿真时序图如下图:

ﻩﻩﻩﻩﻩ发送端标志位仿真时序图

设定发送数据为“”,由图可知数据流中已加入“0x7E”的标志位,这是构建HDLC帧的第一步。

2)插零模块zeroins:

ﻩ为了保证数据链路的透明传输(即可以传输任意组合的比特流),HDLC发送器在遇到5个连“1”的情况下,为了防止接收端误判帧头或帧尾,必须在其后填充一个“0”比特。

其模块引脚图如下:

ﻩ当data[7..0]端口接收到数据时,在时钟上升沿来到时利用移位寄存器,进行8位数据并串转换,在模块内定义一个5位的寄存器,对转换后的连续的5比特数据进行求与运算,若是连续的5个“1”比特,则在后面插入一个“0”比特。

插零功能仿真时序图如下:

ﻩﻩﻩﻩﻩ发送端插零模块仿真时序图

由图可以看出,输入数据值为“”时,由于数据的高5位均为“1”,根据每逢5个连续的“1”插一个“0”,所以输出的数据流中变成了“111110000”

3.5 HDLC帧接收器设计

帧接收器设计的模块与帧发送器的设计过程类似,接收器负责标志位检测、CRC生成、删零模块,基本与帧发送器相逆。

同样帧接收器的数据缓冲模块也与帧发送器的设计过程相似。

通过配置addr寄存器即可实现HDLC帧接收器的整体功能。

 

3.5 .1 帧发送器的主要功能

1)标志检测:

此模块检测比特流中的“7E”,作为数据帧开始和结束的标志。

2)删零:

接收数据时,每遇到连续的5个“1”,就将其后面的一个“0”删掉。

3)CRC检测:

采用CRC-12,也可以不进行检测。

3.5.2帧发送器的组成

●数据缓冲模块( rxbuff):

帧接收器的数据缓冲模块,跟发送器的缓冲模块功能相似,但是逻辑相逆。

这里是将从txchannel中收到的数据缓存起来,等到缓冲满了,供用户调用数据。

数据缓冲模块引脚图如下:

●rxchannel模块:

rxchannel也包含了rxcont、flagdetect、zerodetect这3个模块。

Rxchannel模块引脚图如下:

Rxchannel模块引脚图

1)标志位检测功能模块引脚图:

      接收器标志位检测引脚图

标志位检测的主要功能是检测接收到数据流的帧头,确定帧的边界。

帧头判别式如下:

FlagVar:

= notShiftReg(0) andShiftReg(1) andShiftReg

(2)and ShiftReg(3)and ShiftReg(4)andShiftReg(5)andShiftReg(6) andnotShiftReg(7);

FlagDetect<= FlagVar;

如果检测到FlagDetect其值为高,则表明检测到帧头的出现,这样就可将为下个模块提高控制信号,提示可以开始接收数据。

若为零,则表示帧头还未到来。

标志位检测功能模块仿真时序图如下:

ﻩﻩ标志位检测功能模块仿真时序图1

ﻩ由图可知,输入标志位“0x7E”之后紧跟着的是“11111”数据流。

输出数据data如下图所示:

标志位检测功能模块仿真时序图2

这是输出的8比特并行数据,两组数据分别是“”和“”,可见帧接收器正确的接收到了发出的数据。

2)零检测功能模块引脚图:

   零检测功能模块引脚图

零检测功能模块是检测比特流中连续“1”的个数,向后面的提供控制信号,以完成删零判断,检测帧结束标志的功能。

模块内设置一个计数器,用来计算连续“1”的个数。

若是计数值为6且下一接收比特为“0”,表明检测到结束标志。

当计数器值为5且下一比特为“0”,则表明该“0”比特应该删去。

零检测功能模块仿真时序图如下:

由图可知,输入的数据流是“111110”数据流,其中前面包含了连续的5个“1”。

输出数据data如下图所示:

 输出Data中第一组数据是“”第二组是“”,显然第一组数据中已经删除了一个“0”。

 

参考文献:

(宋体四号加黑)

[1]惠晓实,王凯航,陆舟等.一种基于Web技术的网络数据库系统设计.计算机应用研究,2000,17

(1):

84~86.

[2]强文久,元章,雯荣.数学分析的基本概念与方法.北京:

高等教育出版社,1989:

153~167.

[3]詹东风.中国漆树酶分离制备及反映功能研究.武汉大学博士学位论文,1998:

81~89.

[4]WaynCarmichale. The toxins ofcyanobacteria. ScientificAmerican, 1994,270(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1