java怎么拦截某个对象
363
2022-11-06
基于车电的RapidIO接口FlexRay接口和CAN接口设计
1 概述
本文提出的车电总线接口单元综合考虑用户的具体需求,保留CAN总线作为卫星导航设备接口总线,其余接口总线采用高速的FlexRay总线,既兼容较低速接口的通信速率要求,又满足高速总线接口的需要,将CAN和FlexRay总线结合在一起,基于FPGA,使成本与效益最大化。
2 车电总线架构
2.1 CAN技术
控制器局部网(ControllerAreaNetwork,CAN)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。CAN的应用范围遍及从高速网络到低成本的多线路网络。
(1) CAN的分层结构
CAN遵从OSI模型,按照OSI基准模型,CAN结构划分为2层:数据链路层和物理层,如图1所示。
图1 CAN分层结构
按照IEEE802.2和802.3标准,数据链路层又划分为逻辑链路控制和媒体访问控制;物理层又划分为物理信令、物理媒体附属装置和媒体相关接口。其中,逻辑链路控制子层为数据传递和远程数据请求提供服务;访问媒体控制子层的功能主要是传送规则,即控制帧结构、执行仲裁、错误检验、出错标定和故障界定。
(2) CAN总线的主要特点
CAN为多主工作方式,网络上的任意节点在任意时刻都可以主动地向其他节点发送信息,不分主从,方式灵活。其采用非破坏性的总线仲裁技术,可以进行点对点、一点对多点和全域广播方式传递信息,多点同时发送信息时,按优先级顺序通信,节省总线冲突仲裁时间,避免网络瘫痪。报文传送采用短帧数据结构,传输时间短,抗干扰能力强,检错效果好。网络节点在错误严重的情况下可以自动关闭输出功能,脱离网络,实现了标准化、规范化。
2.2 FlexRay技术
(1) FlexRay分层结构
FlexRay的分层结构由物理层、传输层、表示层及应用层组成。物理层定义了信号的实际传输方式,包括在时域上检测通信控制器故障的功能;传输层是FlexRay协议的核心,它的功能是从表示层获得节点要发送的信息和把网络上接收的信息传送给表示层;表示层完成信息过滤、信息状态处理以及通道控制器与主机的接口;应用层由应用系统定义。
(2) FlexRay节点结构
图2 FlexRay节点结构
(3) FlexRay网络拓扑结构
FlexRay的网络拓扑结构主要分为3种:总线式,星型,总线星型混合型。在星型结构中还存在级联方式。通常,FlexRay节点可以支持2个信道,在双信道系统中,不是所有节点都必须与2个信道连接。与总线结构相比,星状结构的优势在于:它在接收器和发送器之间提供点到点连接。该优势在高传输速率和长传输线路中尤为明显。另一个重要优势是错误分离功能。双通道备用星型结构如图3所示。
图3 FlexRay网络拓扑结构
(4) FlexRay状态
FlexRay的节点有6个基本的运行状态:
1)配置状态(默认配置/配置):用于各种初始化设置,包括通信周期和数据速率。
2)就绪状态:用于进行内部的通信设置。
5)正常状态(主动/被动):可以进行通信的状态。
6)中断状态:表明通信中断。
FlexRay状态图如图4所示。
图4 FlexRay状态
3 车电总线接口单元设计
3.1 总线接口单元组成
图5 系统总体架构
图6 总线接口单元功能组成框图
3.2 车电总线接口设计
3.2.1 CAN总线接口设计
单元模块通过FPGA输出四路GPIO信号,GPIO连接电压转换芯片以完成电平转换,CAN总线信号完成电平转换后连接CAN芯片,从而输出CAN总线信号与总线接口单元VPX接插件相连,如图7所示。
图7 CAN总线接口硬件组成原理
当接收CAN帧时,处理器驱动在内存定义一个上图结构体,并将内存地址使用Rapid IO中NWRITE-R事务,写入FPGA控制器CAN接收缓冲区地址;当CAN控制器接收完一帧后,通过NWRITE-R事务写入对该处理器地址空间中并产生中断,告知发送结果。图8是内存数据结构。
图8 CAN内存数据结构
3.2.2 FlexRay总线接口设计
单元模块通过FPGA输出两路GPIO信号,GPIO连接电压转换芯片以完成电平转换,FlexRay总线信号完成电平转换后各输出两路连接FlexRay收发器。由于该XILINX核中只支持FlexRay单信道,因此选择两路FlexRay信道形成冗余设计,2组信道都分为A、B2个通道,满足FlexRay双信道的要求。收发器选用TJA1080,TJA1080收发器是恩智浦公司出品的一款针对FlexRay的具有高速时间触发通讯系统的收发芯片,也是全球第一款符合FlexRay协议2.1规定的FlexRay收发器,具有高达10Mb/s的数据传输速度。每路信号分别通过JTA1080后,最终输出四路FlexRay信号,并与总线接口单元VPX接插件相连。详细结构如图9所示。
图9 FlexRay总线接口硬件组成原理
图10 FlexRay内存数据结构
3.3 FPGA逻辑设计
本文设计通过硬件实现CAN总线控制器、FlexRay总线控制器、RapidIO总线接口等模块功能。采用Virtex6系列FPGAXC6VLX75T完成RapidIO-FlexRay、RapidIO-CAN协议转换功能。
FPGA单元包含SRIO控制器、microblaze软核及四路CAN控制器和两路FlexRay控制器。处理器将信号发送至PCIe-SRIO转接桥,经过桥芯片转换发送至SRIO交换板。交换板的一端将信号转发到SRIO控制器上,SRIO核通过PLB总线将控制信号发送至microblaze软核,经过处理信号通过PLB总线发送至四路CAN控制器和两路FlexRay控制器。每路CAN控制器均连接CAN转换器ADM3053,每路FlexRay控制器均连接FlexRay收发器JTA1080。经过转换器最终分别连接至CAN总线和FlexRay总线上。该逻辑设计的主要特点有3个:
(1)SRIO-PLB桥实现了总线接口单元模块的srio总线接入功能。
(2)CAN和FlexRay总线控制器通过板载收发器实现了CAN、FlexRay总线的接入功能。
(3)microblaze软核实现了CAN、FlexRay控制器消息和事件的预处理,完成了与SRIO总线的互连,并做了任务迁移,减轻了主控处理器的压力。
详细逻辑结构如图11所示。
图11 FPGA模块内部逻辑结构
4 仿真与验证
4.1 RapidIO仿真与验证
在Xilinx的ISE14.1开发环境下,基于车电总线接口单元模块对RapidIO接口进行了验证,利用ModelSim对逻辑设计进行仿真,其波形图如图12、图13所示,通过判断数据的一致性可以验证RapidIO总线接口的正确性和有效性。
图12 RapidIO数据发送时序图
图13 RapidIO数据接收时序图
4.2 FlexRay仿真与验证
基于车电总线接口单元模块对FlexRay接口状态机制进行了验证,利用ModelSim对逻辑设计进行仿真,其波形图如图14所示。
图14 FlexRay数据收发时序图
从仿真波形中可以清楚地看出FlexRay状态机制的变化过程。当节点的收发器接收到唤醒特征符后,对主机处理器和通信控制器进行上电,唤醒并激活通信控制器、总线驱动器和总线监控器。节点0被唤醒后,将返回唤醒完成信号,并处于等待启动状态。接着节点1收到唤醒信号,返回唤醒完成信号,节点1进入启动状态,节点0也进入启动状态,最终都进入主动工作状态,开始状态机循环,显示FlexRay总线接口工作正常。
4.3 CAN仿真与验证
调用FPGA内的CAN核基于车电总线接口单元模块对FlexRay接口状态机制进行验证,利用ModelSim对逻辑设计进行仿真,结果如图15所示。端口1发送扩展帧信号,端口0接收,当接收ACK信号时,端口1也接收ACK信号,完成整个扩展帧的收发过程。
图15 CAN数据收发时序图
图15说明了总线接口单元模块RapidIO接口、FlexRay接口和CAN接口完成仿真测试,工作正常,完成了RapidIO-FlexRay、RapidIO-CAN的协议转换功能。
5 结束语
目前,笔者所在团队已成功完成核心处理机系统正样样机的整体测试及验证工作。本文设计在该系统中已经通过功能性测试,基于RapidIO的CAN总线控制器在1Mb/s的最大波特率下工作正常,满足各项功能指标,基于RapidIO的FlexRay总线控制器在10Mb/s的最大波特率下也满足各项功能指标。下一步的工作将通过专业的CAN、FlexRay网络测试仪器对本文设计进行更全面的性能测试,同时将着重解决FlexRay总线接口的信道冗余问题,通过对FlexRay控制器IP核的升级,使之支持双信道通信,从而满足FlexRay真正意义上的双信道冗余要求。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~