前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA学习altera系列: 第十篇 按键控制LED

FPGA学习altera系列: 第十篇 按键控制LED

作者头像
FPGA技术江湖
发布2020-12-29 16:43:30
6750
发布2020-12-29 16:43:30
举报
文章被收录于专栏:FPGA技术江湖FPGA技术江湖

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来“FPGA学习系列 altera"系列,持续更新。此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19+,以下仅供初学者学习参考。后续会更新其他系列,敬请关注。话不多说,上货。

按键控制LED

对于每一个的小实验,我们都可以把它看作是一个小项目,逐步的去分析,设计,调试,最后完成功能。下面我们就开始我们的“小项目”。

项目名称:按键控制led。

具体要求:按下按键led亮,释放按键led灭。

通过分析上述的“项目名称”和“具体要求”,我们可以设计出如下的架构:

当我们需要用到外部按键和led时,我们应该去分析它们的工作原理,如下:

独立按键的电路图

Led的电路图

简单的分析得知:按键按下为低电平,按键释放为高电平。输出为高电平时,led灭,输出为低电平时,led亮。

在verilog中/*······*/,中间的内容会被注释掉,不被编译进去。‘//·····’表示这一行//后面的内容会被注释掉,不被编译进去。

设计代码如下:

代码语言:javascript
复制
/*
模块名称:key_led
模块功能:按下按键led亮,释放按键led灭 
作者:郝旭帅
邮箱:746833924@qq.com
*/
module key_led (clk, rst_n, key, led);

  input clk;
  input rst_n;//低电平有效的复位
  input key;
  
  output reg led;//低电平led亮

  always @ (posedge clk or negedge rst_n ) 
    begin  // 时序逻辑,异步复位
      if (!rst_n)
        begin
          led <= 1'b1;
        end
      else
        begin
          if (key == 1'b0)
            begin//按键按下
              led <= 1'b0;
            end
          else
            begin//按键释放
              led <= 1'b1;
            end
        end
    end
    
endmodule

激励代码如下:

代码语言:javascript
复制
/*
模块名称:key_led_tb
模块功能:为key_led模块提供激励信号
作者:郝旭帅
邮箱:746833924@qq.com
*/
`timescale 1ns/1ps

module key_led_tb;
  
  reg clk;
  reg rst_n;//低电平有效的复位
  reg key;
  
  wire led;//低电平led亮

  initial begin
    clk = 1'b1;
    rst_n = 1'b0;
    key = 1'b1;//复位时,按键释放
    # 200 // 复位200ns
    
    rst_n = 1'b1;
    # 200
    
    key = 1'b0;
    # 200//按下200ns
    
    key = 1'b1;//按键释放
    # 200
    $stop;
  end
  
  always # 10 clk = ~clk;//50M
  
  key_led key_led_dut(
      .clk(clk),
      .rst_n(rst_n),
      .key(key), 
      .led(led)
    );
    
endmodule

笔者手中的板子的本地晶振为:50MHz。故而,所有的仿真中,时钟都是50MHz。

仿真波形如下:

当按键按下时,led亮,按键释放,led灭。

设计正确,下板即可验证。如果小伙伴的电路原理和笔者的不一样,请自行更改设计。如果还是有不明白的小伙伴可以发邮件到我邮箱或者加群询问。

END

制作人:郝旭帅

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档