夜雨聆风学习资料网

ARTICLE · 992408

Gowin 云源软件入门教程(一)—— 建立工程

Gowin 云源软件入门教程(一)—— 建立工程

今天开始云源软件的使用教程,想要熟悉 FPGA 开发,基本的软件使用还是要熟练,Gowin IDE 难度不大,一天就能熟练使用。

第一期我们把先开发的整条流程走一遍:新建工程、选器件、写代码、综合、配引脚、加时钟约束,最后下载到板子上。

本教程使用的云源软件版本为 V1.9.12.03

一、准备工作

开始之前需要准备以下东西:

  • 已安装 Gowin 云源软件商业版(教育版一样);
  • 对应开发板及 JTAG 下载器;
  • 一块高云 FPGA 开发板

云源软件直接在高云官网下载安装:https://www.gowinsemi.com.cn/

安装很简单,这里就不赘述了,如果真的有需要,可以去看看 Sipeed 官网的安装教程

打开 Gowin 云源软件,下图就是云源软件的起始页。

Gowin FPGA Designer 起始页

Gowin 云源软件商业版需要 License,不过很好申请,直接在官网上申请即可,跟他们说买了高云的开发板进行学习就行

二、新建 FPGA 工程

首先点 New Project 来创建一个新工程。

1. 创建 FPGA Design Project

在新建窗口中选择 FPGA Design Project,单击“OK”。

选择 FPGA Design Project

2. 填写项目名称与保存位置

项目名填 led_blink,再选一个保存目录。向导会在这里建好工程文件、src 源码目录和实现目录。

填写工程名称与目录

3. 选择目标器件

器件型号必须和你开发板上的器件一致。这里我的开发板是:

项目
取值
Series
GW5AT
Device
GW5AT-60
Device Version
B
Package
UBGA225
Speed
C1/I0
Part Number
GW5AT-LV60UG225C1/I0

在下方列表中选中对应的 Part Number,再点“Next”。

选择 GW5AT-60 目标器件

4. 核对摘要并完成创建

最后看一眼项目名、路径和器件型号,没问题就点“Finish”。

核对工程与器件摘要

工程建好后,设计摘要页会列出工程文件位置和目标器件。后面如果忘记了芯片型号,也可以回到这里核对。

工程创建完成后的设计摘要

三、添加并编写 Verilog 源码

1. 新建 Verilog 文件

通过 File → New 新建文件,类型选 Verilog File

选择新建 Verilog 文件

文件名填 led_blink。记得勾选 Add to current project,否则文件写好了,综合时工程里却找不到它。

新建 led_blink.v 并加入工程

2. 编辑 Verilog 文件

这里我们写一个简单的 LED 闪烁程序:

module led_blink(input            clk,input            rst_n,output reg       led);reg [31:0] led_cnt;always @(posedge clk or negedge rst_n) beginif (!rst_n) begin            led_cnt <= 1'b0;end else begin            led_cnt <= (led_cnt == 50_000_000 - 1) ? 0 : led_cnt + 1;endendalways @(posedge clk or negedge rst_n) beginif (!rst_n) begin            led <= 1'b0;end else begin            led <= (led_cnt == 50_000_000 - 1) ? ~led : led;endendendmodule
编写 led_blink.v

四、综合与布局布线

保存源码,切到左侧 Process 标签,直接双击运行 Synthesize。完成后看下方 Message 面板,确保没有 error。

截图中综合已经完成,信息栏显示当前顶层模块为 led_blink

运行综合并确认顶层模块

当前项目只有一个文件,软件会自动将其设置为顶层,如果项目中有多个文件,最好去 Hierarchy 标签页手动设置顶层文件

五、添加引脚与时序约束

1. 配置 I/O 管脚

打开 Tools → FloorPlanner,在 I/O Constraints 标签页完成每个引脚的物理约束,约束完成记得保存。截图中的配置如下:

端口
方向
Location
I/O Type
rst_n
input
H12LVCMOS33
led
output
E6LVCMOS33
clk
input
G12LVCMOS33
在 FloorPlanner 中设置 I/O 约束

2. 创建时钟约束

打开 Timing Constraints Editor,将 clk 端口约束为 25 MHz 时钟:

  • Clock name:clk_25m
  • Object:[get_ports {clk}]
  • Frequency:25 MHz
  • Period:40 ns
创建 25 MHz 时钟约束

保存后,编辑器会写入等效的 SDC 约束:

create_clock -name clk_25m -period 40 -waveform {0 20} [get_ports {clk}]
确认时钟约束已写入

加完约束后运行 Place & Route。这一步要让工具按真实引脚和时钟要求实现设计的布局布线。

六、生成文件并下载到开发板

布局布线通过后,双击打开 Programmer

从 Process 面板打开 Programmer

Programmer 会列出待下载的 .fs 文件。点 USB Cable Setting 选择下载器端口。截图中使用 USB Debugger A,软件已经检测到设备。

设置 USB 下载器

保存设置,确认文件和操作类型。这里的 SRAM Program 是 JTAG 在线下载:下载后能立刻运行,但是开发板一断电,配置就没了。

点工具栏的 Program/Configure 按钮,等输出窗口提示成功。板上的 LED 应该已经开始按设定周期翻转。

七、自定义文本编辑器

前面也看到了,Gowin 的内置文本编辑器实在是不怎么好看,也不好用,我们可以关联自己习惯的文本编辑器,

在 Tools → Options → External Editor 中添加你喜欢的文本编辑器,我喜欢用 VS Code,添加完成后记得勾选 Always Use External Editor

将 VS Code 配置为外部编辑器

以后从工程中打开 Verilog 文件会直接唤起你关联的文本编辑器。改完保存,再回 Gowin 跑综合和布局布线。

总结

本期只是简单的走了一遍 Gowin IDE 的完整开发流程,也能看出这个软件其实很简单,甚至有点简单过头了,简单到没有那么好用,不过对与入门的同学来说是非常友好的,可以将更多精力放在 FPGA 开发本身上,其实云源软件是自带中文的,但是它的翻译是不完整的!还处于中英混杂的阶段,所以教程我就直接用英文界面做了。

后续会详细解释每个功能页面的用法,以及其中的一些坑。

相关学习资料

返回首页浏览学习资料