APP下载

基于FPGA 的MVBC 帧收发器设计

2010-08-16丁青锋朱其新幸柒荣魏耀南

华东交通大学学报 2010年6期
关键词:收发器曼彻斯特译码

丁青锋,朱其新,幸柒荣,魏耀南

(华东交通大学电气与电子工程学院,江西南昌330013)

基于分布式控制的MVB是IEC61375-1(1999)TCN(列车通信网络国际标准)的推荐方案,它与绞线式列车总线(WTB)构成的列车通信总线具有实时性强、可靠性高的特点[1]。而MVBC是实现MVB总线网络功能的关键器件,负责访问MVB总线并提供与微处理器的通信接口,实现数据传输[2]。

总线与MVBC之间数据通信在MVBC中由帧收发器来完成,包括编码/译码模块、CRC校验模块以及发送接收控制模块等。目前MVB的收发器采用专用芯片MVBC实现,但随着片上系统技术的发展,现代电子设计趋向高度集成化,因此类似的接口芯片大都已经被ASIC(application specific integrated circuit)的软核替代[3]。本设计中采用FPGA开发MVB的帧收发模块作为MVB控制器的一个软核。

1 MVBC简介

MVBC在数据链路层上处理帧的接收与发送,依靠物理层发送和接收具有电气特征的电信号;同时为网络层提供过程数据、消息数据的变量接口,该接口采用通讯存储器实现。图1为本项目设计的MVBC内部结构框图,由曼彻斯特编解码模块、发送/接收缓冲器、配置寄存器、通讯存储器(TM)以及主控制单元等部分组成。

图1 MVBC结构框图

MVBC通过物理层提供的双线冗余连接MVB,接收CPU的访问控制,从而实现MVB上获取和发送设备数据,同时通过访问监视数据实现对MVB的管理。

发送数据时,MCU将帧数据从TM读出并写到发送缓冲器中,再由编码器读出并完成编码校验等功能后发送到MVB总线上;接收时解码器完成对输入帧译码并检验其有效性,把数据存放到相应的通讯存储器中,从而完成接收数据的过程。另外,MVBC可根据配置实现总线主与总线从的功能,实现数据链路层以及一部分传输层的数据处理,并通过通讯存储器来与上层软件交互。

2 帧收发器的设计

MVBC中的帧收发器主要负责帧的发送、接收,包括曼彻斯特的编码、译码,CRC的产生与校验,不同类型帧的构建与识别,以及码错的识别和冲突的检测等。其中曼彻斯特编译码以及CRC校验为主要的算法。

2.1 曼彻斯特编码实现

曼彻斯特编码单元主要是完成主、从帧数据的编码,其结构如图2所示[9]。

图2 曼彻斯特编码原理图

由数据并串转换单元、CRC生成单元和帧分界符单元经多路选择器产生的串行数据与1.5 MHz的16分频时钟clk-l6div进行异或,然后在24 MHz的系统时钟clk的上升沿通过一个一阶寄存器后再将已编码的数据输出。虽然这样要比串行输入晚一个时钟周期,但却保证了输出信号的稳定。

曼彻斯特编码[4-5]是在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示“1”,从低到高跳变表示“0”。该码型具有丰富的定时信息、无直流分量等优点,特别适合于多路数据的快速切换。图3是使用QuartusII实现曼彻斯特编码波形。

图3 曼彻斯特编码仿真波形

因帧头、帧尾不是曼彻斯特编码,因此传统的曼彻斯特编译码器无法完成此项工作,需要采用结合收发器状态机具体状态进行编译码的设计方法来解决这一难题[3]。

2.2 曼彻斯特译码实现

对于译码模块来说,同步检测是关键。只有检测到同步信息,才开始译码周期。当曼彻斯特译码采用FPGA实现时,采用对沿的判断来实现:上升沿为0,下降沿为1。

前面已经说明,MVB链路层数据是以帧为基本单位,一帧数据分为帧头、数据和帧尾。帧分为主帧和从帧,帧头采用不同的编码,帧尾为0.75 BT+125 ns的低电平,而数据采用曼彻斯特编码。译码器检测线路起始位,判断帧头数据正确后,对其后的曼彻斯特数据进行译码,并将其转换为正常的逻辑数据,送给控制逻辑。

曼彻斯特编码输入后经过三级寄存器同步消除亚稳态。如果总线在空闲状态之后出现下降沿,则被认为帧的开始位,总线上再出现高电平时使能16位计数器计数。如果把曼彻斯特编码每个bit周期分为16个部分。则在数据采样1处得到的采样值即为曼彻斯特编码前的原数据,数据采样2处用来帧头帧尾检测;总线冲突检测的原则为总线上曼彻斯特编码的半个bit周期之内的电平应一致,前后半个周期电平应相异,否则被认为码错。

2.3 数据校验

在TCN协议中,对数据需要进行两种CRC校验和奇偶校验。在国际标准中,根据生成多项式g(x)的不同,CRC又可分为几种标准[3]。本文中7位CRC校验码的运算公式遵循IEC 60870-5 format class FT2的规定,按如下的生成多项式计算:g(x)=x7+x6+x5+x2+1,通过数据表达式支除生成多项式得到CRC校验码。CRC校验方式分为串行和并行两种,串行方式简单但是耗时较长,而并行方式算法复杂但只适合等长信息位校验。由于MVB中帧数据长度是不断变化的,但帧数据长度较短,因此本文采用串行方式。

CRC校验码生成电路采用线性反馈移位寄存器来实现,也就是通用的CRC串行算法实现电路。如图4所示。每一个D触发器保存一位码元数据[5-6]。

图4 CRC原理图

图4中,寄存器通过异或门连接,当有与门连接时取反;没有连接时直接将上一个寄存器输入到下一个寄存器。其中,“门”用来控制信息码的输入。门打开时信息码输入;当信息码元全部输入完毕时,门关闭,禁止任何码元输入,此时7个寄存器中所存放的7位码元就是得到的校验位。

其次,再对7位CRC校验码进行偶校验。根据偶校验原理,偶校验位a0计算公式如下:a0=a1⊕a2⊕a3⊕a4⊕a5⊕a6⊕a7。其中 a1,—a7为7位的CRC码。把a0附在CRC后面就是扩展所得的8位校验序列。

最后,所有8位数据取反得最终校验序列。

3 总线接口模块的设计实现

总线接口模块包括发送模块和接收模块

3.1 发送模块

发送模块主要在主控单元的控制下完成主、从帧数据的曼彻斯特编码,打包以及相应校验序列的产生和发送。发送模块由发送控制单元、帧分界符单元、数据并串转换单元、CRC生成单元、FIFO(first-in firstout)单元、多路选择器单元和曼彻斯特编码单元组成。整个模块是通过状态机完成,其内部结构图如图5所示[9]。

图5 发送模块结构图

发送模块中除上述CRC生成单元、曼彻斯特编码单元等之外,位控制模块是整个发送模块的核心,在系统复位或者前一帧发送完毕后将进入IDLE状态,等待发送使能信号;然后启动发送起始分界符;在发送完分界符后启动计数器开始发送数据,每发送16位数据,字计数变量word-counter加1;将校验序列生成单元计算出的校验序列发送到曼彻斯特编码单元;判断应发送的帧数据字数与变量word-counter的值是否相等,相等则进入终止分界符生成状态,否则继续发送数据,直到到发送完数据为止。本设计采用有限状态机的方式来实现发送控制单元,其状态之间的转换如图6所示[10]。

图6 发送控制单元状态转换图

其中HD-Jump,DATA-Jump,CS-Jump,ED-Jump四个状态为过渡状态,IDLE为空闲等待状态,HD-SEND,DATD-SEND,CS-SEND,ED-SEND四个状态分别为起始分界符、数据、CRC校验码以及结束分界符的发送状态。

3.2 接收模块

MVB总线采用冗余介质,因此MVBC需要冗余的接收模块来完成帧的接收。接收模块的功能主要有以下几个:完成对帧数据的其始位判定、数据采样、数据译码和数据移位功能;判断帧数据类型,从帧中提取数据并存入接收缓冲器中。接收模块设计电路如图7。

图7 接收模块结构图

在接收帧的同时,译码器将是否接到帧、何种帧类型、接收是否完成、结果对错等信息告诉线路控制模块,该模块将这些信息与接收缓冲器有效上报至上层模块进行报文分析。控制模块从接收状态来验证帧的属性:帧是否有效、帧类型、帧长度,并从读出的数据来验证数据的正确性[9]。其中接收控制单元是接收模块的核心,其实现采用有限状态机完成,其流程图如图8所示[10]。

图8 接收控制单元状态转换图

其中HD-REC,DATA-REC,CS-REC,ED-REC分别为起始分界符、校验位以及结束分界符的接收状态。

4 结束语

随着我国高速铁路的迅猛发展,TCN在动车组上已开始逐步得到应用,我国自行研制生产的CRH5的列车网络控制系统的网络架构就是采用了TCN标准。TCN网络的广泛应用也给了MVBC巨大的市场前景。本文主要介绍MVBC与MVB总线接口部分的帧收发器中各模块的算法分析、设计实现。通过对各模块进行的FPGA验证,充分论证了该设计方案的可行性。

[1]HUANG ZHIWU,ZHOU SHENG,CUI WEIHUA,et al.,Research and designof protocol analyzer for multifunction vehicle bus[C]//in Proceedings of the 7thWorld Congress on intelligent Control and Automaiton,2008:8358-8361.

[2]黄采伦,樊晓平,陈特放.列车故障在线诊断技术及应用[M].北京:国防工业出版社,2006:212-229.

[3]侯宁,丁荣军,王永翔,等.MVB网卡的帧收发器设计[J].机车电传动,2006(1):19-22.

[4]蔡颖,诸昌钤.MVB网络接口单元的FPGA实现[J].铁道机车车辆,2005,25(3):26-70.

[5]金素梅,王家礼.基于FPGA的CRC编码器的实现[J].现代电子技术,2005,(24):18-22.

[6]张树刚,张遂南,黄士坦.CRC校验码并行计算的FPGA实现[J].计算机技术与发展,2007(2):26-62.

[7]江文丹,董显,薛红岩,等.基于VHDL语言的多功能车辆总线编码器设计与分析[J].铁路通信信号工程技术,2008(10),9-12.

[8]付林,任志平,刘承杰.基于FPGA技术曼彻斯特编码器设计[J].现代电子技术,2007(17):55-59.

[9]幸柒荣.基于FPGA的MVB2类设备控制器设计[D].南昌:华东交通大学,2009.

[10]魏耀南.MVB四类设备网络接口设计及实现[D].南昌:华东交通大学,2010.

猜你喜欢

收发器曼彻斯特译码
基于校正搜索宽度的极化码译码算法研究
观电影《海边的曼彻斯特》
观电影《海边的曼彻斯特》
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
从霍尔的编码译码理论看弹幕的译码
LDPC 码改进高速译码算法
基于概率裁剪的球形译码算法
富士通半导体推出收发器家族全新LTE优化多频单芯片MB86L13A
ADI多点LVDS收发器提供最高ESD保护
光纤收发器常见故障原因