2. Signal Tap Logic Analyzer 基础原理

嵌入式逻辑分析仪(Signal Tap Logic Analyzer,简称 STLA)是 Intel Quartus Prime 软件中集成的一款片上调试工具。它允许设计者在 FPGA 器件运行时,实时捕获内部节点(寄存器、组合逻辑、状态机、存储器等)的信号波形,而无需依赖外部测试设备。本章将深入剖析 STLA 的工作原理、与外部示波器的核心差异,以及它在 Quartus Prime 工具链中的集成方式。

2.1 逻辑分析仪工作原理

Signal Tap 的核心思想是在 FPGA 内部例化一个“虚拟逻辑分析仪”。它利用 FPGA 内部的嵌入式存储器(M20K 块)作为采样缓冲器,通过 JTAG 或 Avalon-MM 接口与 Quartus Prime 软件通信,将捕获到的信号数据上传至 PC 端进行波形显示与分析。

核心工作流程: 用户选择待测信号 → 设置采样时钟与触发条件 → 综合/布局布线后下载配置 → 运行 FPGA → 触发条件满足时捕获数据 → 通过 JTAG 上传至 Quartus → 波形显示。
Signal Tap Logic Analyzer 内部工作原理架构图 Signal Tap Logic Analyzer 内部工作原理架构图 FPGA 内部 用户设计逻辑 (RTL 待测信号) 信号选择器 (多路复用) 采样缓冲器 (M20K 存储器) 触发逻辑 (条件匹配) JTAG 控制器 Quartus Prime 波形显示 说明:采样时钟由用户指定,触发条件支持基本/高级/序列触发,缓冲深度取决于 M20K 资源。

2.2 与外部示波器的区别

传统外部示波器(如 Tektronix MSO)与嵌入式逻辑分析仪在调试 FPGA 时各有优劣。下表从多个维度进行对比,帮助设计者根据场景选择合适的调试手段。

对比维度 Signal Tap(嵌入式逻辑分析仪) 外部示波器(MSO)
信号接入 内部节点直接访问,无需物理探针 仅能测量 FPGA 引脚(IO)信号
采样深度 受 M20K 资源限制,典型 1K~512K 样本 受板载内存限制,可达 10M+ 样本
采样率 由 FPGA 时钟决定,最高可达 GHz 级 由示波器 ADC 决定,通常 1~100 GS/s
触发灵活性 支持基本/高级/序列/存储触发,可编程 支持边沿/脉宽/模式/串行触发,硬件固化
信号数量 可同时捕获数百个内部信号 通常 4~16 个模拟/数字通道
实时性 非实时,触发后通过 JTAG 上传数据 实时显示,连续刷新
调试成本 免费(集成在 Quartus 中),占用 FPGA 资源 设备成本高(数千至数十万元)
适用场景 内部逻辑调试、状态机验证、协议分析 信号完整性、模拟信号、高速串行眼图
实战建议: 在 Agilex 设计中,优先使用 Signal Tap 进行内部逻辑调试;当需要验证高速串行收发器(如 PCIe Gen5、Ethernet 800G)的物理层信号质量时,再配合外部示波器使用。

2.3 在 Quartus Prime 中的集成方式

Signal Tap 并非独立工具,而是深度集成在 Quartus Prime 软件中。其集成方式分为以下三个层面:

  1. 工程级集成: 通过 Tools → Signal Tap Logic Analyzer 打开 GUI,或通过 Tcl 脚本自动化配置。
  2. 网表级集成: 在综合后、布局布线前,Signal Tap 自动在网表中插入调试逻辑(信号选择器、触发逻辑、缓冲器)。
  3. 配置级集成: 生成 .stp 文件(Signal Tap 配置文件),与 .sof 文件一起下载至 FPGA。
Quartus Prime 中 Signal Tap 集成流程 Quartus Prime 中 Signal Tap 集成流程 RTL 设计 (Verilog/VHDL) 综合 (Analysis & Synthesis) Signal Tap 配置 (.stp 文件) 布局布线 (Fitter) 生成 .sof (包含 STLA 逻辑) 下载与运行 (JTAG 编程) 说明:Signal Tap 配置可在综合后、布局布线前或后进行,但建议在布局布线前完成以优化时序。

2.4 关键集成细节

在 Agilex 器件中,Signal Tap 的集成有以下特殊注意事项:

  • 时钟域约束: 采样时钟必须与待测信号处于同一时钟域,或使用异步 FIFO 进行跨时钟域处理。
  • 资源占用: 每个待测信号会增加约 1~2 个 LE/ALM 和 1 个 M20K 块(每 1024 样本深度)。Agilex 的 M20K 块容量为 20 Kb,可灵活配置为 512×40、1K×20 等模式。
  • 触发模式: 支持基本触发(边沿/电平)、高级触发(计数器/状态机)、序列触发(多级条件链)。
  • 存储模式: 支持“连续存储”(触发前后均捕获)和“分段存储”(多次触发,节省缓冲空间)。
常见陷阱: 在 Agilex 设计中,如果 Signal Tap 占用了过多的 M20K 资源,可能导致设计无法满足时序要求。建议在调试阶段预留 10%~20% 的 M20K 余量,并在调试完成后移除 STLA 逻辑。

2.5 小结