高云软件开发环境搭建好以后,进行正式的FPGA编程前,必须使用安装好的Gowin 软件,结合高云GW5AT-LV60 开发套件,对软件和硬件功能进行一次测试实验。
这个测试实验,最简单方便的方法,就是对开发套件上的一颗LED进行一次控制。如果LED能按照代码的控制逻辑进行亮暗的输出,就说明软件和开发套件的功能正常,可以准备开始后面更复杂的实验了。

一、GoWin FPGA开发环境搭建
在以前的实验中,我们已经完成了软件安装,在获得相应的license文件后,软件可以正常启动。
Gowin 软件安装后,在桌面上可以找到这个图标,它是Gowin公司发布的FPGA代码编译工具。

这个工具的执行文件,名称为,gw_ide.exe,如果安装时没有修改,它默认的安装位置一般在,C:\Gowin\Gowin_V1.9.11.02_x64\IDE\bin\。
另外,在电脑的启动-程序里,可以找到Gowin和Gowin Programmer这两个图标。

Gowin Programmer是Gowin公司发布的烧录用的工具。
Gowin软件 gw_ide.exe运行后,出现下面的界面,

过一会后,出现软件的起始界面,

在这个界面里,我们可以从菜单选项, Help-About ,确认目前使用的Gowin软件版本。

通过菜单选项, Help-Index , 可以看到软件里备注的一些Index 信息的说明。这些说明对于在使用Gowin FPGA软件进行代码编写,编译和烧录的过程中,遇到问题进行分析时,会有所帮助。

下面是Help-Index的一个例子,

其内容结构为,
①Index编号
②Warning 信息的说明
③Instance 举例
④Action处理方法
二、使用Gowin软件新建一个LED控制的程序
1、新建项目(工程)
在Gowin网站里,关于如何新建一个工程,编写代码,对FPGA进行编程的步骤,有不少介绍的资料。可以参考Gowin官网里的一些信息,熟悉Gowin FPGA编程的过程。

以下步骤,新建一个LED控制的代码工程。

在Gowin软件的起始界面里,点击 Quick Start 里面的 New Project

按照界面提示,
Create a FPGA design project.
You will be able to add or create RTL sources, run synthesis, place & route, and program your device.
点击OK,出现下面的页面

把其中的工程名称改成LED_Blink,自己选择一个文件夹作为工程文件保存的路径,

2、选择器件型号,选择Device
点击Next,出现Select Device的页面,

上面出现了一大串芯片的Part Number。这时,我们要根据开发套件上实际使用的FPGA芯片来选择芯片Part Number,必须保证选择的Part Number与实际使用的芯片一致。
检查我们使用开发套件,从芯片上标记的丝印可知,使用的芯片为, GW5AT-LV60UG225C2/I1。因此在软件里选择Device Part Number 为GW5AT-LV60UG225C2/I1。

为了更快的找到对应的FPGA 芯片,可以参考下图,先设定芯片的系列、Package、Speed 等信息,快速的找到对应的型号。

顺便说明一下,开发板上使用的FPGA芯片版本为B。
选中该芯片后,点击Next,出现项目的信息总结,

点击Finish

3、加载源文件
点击Open,可以找到项目工程文件的存放路径,在工程路径下的src目录文件夹里,还没有任何的文件,

因此,在菜单选项里,点击New,选择Files-Verilog File, 准备创建Verilog HDL File 代码。

选择Verilog的文件名为LED_Blink,选择时将 Add to Current Project 选上。

点击OK后,进入了Verilog 文件编辑界面,

刚新建时,这是一个空文件。因此我们输入的LED_Blink.v文件的内容,
module LED_Blink (
input wire clk,
input wire rst_n,
output reg led
);
parameter CLK_FREQ = 50_000_000;
50_000_000
parameter BLINK_FREQ = 1;
parameter COUNTER_MAX = CLK_FREQ / (2 * BLINK_FREQ) - 1;
reg [31:0] counter;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
counter <= 32'd0;
end
else if (counter >= COUNTER_MAX) begin
counter <= 32'd0;
end
else begin
counter <= counter + 1'b1;
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
led <= 1'b0;
end
else if (counter >= COUNTER_MAX) begin
led <= ~led;
end
end
endmodule

三、综合、物理约束、
1、物理约束floorplaner:
物理约束floorplaner的功能是指定IO Pin 引脚。
在进行FPGA编译以前,还需要对管脚资源进行分配,点击FloorPlanner。第一次点击时,会出现下面的界面,

表示项目工程里,还没有CST 文件,需要新建CST文件,进行物理约束。
物理约束时,管脚的连接可以参考看原理图,确认在开发套件的板子上,系统时钟、复位和LED灯输出分别接了FPGA的哪个引脚。
例如,为了配置CLK的引脚,我们从原理图上,找到系统时钟的电气信号网络名称,如下,


开发套件的原理图在这两个文件,

点击Package View, 根据CLK、LED和RST所接的Pin脚,将CLK、LED和RST信号拖到对应的Pin脚上,


配置完成管脚后,记得点击一下Save。
在LED_Blink.cst文件内容如下,

三、布局布线
LED_Blink这个项目的工程比较简单,直接点击一下Place&Route
这个步骤,软件就会直接完成布局布线。

四、FPGA烧录
点击Gowin 编程工具的Programmer后,出现,

点Save后,再继续点Program/Configure, 出现下面的界面并开始对FLASH芯片进行SRAM烧录。

因为只是实验,不需要掉电后保持,所以在烧录时,选SRAM模式即可,掉电后,临时烧录到FPGA SRAM里的内容会丢失。
按照代码的内容,LED开始1秒1次的闪烁,说明软件和开发套件开始了运行。后面我们可以开始进行更复杂的FPGA开发。