一 导言
HDLC(High-level Data Link Control)协议是通讯领域中运用最广泛的协议之一,是面向比特的高档数据链路操控规程,具有强壮的过失检测功用和同步传输特色,保证数据的牢靠传输[3]。市场上许多专用的HDLC芯片因寻求功用的齐备,而使芯片的操控变得复杂。实际上对某些特别的场合,可选择HDLC协议中最契合体系要求的部分功用,规划一种功用相对简略、运用灵敏的操控器。
NiosII体系是Altera公司的SoPC解决方案,它是一个运转在FPGA上的32位RSIC处理器。Altera公司关于NiosII的开发供给了强壮的规划开发渠道QuartusII、SOPC Builder以及NiosII IDE[2] [4]。这样,硬件电路与外设的衔接,NiosII软核的装备,C言语编写与调试可有机地结合起来,大大提高了体系规划的功率,便于体系的更新与晋级。
本规划便是选用Altera公司的CYCLONEII芯片EP2C35-672 FPGA完结依据NiosII的HDLC协议操控体系。在完结通讯协议、保证牢靠通讯的前提下,终究完结主控机与基站终端之间实时、牢靠的信息交互与监控办理功用[1]。
二 HDLC协议阐明[3]
HDLC协议具有以下特色:数据报文可通明传输;全双工通讯;选用窗口机制和捎带应对;选用帧校验序列,并对信息帧进行次序编号,避免漏收或重收,传输牢靠性高;传输操控功用和处理功用别离,运用十分灵敏。HDLC履行数据传输操控功用,一般分为3个阶段:数据链路树立阶段、信息帧传送阶段、数据链路开释阶段。
HDLC协议以帧为基本信息单位传输数据,无论是传输数据信息或是操控信息,每个帧都选用一致的帧格局,如图1所示:
图1 HDLC帧格局
1. 标志字段(F)
HDLC协议规则,一切信息的传输有必要以一个标志字开端,且以同一个标志字结束,这个标志字便是01111110。接纳方可以经过查找01111110来判别帧的开端和结束,以此树立帧同步。
2. 地址字段(A)
地址字段标明链路上站的地址。地址字段为8位,也可用8的倍数进行扩展,用于标识接纳该帧的站地址。
3. 操控字段(C)
操控字段为8位,用来标明帧类型、帧编号以及指令、呼应等。由图1知,因为C字段的构成不同,可以把HDLC帧分为三种类型:信息(I)帧、监控(S)帧、无编号(U)帧。在操控字段中,第1位是“0”的为I帧,第1、2位是“10”的为S帧,第1、2位是“11”的为U帧。
4. 信息字段(I)
信息字段内包含了用户的数据信息和来自上层的各种操控信息。在I帧和某些U帧中,具有该字段。HDLC帧的信息长度是可变的,其长度由收发站缓冲器的巨细和线路的过失情况决议,但有必要是8bit的整数倍。它可传送标志字以外的恣意二进制信息。
5.帧校验序列字段(FCS)
帧校验序列用于对帧进行CRC循环冗余校验。在HDLC协议中选用16位循环冗余校验码进行过失操控,其校验规模从地址字段的第1比特到信息字段的最终1比特的序列,而且规则为了通明传输而刺进的“0”不在校验规模内。它的生成多项式为g(x)=X16+X12+X5+1。
三 体系简介
基站体系往往被安顿在比较涣散、环境比较恶劣且无人值守的当地,因而它运转的牢靠性就显得尤为重要。SOPC的许多特色满意了此类体系的要求。依据此定位,该体系选用pc机作为监控中心,SOPC片上体系作基站端,它们之间选用HDLC协议来完结牢靠通讯。监控中心完结树立和断开链路的功用,SOPC基站体系除了接纳、履行监控中心发来的指令外,还要完结现场数据的收集操控,并将数据上传至监控中心。
关于通讯两边,数据都有发送与接纳两个传输方向,即上行数据流和下行数据流。发送数据时,依照HDLC协议,先将数据封装成帧,即加上帧头、地址字段、操控字段、信息字段、CRC校验段、帧尾,当缓冲区有空间时,将成帧数据送交缓冲区待发送,数据帧再经UART送到对方的RS-232接口,数据进入收方的缓冲区,收方则履行与发送相反的操作,即从缓冲区读出数据、对其解帧、CRC校验判别、解码,并依照所提取的信息履行相应操作。完好的体系总框图如图2所示:
图2 体系框图
四 依据NiosII的SOPC功用规划
分为硬件规划与软件规划,分别在QuartusII、SOPC Builder和NiosII IDE中完结。
1 硬件规划
(1) 硬件规划结构
硬件规划结构包含RS-232接口、PIO接口、显现模块和自界说CRC校验指令,这些部分都是用NiosII软核来装备的。NiosII作为体系的流程操控中心,其作用是显而易见的,经过选用SOPC Builder对NiosII进行定制,极大的减少了体系的运用资源。整个体系硬件规划框图如图3所示:
图3 NiosII硬件原理图
(2)NiosII软核装备
运用QuartusII软件中的SOPC Builder,增加处理器、总线、片内ROM、PIO、UART、NiosII其它外设及接口。体系的顶层模块由NiosII软核处理器标准版和体系时钟组成,体系时钟经过锁相环PLL再分配给各外设及SDRAM。
(3)自界说CRC校验指令
可编程软核处理器最大的特色是灵敏到可以便利的增加指令,这样可以把体系顶用软件处理耗时多的要害算法用硬件逻辑电路来完结。自界说指令其实便是用户让NiosII软核完结的一个功用,这个功用由选用HDL言语描绘的电路模块来完结,该模块被衔接到NiosII软核的算术逻辑部件上。
CRC校验的一般算法需求很多的逻辑与循环运算,假如用软件来完结则要占用许多个时钟周期,使体系的功率下降,而用硬件完结则仅需求几个时钟周期。NiosII正好供给了用户自界说指令的功用,因而给NiosII增加自界说CRC校验指令来完结该部分功用,大大提高了体系的功率。
2 NiosII运用软件规划
NiosII运用软件用C言语完结,完结了HDLC协议和对基站体系的操控两个使命。首要完结HDLC协议中所要求的解帧校验处理、数据从头打包转发、错误处理等操作,保证通讯的疏通与牢靠。基站端在接纳到监控中心的指令后,在运用软件的操控下,驱动设备履行相应操作,主要是对温度、湿度、电压、烟感度等参数的读取及环境参数的调整,履行结束后将成果反应回监控中心。依据此思维,NiosII软件分为HDLC协议完结部分和指令履行部分。
(1) 协议完结部分
a、接纳数据
首要,树立链路完结对帧序列、各种外设参量、标志位等变量的初始化。函数void DeFrame( )用于每收到一帧后的解帧处理,即包含帧长度的判别、CRC 校验、帧类型辨认、帧序号的对照。CRC校验码的运算由函数ALT_CI_CRC_CCITT( )完结,详细操作是调用装备的自界说CRC校验指令,赋数据值,然后经过硬件运算回来核算的CRC码,再和数据帧中的校验码比照,相同则是正确信息,不等则判为错误信息。
b、发送数据
界说变量volatile int edge_capture来进行基站环境参数信息的捕捉,如温度、湿度、电压等。NiosII运用软件依据对环境参量的读取和判别,还要对反常情况做特别处理。比方,假如某参量出现超支则必需马上发送信息帧进行告警,以运用户进行及时的调整。
详细发送时,数据先装帧再送入缓冲区等候。为了避免帧丢掉形成通讯两边处于呆滞的等候状况,引进计时器,即每发一次信息帧都要发动计时器进行计时,若计时器溢出,重发上一帧并从头计时。以发送电压值为例,对其详细进程进行阐明:
void InfoVoltageFrame( ); //装电压帧
void SendBuf(unsigned char Frame[],int SendDataLen); //帧送缓冲区
void TimeDelay( ); //发动计时器
若超时,置超时标志DelayFlag=1;
在此条件下,调用函数ReSendFrame( ); //重发上一帧
再次发动计时器TimeDelay( );
c、HDLC协议中滑动窗口的处理
只将滑动窗口协议中最要害的帧序号改变的详细代码出现出来:
……
If ((RvByte(2) And HF)/2)=VR Then ‘NS与VR作比较,持平则接纳并发送承认帧
VR = ((VR + 1) And H7)
……
If (RvByte(2) And HF) = 1 Then ‘收到承认S帧
SysTime.Enabled = False
VS = ((VS + 1) And H7)
……
(2)指令履行软件部分
这部分软件主要是驱动设备履行相应指令。一方面,监控中心发动自动监控功用, NiosII每隔5秒会接纳到监控中心发来的读取参量信息指令,NiosII履行指令并读取外设参量送至发送缓存;另一方面,若环境参量发生改变,NiosII会对其进行判别,假如超支则当即自动发告警信息帧给监控中心。
五 结束语
本文提出了一种依据FPGA的HDLC协议操控体系规划方案,并运用Altera公司的CYCLONEII芯片EP2C35-672来完结。实践标明,运用NiosII完结的HDLC协议操控体系操作简略、运用灵敏,可以很好地运用于各种小型通讯设备。经过不同阶段很多的测验,体系作业牢靠、安稳,完结了实时牢靠的通讯与精确的操控。
本文作者立异点:
1、 技能手段的立异:运用NiosII这种新式的SOPC技能完结了HDLC协议。
2、 运用领域的立异:完结了对基站各种信息(如作业电压、环境温度、湿度、烟感度等)的实时监控与牢靠办理。