FPGA学习之按键控制led
来源:互联网 发布:免费企业网管软件 编辑:程序博客网 时间:2024/05/21 15:06
按键控制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
- MCU学习3--按键控制LED
- 4412裸机程序之按键控制LED
- 02-ZYNQ学习(逻辑篇)之FPGA LED控制实验
- 按键控制led
- 按键控制led驱动
- 按键控制led驱动
- 按键控制led应用程序
- 按键控制LED
- ARM按键控制LED
- 按键控制led亮灭
- FPGA 按键控制数码管
- STM32学习笔记之按键查询方式控制led灯的亮灭
- ucos学习实例之消息队列---按键控制LED的亮灭
- 基于FPGA的按键控制LED的循环左移一位
- 基于FPGA的按键控制4盏LED灯循环左移点亮
- ok6410学习笔记(16.按键中断控制led驱动)
- STM32F407学习笔记——GPIO_按键控制LED亮灭
- PHP哈希表结构的深入剖析
- Android自定义ProgressDialog
- Struts2 使用Validation框架验证数据
- nyoj 545 Metric Matrice【矩阵】水题
- [LeetCode]014-Longest Common Prefix
- FPGA学习之按键控制led
- STM32 GPIO之 GPIO_Init() 函数
- express 在centos上运行(安装node)
- Python配置Houdini项目环境变量以及集成工具架
- 致在孤独的奋斗中迷茫了的人们
- 搭建spark cluster网络设置,ipv6关闭,ipv4设置,DNS设置
- Machine Learning week 11 quiz: Application: Photo OCR
- web调用本地方法,并实现打印功能(屏幕分辨率导致打印断断续续不清晰)
- lightoj1043(相似三角形面积自比等于对应边比的平方)