4. 开发环境搭建与工程创建

Agilex 系列 FPGA 属于 Intel(现 Altera)高端产品线,其开发流程与 Cyclone、Arria 系列存在明显差异:器件支持、IP 生成、引脚与时钟约束都依赖 Quartus Prime Pro 版本,标准版(Standard Edition)并不支持 Agilex。因此本节的核心任务是搭建一套可复现的工程骨架,让后续的视频图像处理模块能够稳定地编译、下载与调试。

一、工具链组成与版本选择

一套完整的 Agilex 开发环境由四部分构成,它们之间存在明确的依赖顺序:

  • Quartus Prime Pro:负责综合、布局布线、时序分析与比特流生成,是工程的主入口。
  • Platform Designer(原 Qsys):用于搭建含 HPS、AXI/AVALON 互联、DMA、视频流水线等子系统,生成可例化的 IP 子系统。
  • Agilex 开发板支持包:包含板级器件文件、引脚分配参考、板载时钟与存储器信息,通常以 .qdz 或板级 XML 形式提供。
  • 器件库与 IP 库:Agilex 器件支持需要单独安装,且必须与 Quartus 版本严格对应。

版本匹配是首要原则。例如 Quartus Prime Pro 23.4 只能搭配同版本的 Agilex 器件支持与 IP 库,混用不同版本会导致 IP 无法生成或编译报错。安装时建议勾选“Agilex 器件支持”与“Stratix 10 / Agilex IP”相关组件,并预留至少 80 GB 磁盘空间。

二、工程创建的关键步骤

新建工程时,器件选择必须精确到具体型号与速度等级。以常见开发板为例,器件可能为 AGFB014R24A2E2V 或 AGIB027R29A1E2V,速度等级、封装、温度等级都会影响时序收敛。工程目录建议采用如下结构,便于版本管理与多人协作:

agilex_video/
├── prj/            # .qpf / .qsf 工程文件
├── rtl/            # 用户 Verilog/SystemVerilog 源码
├── ip/             # Platform Designer 生成的 .ip 与 .qsys
├── constraints/    # .sdc 时序约束、.qsf 引脚约束
├── bsp/            # 开发板支持包与板级文件
└── output_files/   # 编译输出与报告

创建工程后,先在 Assignments → Device 中确认器件,再通过 Assignments → Settings → IP Catalog 检查 IP 搜索路径是否包含开发板 BSP 目录。若 BSP 未正确加载,Platform Designer 中将看不到板载 DDR4、HDMI、视频接口等预定义 IP。

三、Platform Designer 子系统搭建

视频图像处理系统通常需要“数据搬运 + 视频流水线 + 控制”三类组件。在 Platform Designer 中,建议先搭建一个最小可运行子系统:

  1. 添加 Clock Bridge,将外部参考时钟转换为系统时钟与视频像素时钟。
  2. 添加 Reset Bridge,统一复位域,避免跨时钟域复位释放不同步。
  3. 添加 AXI/AVALON-MM 互联,连接 HPS 或 Nios 控制接口与视频 IP。
  4. 添加 DMA 或 Frame Buffer IP,用于图像帧的读写。
  5. 添加 Video Pipeline IP(如 Clipper、Scaler、Color Space Converter),构成处理链。

生成子系统时,注意勾选“Generate HDL”并选择与工程一致的仿真模型。生成完成后,Platform Designer 会输出 .qsys、.ip 与 .sopcinfo,其中 .sopcinfo 可用于软件端地址映射。

四、引脚约束与时钟规划

引脚约束直接决定信号能否正确进出器件。Agilex 的 I/O Bank 电压、差分对、收发器通道都有严格规则。建议在 Pin Planner 中先导入 BSP 提供的引脚分配参考,再逐条核对:

  • 视频输入/输出接口(如 HDMI、MIPI、SDI)的差分对必须分配到支持相应标准的 Bank。
  • DDR4 接口需使用专用 I/O 与硬核控制器,引脚位置由 BSP 固定,不可随意更改。
  • 时钟输入应分配到专用时钟引脚(CLKIN),并确认参考时钟频率与 PLL 配置一致。

时钟规划是本节最容易被忽视却影响最大的环节。一个典型的视频系统至少包含:

时钟域典型频率用途约束方式
系统时钟100 MHz控制、寄存器、DMAcreate_clock
像素时钟148.5 MHz1080p60 视频流create_clock + create_generated_clock
DDR 参考时钟200 MHzDDR4 控制器由硬核 IP 自动约束
收发器参考时钟125 MHz高速串行接口create_clock + 专用引脚

在 .sdc 文件中,至少应写入主时钟定义、生成时钟定义、跨时钟域路径的 set_clock_groups 或 set_false_path。例如:

create_clock -name sys_clk -period 10.000 [get_ports sys_clk]
create_clock -name vid_clk -period 6.734 [get_ports vid_clk]
set_clock_groups -asynchronous -group {sys_clk} -group {vid_clk}

跨时钟域信号必须经过同步器或异步 FIFO,不能仅靠 set_false_path 掩盖问题。时序分析报告中的 Setup/Hold Slack 应全部为正,若出现负 Slack,优先检查时钟约束是否完整、跨时钟域路径是否已正确处理。

五、编译与验证闭环

完成上述配置后,执行全编译(Compilation)。建议按“Analysis & Synthesis → Fitter → Timing Analyzer → Assembler”顺序逐步检查。关键观察点包括:

  • Fitter 报告:确认引脚分配无冲突,I/O Bank 电压与标准匹配。
  • Timing Analyzer:确认所有时钟域均已约束,无未约束路径。
  • Assembler:生成 .sof 文件,可通过 Quartus Programmer 下载到开发板。

若编译通过但下载后无视频输出,应优先检查时钟是否锁定(PLL locked 信号)、复位是否释放、DDR 校准是否完成。这些状态通常可通过 SignalTap 或板载 LED 观察。

Agilex 视频工程创建与约束规划关系图 Quartus Prime Pro 综合 / 布局布线 / 时序 Platform Designer 子系统 / IP 互联 Agilex BSP 板级文件 / 引脚参考 器件与 IP 库 版本严格匹配 Agilex 视频工程(.qpf / .qsf) 器件型号 · 速度等级 · 封装 · 温度等级 · IP 搜索路径 · 源文件组织 引脚约束(Pin Planner) 差分对 / I/O Bank 电压 DDR4 专用引脚 · 时钟输入 CLKIN 时钟规划(.sdc) create_clock · create_generated_clock set_clock_groups · 跨时钟域处理 编译与验证 Fitter · Timing · Assembler .sof 下载 · SignalTap 典型时钟域与约束要点 sys_clk 100 MHz → 控制 / DMA / 寄存器 vid_clk 148.5 MHz → 1080p60 像素流 ddr_ref 200 MHz → 硬核控制器自动约束
建议在工程创建完成后立即执行一次“空工程编译”,确认器件支持、BSP 与 IP 库均可用,再逐步加入视频 IP。这样可以把环境问题与设计问题分开定位,避免后期排障时混淆。
Agilex 的引脚约束与时钟约束必须与 BSP 保持一致。若自行修改 DDR4 或收发器引脚,可能导致硬核无法校准,表现为下载后系统无响应。修改前务必核对开发板原理图与 BSP 文档。