基于NiosII软核的HDLC通信协议的实现分析

发布时间:2012-02-28 阅读量:1273 来源: 我爱方案网 作者:

中心议题:
    *  HDLC协议说明
    *  基于NiosII软核的HDLC通信协议系统简介
    *  基于NiosII的SOPC功能设计
解决方案:
    *  采用Altera公司的CYCLONEII芯片EP2C35-672 FPGA
    *  采用SOPC Builder对NiosII进行定制

 一 引言
  

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协议控制系统操作简单、使用灵活,能够很好地应用于各种小型通信设备。通过不同阶段大量的测试,系统工作可靠、稳定,完成了实时可靠的通讯与准确的控制。

相关资讯
华虹半导体2025年Q1业绩解析:逆势增长背后的挑战与破局之路

2025年第一季度,华虹半导体(港股代码:01347)实现销售收入5.409亿美元,同比增长17.6%,环比微增0.3%,符合市场预期。这一增长得益于消费电子、工业控制及汽车电子领域需求的复苏,以及公司产能利用率的持续满载(102.7%)。然而,盈利能力显著下滑,母公司拥有人应占溢利仅为380万美元,同比锐减88.05%,环比虽扭亏为盈,但仍处于低位。毛利率为9.2%,同比提升2.8个百分点,但环比下降2.2个百分点,反映出成本压力与市场竞争的加剧。

边缘计算新引擎:瑞芯微RV1126B四大核心技术深度解析

2025年5月8日,瑞芯微电子正式宣布新一代AI视觉芯片RV1126B通过量产测试并开启批量供货。作为瑞芯微在边缘计算领域的重要布局,RV1126B凭借3T算力、定制化AI-ISP架构及硬件级安全体系,重新定义了AI视觉芯片的性能边界,推动智能终端从“感知”向“认知”跃迁。

半导体IP巨头Arm:季度营收破12亿,AI生态布局能否撑起估值泡沫?

2025财年第四季度,Arm营收同比增长34%至12.4亿美元,首次突破单季10亿美元大关,超出分析师预期。调整后净利润达5.84亿美元,同比增长55%,主要得益于Armv9架构芯片在智能手机和数据中心的渗透率提升,以及计算子系统(CSS)的强劲需求。全年营收首次突破40亿美元,其中专利费收入21.68亿美元,授权收入18.39亿美元,均刷新历史纪录。

Arrow Lake的突破:混合架构与先进封装的协同进化

2024年10月,英特尔正式发布Arrow Lake架构的酷睿Ultra 200系列处理器,标志着其在桌面计算领域迈入模块化设计的新阶段。作为首款全面采用Chiplet(芯粒)技术的桌面处理器,Arrow Lake不仅通过多工艺融合实现了性能与能效的优化,更以创新的混合核心布局和缓存架构重新定义了处理器的设计范式。本文将深入解析Arrow Lake的技术突破、性能表现及其对行业的影响。

暗光性能提升29%:深度解析思特威新一代AI眼镜视觉方案

2025年5月8日,思特威(股票代码:688213)正式发布专为AI眼镜设计的1200万像素CMOS图像传感器SC1200IOT。该产品基于SmartClarity®-3技术平台,集成SFCPixel®专利技术,以小型化封装、低功耗设计及卓越暗光性能,推动AI眼镜在轻量化与影像能力上的双重突破。公司发言人表示:"AI眼镜的快速迭代正倒逼传感器技术升级,需在尺寸、功耗与画质间实现平衡,这正是SC1200IOT的核心价值所在。"