【国产FPGA高云GW1N-4系列开发板测评】——3、点个灯hello_led
[复制链接]
本帖最后由 gs001588 于 2021-12-18 13:39 编辑
【国产FPGA高云GW1N-4系列开发板测评】——3、点个灯hello_led
软件总是从“hello world!”开始,那么硬件的开始就是“hello led”——俗称“点灯灯”。
如何开始一个FPGA工程,其实在安装完云源IDE后,在安装目录下有配套的文档。文档有三种语言——中文、英文、日文,身为国人还是习惯看中文。文档路径为“D(你安装的盘符):\Gowin\Gowin_V1.9.8.01\IDE\doc\CN”。
具体如果开始FPGA设计呢,可以参考第一个文档“SUG100-2.6_Gowin云源软件用户指南.pdf”中的第4章节“4 云源使用”(从27页开始)。估摸着您也不愿意看文档,那么观察一下本贴也可以。
打开云源IDE,默认会同时打开开始页“Start Page”,快速开始中点“New Project...”
输入工程名“hello_led”,路径可以直接输入,或通过浏览指定。
在GWIN-4、GWIN-4B、GWIN-4D三个系列中都能找到器件“GW1N-LV4LQ144C6I5”,一定要选择我们开发板对应的“GWIN-4B”
通过多个参数过滤后,选择器件“GW1N-LV4LQ144C6I5”,下一步
点结束"Finish",完成创建工程。
创建好的工程框架,暂时还没有文件。
现在使用Verilog的人比较多,但也有像我这样习惯用VHDL的老顽固,创建个VHDL文件。
创建文件名“hello_led”.
创建了空白文件“hello_led.vhd”,需要自行码入功能代码。
“hello_led.vhd”文件内容如下:
--*******************************************************************************
--*-------------------------- file ---------------
--* name: hello_led.vhd
--* ver : A
--* date:2021-12-9
--*------------------------------------------------
--*******************************************************************************
---------- LIB ----------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
----------ENTITY -------------------------------------------------------------
ENTITY hello_led IS
PORT (
-------------------------------------------------------------------------------
--系统全局时钟 CLK
-------------------------------------------------------------------------------
CLK_50M: IN STD_LOGIC; --50MHz系统时钟
-------------------------------------------------------------------------------
--系统全局复位 RESET
-------------------------------------------------------------------------------
NRESET: IN STD_LOGIC;
-------------------------------------------------------------------------------
--系统状态指示灯
-------------------------------------------------------------------------------
LED: OUT STD_LOGIC_VECTOR(4 DOWNTO 1));
-------------------------------------------------------------------------------
END hello_led;
-----------ARCHITECTURE-------------------------------------------------------
ARCHITECTURE MY_CODE OF hello_led IS
-----------------------------------------------------------------------
SIGNAL COUNTER: integer range 0 to 50000000;
--**********************************************************************************
--*****
--**********************************************************************************
BEGIN
LED <= (OTHERS => '0') WHEN (COUNTER < 25000000) ELSE
(OTHERS => '1');
PROCESS(NRESET,CLK_50M)
BEGIN
IF (NRESET = '0') THEN
COUNTER <= 0;
ELSIF (RISING_EDGE(CLK_50M)) THEN
IF (COUNTER < 50000000-1) THEN
COUNTER <= COUNTER + 1;
ELSE
COUNTER <= 0;
END IF;
END IF;
END PROCESS;
END MY_CODE;
作为一个测试工程,代码比较简单,无需过多解释。一个计数器 和 LED状态翻转。
切换到“Process”窗口,在“Synthesize”项点右键,选择“Run”执行,对工程代码综合,为分配管脚做准备。
综合完后,前面变绿色对号,并且在控制台窗口也有相应提示。
在资源分配器“FloorPlanner”项点右键,选择“Run”执行。
弹出资源分配器窗口,切换到IO约束“IO Constraints”,在“Location”处要填管脚号。
为此,需要对照用户手册“DK_MINI_GW1N-LV4LQ144C6I5_V1.1.pdf”或原来图,进行时钟、复位、LED管脚的分配。
分配好管脚后,保存设置。
同时在工程下也可以看到.cst文件,可以双击打开,是纯文本的管脚分配信息。之后也可以照猫画虎直接在.cst文件中修改或添加管脚分配信息。
“Process”窗口,进行布局布线,在“Place & Route”项右键弹出菜单中,有4项可以选择,您喜欢哪项选哪项。
布局布线完成,“Place & Route”前面变绿色对号。双击“Program Device”打开编程器窗口编程器件。
工程已经默认自动设置了一些相应选项,.fs文件即为要给FPGA在线下载的目标文件。
将开发板通过USB线缆与上位机USB口连接,并打开通电开关。
第一次使用编程器,可能需要对USB下载器进行设置。
打开“USB Cable Setting”,点“Query”查询已连接的下载器,如果有多个硬件下载器连接,需要选择开发板对应的下载器,保存设置。
给FPGA在线SRAM程序下载目标配置文件.fs,下载过程有进度条提示。
下载完成,有相应信息提示。
程序运行效果见下图,4个LED同时亮灭交替闪烁。(gif图片灯闪烁较快,实际亮灭间隔时间为1s)
|