掌桥专利:专业的专利平台
掌桥专利
首页

基于ARM和FPGA的高速缓冲型CAN总线通信系统及方法

文献发布时间:2023-06-19 19:28:50


基于ARM和FPGA的高速缓冲型CAN总线通信系统及方法

技术领域

本发明属于CAN总线通信领域,涉及一种基于ARM和FPGA的高速缓冲型CAN总线通信系统及方法,解决在大数据量传输过程中,CAN总线会出现传输时间过长、效率低,甚至产生丢失数据的现象,而针对性的提出双缓冲CAN总线通信的方法。

背景技术

CAN总线技术具有报文自动滤波重发、极低的误码率和高通信率等特点在工业、军事领域中广泛应用。当前基于PCIe接口的CAN总线接口卡存在数据吞吐率偏低,在需要突发传输大量数据的情况下,出现传输时间过长、甚至丢失数据的问题。在某型侦察车中,各种装备均通过CAN总线连接,CAN总线通信的负载率和发送帧数据量均较大,因此需要实现高速大数据量CAN总线通信设计。

为了保障装备的顺利研发和生产,保障装备的信息安全、自主可控,装备的国产化势在必行。并且由于高新技术制裁、国外芯片产能萎缩等因素影响,使用国外芯片进行设计已经不合时宜,现有装备或新研装备需进行国产化改造或重新设计,从而达到不被卡脖子的目的。

发明内容

要解决的技术问题

为了避免现有技术的不足之处,本发明提出一种基于ARM和FPGA的高速缓冲型CAN总线通信系统及方法,所有元器件均采用国产芯片进行设计,结合常见的方案进行优化和提升,解决装备国产化和在突发传输大量数据的情况下数据传输稳定性、可靠性的问题。硬件设计为PCIe装双通道CAN总线的通信板卡。板卡安装在国产化机箱通,通过PCIe接口与计算机进行数据交互。

技术方案

一种基于ARM和FPGA的高速缓冲型CAN总线通信系统,其特征在于:包括PCIe总线转并行局部总线芯片、可编程门阵列芯片FPGA和两个基于Cortex-M3架构的ARM处理器;FPGA中建立双端口RAM与两个ARM处理器连接,一个端口与ARM-1的PSMC总线端口连接,传输地址总线和MEM数据,另一个端口与ARM-2的PSMC总线端口连接,传输地址总线和MEM数据;FPGA与PCIe桥片之间连接端口为地址总线、MEM数据和I/O数据线,与两个ARM处理器连接端口还有I/O数据线;两个ARM处理器分别连接两个CAN收发模块;所述FPGA中建立四个DPRAM,其中DPRAM-1分配给上位机写,DPRAM-2分配给上位机读,DPRAM-3分配给下位机写,DPRAM-4分配给下位机读。

一种采用所述基于ARM和FPGA的高速缓冲型CAN总线通信系统的通信方法,其特征在于:在两个ARM芯片中建立2个环形缓冲队列Queue-Tx1、Queue-Tx2和Queue-Rx1、Queue-Rx2;Queue-Tx1和Queue-Rx1作为与FPGA芯片交换数据缓冲,Queue-Tx2和Queue-Rx2作为CAN总线收发数据的缓冲;通信步骤如下:

当上位机发送数据时,数据依次从FPGA双端口RAM发送至ARM芯片的一级缓冲Queue-Tx1和二级缓冲Queue-Tx2,CAN控制器从二级缓冲Queue-Tx2中按帧将数据取出发送至CAN总线;

当CAN总线收到数据时,判断数据的合法性后将数据依次通过ARM的二级缓冲Queue-Rx2、一级缓冲Queue-Tx1输入FPGA双端口RAM中,上位机通过DMA方式从双端口RAM中将数据读取至CPU内存单元进行处理。

所述上位机发送数据的过程:1)上位机通过DMA方式将需要发送的数据写入DPRAM-1,FPGA以外部中断方式通知ARM读取数据;2)ARM接收到中断信号后,通过FSMC总线将数据暂存至一级缓冲Queue-Tx1,在主处理进程时,ARM在每次循环中检查一级缓冲Queue-Tx1中是否还有未读取的数据,如果有将数据从一级缓冲Queue-Tx1中将数据转存至二级缓冲Queue-Tx2中,并在空闲时间从二级缓冲Queue-Tx2按帧取出数据,调用CAN总线控制器将数据依次发送至CAN总线上。

所述上位机接收数据的过程:1)当CAN总线有数据到来,通过CAN中断将数据存储至二级缓冲Queue-Rx2中,在程序中设置5ms定时器,当5ms定时到来,将二级缓冲Queue-Rx2中的缓冲数据转存至一级缓冲Queue-Rx1中,并通过I/O产生中断信号发送FPGA;2)FPGA接收到中断信号后,通过FSMC总线将Queue-Rx1中的数据转存至DPRAM-2中,同时产生PCIe中断通知上位机读取。

有益效果

本发明提出的一种基于ARM和FPGA的高速缓冲型CAN总线通信系统及方法,使用两级缓冲队列实现的高速CAN总线通信的方法,在CAN总线数据处理中,将计算机发送的数据和CAN总线接收的数据通过FPGA中的双端口RAM存储、ARM中的双缓冲队列进行缓存,在ARM空闲时间处理的流程,极大的提高了CAN总线在大数据量发送的情况下丢失数据的情况。

经过试验验证,使用相同硬件ARM芯片,在软件中不做任何缓冲处理,通过硬件内部缓冲单元进行数据缓存的方式,当计算机单次发送100帧数据时,CAN总线设备仅能接收到17帧数据,剩下的83帧数据丢失。

本发明由于采用了双缓冲队列的方法处理大数据量CAN总线传输,将计算机CAN总线的数据接收能力和数据收发能力大大提高,数据发送能力达到11000帧/秒;数据接收能力达到14000帧/秒,数据发送和接收能明显提高,单次发送10000帧不丢失数据,达到用户缓存100帧的要求。本板卡和相似设备的对比如表1所示。

表1本发明与相似设备参数对比

附图说明

图1:本发明原理框图

具体实施方式

现结合实施例、附图对本发明作进一步描述:

本发明的核心思想为:

本发明采用的主要处理芯片是CH368(PCIe总线转并行局部总线)、FMK50T4(FPGA现场可编程门阵列芯片)、GD32F103VET6(基于Cortex-M3架构ARM处理器芯片)和外围接口芯片等。

在FPGA中建立双端口RAM,在ARM中建立两级环形缓冲队列,当上位机发送数据时,数据依次存储在双端口RAM、ARM一级缓冲、ARM二级缓冲中,最终CAN控制器从二级缓冲中按帧将数据取出发送至CAN总线;当CAN总线收到数据时,判断数据的合法性后将数据依次存储在ARM二级缓冲、ARM一级缓冲、双端口RAM中,上位机通过DMA方式从双端口RAM中将数据读取至CPU内存单元进行处理。

CAN总线通信框图见附图。

本发明所述方法包含以下步骤:

双通道的通信方法一致,因此以下按照单路通信的方法进行介绍。

[1]在FPGA中建立2个独立的双端口RAM块存储空间,双端口RAM(DPRAM)空间设置为读写带宽均为32位,深度为8KB。其中1个RAM块分配给上位机写,定义为DPRAM-1;另外1个RAM块分配给上位机读,定义为DPRAM-2。

[2]在ARM芯片中建立4个环形缓冲队列Queue-Tx1、Queue-Tx2和Queue-Rx1、Queue-Rx2。其中Queue-Tx1、Queue-Tx2为上位机发送数据缓冲;Queue-Rx1、Queue-Rx2为上位机接收数据缓冲。Queue-Tx1和Queue-Rx1作为与FPGA芯片交换数据缓冲,Queue-Tx2和Queue-Rx2作为CAN总线收发数据的缓冲。

[3]上位机发送数据的过程:上位机软件通过DMA方式将需要发送的数据写入DPRAM-1,FPGA使用外部中断方式通知ARM读取数据,ARM接收到中断后,通过FSMC总线将数据暂存至Queue-Tx1,ARM在主处理进程中在每次循环中检查Queue-Tx1中是否还有未读取的数据,如果有将数据从Queue-Tx1中将数据转存至Queue-Tx2中,并在空闲时间从Queue-Tx2按帧取出数据,调用CAN总线控制器将数据依次发送至CAN总线上。

[4]上位机接收数据的过程:CAN总线有数据到来,通过CAN中断将数据存储至Queue-Rx2中,在程序中设置5ms定时器,当5ms定时到来,将Queue-Rx2中的缓冲数据转存至Queue-Rx1中,并通过I/O产生中断信号,FPGA接收到中断信号后,通过FSMC总线将Queue-Rx1中的数据转存至DPRAM-2中,同时产生PCIe中断通知上位机读取。

相关技术
  • 基于EMIF总线的DSP与FPGA高速通信系统及方法
  • 基于EMIF总线的DSP与FPGA高速通信系统及方法
技术分类

06120115927440