FPGA调试利器:JTAG to AXI Master IP核详解与实战演练

FPGA调试利器:JTAG to AXI Master IP核详解与实战演练

下一篇

JTAG TO AXI Master 实战案例参考如下:

FPGA DDR3实战(四):DDR3地址Mapping自动化测试-ZEEKLOG博客


一 引言

       在FPGA开发中,如何高效地验证AXI总线系统一直是个关键问题。今天我们将深入探讨Xilinx提供的一款强大调试工具——JTAG to AXI Master IP核,它为AXI总线调试提供了极大的便利,也是后续进行DDR3自动化脚本测试的重要基础。

二 JTAG to AXI Master IP核概述

       JTAG to AXI Master IP核是一个可定制的核心,能够在系统中生成AXI事务并驱动FPGA内部的AXI信号。该IP核具有以下主要特性:

  • 支持AXI4和AXI4-Lite接口协议
  • 可配置的AXI数据宽度(32位/64位)
  • 可配置的AXI地址宽度(32位/64位)
  • 支持所有内存映射AXI接口事务
  • 通过Vivado逻辑分析仪Tcl控制台进行硬件交互

三 IP核工作原理

       JTAG to AXI Master作为AXI系统中的一个主设备,可以通过JTAG接口接收来自Vivado Tcl控制台的命令,并将其转换为标准的AXI事务。它没有自己的地址空间,可以响应所有发起的地址,与系统中的其他AXI主设备共存。

典型系统架构:

四 Tcl控制台命令详解

JTAG to AXI Master的核心价值在于通过Tcl脚本实现灵活的AXI事务控制。

1 基本写事务:

# 创建写事务 create_hw_axi_txn write_txn [get_hw_axis hw_axi_1] \ -address 40000000 \ -data 12345678 \ -type write # 执行写事务 run_hw_axi write_txn

2 基本读事务:

# 创建读事务 create_hw_axi_txn read_txn [get_hw_axis hw_axi_1] \ -address 40000000 \ -type read # 执行读事务 run_hw_axi read_txn

3 突发传输示例:

# 8个数据的AXI4突发写 create_hw_axi_txn burst_write [get_hw_axis hw_axi_1] \ -address 40000000 \ -data {11111111 22222222 33333333 44444444 55555555 66666666 77777777 88888888} \ -len 8 -size 32 -type write # 队列执行多个事务 run_hw_axi txn1 txn2 txn3 -queue

五 实战搭建:基于BRAM的测试环境

     我们以米联客MK7160FA开发板(FPGA型号:XC7K325TFFG676_2)为例,搭建一个基础的测试环境。

1. 设计框图

我们搭建的设计框图如下:

使用JTAG to AXI Master + BRAM控制器 + ILA的经典组合:

  • JTAG to AXI Master:生成AXI事务
  • AXI BRAM Controller:控制Block RAM
  • Block Memory Generator:提供存储空间
  • ILA:监控AXI总线行为

2. 关键配置

  • AXI协议:AXI4(支持突发传输)
  • 数据宽度:32位
  • 地址宽度:32位
  • BRAM地址空间:0x4000_0000 - 0x4000_1FFF

      我们将程序烧写到板子里面,烧写完成之后,我们在界面上看到hw_axi_1,说明我们的jtag to axi master ip已经存在了

3 引脚约束和bit生成

      综合实现无误生成bit之后,我们将程序烧写到板子里面,烧写完成之后,我们在界面上看到hw_axi_1,说明我们的jtag to axi master ip已经存在了

我们可以在Tcl Console中输入脚本,读写BRAM的地址空间进行测试

4 写事务测试

     我们创建一个写事务,即给地址0x4000_0000写数据0x12345678,如下:

    打印出WRITE DATA is:12345678,即数据写入完成

       同时我们可以在ila上观测到如下波形,确实发起了一笔写请求。写地址为0x4000_0000,写数据为0x12345678,并且收到了有效的写response信号。

     说明该数据已经正常写入BRAM中

5  读事务测试

   如下,我们在Tcl Console中创建一个读事务,并发起读请求,请求的读地址为0x4000_0000

    Tcl Console打印出RDATA is 12345678,即读出的数据是0x12345678,与我们刚才写入的一致

      同时我们在ila上观测读波形如下,确实发起了读请求,返回数据为0x12345678.

       读写一致,这是一个最简单的jtag2axi的读写测试,大部分情况下,我们需要直接使用脚本进行自动化测试,这个在下一篇我们使用JTAG2AXI对DDR3硬件的地址mapping功能进行自动化脚本测试,我们会详细介绍到这个脚本。

六、应用场景与价值

1. 系统前期验证
在与其他主设备(如PCIe)联调之前,使用JTAG to AXI Master验证FPGA硬件设计的正确性。

2. 自动化测试
通过编写Tcl脚本,实现自动化的读写测试,大大提高测试效率。

3. 性能分析
结合ILA核,可以详细分析AXI总线的时序特性,优化系统性能。

4. 故障诊断
当系统出现异常时,可以通过该IP核直接访问特定地址,快速定位问题。

七、调试技巧与注意事项

  1. 时钟与复位:确保aclk和aresetn正确连接,IP核工作在正确的时钟域
  2. 地址映射:确认目标从设备的地址空间与Tcl命令中的地址匹配
  3. 队列管理:合理设置事务队列长度以平衡性能和资源

八、为DDR3测试奠定基础

本次基于BRAM的测试为后续的DDR3自动化测试提供了重要基础:

  1. 命令熟悉:掌握了create_hw_axi_txn和run_hw_axi等核心命令
  2. 流程验证:建立了完整的"创建-执行-验证"流程
  3. 监控手段:学会了使用ILA监控AXI总线行为
  4. 脚本基础:为编写复杂的DDR3测试脚本积累了经验

在下面关于DDR3自动化测试的文章中,FPGA DDR3实战(四):DDR3地址Mapping自动化测试-ZEEKLOG博客

我们将基于这些知识,扩展到更复杂的场景:

  • DDR3控制器的地址映射
  • 大数据量的连续读写测试
  • 带宽和延迟的性能测试
  • 自动化测试脚本的编写与优化

总结

       JTAG to AXI Master IP核是FPGA开发中不可或缺的调试工具,它架起了JTAG接口与AXI总线之间的桥梁。通过灵活的Tcl命令控制,我们可以快速验证硬件设计的正确性,执行自动化测试,并为后续复杂的存储控制器测试奠定坚实基础。

      掌握这个工具的使用,将显著提升你的FPGA调试效率和系统验证能力。

Read more

OpenClaw 安装 + 接入飞书机器人完整教程

OpenClaw 安装 + 接入飞书机器人完整教程 OpenClaw 曾用名:ClawdBot → MoltBot → OpenClaw(同一软件,勿混淆) 适用系统:Windows 10/11 最后更新:2026年3月 一、什么是 OpenClaw? OpenClaw 是一款 2026 年爆火的开源个人 AI 助手,GitHub 星标已超过 10 万颗。 与普通 AI 聊天机器人的核心区别: * 真正的执行能力:不只回答问题,能实际操作你的电脑 * 24/7 全天候待命:睡觉时也能主动完成任务 * 完全开源免费:数据完全掌控在自己手中 * 支持国内平台:飞书、钉钉等均已支持接入 二、安装前准备:安装 Node.js 建议提前手动安装

组建龙虾团队——OpenClaw多机器人构建

组建龙虾团队——OpenClaw多机器人构建

成功搭建了OpenClaw,也成功建立的自己的每日服务,这时候发现,似乎不太敢在当前的机器人中让他做别的事情,生怕会话太多会让他出现遗忘。(尽管我们配置了QMD记忆增强,但毋庸置疑任何技术都是有上限的)。 换做同样的情况,比如在DeepSeek或者豆包之类的对话窗口,我们会习惯性地新建一个对话。那么我们是否可以新建一个机器人,或者多个机器人,让他们各司其职,各尽所能,形成一个相互配合的团队呢~开干吧,没什么不可能的!! 🦞新建一个机器人 来到飞书开发者后台,新创建一个应用,在这里我们以短视频剪辑脚本应用为例。 创建之后,由于我们的openclaw绑定的是之前的飞书渠道,并没有链接到这个应用的APP ID,所以暂时不做其他操作,只需要记录一下他的APP ID和APP Secret。 🦞配置OpenClaw 如果还是按照claw的命令行安装,每一步都有些让人担心害怕,毕竟我们先前已经配置过一次了,接下来的操作,需要小心是否会把以前的配置给覆盖掉。 为了避免这样的不确定性,我们直接去操作他的配置文件 在WSL2终端中进入openclaw目录 cd .openclaw

PPO-VLA:强化学习如何让机器人“看得更懂、抓得更准”?

PPO-VLA:强化学习如何让机器人“看得更懂、抓得更准”?

一项来自清华大学的实证研究表明,相比传统的监督微调,使用PPO算法进行强化学习微调,能使VLA模型在语义理解和执行鲁棒性方面的分布外泛化能力提升高达42.6%。 论文:What Can RL Bring to VLA Generalization? An Empirical Study 链接:https://arxiv.org/abs/2505.19789 代码:https://rlvla.github.io 想象一下,你让一个家用机器人“把桌上的苹果放进碗里”。在实验室里,它可能完成得很好。但一旦进入你家,面对从未见过的餐桌纹理、一个形状奇特的“碗”、或者在你下达指令时苹果被意外碰歪了位置,它还能顺利完成吗? 这正是当前VLA模型面临的泛化挑战。这类模型通过整合视觉感知、语言理解和机器人控制,已成为具身人工智能领域的明星。然而,其主流训练方法——监督微调,本质上是在模仿专家演示数据。当环境稍有变化,微小的误差便会累积,导致机器人“

Microi吾码:开源低代码,微服务开发的利器

Microi吾码:开源低代码,微服务开发的利器

前言 在微服务架构的应用中,服务的灵活性和可扩展性至关重要。Microi吾码作为一个高效的微服务框架,凭借其轻量级、可插拔的特性,已经成为开发者构建分布式应用的首选工具。除了基础的微服务开发功能外,Microi吾码还提供了丰富的扩展功能,其中表单引擎是一个重要亮点。本篇博客将详细介绍Microi吾码的特点,以及如何使用其表单引擎和其他实用功能。 一. Microi吾码简介 Microi吾码是一个基于Spring Boot构建的微服务框架,致力于为开发者提供简单、灵活的解决方案,帮助他们高效构建分布式应用。它整合了常用的微服务功能,如服务注册与发现、负载均衡、熔断器、API网关、配置中心等,使得开发者无需从零开始构建基础设施,从而专注于业务逻辑。 1.1 核心特点 Microi吾码的核心特点: * 轻量级:基于Spring Boot,极大地简化了项目配置和开发流程。 * 高度可扩展:提供丰富的插件支持,可以根据需要定制功能。 * 开箱即用:内置常见的微服务功能,减少了开发者的重复工作。 * 开发友好:支持热部署和自动化构建,提升开发效率。 1.2 功能介绍