FPGA-CAN MAC 层 IP 核测试(一) 上板实测
FPGA CAN MAC 层 IP 核测试(一) 上板实测 - 所长 - 博客园
FPGA CAN MAC 层 IP 核测试(二) 源码阅读 - 所长 - 博客园
开源代码1:
WangXuan95/FPGA-CAN: An FPGA-based lightweight CAN bus controller. 基于FPGA的轻量级CAN总线控制器。
开源代码2:
Logic-Design-Services/CTU-CAN-FD: CAN FD IP Core in VHDL
开源代码3: SJA1000 (Philips) compatible interface.
Overview :: CAN Protocol Controller :: OpenCores
测试环境 A3P250 开发板 , 下载 WangXuan95/FPGA-CAN: An FPGA-based lightweight CAN bus controller. 基于FPGA的轻量级CAN总线控制器。 进行测试, 该 IP 核 目前只能发送4个字节!
FPGA CAN 发送,CAN上位机接收测试
fpga_top 层 增加 复位信号和50mhz 时钟 和 LED 1S 闪灯模块, 编译 , 绑定引脚, 修订:修改 一句代码,can_top.v 中 , ASIZE 10改成1 ; 否则 RAM 占用 100%


测试结果: USB-CAN 可以接收, ID 0x456 数据 递增的 4个字节, 不知能否改成8个字节

逻辑分析仪抓取: CAN-TX 信号, 在 CAN-RX 引脚上能看到CAN-TX引脚发送的信号,两者差120ns,是因为 CAN 收发器,会将总线上的信号 通过 CAN-RX引脚 返回给 CAN MAC层, 用于 MAC层判断总线是否抢占!
CAN-RX 引脚上 在最后多了 一个 ACK 信号; 是 CAN 总线上,接收到 这帧报文 都会产生 ACK 信号, 用于 发送者确认 自己发出的信息有人收到了, 用于确保总线状态是否正常!

上位机发送,FPGA接收测试
USB-CAN 发送 ID= 0x123 (其他ID 没有用,代码有匹配ID功能), 数据 33 02 03 04 05 06 07 08 共计8个字节
A3P250 开发板 串口 收到 1个字节, 是 CAN发送 的 第一个字节 0x33

资源占用情况: 修改 一句代码,can_top.v 中 , ASIZE 10改成1 ; 否则 RAM 占用 100%
There were 0 error(s) and 0 warning(s).
=====================================================================
Compile report:
===============
CORE Used: 1755 Total: 6144 (28.56%)
IO (W/ clocks) Used: 5 Total: 68 (7.35%)
Differential IO Used: 0 Total: 13 (0.00%)
GLOBAL (Chip+Quadrant) Used: 6 Total: 18 (33.33%)
PLL Used: 1 Total: 1 (100.00%)
RAM/FIFO Used: 2 Total: 8 (25.00%)
Low Static ICC Used: 0 Total: 1 (0.00%)
FlashROM Used: 0 Total: 1 (0.00%)
User JTAG Used: 0 Total: 1 (0.00%)
问题一: CAN 上位机 发送了 8个字节, 串口只打印了第一个字节,用逻辑分析仪抓取如下:

看 仓库 readme 文件

can_rx_valid 信号 高电平 维持 时长 162ns, 50mhz 时钟, 正好对应 8个字节! 串口发送 日志模块 只能发送1个字节 ,在162ns 周期内, 因此 在串口日志上 看到 CAN上位机发送的 第一个 字节 !

要改成 发送8个字节, 或者 根据数据长度发送的 想法, 看看 如何 修改 WangXuan95/FPGA-CAN: An FPGA-based lightweight CAN bus controller. 基于FPGA的轻量级CAN总线控制器。
AI

浙公网安备 33010602011771号