【紫光同创国产FPGA教程】【PGC1/2KG第三章】键控彩灯实验例程

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

适用于板卡型号:

紫光同创PGC1/2KG开发平台(盘古1K/2K)

一:盘古1K/2K开发板(紫光同创PGC2KG开发平台)简介

盘古1/2K 开发板是一套基于紫光 FPGA 的开发套件,以紫光 Compa 系列PGC1KG-LPG100 / PGC2KG-LPG100 器件为核心,预留丰富的扩展 IO 及数码管、按键、LED 灯,为用户提供基本的硬件环境。

二:实验目的

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

2.选择一个按键作为控制输入,按下一次换一种显示效果,在8种效果中循环。

三:实验要求

1、实验平台:MES2KG开发板;

2、按键输入由K1输入,LED输出为LD1~LD4。

四:实验原理

实现框架如下:

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

2、需要设计一个输入控制模块及一个输出控制模块;

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

模块例化方式如下:

a.按键控制模块功能

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

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

内部功能处理:

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

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

b.按键消抖

消抖目的

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

实验原理

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

 

设计1 个20bit的计数器,其计数最大值为:N = 20’hC3500 = 20’d800000

最大计数值时,计时为:t= N*T = N/f = 800000/40M = 20ms;

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

实验源码设计

 

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

c.LED控制模块功能

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

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

功能处理注意事项:彩灯状态切换点,不同状态的切换时如何初始化;

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

顶层文件源码

按键控制模块 

 

 按键消抖

 

LED控制模块

 

 

六:实验现象

上电后下载完固件,默认LD1~LD4流水,每按下一次KEY1,彩灯状态切换一次,总共8种状态可供循环切换;

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值