按键控制流水灯方向——FPGA

这篇具有很好参考价值的文章主要介绍了按键控制流水灯方向——FPGA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

环境:
1、Quartus18.0
2、vscode
3、板子型号:EP4CE6F17C8
要求:
按键1按下,流水灯从右开始向左开始流动,按键2按下,流水灯从左开始向右开始流动,按键3按下LED每隔1s进行亮灭,按键4按下LED常亮。


一、按键

按键控制流水灯,FPGA,fpga开发
按键控制流水灯,FPGA,fpga开发

“自锁”是指开关能通过锁定机构保持某种状态(通或断),“轻触”是说明操作开关使用的力量大小。cyclone IV开发板上的按键属于轻触式按键。

二、系统设计

1、模块框图

按键控制流水灯,FPGA,fpga开发

2、RTL视图

按键控制流水灯,FPGA,fpga开发

三、源码

module key_led #(parameter  MAX_NUM = 24'd9_999_999)(
    input   clk,
    input   rst_n,
    input   [3:0] key,

    output  reg [3:0] led
);

//parameter  MAX_NUM = 24'd9_999_999;//0.2s
reg [1:0] state;
reg [23:0] cnt;
reg [3:0]  key_r;

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        cnt <= 24'd0;
    end
    else if (cnt == MAX_NUM) begin
        cnt <= 24'd0;
    end
    else begin
        cnt <= cnt + 1'd1;
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        state <= 24'd0;
    end
    else if (cnt == MAX_NUM) begin
        state <= state + 2'd1;
    end
    else begin
        state <= state;
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        led <= 4'b0000;
    end
    else if (key[0] == 0) begin
            case (state)
                2'd0 : led <= 4'b0001;
                2'd1 : led <= 4'b0010;
                2'd2 : led <= 4'b0100;
                2'd3 : led <= 4'b1000; 
                default: ;
            endcase
        end
    else if (key[1] == 0) begin
            case (state)
                2'd0 : led <= 4'b1000;
                2'd1 : led <= 4'b0100;
                2'd2 : led <= 4'b0010;
                2'd3 : led <= 4'b0001; 
                default: ;
            endcase
        end
    else if (key[2] == 0) begin
            case (state)
                2'd0 : led <= 4'b1111;
                2'd1 : led <= 4'b0000;
                2'd2 : led <= 4'b1111;
                2'd3 : led <= 4'b0000; 
                default: ;
            endcase
        end
    else if (key[3] == 0) begin
            case (state)
                2'd0 : led <= 4'b1111;
                2'd1 : led <= 4'b1111;
                2'd2 : led <= 4'b1111;
                2'd3 : led <= 4'b1111; 
                default: ;
            endcase
        end
    else 
        led <= led;
end

endmodule

四、效果

按键控制流水灯


五、总结

这里的实现并不难,加强了按键与LED的互动性,使用了状态控制LED,槽点就是按键没有进行消抖。

六、参考资料

按键控制led灯文章来源地址https://www.toymoban.com/news/detail-734506.html

到了这里,关于按键控制流水灯方向——FPGA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA 学习笔记:Verilog 实现LED流水灯控制

    在初步了解 Xilinx Vivado 的使用后,开启了FPGA Hello World 程序:LED 流水灯控制 在嵌入式MCU中,流水灯需要延时来实现,FPGA的延时,使用外部晶振来实现 实现 3个 LED 流水灯控制,也就是循环依次点亮, LED 低电平亮, 高电平灭,FPGA 有一个40MHz的外部晶振,作为系统时钟输入开

    2023年04月08日
    浏览(42)
  • 「FPGA项目」—— 基于AMBA总线的流水灯控制系统

    本文将介绍一个完全用Verilog HDL手写的AMBA片上系统, 项目的主题是设计一个 基于AMBA总线的流水灯控制系统 , 项目中所有数字逻辑电路部分都不会通过调用成熟IP核的方式来实现,而是通过Verilog进行RTL设计, 然后利用Vivado平台对RTL模型进行仿真、综合与布线, 最后在FPGA开

    2023年04月25日
    浏览(49)
  • FPGA开发之Vivado安装及HLS环境配置,并实现流水灯实例

    HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。

    2024年02月05日
    浏览(51)
  • 51单片机按键控制流水灯

    1独立按键的原理图 按键所对应的引脚为P3的0、1、2、3引脚口,并且这里总共有四个独立按键,它们公共的一段都接到了 GND 电源的负极。这样我们就知道按键上电的默认电平为高电平。所以我们只需要控制按键按下时给一个低电平0,不按下时默认高电平1就行。  2按键控制

    2024年02月11日
    浏览(55)
  • 【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯

    实验内容: 利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输入电平。         1.选中 8 位数码管的其中 1 位数码管,当独立按键 1 每按下一次,数码管加一(按下期间加 1),范围为 0—F;         2.选中 8 位数码管的另 1 位数码管,当独立按键 2

    2024年02月06日
    浏览(47)
  • fpga--流水灯

    fpga流水灯的设计 思路:外部时钟频率50mhz,若要实现每隔0.5s闪烁一次,则使用内部计数器计数到24999999拉高一个周期电平,当电平被拉高的时候,进行LED灯电平的设置,每次检测到高电平,就进行一位LED灯的设置,进行循环设置,就形成了流水灯的设计。 测试代码  

    2024年02月15日
    浏览(41)
  • 流水灯——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 每隔0.2s循环亮起LED灯 从LED0开始亮起到LED3又回到LED0循环往复。 流水灯 这里使用了拼接符对LED进行处理加上一个0.2s的计时器进行控制即可。 led流水灯

    2024年02月16日
    浏览(48)
  • FPGA学习——点亮流水灯

    在FPGA开发板中,一般板载LED默认高电平点亮,因此我们只需要将想要亮起的LED赋值为1即可。 本入门实验要求为每隔1s开发板上的LED轮流亮起,因此我们需要一个1s的计数器, 由于开发板晶振时钟为50MHz,因此我们计数50_000_000即为1s。 注意:为了后续方便仿真所以这里MAX设置

    2024年02月13日
    浏览(48)
  • SOC FPGA之流水灯设计

            Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 首先下载破解器 然后进入cmd运行,进入到破解器所在文件夹  然后输入patcher.exe --license ?:licensepath 最后显示.dat文件即

    2024年02月14日
    浏览(43)
  • FPGA学习——verilog实现流水灯

    学习芯片: EP4CE6F17C8 verilog代码如下: 配置引脚,查看芯片的指导书: 烧录运行结果如下: 如图我们可以看见开发板上四个led灯同时被电亮。 代码如下: 配置引脚,查看clock和key的引脚: 运行结果如下图: 此时可以看见四个led灯同时闪烁。 流水灯代码实现: 实验效果图如

    2024年02月16日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包