FPGA学习之按键控制led

按键控制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

 

 

仿真波形图:

时间: 2024-10-18 16:48:41

FPGA学习之按键控制led的相关文章

LPC2124--GPIO按键控制LED灯的闪烁

实例目的 实例目的:掌握Proteus软件的使用及调试方法,学习IO编程. 实例内容:  学习使用Proteus.ADS.Keil for ARM软件,掌握绘制原理及编译程序.  键盘输入,当检测到有按键输入时,对发光二极管进行取反控制.使用 I/O口输入方式对按键进行扫描. 实例步骤:  在Proteus中绘制原理图.  在Keil for ARM中输入程序,并编译通过.  加载ELF程序,观察仿真结果.  采用KEIL for ARM与PROTEUS的整合方式联调. 知识点概括

问一下大神们,51单片机按键控制音乐播放c语言

问题描述 问一下大神们,51单片机按键控制音乐播放c语言 问一下,单片机按键控制音乐播放,上一首,下一首,重复播放,暂停,这四个引脚用P3.0到P3.3口可以吗?具体怎么实现呢,搞了好久,大神有没有类似的程序,有点心塞,不知道哪里出问题,真心跪求!这个按键控制需不需要用到中断,还是纯粹的控制,谢了 解决方案 这里有一篇文件,你去看看,可以参考一下.http://wenku.baidu.com/link?url=rkANtH-OGn0ECyB6A22j2b-fghVSYgpKJoHzX-7KcVU

lpc1768-用串口接收字符为命令来控制LED灯,该怎么写程序?(LPC1768)

问题描述 用串口接收字符为命令来控制LED灯,该怎么写程序?(LPC1768) 用串口助手发送特定字符来控制LED的亮灭?? 或者给个思路吧!核心的代码写一点也好啊! 有没有大神帮忙把控制部分的程序写下,谢谢啦!刚开始学,请教啊! 解决方案 继电器应该有自己的串口命令吧,你发命令就行了 解决方案二: 买来继电器后 会给你接口的 解决方案三: 单片机接收字符,然后判断,然后使能对应的LED

itavPDM迷你如何控制led回光灯

问题描述 itavPDM迷你如何控制led回光灯 itavPDM迷你如何控制led回光灯,求大神指教,最好说说细节,整了好几天了 解决方案 http://www.docin.com/p-798127314.html

《鬼泣4》登录iPhone玩家可用屏幕虚拟按键控制人物

据海外媒体消息,卡普空公司近日宣布,旗下鬼泣系列的新最新作品<鬼泣5>即将与广大玩家见面,而其前作<鬼泣4>(Devil May Cry: 4 Refrain)也将于本月底在iPhone平台发行. iPhone版<鬼泣4>号称拥有精彩绝伦的砍杀快感,主角"尼禄"装备巨剑,枪械,恶魔手来攻击敌人.而玩家则可通过屏幕上的虚拟按键控制人物进行游戏. 据悉,此游戏在苹果App Store应用程序商店预计售价6.99美元(卡普空随后称尚未确定具体价格),且玩家

led-cc3200如何快速入门,比如说简单控制LED

问题描述 cc3200如何快速入门,比如说简单控制LED 用CC3200如何控制LED闪烁?把历程example的Timer.exe用CCS uniflash烧录进CC3200,打开串口助手,但是一点反应都没有

net4 5-C#控制LED灯总算发送是失败

问题描述 C#控制LED灯总算发送是失败 主程序 using LedDemo.Common; using System; using System.Collections.Generic; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using Syste

虚拟键盘-Python虚拟按键控制PPT的问题

问题描述 Python虚拟按键控制PPT的问题 ppt = win32com.client.Dispatch('PowerPoint.Application') ppt.Visible = True pptSel = ppt.Presentations.Open('D:论文答辩.ppt') 这三行我打开了一个PPT: win32api.keybd_event(34,0,0,0)#PageDown键位码是34 win32api.keybd_event(34,0,win32con.KEYEVENTF

dsp-DSP2812的GPIO口如何操作?设计一个控制LED闪烁的C语言代码

问题描述 DSP2812的GPIO口如何操作?设计一个控制LED闪烁的C语言代码 DSP2812的GPIO口如何操作?设计一个控制LED闪烁的C语言代码?多谢大神指点,新手,详细点好 解决方案 印象中不同的板子GPIO口略不一样,你得对照着每个口的功能去写.不过这些都是大同小异的.这个是我大三上专业必修微机原理里的一个ARM实验,当时做的还是蛮有意思.后来有一套答案的总结,做出来了,可能对你有一定参考价值吧.附上链接:arm流水灯实验 解决方案二: 看看这个 http://www.eeboard