FPGA按键控制LED

  • 软件
  • 芯片
  • 功能
  • 代码
    • 代码解释

软件

软件使用的是ISE14.6(因为穷没买7系列,劝大家买个7系列的板子,这个软件装着还挺费事,不如Vivado好用,且6和7软件不通用)

芯片

芯片使用的是spartan6系列的开发板

功能

本来想控制流水灯,其中的按键状态没有完全读懂,也没完全写明白,结果只写出来个控制LED,虽然这样控制LED性价比不高,但我写着写着就瓢了·····

代码

哭辽,又是自己死抠的一天,脑阔疼,又菜又爱玩,,,

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date:    14:58:12 11/13/2021
// Design Name:
// Module Name:    keyRunLed
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
////                1
//              ^
//      3<<   00  >>4
//              v
//              2
//
module keyRunLed(input extrst,input extclk,input pushKey,input [4:0] singelKey,output reg [7:0] led);//按键消抖程序
wire keyMode;               //定义按键触发标志位
reg [3:0] keyValueReg;      //定义按键键值寄存器assign keyMode = singelKey[0] & singelKey[1] & singelKey[2] & singelKey[3] & singelKey[4];//按键按下时的状态量,按键按下为低电平,是&的关系,因此,当一个或者多个按键按下时,keyMode为0,以此来检测按键是否按下//按键键值寄存器处理
always @ (posedge extclk or negedge extrst)if(!extrst) keyValueReg <= 4'b1111;else keyValueReg <= {keyValueReg[2:0],keyMode};//keyValueReg每次左移装载keyModewire keyPressUp = keyValueReg[3] & ~keyValueReg[2];//按键抬起标志位(按键抬起为高电平)
wire keyPressDn = ~keyValueReg[3] & keyValueReg[2];//按键按下标志位(按键按下为低电平)reg [19:0] cnt;always @ (posedge extclk or negedge extrst)if(!extrst) cnt <= 20'd0;else if(keyPressUp || keyPressDn) cnt <= cnt + 1'b1;//按键按下进入计时else if(cnt < 20'hfffff) cnt <= cnt + 1'b1;//若计时未满,继续else cnt <= 20'd0;reg [4:0] keyValue[1:0];always @ (posedge extclk or negedge extrst)if(!extrst)beginkeyValue[0] <= 5'b11111;keyValue[1] <= 5'b11111;endelse if(cnt == 20'hfffff)            //beginkeyValue[0] <= {singelKey[0],singelKey[1],singelKey[2],singelKey[3],singelKey[4]};keyValue[1] <= keyValue[0];//键值传递endelse ;wire [4:0] keyFinVaule = keyValue[1] & ~keyValue[0];//这个我不确定,回去再想想reg ledEnable;always @ (posedge extclk or negedge extrst)if(!extrst) ledEnable <= 1'b0;else if(!pushKey) ledEnable <= 1'b1;else ledEnable <= 1'b0;reg [19:0] delay;always @ (posedge extclk or negedge extrst)if(!extrst) delay <= 20'd0;else delay <= delay + 1'b1;always @ (posedge extclk or negedge extrst)if(!extrst) led <= 8'b1111_1110;else if(delay == 24'hfffff)beginif(keyFinVaule[0] & ledEnable) led[1] <= ~led[1];else if(keyFinVaule[1] & ledEnable) led[2] <= ~led[2];else if(keyFinVaule[2] & ledEnable) led[3] <= ~led[3];else if(keyFinVaule[3] & ledEnable) led[4] <= ~led[4];else if(keyFinVaule[4] & ledEnable) led[5] <= ~led[5];else ;endelse;
endmodule

代码解释

reg [4:0] keyValue[1:0];

定义一个 两个五位的寄存器类型参数
前面的[4:0]代表定义参数的位数,后面的[1:0]代表是keyValue[0]和keyValue[1],类似数组

本人小白,请各位大佬指正

二:FPGA导航按键控制LED相关推荐

  1. FPGA 双按键控制LED呼吸灯实现

    FPGA &&双按键控制&&LED呼吸灯实现 文章目录 FPGA &&双按键控制&&LED呼吸灯实现 1.按键脉冲设计 1.1按键脉冲信 ...

  2. FPGA之按键控制LED

    一.按键开关 1.按键开关(轻触开关):主要是指轻触式按键开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实 ...

  3. 03独立按键控制LED移动

    51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...

  4. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  5. 基于FPGA的两位按键控制LED数码管加减计数实验

    两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...

  6. 奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED

    奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江 ...

  7. Arduino程序设计(二) 按键控制LED灯

    按键控制LED灯程序设计 前言 一.按键控制LED灯--内部上拉(基础) 二.按键控制LED灯--外部上拉(基础) 三.按键控制LED灯(进阶) 总结 参考文献 前言 本文主要介绍三种按键控制LED灯 ...

  8. FPGA(1)基础入门 -- 按键控制led灯

    目录 效果说明 1.配置输入输出变量 2.变量赋值 3.配置引脚(输入输出变量) 代码 效果说明 key1按键按下,led1被点亮. key2按键按下,led2被点亮. 1.配置输入输出变量 inpu ...

  9. FPGA学习之按键控制led

    按键控制led 设计要求:通过8个按键分别控制一个led的亮灭. 该实验有两个模块:按键缓存模块和由按键值控制led模块 按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲 ...

最新文章

  1. Linux time ls命令:用户态内核态分别占用多长时间
  2. 2、内核的配置和移植
  3. Python配置-virtualenv和conda的区别
  4. pool python 传参数_Python-爬虫-多线程、线程池模拟(urllib、requests、UserAgent、超时等)...
  5. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度。
  6. Android日志[进阶篇]五-阅读错误报告
  7. PHP-线程安全与非线程安全版本的区别
  8. mp4文件如何转换为webm格式
  9. AutoCAD 2019 for Mac 汉化安装手册
  10. AxureRP实战(二)Banner轮播图交互(基础篇)
  11. 对List集合嵌套了map集合的排序
  12. 圣天诺SuperPro狗模拟视频语音教程
  13. 和菜鸟一起学产品之交互式设计
  14. Intellij IDEA里的md5验证
  15. 基于OFBiz的E-TICKET(在线咨询管理)模块
  16. tddl+diamond(一)
  17. 【aabb 7744】
  18. java通过反射调用方法_Java_通过反射调用类中的方法
  19. 32蜂鸣器天空之城代码_32篇SCI/EI论文、多项发明专利、本科生科研导师......这个华工青年,有担当!...
  20. HOW2J.CN--JAVA学习笔记

热门文章

  1. 【Linux】安装yum源
  2. 天猫9月上旬规则变动合集
  3. 仿生软体机器人就业咋样_用这个软体机器人来摘水果,你觉得怎么样?
  4. vue中监听页面,禁止点击浏览器返回按钮返回
  5. 【JAVA】条件判断语句合集(源代码实例,入门参考)
  6. 原生javascript实现图片轮播
  7. Kratos Quick Start
  8. cs231n训练营学习笔记(3)
  9. Qt/C++编写物联网管理平台41-自动清理早期数据
  10. mvn Fatal error compiling: java.lang.IllegalAccessError