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

下一篇

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

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


一 引言

在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自动化测试-CSDN博客

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

  • DDR3控制器的地址映射

  • 大数据量的连续读写测试

  • 带宽和延迟的性能测试

  • 自动化测试脚本的编写与优化

总结

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

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

相关推荐
FPGA_小田老师7 小时前
FPGA开发入门:深入理解计数器——数字逻辑的时序基石
fpga开发·verilog·状态机·计数器·计数器设计
碎碎思7 小时前
用 FPGA 实现 PCIe 传输,开源核 LitePCIe 深度解读
fpga开发
9527华安8 小时前
FPGA纯verilog实现JESD204B协议,基于AD9625数据接收,提供2套工程源码和技术支持
fpga开发·jesd204b·ad9625
Shang1809893572611 小时前
MS2107高性能USB 2.0视频信号和音频采集,支持NTSC/PAL制式,适用于低成本视频采集设备
嵌入式硬件·fpga开发·音视频·硬件工程·信息与通信·dsp开发
学工科的皮皮志^_^13 小时前
网口学习理解
经验分享·笔记·嵌入式硬件·学习·fpga开发·以太网
博览鸿蒙19 小时前
FPGA高频面试问题整理—附答案
fpga开发
cmc10281 天前
134.FPGA常见管脚与时钟的约束方法
fpga开发
第二层皮-合肥1 天前
AD导出FPGA管脚的方法
fpga开发
ehiway2 天前
国际先进!中科亿海微国产嵌入式FPGA IP核及EDA系统设计技术通过科技成果评价
网络协议·tcp/ip·fpga开发