按键控制led

设计要求:通过8个按键分别控制一个led的亮灭。

该实验有两个模块:按键缓存模块和由按键值控制led模块

按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲影响按键值。

由按键值控制led模块:采用case语句,一一对应控制led的亮灭。

顶层代码:

module keyled(clk,rst_n,key,led);

input clk;

input rst_n;

input [7:0]key;

output [7:0]led;

//二级缓存按键数据

reg [7:0]key_r0,key_r1;

always @(posedge clk or negedge rst_n)

if(!rst_n)begin

key_r0 <= 8'd0;

key_r1 <= 8'd0;

end

else begin

key_r0 <= key;

key_r1 <= key_r0;

end

reg [7:0]led_r;

always @(key_r1)begin

case(key_r1)

8'b1111_1110:led_r = 8'b1111_1110;

8'b1111_1101:led_r = 8'b1111_1100;

8'b1111_1011:led_r = 8'b1111_1000;

8'b1111_0111:led_r = 8'b1111_0000;

8'b1110_1111:led_r = 8'b1110_0000;

8'b1101_1111:led_r = 8'b1100_0000;

8'b1011_1111:led_r = 8'b1000_0000;

8'b0111_1111:led_r = 8'b0000_0000;

default:led_r = 8'b1111_1111;

endcase

end

assign led = led_r;

endmodule

测试文件:除了clk,rst_n信号外,还设置了8+1种不同的key值(最后一种是乱序的按键),以便观察led。

代码:

`timescale 1ns/1ns

`define clk_period 20

module keyled_tb;

reg clk;

reg rst_n;

reg [7:0]key;

wire [7:0]led;

keyled keyled(

.clk(clk),

.rst_n(rst_n),

.key(key),

.led(led)

);

initial clk=1;

always#(`clk_period/2)clk=~clk;

initial begin

rst_n=0;

key=0;

#(`clk_period*20+1);

rst_n=1;

#`clk_period;

key=8'b1111_1110;

#(`clk_period*10);

key=8'b1111_1101;

#(`clk_period*10);

key=8'b1111_1011;

#(`clk_period*10);

key=8'b1111_0111;

#(`clk_period*10);

key=8'b1110_1111;

#(`clk_period*10);

key=8'b1101_1111;

#(`clk_period*10);

key=8'b1011_1111;

#(`clk_period*10);

key=8'b0111_1111;

#(`clk_period*10);

key=8'b1101_1110;

#(`clk_period*10);

end

endmodule

仿真波形图:

FPGA学习之按键控制led相关推荐

  1. STM32学习:按键控制LED

    STM32学习:按键控制LED 文章目录 前言 一.所用知识点复习 1.stm32工作模式(*注意上下拉输入的区别*) 2.按键抖动与常见按键接法 按键抖动: 按键消抖: 常见按键接法: 3.GPIO ...

  2. Chapter002-FPGA学习之按键控制LED灯和蜂鸣器

    硬件原理 在正点原子开发板中,LED模块高电平驱动,蜂鸣器也是高电平驱动,按键按下,对应引脚为低电平: 原理图如下: 以上设备与FPGA引脚的对照表如下: 设备 引脚名称 对应FPGA引脚 按键 PL ...

  3. 51单片机入门学习------独立按键控制LED亮灭

    一.独立按键 1.特点:同侧导通,异侧断开 2.独立按键的I/O口  单片机上电后,所有I/O口默认都是高电平.没有按开关时都是高电平,按下后变成低电平. 寄存器通过检测高低电平检测按键是否被按下 1 ...

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

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

  5. FPGA之按键控制LED

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

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

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

  7. ZYNQ学习笔记(五)---按键控制LED灯亮灭实验

    这个实验其实很早就做了,但是由于这段时间自己一直在忙一些其他的事所以没有及时更新.今天抽出个空来更新一下.本次实验是关于按键控制LED亮灭.其中涉及到的内容有计数器.按键消抖以及一些简单的逻辑. 1. ...

  8. ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED

    ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED 总体思路 Block Design界面配置IP核并导出硬件配置 在SDK中编写C代码 下载PS和PL的联合工程到开发板 总体思路 首先需 ...

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

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

最新文章

  1. 中科院 工程硕士专业课 复试考试前的辅导安排
  2. [UE4蓝图教程]蓝图入门之蓝图通信机制入门
  3. 1.14 梯度检验应用的注意事项-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  4. 2015 Google code jam Qualification Round A 水
  5. VB计算圆周率(二)
  6. python 美化ppt_python操作PPT------PPT内容样式调整
  7. Linux CentOS 7安装Oracle11g超完美教程
  8. 正弦余弦怎么用计算机计算公式,关于正弦函数和余弦函数的计算公式
  9. EXCEL VBA 之录制宏
  10. CANopen协议解读
  11. vue把几张图片logo。二维码。背景合成一个海报并下载,使用canvas
  12. 宝塔绑定域名访问不了_千字长文教你使用 宝塔面板 快速搭建网站
  13. 光学心率传感器工作原理
  14. Java募捐_GitHub - javayhu/XingShan: 使徒行善,让行善成为一种习惯
  15. SPFA+寻路(行路难,洛谷2832)
  16. sangoma 蓝色逍遥盒
  17. VMware安装Ubuntu虚拟机如何连接网络
  18. 四论设立永中软件的非法性
  19. [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介
  20. 100行matlab,中国大学MOOC: Matlab中可以产生100行100列元素全是1的正确的命令是() 答案:ones(100)...

热门文章

  1. 创想的天空——《谷歌创想时空》随笔
  2. Linux操作系统配置Go编程环境
  3. 深度学习损失函数——“dice_coeff”代码实现
  4. 老王开店和支付路由管理
  5. element 实现自定义 宫格 布局
  6. android开机动画黑屏,Android 如何解决开机过程kernel logo到开机动画黑屏问题
  7. 你们要的面试题来啦!
  8. 华为软件笔试20190925
  9. HP-UX crontab
  10. Qt开发-QT Quick