以太网与CAN总线通信的FPGA设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以太网与CAN总线通信的FPGA设计与实现
作者:***
来源:《计算机时代》2022年第07期
摘要:提出一種以太网与CAN总线通信的FPGA设计。

以FPGA作为时序主控芯片,根据CAN总线数据交互格式,编写底层代码实现对CAN总线数据的收发;根据以太网UDP (User Data Protocol)通信协议,实现网口的双向通讯。

为了保证总线间通信的正确性,对数据流进行双向测试,结果表明,CAN总线与以太网之间的通信正确,数据传输无误。

关键词:以太网; FPGA; CAN总线; UDP; 数据转换
中图分类号:TP31 文献标识码:A 文章编号:1006-8228(2022)07-44-04
FPGA design and implementation of communication
between Ethernet and CAN bus
Pan Zhongying
(Department of Computer Engineering, Shanxi engineering vocational college, Taiyuan,Shanxi 044000, China)
Abstract: In order to realize the requirement of different bus protocol communication between equipments, an FPGA design of Ethernet and CAN bus communication is proposed. Using FPGA as the time sequence main control chip, and according to the CAN bus data interactive format, the bottom code is written to transmit and receive the CAN bus data. The two-way communication of the network interface is realized according to the Ethernet UDP (User Data Protocol) communication protocol. For the correctness of the communication between different buses, the data flow is tested in both directions. The test results show that the communication between CAN bus and Ethernet is correct, and so is the data transmission.
Key words: Ethernet; FPGA; CAN bus; UDP; data conversion
0 引言
工业智能化推进过程中,在采集不同设备的数据进行传输时,为了提高传输速率、降低功耗,需选定合适的总线进行信息交互。

不同的总线进行信息交互时,由于数据传输格式存在较大的差异,无法直接通讯,因此需要对传输数据进行格式转化[1]。

综控机与其他设备互联时,一般采用计算机上特定有限的接口作为通讯方式,CAN口通讯简单、纠错力度大、抗干扰能力强[2]。

当设备连接复杂度程度较高时,综控机需要扩展性更高的接口来实现通讯。

以太网传输速率快,能够解决通讯节点增加导致的速率及功耗问题[3]。

目前对于CAN总线与以太网之间的通讯设计,一般采用ARM芯片作为CPU进行软件设计。

但考虑到FPGA芯片具有开发周期短,编程灵活且成本低的特点,系统选用FPGA芯片作为时序控制核心,实现各个总线的底层协议以及不同协议之间的数据转换交互。

1 系统总体设计
以太网与CAN总线信息交互的总体设计框图如图1所示。

系统采用复旦微电子生产的国产FPGA芯片作为逻辑控制核心,型号为FMK50。

软件设计由以太网收发模块、CAN收发模块、数据转换模块等构成。

系统上电后,由综控机通过网口发送数据包给FPGA,FPGA通过以太网控制模块不断查询线上是否有新的数据,为匹配数据传输速率,采用缓存模块对接收到的以太网数据报文进行暂存。

FPGA采用数据转换模块对UDP报文进行数据提取,并按照CAN总线通讯协议对数据重新进行打包封装,发送给CAN 控制器模块实现数据的发送。

为验证设计的正确性,对数据的双向传输均进行测试。

通过比较发送端与接收端的数据及数据长度,表明数据双向传输均正确。

2 系统硬件设计
2.1 以太网模块设计
系统采用以太网物理层芯片RTL8211EG进行网口数据的收发,该芯片传输数据的速率最快可达到1000Mb/s。

FPGA与该芯片在硬件上通过专用接口GMII进行连接,具体硬件电路图如图2所示。

从图2中可以看出,当FPGA发送数据给RTL8211EG芯片时,FPGA作为主设备,依照时序手册提供数据TXD和时钟GTXC给从设备RTL8211EG。

软件设计上FPGA主频为50MHz,通过时钟管理模块DCM倍频出125MHz作为GTXC,数据传输时按照时钟节拍对数据字节进行采样[4]。

2.2 CAN模块电路设计
系统采用CAN控制器SJA1000,配合独立CAN收发器实现CAN总线通讯。

FPGA输入8MHz的时钟到CAN控制器芯片的XTAL引脚,与内部振荡电路相连。

由于CAN总线由差分电平CANH和CANL组成[5],CAN控制器输出的数据不能直接与之通信,因此需要CAN收发器来对数据进行电平转换,实现数据正常稳定的传输。

由于FPGA与CAN控制器芯片的工作电压不同,两者在进行通讯时需要进行电压的匹配[6]。

CAN模块电路设计图如图3所示,图中CAN控制器芯片的RX1引脚与CAN收发器的Vref引脚互连,降低数据在CAN控制器与CAN收发器之间的传输延时。

3 系统软件设计
软件方案设计上以国产FPGA芯片FMK50作为控制芯片,并在开发环境Vivado和Procise中对软件进一步开发。

3.1 CAN模块软件设计
3.1.1 CAN初始化模块设计
FPGA与CAN控制器进行信息交互前,需要对其芯片内部的相关寄存器进行配置,由于FPGA对CAN控制器的配置只能在复位模式下进行,因此系统上电后,软件设计上自动运行CAN初始化模块,完成对CAN控制器的寄存器配置后退出复位模式,进入正常工作模式后即可执行读写操作。

该模块初始化流程如图4所示。

3.1.2 CAN接收模块设计
CAN模块上电完成初始化后,可根据外部中断标志的沿触发的方式来读取CAN控制器存中缓器内的数据。

FPAG主要通过8路数据/地址线AD0-AD7、地址使能线ALE、片选信号
/CS、读使能信号/RD、写使能信号/WR来读取CAN控制器中接收缓冲器内的13个字节数据,FPGA读周期时序图如图5所示。

3.2 以太网模块软件设计
上位机通过网口发送数据至物理层芯片RTL8211,FPGA内的以太网控制模块通过GMII 总线和该芯片进行信息交互,信息传输格式遵循UDP协议,具体通信图如图6所示。

以太网模块主要由四部分结构组成,包括负责读取物理层芯片内接收FIFO中数据的接收单元、发送数据至物理层芯片发送FIFO的发送单元、为匹配数据传输速率而进行数据缓存的缓存单元以及对报文中的数据进行校验的CRC校验单元。

3.3 UDP数据传输协议
UDP协议作为网口通讯最常用的协议之一,建立通讯方式简单、传输过程可靠。

UDP发送的数据报中包含通讯双方的端口号,因此数据传输在总线上可依据指定MAC地址实现正确接收与发送。

同时该协议包含CRC校验,若传输过程中数据受其他因素影响发生错误,通过CRC模块验证,错误信息可被检测出并丢弃该包数据。

UDP数据包共分为两部分,为数据包头部和数据。

其中,数据包头部分由通讯双方MAC地址、数据报长度以及校验和构成。

UDP 报文的主要部分如图7所示。

4 系统测试与验证
4.1 CAN模块仿真
CAN控制器SJA1000与FPGA通过8通道并行数据/地址线AD0-AD7进行交互,当地址使能信号ALS有效时,总线上输出的数据表示地址;当写使能线/WR的电平为低时,总线上的信息为数据。

为验证CAN模块软件设计的正确性,编写测试模块,对收发模块中的逻辑设计进行相应的仿真测试。

当CAN接收模块检测到外部中断信号的下降沿时,按照读时序读取SJA1000中的接收缓冲器的13个字节,接收完后需要释放接收缓冲器以临时清除中断位,否则将不会响应后续中断信号。

接收模块的软件仿真如图8所示。

4.2 以太网通信测试
为验证以太网模块的正确通信,采用chipscope对以太网模块数据传输进行在线监测,如图9所示,以太网发送模块对输出数据进行封装,发送数据时首先发送7个字节的前导码
0x55以及1个字节的帧开始符 0xD5、然后6字节目的 MAC 地址28-D2-44-DC-6E-FE、6个字节源 MAC 地址00-0A-35-01-FE-C0以及2字节IP包类型,然后发送数据报及校验和。

上位机利用网口数据抓取工具Wireshark对线上数据进行实时监测,通过该方法可验证上位机与设备通讯连接正确,且通过观察数据验证收发地址及收发个数均正确。

从图10中可以看出,Wireshark识别到源MAC地址为00-0a-35-01-fe-c0。

4.3 CAN模块数据与以太网数据通信测试
为验证CAN模块与以太网模块之间的正确通信,通过双向发送不同字节长度的数据,上位机完成数据的存储,通过对比数据长度来作为本次测试的依据。

软件设计中CAN总线传输速率为800Kbps,当以太网传输波特率设置为10Mbps时,CAN总线上的数据总能被以太网收到并发送。

为匹配两模块的传输速率,不出现丢包的现象,以太网发送数据频率同样采用800Kbps进行数据通信。

如表1所示,分别为CAN模块收发的数据长度以及以太网模块收发的数据长度对比,由表可知两模块之间可以实现正确通信。

5 结束语
系统利用FPGA强大的可编程能力,通过对CAN总线以及UDP数据格式的拆解、提取、封装实现CAN总线与以太网之间的通信。

由于两类总线应用领域的不同,且数据传输速率存在较大差距,为实现两者之间的正确通信,需对数据传输速率进行匹配。

通过实际测试,降低以太网数据传输频率可达到正常通信,且不发生丢包现象。

采用FPGA芯片使得产品开发周期缩短,并能高效的实现总线间通信。

系统满足设计需求,对不同总线间通信具有一定参考意义。

参考文献(References):
[1] 史宁波,王琴,朱玲.基于CAN-Ethernet网关的人机通信技術研究及实现[J].电工技术,2017(6):67-68
[2] 黄梅.CAN-Ethernet总线通信协议转换器的研究[J].信息技术,2013(6):183-185
[3] 屈召贵,鲁顺昌.以太网通信在嵌入式系统中的应用研究[J].黑龙江科技信息,2015(28):160-161
[4] 沈立胜,潘盛贵,王文华.现场总线和以太网通信技术在电网自动化系统中的应用及对比分析[J].科技广场,2015(1):122-125
[5] 邵玉华.基于SJA1000的CAN总线通信系统的设计[J].铁道通信信号,2010(3):56-58
[6] 林强,阳宪惠,徐用懋.现场总线及其网络集成[J].测控技术,1999(5):24-26。

相关文档
最新文档