惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Palo Alto Networks Blog
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
B
Blog
MyScale Blog
MyScale Blog
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
S
Schneier on Security
Project Zero
Project Zero
T
Tenable Blog
T
Tor Project blog
U
Unit 42
G
GRAHAM CLULEY
N
News and Events Feed by Topic
P
Proofpoint News Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
C
Cybersecurity and Infrastructure Security Agency CISA
腾讯CDC
博客园 - 叶小钗
M
MIT News - Artificial intelligence
Vercel News
Vercel News
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
I
Intezer
博客园 - 聂微东
SecWiki News
SecWiki News
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
IT之家
IT之家
量子位
S
Secure Thoughts
The Cloudflare Blog
博客园 - 司徒正美
Know Your Adversary
Know Your Adversary
Hacker News: Ask HN
Hacker News: Ask HN
V
Vulnerabilities – Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
N
News | PayPal Newsroom
C
Check Point Blog
Spread Privacy
Spread Privacy
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cyberwarzone
Cyberwarzone

博客园 - 所长

Software-Defined Radio for Engineers 一 频谱仪 N9020A 操作步骤记录 FPGA-CAN MAC 层 IP 核测试(二) 源码阅读 libero reg 编译时 占用 RAM 资源 而不是 LUT 资源 加扰和解扰 Microchip SoftConsole v2022.2-RISC-V-747 polarfire soc 裸机例程中 链接文件 mpfs-envm-lma-scratchpad-vma.ld 分析 FlashPro5 导致 window11 蓝屏 libero verilog 模块例化时,信号不存在 默认是 不连接 A3P250 在线 debug 抓取信号 Identify 在线逻辑分析仪 MPFS250T MSS 引脚 上下拉配置 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接 (五) 官方参考 verilog 按键消抖模块 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接 (四) axi-lite 信号抓取 libero Active Probes 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接 (三) C代码测试 访问卡死 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接 (二) axi-lite 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接(一)libero 设置把模块信号变总线方式 libero 2025.2 Macro Library User Guide for SmartFusion 2 and IGLOO 2 FPGAs 如何在 libero 中 写一个 axi4 slave 总线的 IP核 可以 和 CoreAXI4Interconnect 连接 (零) MSS CFG MPFS250T FLASH 只有 128KB 调整代码优化 AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(七) 初始化日志记录 AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(六) 开启 日志打印 Calibration TIMEOUT (0x247, 0x2) AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(五) ad9361_check_cal_done 卡死 AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(四) ad9361_init 编译报错 和 读取 AD9361 ID AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(三) 接口适配到自己的板子 AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(二) AD9361 初始化流程 熟悉 AD9361 SPI no-os 文件移植 SoftConsole MPFS250T 初学(一) 驱动代码移植 RS422 差分 逻辑分析仪 抓包 libero Simulate - ModelSim ME 仿真 串口数据处理模块 vivado axi PS-PL 封装IP 创造自定义 外设 libero Simulate - ModelSim ME (三) 实战测试 双端口 RAM 读写 libero Simulate - ModelSim ME (二) 语法分析 libero Simulate - ModelSim ME (一) 新建工程 libero smartdebug Libero SoC CMP402 PolarFire SOC MSS 时钟源选择 polarfire Temperature and Voltage Sensor 温度和电压传感器 log2 PolarFire SoC Clock Conditioning Circuitry - CCC (PLL/DLL) 时钟源介绍(二) PolarFire SoC Clock Conditioning Circuitry - CCC (PLL/DLL) 初始化(三) PolarFire SoC Clock Conditioning Circuitry - CCC (PLL/DLL) 简单介绍(一) libero export flashpro express Job Libero MPFS250T PFSoC MSS Configurator 2025.2 DDR3 ECC 配置 Libero MPFS250T 如何使用 FPExpress 2025.2 烧录 MPFS250TS Direct C 编程后,使用 JTAG 读取的 DEVICE_INFO LOG Xilinx SDK 2019.1 使用 JTAG 将 10MB 文件 复制到 ZYNQ 的 DDR中 大约 20 秒 libero PolarFire soc SPI-DirectC 实战 dp_G5M_check_cycle_count libero PolarFire soc SPI-DirectC 实战 dp_G5M_do_program libero PolarFire soc SPI-DirectC 实战 dp_G5M_erase_action libero PolarFire soc SPI-DirectC 实战 dp_G5M_verify_digest_action
FPGA-CAN MAC 层 IP 核测试(一) 上板实测
所长 · 2026-07-02 · via 博客园 - 所长

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%

image

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

image

 逻辑分析仪抓取: CAN-TX 信号, 在 CAN-RX 引脚上能看到CAN-TX引脚发送的信号,两者差120ns,是因为 CAN 收发器,会将总线上的信号 通过 CAN-RX引脚 返回给 CAN MAC层, 用于 MAC层判断总线是否抢占!

CAN-RX 引脚上 在最后多了 一个 ACK 信号; 是 CAN 总线上,接收到 这帧报文 都会产生 ACK 信号, 用于 发送者确认  自己发出的信息有人收到了, 用于确保总线状态是否正常!

image

 上位机发送,FPGA接收测试

USB-CAN  发送 ID= 0x123 (其他ID 没有用,代码有匹配ID功能),   数据 33 02 03 04 05 06 07 08 共计8个字节

A3P250 开发板 串口 收到 1个字节,  是 CAN发送 的 第一个字节 0x33

image

资源占用情况: 修改 一句代码,can_top.v 中 , ASIZE 10改成1 ; 否则 RAM 占用 100%

localparam ASIZE = 1;

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个字节, 串口只打印了第一个字节,用逻辑分析仪抓取如下:

image

 看 仓库 readme 文件 

image

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

image

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

 AI

image