跳到主要内容

实验 01:开发环境搭建与第一个工程

🛒 开发板: EK301 GW5A FPGA 开发板 芯片: GW5A-LV25UG324C1/10 (Arora V 系列)


一、实验目的

  1. 掌握 Gowin EDA 商业版的安装与工程创建流程。
  2. 理解 FPGA 开发全流程:设计输入 → 综合(Synthesis) → 布局布线(Place & Route) → 生成比特流 → 下载。
  3. 熟悉工程目录结构:src/top.v(源文件)、src/top.cst(约束文件)、build.tcl(构建脚本)。
  4. 能够通过综合报告了解 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 开发工具链能正常工作:

  1. 在 Gowin IDE 中创建一个新工程,选择正确的芯片型号。
  2. 编写一个最简单的 top.v——内部计数器翻转(不绑定任何 IO)。
  3. 运行综合(Synthesis),确认无 Error。
  4. 运行布局布线(Place & Route),确认能成功完成。
  5. 查看资源报告和引脚报告。

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

关键参数说明:

参数含义
-pnGW5A-LV25UG324C1/10GW5A 芯片完整型号
-device_versionC1器件版本(GW5A 用 C1,GW1N 用 C)
-force覆盖已存在的同名工程

2.5 运行步骤

方式一:IDE GUI 操作

  1. 打开 Gowin EDA V1.9.9,选择 File → New → FPGA Design Project
  2. 工程名填写 hello_fpga,路径选择 D:\2026\FPGA\EK301\CODE\exp_01_hello_fpga
  3. 器件选择:GW5ALV25UG324C1/10
  4. 新建 top.v 文件,添加到工程。
  5. 双击左侧流程面板中的 Synthesize 运行综合。
  6. 双击 Place & Route 运行布局布线。
  7. 查看报告:
    • 综合报告: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