2. Quartus开发环境搭建

Quartus Prime 是 Intel(原 Altera)FPGA 的官方集成开发环境,工业通信与边缘控制工程中常用的 Cyclone IV、Cyclone V、Cyclone 10、Arria 10 等器件都在其支持范围内。本节以 Cyclone IV E 系列为例,完整走通“安装—器件库—建工程—引脚约束—编译”这条链路,让后续的协议实现、时序约束和板级调试有一个可靠的起点。

一、版本选择与安装

Quartus Prime 分为 Lite、Standard、Pro 三个版本。Lite 版免费、无需 License,支持 Cyclone IV/V/10 等主流低成本器件,是教学与中小规模工业控制项目的首选;Standard 版支持较老的器件系列与更多 IP;Pro 版面向 Stratix、Arria 等高端器件,对内存和磁盘要求更高。工业通信网关、协议转换器一类项目通常选用 Lite 版即可。

安装时建议选择“自定义”而非“全部安装”,只勾选目标器件族,可显著减少磁盘占用。以 Quartus Prime Lite 20.1 为例,安装包约 1.5 GB,若勾选 Cyclone IV E、Cyclone V、Cyclone 10 LP 三个器件族,安装后占用约 8~12 GB;若全选所有器件,占用可超过 40 GB。安装路径避免中文和空格,例如使用 D:\intelFPGA_lite\20.1,否则部分脚本和 IP 生成工具可能报路径错误。

安装完成后,Quartus 会同时安装 ModelSim-Altera(或 Questa Intel FPGA Starter)用于仿真、Nios II EDS 用于软核开发。若只做纯逻辑设计,可暂不安装 Nios II,后续需要时再补装。

二、器件库配置与 License

器件库(Device Support)决定了 Quartus 能对哪些芯片进行综合、布局布线和编程。安装时若漏选器件,可在安装器中补装,或通过“Tools → Install Devices”添加。判断器件库是否可用的方法:新建工程时在 Device 页面能否找到目标型号,例如 EP4CE10F17C8(Cyclone IV E,10K 逻辑单元,FBGA-256 封装,C8 速度等级)。

Lite 版对 Cyclone 系列无需 License;若使用 Standard/Pro 版或某些 IP 核,需要配置 License 文件。License 通过环境变量 LM_LICENSE_FILE 或 Quartus 的“Tools → License Setup”指定,路径同样不要含中文。工业项目中若使用 Ethernet、PCIe 等加密 IP,务必在工程初期就确认 License 覆盖范围,避免后期返工。

三、工程创建

通过“File → New Project Wizard”创建工程,关键填写项如下:

  • 工程目录:建议每个工程独立目录,如 D:\fpga\industrial_gateway,不要放在 Quartus 安装目录下。
  • 工程名与顶层实体名:两者通常保持一致,例如 industrial_gateway。顶层实体名必须与顶层模块名完全相同,否则编译报“top-level entity not found”。
  • 器件选择:按实际硬件选择,例如 Cyclone IV E / EP4CE10F17C8。
  • EDA 工具:仿真工具选 ModelSim-Altera,格式选 Verilog HDL 或 VHDL,与时序分析工具保持一致。

工程创建后,目录中会出现 .qpf(工程文件)和 .qsf(设置文件)。.qsf 是纯文本,记录了器件、引脚、时序约束等所有设置,适合纳入 Git 版本管理;.qpf 只记录工程名和版本,冲突时容易处理。

四、引脚约束

引脚约束把设计中的端口映射到 FPGA 实际管脚,是“代码能跑”到“板子能跑”的关键一步。约束写在 .qsf 中,格式为:

set_location_assignment PIN_23 -to clk_50m
set_location_assignment PIN_25 -to rst_n
set_location_assignment PIN_101 -to uart_rx
set_location_assignment PIN_103 -to uart_tx
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk_50m
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart_tx

引脚号必须来自目标板原理图,不能凭经验猜测。工业现场常用 3.3 V LVTTL/LVCMOS 电平;若外接 5 V 器件,需确认 FPGA 引脚是否支持 5 V 容忍,或加电平转换。时钟输入建议分配到专用时钟引脚(CLK 引脚),否则会引入较大抖动。未使用的引脚应在“Assignments → Device → Device and Pin Options → Unused Pins”中设为“As input tri-stated”,避免悬空输出造成干扰。

引脚约束错误是工业项目最常见的“编译通过但板子不工作”原因。上板前务必用 Pin Planner 或 .qsf 逐条核对引脚号、电平标准和方向。

五、编译流程与结果判读

Quartus 的完整编译(Full Compilation)包含分析综合、适配(Fitter)、汇编、时序分析四个阶段。点击“Processing → Start Compilation”后,可在 Compilation Report 中查看各阶段结果。关键判读点:

  • Analysis & Synthesis:是否有语法错误、推断出的寄存器/乘法器数量是否合理。
  • Fitter:引脚是否全部成功分配,有无“pin has no location assignment”警告。
  • Timing Analyzer:查看 Fmax、Setup/Hold Slack。Slack 为负表示时序不满足,需优化逻辑或加约束。
  • Resource:LE、寄存器、RAM、PLL 占用率,一般建议不超过 80%,留出布线余量。

编译成功后生成 .sof(SRAM Object File),通过 USB-Blaster 下载到 FPGA;若需固化到配置芯片,还需生成 .pof(Programmer Object File)。下载前在 Programmer 中确认 JTAG 链能识别到器件 ID,例如 EP4CE10 的 ID 为 0x020F10DD。

Quartus Prime 工程链路:从安装到上板 ① 安装与器件库 Quartus Prime Lite 20.1 勾选 Cyclone IV E / V 路径不含中文与空格 Lite 版免 License ② 新建工程 工程名 = 顶层实体名 industrial_gateway 器件 EP4CE10F17C8 生成 .qpf / .qsf ③ 引脚约束 set_location_assignment PIN_23 → clk_50m IO_STANDARD 3.3-V 未用引脚 tri-stated ④ 全编译 综合 → 适配 → 汇编 → 时序 生成 .sof / .pof USB-Blaster 下载 编译四阶段与关键判读点 Analysis & Synthesis 语法错误 / 寄存器推断 RTL 是否合理 Fitter 适配 引脚是否全部分配 布线拥塞 / 资源占用 Assembler 汇编 生成 .sof 编程文件 生成 .pof 固化文件 Timing Analyzer Fmax / Setup Slack Slack ≥ 0 才满足时序 上板前检查与结果判读 ✓ 通过 Slack ≥ 0,资源 < 80%,JTAG 识别 ID ⚠ 警告 引脚未分配 / 时钟非专用脚 / 资源偏高 ✗ 失败 Slack < 0 / 顶层实体名不匹配 / 引脚冲突

六、常见问题与排查

工程搭建阶段的高频问题集中在三类。第一类是“顶层实体找不到”,多因工程名与顶层模块名不一致,或文件未加入工程;在 Project Navigator 中确认 Files 列表包含顶层文件即可。第二类是“引脚未分配”,编译能过但下载后无功能,需回到 Pin Planner 检查每个端口是否有 location。第三类是“时序不满足”,Slack 为负,常见于跨时钟域未做同步、组合逻辑过长或时钟约束缺失;可先加 create_clock 约束,再考虑流水线拆分。

建议在工程目录下维护一份 pin_assignment.csv,字段包括信号名、FPGA 引脚、方向、电平标准、对应外设,与原理图和 .qsf 三方对照。这样在板级调试或换板时,能快速定位是约束问题还是硬件问题,而不是在综合日志里反复翻找。

完成本节后,你应当能够独立完成:安装 Quartus Prime Lite 并确认目标器件可用;创建工程并正确设置顶层实体与器件;用 .qsf 完成引脚与电平约束;执行全编译并读懂 Compilation Report 中的资源、引脚和时序结果;生成 .sof 并通过 USB-Blaster 下载验证。