384|3

859

帖子

3

TA的资源

版主

楼主
 

【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复用没有配置好。如下配置后正常编译。  

 

 

五、上板验证

    烧写代码验证具有流水灯效果的呼吸灯如下:

播放器加载失败: 未检测到Flash Player,请到安装
b8ef9ebd5797c368f1c0a3e7318e15aa

工程代码:

PMOD_LED_breath.rar (668.42 KB, 下载次数: 0)

 

查看本帖全部内容,请登录或者注册

最新回复

不是汇编,FPGA只能用Verilog或者VHDL去写。FPGA是纯硬件实现的,不像单片机软件的运行逻辑   详情 回复 发表于 5 天前
点赞 关注
 
 

回复
举报

6688

帖子

9

TA的资源

版主

沙发
 

这个直接有例程吗?看着好像汇编的写法

点评

不是汇编,FPGA只能用Verilog或者VHDL去写。FPGA是纯硬件实现的,不像单片机软件的运行逻辑  详情 回复 发表于 5 天前
有例程但是我没看自己写的,用的是Verilog  详情 回复 发表于 2025-2-1 08:49
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

859

帖子

3

TA的资源

版主

板凳
 
秦天qintian0303 发表于 2025-2-1 08:23 这个直接有例程吗?看着好像汇编的写法

有例程但是我没看自己写的,用的是Verilog

 
 
 

回复

252

帖子

2

TA的资源

纯净的硅(初级)

4
 
秦天qintian0303 发表于 2025-2-1 08:23 这个直接有例程吗?看着好像汇编的写法

不是汇编,FPGA只能用Verilog或者VHDL去写。FPGA是纯硬件实现的,不像单片机软件的运行逻辑

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表