二: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,防止按键时产生的尖峰脉冲 ...
最新文章
- 视频聊天创企Tribe获300万美元种子轮融资
- html2canvas 截图div_浏览器端网页截图方案详解
- 解决安装mysql的”A Windows service with the name MySQL already exists.“问题
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编框架 | PyCharm 中导入 Capstone 反汇编框架 )
- PandaOCR中文版+使用教程
- Mybatis字段模糊查询
- SQL 注入工具集合
- 动态规划 - 装配线调度问题
- sphinx的CJK分词
- 无人驾驶时代指日可待?2035年将取代传统汽车
- AMD:40年三个关键词
- java swing 组件渲染过程,swing组件介绍
- 机房工程主要施工方法和机房工程验收
- 乔任梁离世3个月, 徐璐狠心关评论只发了10条微博, 这一条令人心疼
- Mac安装PL2303驱动
- Ubuntu下用Emacs编写D语言程序
- 房子要室内设计了,先从讲装修的施工工艺开始!
- upnp 二级路由_下载宝作为二级路由折腾记-小白篇 - Padavan - 恩山无线论坛 - Powered by Discuz!...
- 如何根据系谱计算近交系数并保存
- UVM通信篇之一:TLM通信概论