3. 开发环境搭建与 Quartus Prime Pro 工程创建

Agilex 5 属于 Intel 新一代中端 FPGA 产品线,其器件架构、收发器与硬核 IP 都要求使用 Quartus Prime Pro 版本进行开发,Standard 版本并不支持 Agilex 5 器件。因此本章的第一件事不是写代码,而是把工具链装对、装全,并把工程骨架搭起来。整个环境可以理解为三层:底层是 Quartus Prime Pro 主程序,中间是 Agilex 5 器件支持包(Device Support),上层是工程与约束文件。三者缺一,编译都会在早期阶段失败。

一、安装 Quartus Prime Pro 与器件支持包

Quartus Prime Pro 采用“主程序 + 独立器件包”的安装方式。主程序安装包体积相对可控,但默认不包含所有器件族,需要在安装器中勾选 Agilex 5 对应的器件支持。以 Quartus Prime Pro 24.x 为例,安装流程如下:

  1. 从 Intel/Altera 官方下载页面获取 Quartus Prime Pro Edition 安装器(Linux 为 .run,Windows 为 .exe)。
  2. 运行安装器,选择安装目录,例如 Linux 下 /opt/altera/24.1,Windows 下 D:\altera\24.1。路径中避免空格与中文,否则后续脚本调用容易出错。
  3. 在器件选择页面勾选 Agilex 5 器件族。若只做逻辑验证,可只装对应密度档;若涉及收发器或硬核处理器,建议整族安装,避免后期补装。
  4. 同时勾选 Agilex 5 Device Support 与 Quartus Prime Pro Programmer,前者提供器件模型与布线资源,后者用于下载配置。
  5. 安装完成后,运行 quartus_sh --version 确认版本,并在 quartus 图形界面中通过 Tools → Install Devices 检查 Agilex 5 是否已注册。
若安装后打开工程提示 “device not supported”,通常是器件包未装或版本与主程序不匹配。器件包版本号必须与 Quartus 主版本一致,例如 24.1 主程序只能配 24.1 器件包。

安装完成后建议做一次最小验证:新建一个空工程,器件选 Agilex 5 的一个具体型号(如 A5ED065BB32AE4S),不写任何逻辑直接编译。若能在 Analysis & Synthesis 阶段通过,说明器件模型与工具链已就绪。这一步能提前暴露许可证、器件包、路径等环境问题,比在复杂工程里排查要省事得多。

二、创建 Agilex 5 工程

Quartus Prime Pro 提供图形化 New Project Wizard,也支持用 Tcl 脚本批量建工程。对于教学与团队协作,推荐先用图形界面走一遍,理解各字段含义,再用脚本固化。创建时的关键选项包括:

  • 工程目录与名称:目录名与工程名保持一致,例如 agilex5_led_blink,便于脚本引用。
  • 顶层实体名:与顶层模块名一致,例如 top,Quartus 默认以顶层实体名匹配文件。
  • 器件选择:Family 选 Agilex 5,再选具体器件型号与速度等级。型号中的封装、引脚数、速度等级会直接影响引脚约束与时序结果。
  • EDA 工具:仿真可选 ModelSim/Questa,综合与实现由 Quartus 自身完成,一般无需第三方综合器。

工程建立后,目录中会出现 .qpf(工程文件)与 .qsf(设置与约束文件)。.qsf 是工程的核心配置载体,器件型号、引脚分配、时序约束引用、编译选项都记录在其中。理解 .qsf 的结构,比记住图形界面按钮更重要。

# 典型 .qsf 片段(示例)
set_global_assignment -name FAMILY "Agilex 5"
set_global_assignment -name DEVICE A5ED065BB32AE4S
set_global_assignment -name TOP_LEVEL_ENTITY top
set_global_assignment -name VERILOG_FILE top.v
set_location_assignment PIN_A12 -to clk_50m
set_location_assignment PIN_B7  -to led[0]
set_instance_assignment -name IO_STANDARD "1.8 V" -to clk_50m

三、引脚约束与编译流程

引脚约束把设计中的端口映射到器件物理引脚,并指定 I/O 标准。Agilex 5 的 I/O Bank 电压、差分对、专用时钟引脚都有明确规则,约束写错会导致编译报错或上板无输出。常用做法是在 Pin Planner 中分配,再让工具写回 .qsf。约束时需注意三点:时钟输入应尽量使用专用时钟引脚;同一 Bank 的 I/O 标准电压要一致;差分信号要成对分配。

编译流程分为 Analysis & Synthesis、Fitter、Assembler、TimeQuest 时序分析四个阶段。综合把 RTL 转为门级网表,Fitter 完成布局布线,Assembler 生成 .sof 配置文件,时序分析给出建立/保持余量。判断编译是否成功,不能只看 “Compilation successful”,还要看时序报告中的 Slack 是否为正值。

Agilex 5 工程创建与编译链路 ① 工具环境 Quartus Prime Pro 24.1 Agilex 5 Device Support Programmer / 许可证 版本必须一致 ② 工程骨架 .qpf 工程文件 .qsf 设置与约束 top.v 顶层 RTL 器件型号 / 顶层实体 ③ 引脚与时序约束 Pin Planner 分配 I/O 标准 / Bank 电压 SDC 时钟约束 差分对 / 专用时钟脚 ④ 编译流程(Compilation Flow) Analysis & Synthesis RTL → 门级网表 Fitter 布局布线 Assembler 生成 .sof TimeQuest 时序分析 Slack ✓ 通过判据 编译无 Error,Slack ≥ 0 引脚分配无冲突,I/O 标准匹配 生成 .sof 可下载 ✗ 常见失败点 器件包缺失 / 版本不匹配 引脚重复或 Bank 电压冲突 时序 Slack 为负

上板验证时,用 Programmer 加载 .sof 到 Agilex 5 器件。若使用 JTAG,需确认下载电缆驱动已安装、器件链被正确识别。对于需要掉电保持的场景,还要把 .sof 转换为 .pof 并写入配置 Flash。至此,从工具安装到工程编译、下载的完整链路才算闭合。

Agilex 5 的 I/O 电压与 Bank 划分比早期器件更严格,引脚约束阶段若把 1.8 V 与 3.3 V 信号放在同一 Bank,编译会直接报错。建议在 Pin Planner 中先按 Bank 分组规划,再逐条分配。

为便于快速复查,下面给出一份环境与工程检查清单,可在每次新建工程时逐项确认:

检查项期望状态确认方式
Quartus 版本Pro 版,支持 Agilex 5quartus_sh --version
器件支持包与主程序同版本Tools → Install Devices
工程器件型号与实际芯片一致查看 .qsf 中 DEVICE
顶层实体与顶层模块名一致TOP_LEVEL_ENTITY
引脚约束无重复、Bank 电压一致Pin Planner 报告
时序结果Slack ≥ 0TimeQuest 报告
配置文件生成 .sofoutput_files 目录

把上述流程走通一次后,后续工程可以直接复制 .qsf 模板并替换器件型号与引脚,大幅减少重复劳动。环境搭建看似琐碎,但它决定了后面所有实验能否顺利编译与上板,值得在开始阶段就做扎实。