2. 开发环境与工程骨架搭建

高速采集与实时处理工程能否顺利推进,很大程度上取决于第一天的环境是否干净、骨架是否可综合、时钟与复位是否规划清楚。本节围绕 Quartus Prime Pro、Platform Designer、Agilex 开发板选型、时钟与复位规划,以及可综合采集处理工程模板的建立,给出一条可直接落地的路径。所有器件型号、引脚、频率与参数均为教学示例,实际使用时须以所选开发板原理图和器件手册为准。

一、工具链与版本对齐

Agilex 系列(含 Agilex 7 F/I/M 系列)必须使用 Quartus Prime Pro 版本,Standard 版本不支持该器件族。建议统一使用同一大版本,例如 Quartus Prime Pro 24.x,并同步安装对应版本的 Agilex 器件支持包、ModelSim/Questa Intel FPGA 版以及 Platform Designer。版本不一致是后续 IP 升级、编译报错和时序收敛异常的高频原因。

安装完成后,先做一次最小验证:新建工程,器件选择与开发板一致的型号(示例:AGFB014R24A2E2V,Agilex 7 F 系列,R24 封装,速度等级 2,E 后缀为工程样品标识),编译一个空顶层,确认 Assembler 与 Timing Analyzer 可正常跑通。这一步能提前暴露许可证、器件库缺失等问题。

二、开发板选型要点

选板不是看主频高低,而是看与采集链路匹配的硬资源。建议按以下维度核对:

  • 高速收发器:确认 GT 通道数量、支持速率与参考时钟来源。若采集前端为 JESD204B/C ADC,需核对收发器是否支持所需 lane 速率与 Subclass 模式。
  • 外部存储:DDR4/DDR5 或 HBM 的位宽与带宽,决定能否缓存连续采样数据。示例:2 通道 1 GSPS、14 bit,原始数据率约 28 Gbps,需 DDR4 至少 64 bit@2400 Mbps 才能留出余量。
  • 时钟资源:板载晶振频率、可编程时钟芯片(如 Si5341)输出路数、是否支持收发器专用参考时钟。
  • 扩展接口:FMC/FMC+、HSMC 或高速排针,用于接采集子卡。
  • 调试接口:JTAG、UART、以及可用于 Signal Tap 的预留引脚。

三、时钟与复位规划

时钟规划的核心是“分域、定源、留余量”。建议把时钟分为四类:

  1. 收发器参考时钟:由专用时钟引脚或板上时钟芯片提供,示例 156.25 MHz,抖动要求最严,不可与逻辑时钟混用。
  2. 采集数据时钟:由 ADC 随路时钟或收发器恢复时钟产生,用于驱动采集数据通路。
  3. 处理时钟:驱动 DSP/算法逻辑,示例 250 MHz,需评估时序余量。
  4. 系统管理时钟:50 MHz 或 100 MHz,用于配置、状态机、UART 等慢速逻辑。

复位规划要与时钟域一一对应。推荐使用“上电复位 + 锁相环锁定指示 + 软复位”三级结构:PLL 未锁定前保持复位有效,锁定后释放;软复位由控制寄存器触发,用于运行中重新初始化采集通路。跨时钟域复位释放必须做同步处理,避免亚稳态。

复位释放顺序建议:先释放管理时钟域,再释放处理时钟域,最后释放采集时钟域,确保配置寄存器先就绪。

四、可综合采集处理工程模板

工程模板的目标是“打开即编译、编译即可综合、综合后有时序报告”。建议目录结构如下:

agilex_acq_template/
├── prj/                 # Quartus 工程文件
├── rtl/
│   ├── top.sv           # 顶层,仅做例化与引脚
│   ├── clk_rst/         # 时钟与复位生成
│   ├── acq/             # 采集通路
│   ├── proc/            # 实时处理
│   └── mgmt/            # 配置与状态
├── ip/                  # Platform Designer 生成
├── sdc/                 # 时序约束
├── tb/                  # 仿真
└── scripts/             # 编译与约束脚本

顶层只保留例化与引脚分配,所有功能下沉到子模块。时钟与复位模块输出统一的 clk/rst_n 组,供各域使用。采集通路建议采用 valid/ready 握手,处理通路采用 valid 流式接口,管理通路采用寄存器读写接口。这样后续替换 ADC 或算法时,接口不变,改动局部化。

Platform Designer 用于搭建互联骨架:把采集 DMA、片上 RAM、寄存器文件、JTAG Avalon Master 等挂到 Avalon-MM 总线上,生成系统后导出到 Quartus 工程。注意在 Platform Designer 中为每个时钟域单独分配时钟,并检查地址映射是否冲突。

五、时序约束与首次编译

SDC 文件至少包含:主时钟定义、生成时钟定义、输入输出延迟、跨时钟域 false path 或 set_max_delay。示例:

create_clock -name sys_clk -period 20.000 [get_ports clk_50m]
create_clock -name tx_clk  -period 6.400  [get_ports refclk_156m]
derive_pll_clocks
derive_clock_uncertainty
set_false_path -from [get_clocks sys_clk] -to [get_clocks tx_clk]

首次编译后重点看三份报告:Compilation Report 中的 Fitter 资源占用、Timing Analyzer 的 Setup/Hold 摘要、以及 Clock 部分的时钟树。若出现未约束时钟或跨域路径未处理,先补约束再谈优化。

Agilex 采集处理工程骨架与时钟复位规划 板载时钟源 50 MHz 系统时钟 156.25 MHz 收发器参考 clk_rst 模块 PLL / MMCM 锁定检测 + 同步释放 软复位控制 采集时钟域 ADC 随路 / 恢复时钟 处理时钟域 250 MHz 算法逻辑 管理时钟域 100 MHz 配置/状态 收发器参考域 156.25 MHz 专用 采集通路 acq JESD204B / LVDS 接收 valid/ready 握手 处理通路 proc 滤波 / FFT / 抽取 流式 valid 接口 管理通路 mgmt 寄存器 / 状态机 Avalon-MM 从机 Platform Designer 互联骨架 Avalon-MM 总线 · DMA · 片上 RAM · JTAG Master · 地址映射

六、工程模板检查清单

检查项合格标准常见问题
器件型号与开发板一致,Pro 版本支持误选 Standard 器件库
时钟约束所有时钟均有 create_clock 或 derive遗漏收发器参考时钟
复位同步跨域复位释放有同步器异步释放导致亚稳态
接口协议采集/处理/管理接口固定接口随算法改动而变
Platform Designer地址无冲突,时钟域独立多时钟域共用同一时钟
首次编译无未约束时钟,时序报告可读忽略跨域路径告警