共1条
1/1 1 跳转至页
用FPGA实现多功能车厢总线控制器
西南交通大学计算机与通信工程学院 蔡颖 诸昌钤
国腾微电子有限公司 王勇
摘 要:本文介绍了多功能车厢总线(MVB),分析了国外先进MVB网卡的通信机制与特点,在此基础上,提出了用FPGA技术实现该网卡的核心部分多功能车厢总线控制器(MVBC)的方法,并采用功能相关的模块分组验证方法,对MVBC进行了功能验证及时序验证。
关键词:MVB;网络接口单元;FPGA
前言
MVB为快速的过程控制总线,能提供较快的响应速度,适合用作车厢总线,对于固定编组的列车,MVB也可以用作列车总线。
同其它的几种通用的现场总线(LonWorks、WordFIP、CAN等)在列车上的应用相比,MVB在实时性、可靠性、可管理性、介质访问控制方法、寻址方式、通信服务种类等方面有着一定的优势。但由于MVB是专门针对列车通信网络而开发,其适用范围、供货商、经济性均不如其他几种通用现场总线。尤其是所有与MVB连接的设备都需要通过MVB网卡访问MVB,而国外公司对该网卡的核心-MVBC芯片的垄断,给国内机车推广使用MVB和开发MVB的其它应用带来了极大的阻力。如果能用通用的FPGA实现MVBC的功能,不仅会大大推动国内MVB的应用,而且对国内今后自行制订列车网络标准也是大有裨益。
图1 主动式MVB网卡硬件结构
图2 MVBC内部模块系统框图(虚线内部分)
通用的MVB网卡
根据MVB设备的类别和功能,可以分为被动式MVB网卡和主动式MVB网卡。被动式网卡具有过程数据传输功能,板卡上没有应用处理器,一般不作为总线管理器和进行消息数据通信。
主动式MVB网卡有板上应用处理器,适合TCN定义的全部5类设备,但一般用于3类及3类以上设备网络接口单元,实现过程数据和消息数据通信,并可作为总线管理器。其硬件结构框图如图1所示。
用FPGA实现
MVBC的设计方法
现有的MVB网卡上除了MVBC,其余都是通用器件,价格低廉且容易找到替代品。只有MVBC是专门为MVB总线设计,用于设备与总线通信。其内部包含编码/译码电路和控制通信存储器所需的逻辑电路,用来控制帧的发送和接收(如冲突检测、帧的前导比特处理、CRC校验位的处理等)、对输入帧译码并检验其有效性,以及把数据存放到相应的通信存储器中。考虑到布线的成功率,本文选用Xilinx公司的XC3S400来实现。
整体框架设计
该方案的整体结构框图如图2所示,各模块功能和工作方式如下。
编码、解码模块是GTMVBC与MVB总线的接口电路,解码模块接收曼切斯特编码信号,并通过检测观察线上的信号获取正确的编码。接收时,区分主帧和从帧,读取帧数据和8位的CRC并存放于接收缓冲区RXB中。且由内部的错误检测机制确保汉明距离为8。而编码模块把16位的数据通过曼切斯特编码转变为1.5Mb/s的串行数据流,并以主帧或从帧的形式发送出去;发送、接收缓冲模块存储要发送的帧和校验序列;主控模块(MCU)接收来自报文分析单元(TAU)的控制命令,完成主帧的获取、端口预处理、数据传输、端口后处理以及TAU的命令反馈等操作。TAU进行报文分析,对接收的各种错误的主、从帧进行处理,并通过准确的定时控制整个系统的主、从帧的发送、接收和各种超时处理。TM访问控制模块(TMC)主要接收来自MCU、CPU的各种端口TM的访问请求,实现链路层和网络层的通信。仲裁控制器解决MCU和CPU对TM的访问仲裁,决定TMC的访问模式和对地址逻辑的译码方式。地址逻辑单元受TMC控制,实现MCU对TM访问的地址解析、译码,以及实现CPU对TM、配置寄存器访问的地址编、译码。内部寄存器阵列实现MVBC对各个配置寄存器的位读写,及其CPU对每个寄存器的读写,同时还实现如中断逻辑等需自动状态更新的功能。中断逻辑是接收包括GTMVBC内部和外部中断源申请的32个中断,在中断屏蔽寄存器、中断申请待决寄存器、中断状态寄存器和中断判优逻辑的控制下形成相应的中断向量, 以供CPU进一步处理。端口监控机制模块提供对宿端口数据刷新频率的监控。向下兼容接口模块是为了支持简单的、低级的MVB总线设备的通信而专门设置的功能模块。时钟产生器产生芯片内部需要的各种频率的时钟信号。
子模块设计举例
TAU通过准确的定时控制整个MVBC的主、从帧的发送、接收和各种超时处理。
整个TAU工作状态可划分为三个主状态和8个中断。中断分别是:错误主帧(EMF)、错误从帧(ESF)、重复主帧(DMF)、重复从帧(DSF)、主帧完成(MFC)、从帧完成(SFC)、响应超时(RTI)和总线超时(BTI)。三个主状态由于发生事件不同,状态也有不同的转换,以从设备为例具体工作过程如下:
1. 等待主帧状态
设备初始化后或者在一个报文周期结束后处于等待主帧状态。
收到正确的主帧:产生MFC中断,通知MCU端口预处理,转为等待从帧状态。
收到错误的主帧:产生EMF中断,转为忽略从帧状态,此时不报告MCU。
收到正确的从帧:报告DSF中断,继续等待主帧。
收到错误的从帧:报告ESF和DSF中断,继续等待主帧。
超时等待:长时间没收到主帧,发生BTI中断,通知解码模块进行线切换,继续处于等待主帧的状态。
2. 等待从帧状态
当设备处于等待从帧状态时,首先等待端口预处理结果,预处理结束后,MCU处于将等待发送、接收或忽略本次操作的命令。
收到正确的主帧:产生MFC中断,通知MCU端口预处理,继续等待从帧状态。
收到错误的主帧:产生EMF中断,转为忽略从帧的状态,报告MCU取消当前操作。
收到正确的从帧:产生SFC中断,报告MCU处理从帧,TAU转换为等待主帧的状态。
收到错误的从帧:产生ESF中断,报告MCU取消当前操作,TAU转为等待主帧的状态。
等待超时:产生RTI中断,转为等待主帧状态,并报告MCU取消当前操作。
3. 忽略从帧状态
在设备处于忽略从帧状态时,MCU已取消当前操作。
收到正确的主帧:发生DMF中断,通知MCU进行端口预处理,转为等待从帧状态。
收到错误的主帧:产生EMF中断,继续处于忽略从帧状态,不向MCU报告。
收到正确的从帧:发生SFC中断,转为等待主帧状态。不向MCU报告。
收到错误的从帧:发生ESF中断,转为等待主帧状态。不向MCU报告。
等待超时:转为等待主帧的状态。不向MCU报告。
验证与分析
MVBC系统功能复杂,本文将所有代码按照功能相关的原则分成4个部分,在工作站上用VCS进行仿真验证,分组验证如下。
1. 编码译码验证:验证基本编解码功能、报错和线切换功能。
2. 总线接口验证:验证主、从设备功能。
3. 存储器管理验证:验证地址逻辑、CPU与MVBC的访问、仲裁逻辑和宿时间管理。
4. MVBC系统功能验证:验证Fcode 0、4、8、12、15的主设备功能以及9、13、14的事件轮询读取主帧表、单双端口处理、数据存储,以及消息队列处理等MVBC各主要功能。同时还验证TM中为每种Fcode配置32字的主帧表以及物理端口数据内容,并验证MCU向TMC发出的内部指令顺序。
结语
本文用FPGA实现的MVBC与专用芯片MVBC01具有几乎一样的功能和特点,采用16位数据总线,通讯存储器的寻址空间最大可为1MB,支持逻辑和设备寻址报文端口最大可为4096个。内嵌完整的MVB1类设备协议,可实现多达32个主帧的自动精确定时发送。另外,MVBC还提供2个通用定时器、基于矢量的智能中断逻辑以及宿端口通讯超时监视、消息队列的自动处理、设备地址可编程等功能。但由于使用的是通用FPGA器件,所以不能集成如MVBC02那样的电平转化和隔离的功能,需要外加耦合变压器或转换芯片。
关键词: 实现 多功能 车厢 总线 控制器 网卡 功能 模块
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |