紫光同创FPGA入门指导:键控流水灯——紫光盘古系列50K开发板实验教程(2) - FPGA开发者技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

Mill 关注 私信
[文章]

紫光同创FPGA入门指导:键控流水灯——紫光盘古系列50K开发板实验教程(2)

一、实验目的

由 USER_BUTTON1 按键输入,切换 USER_LED1~ USER_LED8 的输出效果。

二、实验原理

实现框架如下:

image.png

(1)顶层实现按键切换 LED 的流水灯状态;

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

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

模块例化方式如下:

image.png

*按键控制模块功能

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

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

内部功能处理:

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

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

image.png

*按键消抖模块

image.png

前后抖动时间约为 5~10ms,取按键抖动区间开始标识,持续 10-20ms 后标识归零,在抖动区间内输出保持,非消抖区间,按键状态输出。

*LED控制模块功能

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

输入信号:时钟,流水灯模式控制信号;出信号:8bit 位宽的 LED 控制信号;功能处理注意事项:流水灯状态切换点,不同状态的切换时如何初始化;

三、实验源码设计

*顶层文件源码

image.png

*按键控制模块

image.png

*按键消抖模块

image.png

*LED控制模块

image.png

image.png

四、实验现象

每按下一次 KEY1,LED 灯状态切换一次,总共三种 LED 模式供循环切换;

LED 模式一:从高位到低位的 LED 流水灯;

LED 模式二:隔一亮一交替点亮;LED 模式三:从高位到低位暗灯流水;

更多实验教程敬请关注!

更多回帖

×
发帖