2568|0

866

帖子

3

TA的资源

版主

楼主
 

03、安路SparkRoad国产FPGA测评【学习篇】按键开关控制LED [复制链接]

  本帖最后由 1nnocent 于 2022-7-20 23:14 编辑

    安路SparkRoad开发板的第二个官方例程为五个按键控制16个LED灯珠,每个按键控制三个LED灯珠,其中一个按键需要控制四个LED灯珠,刚好16个。首先大致看了一下官方的历程,一共分为两个模块debounce(按键脉冲产生模块)、rst_n(扫描周期产生模块)。顶层文件为(buttons_led)。

    首先顶层模块(buttons_led),输入端口为系统时钟(24M)、系统复位、五个按键(key)、16个LED灯珠(led)。顶层文件的输入和输出端口需要管脚约束,也就是将时钟、复位、五个按键、16个LED灯珠都对应FPGA的具体引脚。

    其次是debounce(按键脉冲产生模块):该模块首先是一个计数器cnt,每个时钟记一个数,上限为19'h75601,转换成十进制数为480770,计数到上限值时时间经过20ms。这里可以反向计算一下系统的时钟,system_clk = 1 /  (20ms / 480770)=24_038_500大约为24H;其次是每20ms记录当前按键的状态(key_sec);最后是将当前转态寄存寄存器key_sec_pre,该寄存器表示按键上一次扫描的状态,并由assign key_pulse = ~key_sec & key_sec_pre ;产生按键按下的脉冲,key_sec为按键当前状态,key_sec_pre为按键上次扫描状态,按键没有按下时为高电平,按下后为低电平,现在假设按键按下,也就是当前状态为低电平(key_sec为低),按键按下的前一个状态为高(key_sec_pre为高)所以key_pulse为高,产生按键按下脉冲。

以下为按键和LED的原理图(按键按下时为低电平,FPGA输出低电平时LED灯亮):

   

    再次是rst_n(扫描周期产生模块):该模块产生FPGA控制LED灯亮灭的扫描时钟。该模块内部定义了一个4位的计数器,每技术16次产生一个扫描信号,这个扫描信号差点和按键的扫描信号混淆了,该模块的扫描时间比按键的扫描时间小,目的是用来扫描按键脉冲的变化,用来控制LED亮灭,个人认为可以直接使用系统时钟来扫描按键脉冲,控制LED亮灭,这里感觉有点多此一举。自己写的时候可以试试使用系统时钟进行扫描。

    突然发现一个问题,板子好像没搞复位按键,原理图找了一遍也没发现复位按键,不懂为啥要省这个复位按键。。。

    好吧,找了十分钟确实没有发现复位按键,倒是在各个历程里面发现了一个“可疑”的文件“rst.v”,看看他的代码:定义了一个4位的计数器cnt,计数满之后就没有让它重新计数了

(cnt <= cnt;),同时将rst_n置一,这就是在产生一个复位信号,相比有按键的复位唯一的缺点就是不能自己再手动复位了。这样的复位,涨知识了。。。没有复位按键的开发板,这个rst_n的作用恐怕只有一个,就是给寄存器赋初值。

  • module rst_n
  • (
  • input wire clk,
  • output reg rst_n
  • );
  • reg[3:0] cnt;
  • always@(posedge clk)
  • begin
  • if(cnt == 4'hf)
  • cnt <= cnt;
  • else
  • cnt <= cnt + 1'b1;
  • end
  • always@(posedge clk)
  • begin
  • if(cnt == 4'hf)
  • rst_n <= 1'b1;
  • else
  • rst_n <= 1'b0;
  • end
  • endmodule

      【自己写的时候可以试试使用系统时钟进行扫描】前文中是我理解错了,这历程就是用的系统时钟对按键脉冲进行的扫描,没注意到“rst_n.v”里面没有让cnt_重新计数。

    这按键16数据手册上说是复位按键,实际试了好像并没有复位的作用,按下之后代码功能就擦除了。亚克力板装上之后也是将这个“复位按键”盖住了,按不到。

        改下功能,熟悉一下历程,功能改成五个按键,控制5个LED,以下为实现效果(背景音乐还挺合拍的,卡点很准),帖子内容不多,但还挺费时的:

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

点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
lcd 电视原理图

lcd 电视原理图

华为电信基础知识题库

电信基础知识题库 (以下题目可以按填空、判断或简答方式出题,也可以经过变化成为选择题) 1、语音信号数字化过程中,采用的是 ...

基于LM3S8962以太网的简单TFTP的服务器学习系列一

基于LM3S8962以太网的简单TFTP的服务器学习系列一 Stellaris 以太网控制器由一个完全集成的媒体访问控制器(MAC)和网络物 ...

分享BeagleBone简易Xds100V2

参考BeagleBone 原理图,去掉cpld,单ft2232 制作xds100V2,烧写beaglebone第五版程序, 制作成功。 所有原理图及烧写文件均在 ...

【Perf-V评测】流水灯&Verilog基本语法

本帖最后由 donatello1996 于 2021-2-19 20:21 编辑 春节放假在家有空的时候学习了一下VIVADO开发环境的基本使用和Verilog ...

【跑步姿势训练鞋】No.002-软件开发环境的建立

上一篇介绍了开箱的情况,这一片介绍一下软件开发环境的建立 由于本人习惯用IAR做开发,我就重点研究了一下IAR的环境搭建过程 ...

【i.MX6ULL】驱动开发7——按键输入捕获

本帖最后由 DDZZ669 于 2021-11-9 00:04 编辑 前面几篇文章,从最基础的寄存器点灯,到设备树点灯,再到GPIO子系统点灯, ...

SPWM逆变器输出电流有三次基波谐波,怎么去除

698782698783 载波频率20K左右,基波频率75HZ,测得输出电流总是有三次基波谐波在,请问下各位大神有无办法解决

第一次接触boost升压电路,使用xl6019,空载有电压,后面带载为啥直接短路了?

712638712637

【STM32U5A5ZJ开发板】DAC测试简单模式测试

STM32U5A5ZJ 的DAC增加很多的功能,甚至配合DMA可以实现复杂信号的输出,所以DAC的配置也较以前的单一的输出模式要复杂。本次测 ...

关闭
站长推荐上一条 1/9 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表