二:FPGA导航按键控制LED
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相关推荐
- FPGA 双按键控制LED呼吸灯实现
FPGA &&双按键控制&&LED呼吸灯实现 文章目录 FPGA &&双按键控制&&LED呼吸灯实现 1.按键脉冲设计 1.1按键脉冲信 ...
- FPGA之按键控制LED
一.按键开关 1.按键开关(轻触开关):主要是指轻触式按键开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实 ...
- 03独立按键控制LED移动
51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...
- led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验
1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...
- 基于FPGA的两位按键控制LED数码管加减计数实验
两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...
- 奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED
奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江 ...
- Arduino程序设计(二) 按键控制LED灯
按键控制LED灯程序设计 前言 一.按键控制LED灯--内部上拉(基础) 二.按键控制LED灯--外部上拉(基础) 三.按键控制LED灯(进阶) 总结 参考文献 前言 本文主要介绍三种按键控制LED灯 ...
- FPGA(1)基础入门 -- 按键控制led灯
目录 效果说明 1.配置输入输出变量 2.变量赋值 3.配置引脚(输入输出变量) 代码 效果说明 key1按键按下,led1被点亮. key2按键按下,led2被点亮. 1.配置输入输出变量 inpu ...
- FPGA学习之按键控制led
按键控制led 设计要求:通过8个按键分别控制一个led的亮灭. 该实验有两个模块:按键缓存模块和由按键值控制led模块 按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲 ...
最新文章
- Linux time ls命令:用户态内核态分别占用多长时间
- 2、内核的配置和移植
- Python配置-virtualenv和conda的区别
- pool python 传参数_Python-爬虫-多线程、线程池模拟(urllib、requests、UserAgent、超时等)...
- 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度。
- Android日志[进阶篇]五-阅读错误报告
- PHP-线程安全与非线程安全版本的区别
- mp4文件如何转换为webm格式
- AutoCAD 2019 for Mac 汉化安装手册
- AxureRP实战(二)Banner轮播图交互(基础篇)
- 对List集合嵌套了map集合的排序
- 圣天诺SuperPro狗模拟视频语音教程
- 和菜鸟一起学产品之交互式设计
- Intellij IDEA里的md5验证
- 基于OFBiz的E-TICKET(在线咨询管理)模块
- tddl+diamond(一)
- 【aabb 7744】
- java通过反射调用方法_Java_通过反射调用类中的方法
- 32蜂鸣器天空之城代码_32篇SCI/EI论文、多项发明专利、本科生科研导师......这个华工青年,有担当!...
- HOW2J.CN--JAVA学习笔记