【紫光同创盘古PGX-MINI-4K教程】——(盘古PGX-MINI-4K开发板/PGC4KD-6ILPG144第三章)​键控彩灯实验例程

时间:2024-03-17 08:52:27

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com)


适用于板卡型号:

紫光同创PGC4KD-6ILPG144开发平台(盘古PGX-MINI-4K)

仅需一根TypcC线,插上即用,轻松操作。兼容下载器的一体版,配套资料丰富, 快速掌握国产FPGA!

一:盘古PGX-MINI-4K开发板简介

盘古 PGX-MINI 4K 开发板是一套基于紫光同创 compa 系列 PGC4KD-6ILPG144 芯片为核心的开发套件,支持主自加载双启动功能,集成板载 jtag 调试接口, 预留两组 20PIN 扩展 IO、数码管、按键、led 灯等硬件资源,为用户提供基本的 开发环境。

二:实验目的 

1、设计 8 种彩灯效果,可通过按键切换。

2、设置普通按键作为控制输入,按下一次换一种显示效果,在 8 种效果中循环。

三:实验要求

1、实验平台:盘古 PGX-MINI 4K 开发板;

2、按键输入由 KEY0~KEY7 输入,LED 输出为 LED1~LED4。

四:实验原理

实现框架如下:

1、顶层实现按键切换 LED 的彩灯状态;

2、需要设计一个输入控制模块及一个输出控制模块; 这个实验带大家将多个模块整合成为一个工程,涉及到的知识点有子模块设 计、模块例化;子模块的设计主要是依据功能定位,确定输入输出,再做具体的 设计;

模块例化方式如下: 

按键控制模块功能 

接收按键输入信号。统计按键按下次数,由于彩灯模式是 8 种,计数统计范 围是 0~7 循环,将计数结果传递给 LD 控制模块;

根据需求输入信号有:时钟,按键;输出信号有:彩灯控制信号;

内部功能处理:

内部需要对按键信号做消抖处理;

按键触发计数器(计数值输出)改变继而调整彩灯的状态;

按键消抖 

消抖目的

机械式弹片按键,在按下或松开时会有机械抖动,导致在按下或松开时按键 的状态不稳定,在按键信号状态快速的变化时,使用按键作为输入信号,如果采 集了按键抖动时的状态,会导致工程运行出现不可控的变化,故而我们需要将这 段时间的抖动信号给滤除掉,故此实验称之为按键消抖;

实验原理

前后抖动时间约为 5~10ms,前后抖动共在 20ms,以最大 20ms 做设计,使 用计数到 N 归零的计数器来做时间刻度计时;以 20ms 的间歇对按键输入信号进 行采集,从而避开按键的抖动引起的信号快速变化; 

 设计 1 个 20bit 的计数器,其计数最大值为:N = 20’hF4240 = 20’d1000000 最大计数值时,计时为:t= N*T = N/f = 1000000/50M = 20ms;

注:对于计数器完成计时功能在 LED 灯控制中已有详细讲解,需要关注 输入时钟频率以及目标计时时长,从而得到计数器的计数范围;

实验源码设计

此种方法有一定误触发概率出现,大家可在此基础上做补充完善;思路如下 (扩展实现):

这个 module 的设计中新增加一种语法:parameter ;在 verilog 中 parameter 是对常量进行定义,将 parameter 定义放在 module 的接口中是可进行模块传递, 传递方式请看后面模块例化;

控制模块功能 

8 种显示状态由按键传递过来的计数控制切换,LED 的显示状态完整后进入下一模式初始化。根据需求可得到如下信息:

输入信号:时钟,彩灯模式控制信号(按键);输出信号:12bit 位宽的 LED 控制信号;

五:实验源码设计(完整源码查看 demo 源文件)

顶层文件源码

按键控制模块 

按键消抖 

LED 控制模块 

 

六:实验现象

上电后下载完固件,每按下一次普通按键(KEY0~KEY7 均可),彩灯状态 切换一次,总共 8 种状态可供循环切换;