- 2025-01-30
-
发表了主题帖:
【Tang Primer 25K 测评】3、高云IDE使用及PMOD-LEDx8模块点灯实验
本帖最后由 1nnocent 于 2025-1-29 21:51 编辑
高云官网可以下载通用指南,里面包含了各种资料,包括fpga使用的原语、IDE使用指南、约束指南等等。
一、设计思路
实现 LED 数组的动态闪烁效果。
模拟人呼吸的节奏,通过控制 LEDs 的亮度变化来达到“呼出”和“吸气”的效果。
支持多通道 LED 显示。
二、工程建立
打开Gowin软件,点击New Project...建立工程,并设置好工程名称和保存路径,这里可以勾选默认路径,下次打开可以不用再选择路径。
选择器件时选中GW5A-LV25MG121NES型号。
最后点击finish就能完成工程的建立。
三、代码编写
新建文件选择Verilog File。
pwm_gen模块:该模块用于产生pwm信号来驱动led实现呼吸灯效果,模块时钟默认50MHz,pwm一个周期为2秒,占空比变化2千次。以下为pwm_gen的代码。
module pwm_gen#(
parameter CYCLE = 50_000,
parameter STEP = 50
)(
input clk,
input rst,
input ena,
output pwm_out
);
reg [31:0] cycle_cnt;
reg [31:0] pwm_cnt;
reg pwm_flag;
wire pwm_inc;
always@(posedge clk)begin
if(rst)
cycle_cnt <= 'd0;
else if(ena)
cycle_cnt <= cycle_cnt >= CYCLE ? 'd0 : (cycle_cnt + 'd1);
else
cycle_cnt <= 'd0;
end
always@(posedge clk)begin
if(rst)
pwm_cnt <= 'd0;
else if(cycle_cnt >= CYCLE)
pwm_cnt <= pwm_cnt >= CYCLE ? 'd0 : (pwm_cnt + STEP);
else
pwm_cnt <= pwm_cnt;
end
always@(posedge clk)begin
if(rst)
pwm_flag <= 1'b1;
else
pwm_flag <= pwm_cnt >= CYCLE ? !pwm_flag : pwm_flag;
end
assign pwm_inc = cycle_cnt <= pwm_cnt;
assign pwm_out = pwm_flag ? pwm_inc : !pwm_inc;
endmodule
PMOD_LED_top模块:该模块为顶层模块,顶层模块例化了8个pwm_gen模块分别用于驱动8个led灯,每个灯的“呼吸”频率相同并且起点相互错开(第一个结束时第八个刚好开始),这样就可以实现具有流水灯效果的呼吸灯。以下为顶层模块的代码:
module PMOD_LED_top(
input clk,
input rst,
output [7:0]led
);
parameter LED_STEP = 6_250_000;
reg [7:0] ena;
reg [31:0] cnt;
always@(posedge clk)begin
if(rst)
cnt <= 'd0;
else if(cnt >= LED_STEP)
cnt <= 'd0;
else
cnt <= cnt + 'd1;
end
always@(posedge clk)begin
if(rst)
ena <= 'd1;
else if(cnt >= LED_STEP)begin
ena <= {ena[6:0],ena[0]};
end
else
ena <= ena;
end
genvar i;
generate
for(i=0;i<=7;i=i+1)
pwm_gen#(
.CYCLE (50_000 ),
.STEP (50 )
)pwm_gen(
.clk (clk ),
.rst (rst ),
.ena (ena[i] ),
.pwm_out (led[i] )
);
endgenerate
endmodule
管脚约束
IO_LOC "rst_n" H11;
IO_PORT "rst_n" PULL_MODE=DOWN DRIVE=OFF BANK_VCCIO=3.3;
IO_LOC "clk" E2;
IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3;
IO_LOC "led[7]" A11;
IO_LOC "led[6]" A10;
IO_LOC "led[5]" E11;
IO_LOC "led[4]" E10;
IO_LOC "led[3]" K11;
IO_LOC "led[2]" L11;
IO_LOC "led[1]" L5;
IO_LOC "led[0]" K5;
IO_PORT "led[7]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[6]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[5]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[4]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[3]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[2]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[1]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_PORT "led[0]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "rst" H10;
IO_PORT "rst" PULL_MODE=DOWN DRIVE=OFF BANK_VCCIO=3.3;
IO_LOC "clk" E2;
IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3;
四、编译
编译过程中发现有报错,检查了clk信号的约束语句没有问题,但就是报错了
最后在网上搜索了一番发现是IO复用没有配置好。如下配置后正常编译。
五、上板验证
烧写代码验证具有流水灯效果的呼吸灯如下:
[localvideo]55f1fc7002fba6b05e43569412ae64ae[/localvideo]
工程代码:
- 2025-01-29
-
回复了主题帖:
【Tang Primer 25K 测评】1、硬件开箱
walker2048 发表于 2025-1-29 21:39
PMOD也是支持I2C和SPI的,只是和常规淘宝模块接口区别比较大
我的意思是没有配iic和spi相关的扩展板,如果要学习iic和spi那就没有硬件环境了
-
发表了主题帖:
【Tang Primer 25K 测评】2、环境搭建
本帖最后由 1nnocent 于 2025-1-28 23:25 编辑
IDE安装过程用户手册中有介绍。
首先需要到官网下载安装包,广东高云半导体科技股份有限公司 ,本机是Windows系统所以选择For Win的版本。
下载完IDE软件压缩包后解压并双击进行安装。
点击next,再点击同意进行下一步安装。
之后Gowin和Gowin programmer都需要选上,其中的 Gowin 为 IDE 本体, 另一个 programmer 相关的是烧录软件。
选择安装路径后进行安装。
下一步不要更改任何东西,按照默认的点击Finish。
之后是安装驱动,之后一直点下一步,接受即可完成安装,桌面上显示Gowin_V1.9.11 (64-bit)图标便安装完成。
在licence过程中遇到了一点问题,就是这个开发板测评申请的是年终回炉的测评,已经接近年底了,现在(腊月廿八)才开始安装IDE,高云的工作人员都放假了,看网络上申请licence基本2个工作日就能拿到licence。就在以为测评要卡在licence上时这时候发现了一个帖子【高云】高云软件Gowin的license验证 - 高云 - 芯路恒电子技术论坛 - Powered by Discuz! 。可以通过修改本机物理地址的方式使用之前已经申请的licence。
但是....在这个帖子中没有找到licence,难道又要卡在licence这里了?最后发现这是个开发板的网站,该网站主页相应开发板的资料中可以找到licence。
最后成功添加licence,一波三折,看来年终回炉的测评要提前注意测评开发板使用到的IDE是否需要licence,需要的话趁早在放假前申请好licence以免影响测评进度。
licence安装完成之后使用官方提供的历程下载试下效果。
[localvideo]b2a997ef4ce54064976419a4c7148404[/localvideo]
- 2025-01-28
-
回复了主题帖:
旧手机你们一般怎么处理?
dcexpert 发表于 2025-1-28 11:36
安装termux、tailscale等app,作为随身服务器,非常方便。
怎么玩啊?有没有教程
-
回复了主题帖:
【Tang Primer 25K 测评】1、硬件开箱
wangerxian 发表于 2025-1-28 09:12
模块化开发板就是不错,节约成本,还可以任意搭配
是的,这个扩展板很好用
- 2025-01-27
-
发表了主题帖:
【Tang Primer 25K 测评】1、硬件开箱
Tang Primer 25K开发板收到了,板子非常小巧,看到这个板子让我想起了之前的ufun板。
首先来看下开发板主体,左边是本次测评的Tang Primer 25K 开发板,右边是之前的ufun开发板,两者相同的特点是都很小巧,大概三指这么大。如果说ufun是stm中最小巧的开发板,那么Tang Primer 25K 是FPGA中最小巧的开发板。
Tang Primer 25K是基于 GW5A-LV25MG121 设计的一款极小封装的核心板(23x18mm),虽然整体比较小巧,但是芯片资源还是不错的。
项目
参数
补充
FPGA 芯片
GW5A-LV25MG121
逻辑单元(LUT4)
23040
寄存器(FF)
23040
分布式静态随机存储器S-SRAM(bits)
180K
块状静态随机存储器B-SRAM(bits)
1008K
块状静态随机存储器数目B-SRAM(个)
56
乘法器(18x18 Multiplier)
28
锁相环(PLLs)
6
I/O Bank 总数
8
Flash
64Mbits NOR Flash
整体封装
2x60P BTB 核心板
普通IO
75
MIPI IO
4lane Data
该开发板分为核心板,Dock底板和6个扩展PMOD板。其中核心板仅仅只有一元硬币大小;Dock底板将核心板的IO引出并留有PMOD扩展板接口;另外还配备了6块PMOD接口的扩展板(两个LED扩展板、一个HDMI接口扩展板、一个SD卡扩展板、一个按键扩展板、一个数码管扩展板)。
LED扩展板:每块LED扩展板上有八个LED灯,学习开发板点灯必备。而且还配了两块LED扩展板,量大管饱了属于是。
HDMI接口扩展板:Tang Primer 25K 开发板虽然只有三指大小,但是加上这个HDMI扩展板后也能实现点亮显示器的功能。
SD卡扩展板:SD卡拓展板的加入让Tang Primer 25K开发板变得更加灵活,需要使用到SD卡时插入SD卡扩展板即可,并且该扩展板同样非常小巧;不需要SD的场景时也能取下来,腾出了宝贵的IO资源以用于其他地方。
按键扩展板:按键扩展板不仅只含有4个轻触按键,另外还带有4个拨码开关。
数码管扩展板:数码管扩展板配备两个7段数据管,两个不多也不少,静态数码管和动态数码管都能覆盖到,市面上有些开发板配备了多个数码管,个人觉得两个以上都没啥意义了就是数量上的差异还占空间。
总结:Tang Primer 25K 这块开发板给我的感觉是有优点也有一点点不足的地方。
优点:1、开发板整体很小巧,日常学习使用携带很方便;
2、配备的PMOD接口的扩展板很实用,在其他开发板上也能使用,学习完还能将这些扩展板拿掉自己添加需要的扩展;
缺点:1、一些常见的接口协议没有相应的外设,比如iic、spi等等,后续打算自己做一个iic接口的PMOD扩展板,手头刚好有一个iic协议的温度传感器。
- 2025-01-23
-
回复了主题帖:
【 EEWORLD陪你过大年,新年积分兑换盲盒收到啦!】
光这个屏幕就值了啊
-
回复了主题帖:
收到盲盒礼物:FSSDC-9B506-EK Easy Kit
wenyangzeng 发表于 2025-1-23 15:48
十多年前的软件平台现在找不到,玩不起来
只能拆个屏幕玩了,不知道还能不能找到驱动程序
-
回复了主题帖:
收到盲盒礼物:FSSDC-9B506-EK Easy Kit
我也开到这个了
- 2025-01-20
-
回复了主题帖:
【复刻瀚文键盘】7、键盘组装(完工)
Alohaq 发表于 2025-1-20 11:01
好奇扩展板您现在用来干什么呀?总觉得这玩意实际用起来很鸡肋
墨水屏纯好看一点,那个电机可以实现鼠标滚轮的功能
- 2025-01-19
-
回复了主题帖:
【测评入围名单(最后1批)】年终回炉:FPGA、AI、高性能MCU、书籍等65个测品邀你来~
个人信息确认无误,可以完成计划。
-
加入了学习《Verilog RTL编程实践》,观看 Verilog RTL编程实践 2 1
-
加入了学习《Verilog RTL编程实践》,观看 Verilog RTL编程实践 1
-
回复了主题帖:
【新年新挑战,任务打卡赢好礼!】第一批获奖名单公布
已确认
-
加入了学习《simulink仿真教学视频》,观看 建模与仿真的流程(一)
-
加入了学习《simulink仿真教学视频》,观看 simulink简介
-
加入了学习《利用MATLAB进行FPGA设计》,观看 在Simulink中对硬件进行建模
-
加入了学习《利用MATLAB进行FPGA设计》,观看 为什么要使用MATLAB和Simulink
-
加入了学习《如何设计FPGA-AXI总线》,观看 如何科学设计FPGA系列:Xilinx复位机制与跨时钟域处理
-
加入了学习《如何设计FPGA-AXI总线》,观看 如何科学的设计FPGA RTL代码的逻辑级数