实验 01:开发环境搭建与第一个工程
🛒 开发板: EK301 GW5A FPGA 开发板 芯片: GW5A-LV25UG324C1/10 (Arora V 系列)
一、实验目的
- 掌握 Gowin EDA 商业版的安装与工程创建流程。
- 理解 FPGA 开发全流程:设计输入 → 综合(Synthesis) → 布局布线(Place & Route) → 生成比特流 → 下载。
- 熟悉工程目录结构:
src/top.v(源文件)、src/top.cst(约束文件)、build.tcl(构建脚本)。 - 能够通过综合报告了解 FPGA 资源使用情况(LUT、FF、BRAM)。
二、实验过程
2.1 硬件概览
本实验无需连接任何外设,仅需确认以下开发环境就绪:
| 项目 | 说明 |
|---|---|
| 芯片 | GW5A-LV25UG324C1/I0,约 25K LUT、BGA324 封装 |
| 系统时钟 | 50MHz 有源晶振,连接引脚 T9 |
| JTAG 调试器 | 板载 CH32V305 USB-JTAG,USB-C 连接 PC |
| IDE 版本 | Gowin EDA V1.9.9 商业授权版(非 Education 版!) |
| IDE 路径 | C:\Gowin\Gowin_V1.9.9_x64\IDE\bin\gw_sh.exe |
⚠️ 重要提示:GW5A 系列芯片不支持 Education 版 IDE。请确认你安装的是商业授权版,并且 License 在有效期内。如果使用 Education 版,
create_project时会报can't find device: GW5A-LV25UG324C1/10。
2.2 设计思路
本实验的目标是不写任何外设驱动逻辑,仅验证 FPGA 开发工具链能正常工作:
- 在 Gowin IDE 中创建一个新工程,选择正确的芯片型号。
- 编写一个最简单的
top.v——内部计数器翻转(不绑定任何 IO)。 - 运行综合(Synthesis),确认无 Error。
- 运行布局布线(Place & Route),确认能成功完成。
- 查看资源报告和引脚报告。
2.3 工程目录结构
EK301 全部实验统一采用以下目录结构:
exp_01_hello_fpga/ ← 实验根目录
├── src/
│ ├── top.v ← Verilog 源文件
│ └── top.cst ← 引脚约束文件(本实验可为空)
├── build.tcl ← gw_sh.exe 自动化构建脚本
└── GUIDE.md ← 本指导书
2.4 TCL 构建脚本
以下是实验01的 TCL 构建脚本(build.tcl),展示了 GW5A 工程的最小配置:
set prj_dir "D:/2026/FPGA/EK301/CODE/exp_01_hello_fpga"
set prj_name "hello_fpga"
create_project -name ${prj_name} -dir "${prj_dir}" \
-pn GW5A-LV25UG324C1/I0 -device_version A -force
add_file -type verilog "${prj_dir}/src/top.v"
add_file -type cst "${prj_dir}/src/top.cst"
set_option -top_module hello_fpga
run syn ;# 综合
run pnr ;# 布局布线
exit
关键参数说明:
| 参数 | 值 | 含义 |
|---|---|---|
-pn | GW5A-LV25UG324C1/10 | GW5A 芯片完整型号 |
-device_version | C1 | 器件版本(GW5A 用 C1,GW1N 用 C) |
-force | — | 覆盖已存在的同名工程 |
2.5 运行步骤
方式一:IDE GUI 操作
- 打开 Gowin EDA V1.9.9,选择
File → New → FPGA Design Project。 - 工程名填写
hello_fpga,路径选择D:\2026\FPGA\EK301\CODE\exp_01_hello_fpga。 - 器件选择:
GW5A→LV25→UG324→C1/10。 - 新建
top.v文件,添加到工程。 - 双击左侧流程面板中的
Synthesize运行综合。 - 双击
Place & Route运行布局布线。 - 查看报告:
- 综合报告:
impl/gwsynthesis/hello_fpga_syn.rpt.html - P&R 报告:
impl/pnr/hello_fpga.rpt.txt
- 综合报告:
方式二:命令行构建
# 在 git-bash 中执行(注意使用 Windows 风格路径)
"C:/Gowin/Gowin_V1.9.9_x64/IDE/bin/gw_sh.exe" build.tcl
⚠️
gw_sh.exe是 Windows 原生程序,不识别 MSYS 风格的/d/...路径。在build.tcl中所有路径必须使用 Windows 风格:"D:/2026/..."。
方式三:通过 Gowin MCP 工具
如果你配置了 Hermes 的 Gowin MCP Server,也可以直接在聊天中让 AI 帮你创建工程和运行构建。
三、实验现象
| 步骤 | 预期结果 | 验证方法 |
|---|---|---|
| 综合 (Syn) | 无 Error,RPT 显示 LUT/FF 使用量 | 查看 *_syn.rpt.html |
| 布局布线 (P&R) | 无 Error,生成 *.fs 比特流文件 | 查看 impl/pnr/ 目录 |
| 报告检查 | 资源使用 < 1%(几十个 LUT) | P&R 报告的 Resource Usage Summary |
如果综合/P&R 出现报错,常见原因:
| 错误信息 | 可能原因 | 解决方法 |
|---|---|---|
can't find device | 使用了 Education 版 IDE | 安装商业授权版 |
| License 过期 | 商业版 License 到期 | 续期或重新申请 |
ERROR (CT1113) | CST 文件引脚格式错误 | GW5A 使用裸数字(如 T9),不带 IO 前缀 |
四、掌握知识点
| 知识点 | 说明 | 在本实验中的体现 |
|---|---|---|
| FPGA 开发流程 | 设计输入 → 综合 → 布局布线 → 比特流 → 下载 | 走通了 Syn + P&R 全流程 |
| 综合(Synthesis) | 将 Verilog 代码转为门级网表 | 综合报告中的 LUT/FF 统计 |
| 布局布线(P&R) | 将网表映射到具体芯片引脚和逻辑单元 | 引脚报告中的物理引脚分配 |
| CST 约束文件 | 定义引脚位置、IO 电平标准 | 最小化的 CST 文件模板 |
| GW5A 器件特性 | 25K LUT、BGA324、硬核 MC/D-PHY | 工程配置中的芯片型号选择 |
附录:源码
top.v
// EK301 实验01: 开发环境搭建 — 最小化 Verilog 顶层
// 芯片: GW5A-LV25UG324C1/10
// 功能: 内部计数器,不绑定任何外设,仅验证工具链
module hello_fpga (
input wire clk // 50MHz (T9)
);
reg [25:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
end
endmodule