Quartus II 工程编译与 FPGA 下载流程记录

1. 工程简介

如需要代码联系博主。

本工程基于 QC-FPGA-C1 FPGA 开发板完成多外设控制系统设计,采用 VHDL 编写,顶层实体为 fpga_rs232_top。系统包含 UART 地址帧通信、LED 显示、蜂鸣器、数码管、电机、8×8 点阵以及 LCD1602 本地菜单控制等功能。

开发流程中,ModelSim 主要用于 RTL 功能仿真,Quartus II 主要用于工程综合、引脚分配、布局布线、时序分析以及生成 FPGA 下载文件。上一篇博客已经介绍了ModelSim 的使用,本文记录 Quartus II 中从打开工程到准备烧写开发板的基本流程。

2. 开发板与工程环境

本工程使用 QC-FPGA-C1 开发板,板载 Cyclone 系列 FPGA、48 MHz 晶振、USB-Blaster 下载接口、串口接口、LED、数码管、蜂鸣器、8×8 点阵、LCD1602 接口和矩阵按键等资源。

工程配置如下:

项目 内容
FPGA 系列 Cyclone
目标器件 EP1C3T144C8
顶层实体 fpga_rs232_top
开发软件 Quartus II 13.0.1
设计语言 VHDL
下载文件 .sof
固化文件 .pof


QC-FPGA-C1 开发板资源示意

3. Quartus II 的作用

FPGA 工程通常包含以下流程:

text 复制代码
编写 VHDL 代码
        ↓
ModelSim 功能仿真
        ↓
Quartus II 综合与布局布线
        ↓
引脚分配和时序分析
        ↓
生成 SOF/POF 文件
        ↓
下载到 FPGA 开发板

ModelSim 关注代码逻辑是否正确,例如 UART 是否正确接收数据帧、命令是否能控制对应模块。Quartus II 则负责把 HDL 代码转换为 FPGA 内部真实的逻辑资源,并生成可以下载到芯片中的配置文件。

4. 打开 Quartus 工程

Quartus 工程文件一般以 .qpf 结尾。启动 Quartus II 后,通过以下路径打开工程:

text 复制代码
File → Open Project

选择工程目录下的 .qpf 文件即可。工程打开后,左侧 Project Navigator 会显示当前工程结构,包括源文件、顶层模块和编译相关信息。


Quartus 工程打开界面

常见工程文件说明:

文件类型 作用
.qpf Quartus 工程文件
.qsf 工程设置、器件选择、引脚分配
.vhd VHDL 源代码
.sdc 时序约束文件
.sof JTAG 临时下载文件
.pof 配置芯片固化文件

5. 检查器件型号和顶层实体

工程打开后,需要先确认器件型号和顶层实体。器件型号错误会导致引脚、资源和下载文件不匹配。

检查路径:

text 复制代码
Assignments → Device

本工程目标器件为:

text 复制代码
EP1C3T144C8

顶层实体为:

text 复制代码
fpga_rs232_top

工程设置中对应内容如下:

tcl 复制代码
set_global_assignment -name FAMILY Cyclone
set_global_assignment -name DEVICE EP1C3T144C8
set_global_assignment -name TOP_LEVEL_ENTITY fpga_rs232_top


Quartus 器件型号设置

顶层实体必须是整个系统的入口模块。如果误把某个子模块设为顶层,编译虽然可能继续进行,但最终端口和引脚会与实际工程不一致。

6. 检查源文件列表

Quartus 只会编译已经添加到工程中的源文件。即使文件存在于文件夹中,如果没有加入工程,也不会参与综合。

检查路径:

text 复制代码
Project → Add/Remove Files in Project

本工程主要源文件包括:

text 复制代码
uart_rx_even.vhd
uart_tx_even.vhd
uart_frame_protocol.vhd
command_controller.vhd
key_matrix_2x2.vhd
menu_controller.vhd
lcd1602_menu.vhd
led_patterns.vhd
buzzer_ctrl.vhd
seg7_scan.vhd
motor_ctrl.vhd
dot_matrix_ctrl.vhd
fpga_rs232_top.vhd


Quartus 工程源文件列表

如果编译时出现实体未定义、端口不存在或模块找不到等错误,需要优先检查源文件是否添加完整。

7. 引脚分配

FPGA 顶层端口需要和开发板原理图中的实际引脚对应。引脚分配可以在 .qsf 文件中查看,也可以使用 Pin Planner 图形界面查看。

打开路径:

text 复制代码
Assignments → Pin Planner

部分引脚分配示例:

tcl 复制代码
set_location_assignment PIN_16 -to clk
set_location_assignment PIN_17 -to rst_n

set_location_assignment PIN_92 -to uart_rxd
set_location_assignment PIN_59 -to uart_txd

set_location_assignment PIN_26 -to LedOut[0]
set_location_assignment PIN_11 -to LedOut[1]
set_location_assignment PIN_10 -to LedOut[2]

set_location_assignment PIN_36 -to Bell

set_location_assignment PIN_97 -to lcd_e
set_location_assignment PIN_99 -to lcd_rw
set_location_assignment PIN_100 -to lcd_rs


Pin Planner 引脚分配界面

引脚分配需要与开发板原理图保持一致。若下载后外设没有反应,首先应检查时钟、复位、串口、LED、LCD 等端口是否绑定到正确引脚。

8. 编译工程

确认源文件、器件型号、顶层实体和引脚分配后,可以开始编译。

操作路径:

text 复制代码
1.Processing → Start Compilation
2.或者直接点击三角箭头

Quartus 编译主要包括以下步骤:

  • Analysis & Synthesis:分析 HDL 代码并综合逻辑;
  • Fitter:将逻辑放置到 FPGA 具体资源中;
  • Assembler:生成下载文件;
  • TimeQuest Timing Analyzer:进行时序分析;
  • EDA Netlist Writer:生成仿真或外部工具相关文件。


Quartus 启动工程编译

编译完成后,需要查看 Flow Summary。重点关注 Flow Status 是否为 Successful,以及是否存在 Error。

本工程编译结果示例:

text 复制代码
Flow Status               Successful
Top-level Entity Name     fpga_rs232_top
Family                    Cyclone
Device                    EP1C3T144C8
Total logic elements      1,167 / 2,910
Total pins                53 / 104

逻辑单元使用率约为:

1167 2910 × 100 % ≈ 40 % \frac{1167}{2910} \times 100\% \approx 40\% 29101167×100%≈40%

引脚使用率约为:

53 104 × 100 % ≈ 51 % \frac{53}{104} \times 100\% \approx 51\% 10453×100%≈51%

说明工程可以放入目标 FPGA,资源占用处于合理范围。


Quartus 编译成功结果

9. 生成下载文件

编译成功后,Quartus 会在 output_files 目录下生成下载文件。常见文件包括:

text 复制代码
RS232_FPGA_Controller_V4_0.sof
RS232_FPGA_Controller_V4_0.pof

.sof.pof 的区别如下:

文件 用途 掉电后是否保留
.sof 通过 JTAG 下载到 FPGA 不保留
.pof 写入配置芯片 保留

调试阶段通常使用 .sof 文件,下载速度快,便于反复修改和验证。程序稳定后,如果需要上电自动运行,再考虑使用 .pof 固化到配置芯片。


Quartus 输出文件目录

10. 打开 Programmer

编译成功并生成 .sof 文件后,可以打开 Programmer 准备下载。

操作路径:

text 复制代码
Tools → Programmer

Programmer 中需要确认以下内容:

  • Hardware Setup:选择 USB-Blaster;
  • Mode:选择 JTAG;
  • File:添加 .sof 文件;
  • Device:确认器件型号;
  • Program/Configure:勾选下载选项;
  • Start:开始下载。


Quartus Programmer 主界面

如果没有连接开发板,Hardware Setup 中可能显示 No Hardware。这种情况说明 Quartus 当前没有检测到下载器,需要连接 USB-Blaster 并给开发板供电后再操作。

11. 选择 USB-Blaster

连接开发板后,在 Programmer 中点击:

text 复制代码
Hardware Setup

Currently selected hardware 中选择:

text 复制代码
USB-Blaster [USB-0]

如果列表为空,常见原因包括:

  • USB-Blaster 未连接;
  • 开发板未供电;
  • USB-Blaster 驱动未安装;
  • USB 线接触不良;
  • JTAG 接口方向接反;
  • Quartus 未正确识别下载器。

下载器识别正常后,Programmer 才能通过 JTAG 与 FPGA 通信。

12. 添加 SOF 并下载

如果 Programmer 没有自动加载文件,可以手动添加:

text 复制代码
Add File → 选择 output_files 目录下的 .sof 文件

添加后勾选:

text 复制代码
Program/Configure

然后点击:

text 复制代码
Start

下载完成后,Progress 会显示 100%。此时 .sof 文件已经通过 JTAG 写入 FPGA,开发板开始运行当前设计。


Programmer 添加 SOF 文件

完整下载流程如下:

text 复制代码
开发板供电
        ↓
连接 USB-Blaster
        ↓
打开 Programmer
        ↓
选择 USB-Blaster
        ↓
Mode 选择 JTAG
        ↓
添加 SOF 文件
        ↓
勾选 Program/Configure
        ↓
点击 Start

13. 常见问题

13.1 Hardware Setup 显示 No Hardware

说明 Quartus 没有检测到下载器。需要检查 USB-Blaster 是否连接、开发板是否供电、驱动是否安装,以及 JTAG 接口是否连接正确。

13.2 点击 Start 后显示 Failed

一般优先检查硬件链路,而不是直接怀疑代码。常见原因包括下载器未选择、开发板未上电、SOF 文件与器件不匹配、未勾选 Program/Configure、JTAG 接触不良等。

13.3 编译成功但开发板无现象

需要检查以下内容:

  • 时钟引脚是否正确;
  • 复位信号是否释放;
  • 引脚分配是否和原理图一致;
  • 外设是否需要跳线;
  • 串口波特率和校验位是否正确;
  • LED、数码管、LCD 是否存在低电平有效的情况。

编译成功只说明工程能够映射到 FPGA,并不代表外设连接和控制电平一定完全正确。

14. 下载前检查清单

下载前可以按以下顺序检查:

text 复制代码
1. 工程 qpf 能正常打开
2. 顶层实体为 fpga_rs232_top
3. 目标器件为 EP1C3T144C8
4. VHDL 源文件已全部加入工程
5. 引脚分配已完成
6. 工程编译结果为 Successful
7. output_files 中存在 sof 文件
8. Programmer 模式为 JTAG
9. Hardware Setup 选择 USB-Blaster
10. 勾选 Program/Configure 后点击 Start

15. 总结

Quartus II 负责将 VHDL 工程综合并映射到 FPGA 硬件中,是 FPGA 开发流程中连接代码和实物开发板的关键工具。工程在 ModelSim 中完成逻辑仿真后,需要在 Quartus II 中完成器件选择、源文件管理、引脚分配、综合编译、时序分析和下载文件生成。

调试阶段一般使用 .sof 文件通过 JTAG 下载到 FPGA,适合反复修改和验证;需要掉电后自动运行时,再使用 .pof 文件进行固化。通过 Quartus 的编译报告、资源占用信息和 Programmer 下载流程,可以较完整地确认工程是否具备上板运行条件。

相关推荐
OIDCAT1 小时前
国产USB转千兆网卡芯片CH398 VLAN应用
网络·嵌入式硬件·国产·usb转千兆网卡
Industio_触觉智能2 小时前
RK3576开发板GPIO驱动入门教程,基于触觉智能开发板教学-上
嵌入式硬件·硬件工程·智能硬件·开发板·gpio·瑞芯微·rk3576
A小调的码农2 小时前
给垃圾平板“一生E本” 装新系统—————Armbian 编译 KYX T7Y (RK3326) 踩坑全记录
linux·嵌入式硬件
执迷不悟8233 小时前
51单片机--通信/串口
单片机·嵌入式硬件·51单片机
捷瑞电子工坊3 小时前
电赛入门实战:基于MSPM0G3507(MOG3507)的GPIO点灯实验
单片机·嵌入式硬件·mspm0g3507·电赛入门
西城微科方案开发3 小时前
激光测距仪PCBA方案开发
单片机·嵌入式硬件
KaifuZeng3 小时前
通信与接口协议面试问题汇总一
单片机·嵌入式硬件·面试·通信与接口协议
科芯创展4 小时前
XZ75011S电源供电8.0-100V平均电流模式的LED驱动集成电路
单片机·嵌入式硬件
千寻xun4 小时前
视频图像学习笔记
fpga开发