background image

FPGA 过来的 VME 总线转换成 CAN 总线格式,并传输到指定 CAN 节点;同时也将 CPLD
选通的

CAN 通道数据,转换为 FPGA 能识别的 VME 总线格式,并在 MCU 中断主机时,

将数据反馈给

VME 主机。

2 转换系统的软件设计

2.1 软件设计思路

FPGA 构建 8 个双口 RAM,8 路 CAN 控制器通过这 8 个双口 RAM 与上位 VME 总

线主机进行数据通信,

RAM 口分别映射到 VME 总线主机内存地址和 MCU 存储器空间中。

系统数据传输采用

MCU 中断主机(VME 主机)和主机中断 MCU 两种方式,前者通过触发主

机外部中断实现,由双口

RAM 里面的中断控制来决定的,在触发中断后,提示主机读取

CAN 控制器接收到的数据以及 CAN 控制器的工作状态。主机中断 MCU 方式是通过 MCU
的外部中断管脚实现的,是由主机写入双口

RAM 的控制字实现的。触发该中断后,MCU

就从主机接收要发送的报文,并发送到相应的

CAN 节点上,并配合主机配置 CAN 控制器

的控制模式。中断流程如图

4,图 5 所示。

2.2 FPGA 的软件

设计

在该系统中,数据

都由

VME 主机控制,

所以

FPGA 构造双口

RAM(或者 8 个区域即

),使 VME 主机和

MCU 在 RAM 中完成
数据传输。即主机要发
送的数据放入

RAM 中等待 MCU 提取,同时 MCU 发送的数据放入 RAM 中等待 VME 主机

提取。

2.3 CAN 节点软件设计

CAN 节点软件是本系统的重点,它包括 CAN 控制器初始化、报文发送和报文接收 3 个

部分。初始化主要完成设置工作方式、接收方式、屏蔽寄存器、验收代码寄存器、波特率和中断
寄存器,并且要在复位模式下进行初始化。初始化流程如图

6 所示。

报文发送就是将代

发的数据按照

CAN 总

线协议的数据格式,组
成一帧一帧的报文,送

SJA1000 的发送缓