FPGA 片上逻辑分析仪入门:探针、触发与采样窗口
myfpga.com.cn 编辑部 · 2026-10-05
片上逻辑分析仪把采样、触发和存储逻辑加入 FPGA 实现,用于观察设计在真实板卡上的内部数字信号。AMD ILA 与 Intel Signal Tap 是各自工具体系中的实现;可用器件、调试连接、触发选项和存储配置应查对应版本文档,不能把一家工具的功能视为所有 FPGA 的共同能力。
先明确问题,再选探针
先写下可验证的假设,例如“接收数据停滞时,下游是否一直没有准备好”。探针可以围绕这个假设选择:
- 控制:状态机状态、复位状态、使能与错误标志。
- 接口:
valid、ready、包边界,以及与它们对应的数据字段。 - 上下文:事务编号、计数器、FIFO 的满空状态。
以采用 valid/ready 握手的接口为例,只有两者同时有效的采样周期才表示一次传输。单看数据线变化容易误判;应同时记录握手和必要的数据内容。先抓少量关键信号,再根据结果扩大范围,比一次接入所有总线更容易解释,也能控制资源消耗。
记录每个探针的位宽、编码、时钟域和流水线位置。综合可能优化或重命名信号;保留信号及插入探针的方法随工具而异,应确认最终连接到的是预期节点。有关逻辑和片上存储资源,可先阅读 FPGA 内部架构与资源。
采样时钟决定波形的含义
AMD 的 ILA 时序建议要求采样时钟与探针信号同步。Intel Signal Tap 文档说明其在采集时钟上升沿采样,并建议使用与被测信号同步的全局、非门控时钟。
工程上应先确认采样时钟已经运行,且调试实例的时序满足要求。时钟停止期间不能期待连续采样,也不能用一份离散数字波形推断模拟边沿质量。
多时钟域通常应分别规划对应的采样实例,再通过事务编号或握手事件关联结果。不同实例的“第十个样本”不一定对应同一时刻。跨时钟域信号宜观察经过正确同步或跨域协议处理后的接收端状态;直接采样异步总线不能保证得到一致的数据,也不能据此证明不存在亚稳态问题。
触发条件与事件前后的窗口
触发用于定位值得保留的事件。例如先以错误标志有效作为条件,再观察错误之前的状态转换和之后的恢复过程。AMD UG908 的探针比较设置介绍了 ILA 的比较值设置;具体可用比较方式应以所配置的核和版本为准。
实用步骤是先用容易出现的事件确认采样正常,再收紧到故障条件。若错误太晚才被检测,应在工具支持的范围内调整触发位置,保留足够的触发前样本。需要观察恢复动作时,也要留出触发后空间。复杂序列触发是否可用、怎样配置,分别查对应工具文档。
启动采集后再复现问题,并确认实例确实处于等待触发的状态。“没有触发”可能来自时钟未运行、条件配置错误、未成功启动或故障未发生,不能直接当作设计正确的证据。
深度、位宽和资源如何取舍
采样深度是缓冲区可保存的样本数量。Intel 文档指出,减少深度可以降低存储资源需求。对于连续采样,若总记录位宽为 W、深度为 N,样本数据的理论容量是 W × N 位;控制逻辑和实际存储块分配还会增加开销。
例如 32 位、1024 个样本的数据本身为 32768 位,即 4 KiB。这只是容量计算,不是某器件的实际资源占用。在假设的 100 MHz 连续采样下,1024 个样本覆盖约 10.24 μs 的窗口;首末样本间隔严格为 1023 / 100 MHz。这些数字用于说明计算方法,不代表工具或器件支持的配置、频率或性能。
想看更长过程,可以减少无关字段,或在工具支持时使用采集限定条件。但若只保存部分周期,样本下标就不再天然代表连续时间;需要记录计数器或其他时间信息。增加深度、探针位宽和复杂触发之前,先确认片上存储、逻辑及布线的余量。
三种波形工具各解决什么问题
| 方法 | 适合观察 | 主要边界 |
|---|---|---|
| 仿真波形 | 可控激励下的 RTL 行为、状态转换、边界条件与协议检查 | 结果取决于模型和激励;普通 RTL 仿真不呈现真实板卡电气情况 |
| 片上逻辑分析仪 | 实际运行中的内部数字状态、握手和异常发生前后过程 | 受采样时钟、窗口和探针范围限制,不能代替静态时序或电气测量 |
| 外部示波器 | 可接触节点的电压、边沿、振铃,以及电源和时钟等模拟现象 | 受测试点、带宽和探头负载影响,通常无法直接看到内部状态机 |
例如接口偶发停顿,可以先在仿真中验证握手,再用片上分析仪定位板上停顿的内部状态;若怀疑复位或时钟波形异常,则结合外部测量。板级排查顺序可参考 FPGA 板卡 Bring-up 检查清单。
抓到波形后仍要检查实现报告
探针增加信号负载;采样存储和触发逻辑占用资源,也可能改变优化、布局和布线。AMD 的时序建议明确提醒:设计未满足时序时,探针波形可能不可靠。因此,片上分析仪适合定位功能现象,时序问题仍须回到约束和实现报告分析。
每次改变探针或调试配置后,按工具要求重新生成实现与配置文件,检查资源利用率、时钟约束、建立与保持时序,以及相关告警。不要为了让调试核通过而随意放宽真实时钟约束。移除调试逻辑后的最终版本同样需要重新实现并检查报告,不能沿用调试版本的结论。流程背景见 FPGA 开发流程中的实现与时序分析。
保存波形时,一并记录 RTL 提交、工具版本、约束、配置文件、匹配的探针配置和复现步骤。这样才能判断下一次看到的变化来自设计修改、采样设置还是板卡运行条件。
信息来源
- https://docs.amd.com/r/en-US/ug908-vivado-programming-debugging/ILA-Probe-Compare-Value-Settings
- https://docs.amd.com/r/en-US/ug949-vivado-design-methodology/ILA-Core-and-Timing-Considerations
- https://www.intel.com/content/www/us/en/docs/programmable/683819/25-1/specifying-the-clock-sample-depth-and.html