WTB网络HDLC在FPGA中的实现

发布者:脑洞飞翔最新更新时间:2007-11-28 来源: 国外电子元器件关键字:周期  电平  接收  发送 手机看文章 扫描二维码
随时随地手机看文章

1 引言

TCN(Train Communication Network)总体结构是由WTB(绞线式列车总线)和MVB(多功能车辆总线)组成,符合IEC61375-1标准。本文主要围绕WTB链路控制的帧格式进行研究。鉴于IEC61375-1标准中规定的WTB帧数据格式与IS03309中定义的HDLC(High Level Data Link Control)格式一致,基带Manchester-Biphase-L技术编解码器现则围绕HDLC展开。

随着深亚微米工艺技术的发展,FPGA(FieldProgrammable Gate Array)的规模越来越大,其单片逻辑门数已超过上百万门。同时还具有开发周期短、成本低、可实时在线检验等优点。因此广泛用于特殊器件设计。中小批量通信产品的设计生产中采用FPGA实现HDLC功能是一种值得借鉴的方法。

2 WTB的HDLC帧格式

WTB的有效帧格式包括帧头、HDLC帧数据格式、终止分界符。其中HDLC帧数据格式与ISO3309中定义的相同,包括起始8位标志位、HDLC数据、16位FCS、结束8位标志位。帧头和HDLC帧数据由曼彻斯特码编码,一个位单元的前半部分为负电平,在位单元的中间跳变为正电平的位编码为“1”,反之为“0”。帧头在起始位和结束位“1”之间有7个(“0”,“1”)位对。终止分界符可使线路保持2个周期的正电平。

2.1 HDLC帧格式

WTB通信方式中,所有信息都是以帧的格式传输的,HDLC帧格式如图1所示。HDLC协议规定,所有信息传输必须以一个标志字开始,且以同一标志字结束,这个标志字为01111110。开始标志到结束标志之间构成一个完整的信息单位,称为一帧。在HDLC通信方式中,接收方通过搜索01111110探知帧的开始和结束,以此建立帧同步。在帧与帧之间的空载期,可连续发送标志字来做填充。而在WTB的网络中,具有特殊的起始帧头,更易于产生同步解码。

2.2 HDLC数据及“0”比特插入

HDLC帧的数据区的长度是可变的,可传送标志字以外的任意二进制信息。其数据最小为32位,最大为1 056位,HDLC发送的数据应是8的整数倍。为了确保标志字是唯一的,发送方在发送信息时采用“0”比特插入技术,即发送方在发送除标志字符外的所有信息时(包括校验位),只要遇到连续的5个“1”,就自动插入一个“0”;反之,接收方在接收数据时,只要遇到连续的5个“1”,就自动将其后的“0”删掉。“0”比特插人与删除技术可使HDLC具有良好的传输透明性,可传输任何比特代码。

2.3 CRC校验

HDLC采用16位循环冗余校验码(CRC-16)进行差错控制,生成若干种多项式,WTB网络使用标准的生成多项式x16+x12+x5+1。HDLC差错校验是对整个帧的内容作CRC循环冗余校验,即纠正纠错范围内的错码,在校错范围内的错码只能校验,但不能纠正。标志位和按透明规则插入的所有“0”不在校验的范围内。

3 编码器与解码器的FPGA实现

基于FPGA成本低、实时性好、可扩展为SOPC(片上系统)便于应用层的开发等优点,本设计采用Altera公司的CYCLONE II经济型FPGA实现编解码。

3.1 有限时序状态机

HDLC通信帧属于串行数字信号编解码方式,其帧格式与时序逻辑联系紧密。编码器是功能、时序复杂的时序逻辑电路。为了便于利用硬件描述语言设计,将这一复杂的时序逻辑抽象成有限状态机,并利用有限状态机实现复杂设计。这种控制方式很容易解决0比特插入技术,使状态自由按照ISO3309的标准转换。根据HDLC的编码协议,得到FPGA设计的状态机,将状态的转换与数据处理分别在同一状态机的不同模块中实现。同时,在解码过程中,在起始标志位同步后,每一步HDLC状态过程均需对数据进行判断(若出错概率为P),直至结束。若有N个状态,其总体出错概率非常小,大小为PN,大大提高了解码的可靠性。发送器状态机如图2所示。准备状态:当发送器复位后,处于准备状态,收到开始发送信号后,状态机转至开始状态进行初始化,然后跳转至帧头状态。帧头状态:在该状态添加WTB固定的帧头和标志位,然后跳转至数据发送状态。数据发送状态:在该状态读取数据,按照帧结构将数据编码发出,直到全部发送完毕跳转至校验状态。校验状态:调用CRC校验单元模块,进行CRC检验。完成后进入结束状态。结束状态:发送结束标志,然后跳入下一次的准备状态。

3.2 CRC校验

HDLC数据编码是难点,数据位的不确定性进一步导致CRC校验的复杂性。但由于HDLC数据具有特殊含义:8位位组的整数倍,故可以采用以字节宽度读双口RAM的方式进行编码。CRC校验也可字节累加运算完成。校验模块示意图如图3所示。

校验序列按多项式:G(x)=x16+x12+x5+1进行计算,校验初始结果值应设为0xffff、图3中rst为复位信号,sig为事件触发电平,pdata为需要计算的数据,prevcrc为上一次计算的结果,crc最后输出的计算结果。Verilog核心代码为:

3.3 位同步

编码器发送有效帧序列,解码器对有效帧解析的最大难点在于起始的同步性。常用的同步方式有锁相环。但为了节省FPGA内部资源,针对WTB特有的帧头规则序列,采用高频采样比较方式进行同步。帧头在起始位和结束位“1”之间有7个(“0”,“1”)位对,如图4所示。在一个周期内,一位采样12次,若在位跳变的前后符合标准位,则同步开始,继续采样下一位,直到帧头位对全部完成,即使在空闲时,电平有干扰毛刺也不会产生误同步。

4 标准应用检验

通过使用Quartus II对WTB的编解码器的波形进行仿真,结果符合标准。

解码器在接收一个字节后进行CRC计算,当全部数据接收完成时计算出最后CRC结果;当全部CRC接收完毕接收到CRC结果,将这两种CRC结果进行比较。若数据合法则给一个脉冲。

如图5所示,硬件采用485实现物理层与标准机车WTB网卡的通讯,能够相互解析,证明了设计的准确可靠性,为下一步应用层的设计打下基础。

5 结束语

针对WTB网络标准提出了一种基于FPGA的HDLC协议编解码器设计方案,并利用Altera公司的CYCLONE II EP2C8实现。目前对该网络协议的实现仅限于初期阶段,只能实现基本链路的HDLC数据编解码。该系统的后续还需加入NIOS进行链路控制的优化和应用层的设计,如WTB总线的初运行。实践表明,该编解码器实现简单、使用灵活,资源占用合理,对进一步工作的展开有深远意义。

关键字:周期  电平  接收  发送 引用地址:WTB网络HDLC在FPGA中的实现

上一篇:基于脉动阵列的FIR滤波器设计
下一篇:基于FPGA的高速FIR数字滤波器的设计

推荐阅读最新更新时间:2024-05-02 20:38

iOS这个发送已读回执的Bug存在已久?
近日,用户一直有报告说,苹果的信息应用仍在发送已读回执,尽管这一设置已经被禁用。这不是一个新问题,但它是iOS中的一个反复出现的错误,导致即使在关闭该功能后也会出现已读回执。 在iOS开通该功能后,当收件人查看信息时,“已送达”的文本将变为“已读”。但当你禁用了“已读”回执时,问题就来了,其他人仍然可以看到你已经阅读了对话帖子中的消息。 根据Macworld的Glenn Fleishman的说法,这个iOS漏洞似乎再次显示出其影响。然而,这一次,更多的用户在iOS 15上面临这个问题。 在这一点上,只有重启设备等临时修复办法。苹果肯定需要在未来的iOS更新中解决这个问题。 另外,由于苹果的设置是在共享同一Apple
[手机便携]
iOS这个<font color='red'>发送</font>已读回执的Bug存在已久?
Q2 MPU聚焦:AMD状况好转市场占有率高于预期,英特尔份额微降但仍是主流
根据iSuppli公司的调查,跟原来的预期相比,AMD第二季度在微处理器市场的占有率的增长远远超过英特尔公司。据这家市场研究公司透露,AMD公司在第一季度占整个微处理器销售收入的13.4%,而第二季度增长了2.5%;相比之下,英特尔公司在第二季度遭遇了2%的销售收入占有率的下降,但就整体而言,英特尔仍然以78.8%的占有率独占鳌头。 iSuppli在7月时估计英特尔和AMD的增长都是0.5%,实际情况远远超过预期。AMD公司第二季度的增长结束了该公司销售下滑的周期。据iSuppli透露,AMD的市场占有率从2006年第三季度的16.8锐减为2007年第一季度的10.9%,缩小了近6%。 目前,在微处理器市场中的情况由严重的价格
[焦点新闻]
MSP430串口接收程序(使用中断)
使用接收中断,将接收到的字符再发送出去。每次接收到字符之后都会退出低功耗模式,从而在主函数中将接收到的字符再发送出去。 /********************************************** *程序描述:单片机的P3.4、P3.5作为串口接收字符,将接受到的字符再发送出去 *作者 :Zhenhua Liu *时间 :2017.11.02 18:00 ***********************************************/ #include msp430x14x.h void usartInit(void); //串口初始化 void main(v
[单片机]
STM32F407 周期唤醒功能
1.下图是STM32F407的中文参考手册中,RTC介绍部分。因为我想实现单片机每秒自动唤醒自己一次,开始打算用闹钟中断,但是每次唤醒以后都要自己设置下次唤醒的时间,简单的方法是秒+1,但是要考虑是不是59秒的情况,比较麻烦。所以就选择唤醒中断的方式。 2.时钟图分析: (1)通过寄存器RTC_CR WUCKSESEL 设置唤醒时钟,为了方式我选择的是10X(1HZ)。 标准库代码:RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits); (2)通过RTC_WUTR寄存器设置周期唤醒的时间 标准库代码:RTC_SetWakeUpCounter(X-1);/
[单片机]
STM32F407 <font color='red'>周期</font>唤醒功能
非接触通用供电平台多负载解谐控制方法研究
0 引 言 ICPT(Inductively Coupled Power Transfer)供电系统作为一种新型的非接触电能传输系统,以非接触的感应耦合方式可以实现各种功率水平的电能传输。由于其供电端与用电设备相互分离,不存在摩擦与磨损,避免了诸如滑动磨损、接触火花、碳积和导体不安全裸露等所带来的安全隐患,越来越受到一些易燃、易爆的化工、采矿等行业的青睐,也为新型非接触充电设备的设计提供了广阔的发展前景。目前已有电动汽车非接触充电、煤矿有轨运输车、个人剃须刀、人体医学植入等成功应用的报道,且大多集中在针对单个负载情况下系统的电路设计,原副边的补偿结构,系统的谐振频率与系统稳定等问题展开研究,本文以非接触通用供电平台为例研究多负
[工业控制]
非接触通用供<font color='red'>电平</font>台多负载解谐控制方法研究
STM32串口发送数据详解
串口的中断方式: /** * @brief Enables or disables the specified USART interrupts. * @param USARTx: where x can be 1 or 2 to select the USART peripheral. * @param USART_IT: specifies the USART interrupt sources to be enabled or disabled. * This parameter can be one of the following values: * @arg USART_IT_WU: Wake up interru
[单片机]
STM32串口<font color='red'>发送</font>数据详解
【STM32Cube_06】使用USART发送接收数据(查询模式)
1. 准备工作 硬件准备 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; 准备一个串口调试助手,这里我使用的是Serial Port Utility; 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC; 如果使用默认内部时钟(HSI),这一步可以略过; 这里我都使用外部时钟: 配置串口 小熊派开发板板载ST-Lin
[单片机]
【STM32Cube_06】使用USART<font color='red'>发送</font>和<font color='red'>接收</font>数据(查询模式)
GSM手机接收设计的关键技术
    摘要: 本文介绍GSM手机接机的设计技术。重点介绍LNA和VCO环路在整个接收机的作原理、设计方法和特性指标。在LNA部分,设计关键是灵敏度、动态范围和线性度之间的平衡设计思想;在VCO环路部分则强调了相位噪声对整机性能的影响和如何设计才能有效降低环路相位噪声。     关键词: LNA VCO GSM手机 以GSM为代表的无线电话近年来得到了广泛的应用。GSM 手机的设计也就成了热门话题。但是,目前国内设计水平还不高,很多厂家只是做国外公司的OEM。本文将结合一些已经批量生产的产品中的实例介绍如何设计GSM手机的接收机部分。     GSM的接收机包括天线、LNA、下变频、解调、解码和
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved