【FPGA学习】在线调试方法(四)

1. 在线调试简介

1.1 在线调试工具的使用

在仿真的时候;

时钟的产生是由软件产生;

若因时钟不起振导致错误;

单独使用在线调试无法实现;

调试工具:

示波器,逻辑分析仪;

在线逻辑分析仪;

不同厂商的在线逻辑分析仪:

FPGA厂商 FPGA开发工具 在线调试工具
Xilinx Vivado ILA(Integrated Logic Analyzer)
Xilinx ISE ChipScope
Altera Quartus II SignalTap II
紫光同创 PDS Debugger
...... ...... ......

在线调试工具连线示意图:

如下图所示:

通过片内的BSRAM,完成数据的存储,通过JTAG接口,与开发工具链接;

实现逻辑显示的功能;

2 Xilinx在线调试方案

  • Vivado工具集成了逻辑分析仪(ILA),用于替换外部的逻辑分析仪;
  • 添加ILA核和VIO核实现在线调试;
  • 通过JTAG接口和PC链接;

2.1 ILA

ILA(Integrated Logic Analyzer)

集成逻辑分析仪;

  • 主要用于监控逻辑内部信号和端口信号;

VIO(Virtual Input/Output)

虚拟输入输出;

  • 实时监控和驱动逻辑内部信号和端口信号;

主要使用ILA;

在FPGA内部,具有一个XADC内核;

可以通过这个硬核采集对应的电压;

2.2 添加ILA的方法

  • 添加ILA IP核,在代码中对ILA IP核进行例化;
  • 在原理图或者网表文件中添加"mark debug"属性;
  • 手动地在XDC约束文件中编写对应的TCL XDC调试命令;

上述为三个方法;

2.3 通过XADC查看各部分电压

1. 打开任务部分的硬件管理:

2. 链接板子:

3. 双击XADC:

2.4 ILA在线调试工具的使用

2.4.1 通过添加ILA IP核的调试方式

  1. 点击IP catalog,搜索ILA:
  2. 设置内容,这里主要是设置了探针的数量,以及采样的深度,采样深度类似于数据缓存宽度,可以查看对应的数据的长度;
  3. 上述的为通用设置,此部分主要设置数据的位宽:
  4. 设置ooc,也就是每个IP核都单独编译,上面那个是全编译,比较慢;
    以及对应的核心数,这里也是保持默认;
  5. 此时这部分进行编译,等待完成:
  6. 找到对应的IP核的例化模板;
  7. 按照对应检测的端口,对变量进行例化:
  8. 此时源文件下出现了对应的ILA文件:
  1. 生成比特流,等待综合执行完成,因为加入了debug文件,所以编译时间上会长很多:
  2. 点击下载,下载完成后,会出现对应的调试界面:
  3. 调试界面:
    上面的是调试的按钮;
    下面部分是触发条件 的选择,可以根据细节具体查看;
  4. 在完成了调试后,还需要将对应的例化代码删除;
    若出现无法识别调试文件的报错,可以手动将Debug路径移除;
    防止占用资源:

2.4.2 通过网表中添加信号的调试方式

  1. 如下图所示,找到对应的连线,点击加入Debug即可:

    或者通过网络进行添加:

    或者通过代码的方式添加Debug;

  2. 这里是对应的debug打开方式:

    以及对应的debug代码的存在方式,存在于xdc文件中:

  3. 添加信号后,后面的操作与之前相同,只是不同的导出IP核的方法;

补充:

在操作的过程中,如果不小心删掉了窗口,可以通过此地方来进行打开对应的窗口:

相关推荐
云析赢指标公式网41 小时前
通达信ATAN均线角度公式源码笔记:四周期角度计算与DRAWBAND色带实现
笔记·算法
蒸蒸yyyyzwd1 小时前
学习笔记day92
笔记·八股
kk_net88992 小时前
FSNotes:macOS 和 iOS 上的开源笔记管理器
笔记·其他·macos·ios
一木 之林13 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
箓维18 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手18 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
星恒随风20 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI21 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
叼烟扛炮21 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain