你为什么爱我| 减肥可以吃什么主食| 吃什么可以养胃| 孩子出疹子应该注意什么| 无缘无故头疼是什么原因| 青青子衿什么意思| 骨髓瘤是什么病| 梦见着火了是什么意思| 蓝姓是什么民族| 草字头内念什么| 庚午日是什么意思| 风致是什么意思| 舌苔厚发黄是什么原因| 平五行属什么| 谨遵医嘱是什么意思| nasa是什么牌子| ad和d3有什么区别| 3.8什么星座| 鼻子冒热气是什么原因| 11月7号是什么星座| 身上长小红痣是什么原因| 每晚做梦是什么原因| 什么最珍贵| 脂肪肝吃什么水果好| 15朵玫瑰花代表什么意思| Ecmo医学上是什么意思| 兔子不能吃什么| 月经不来挂什么科| 什么的杨桃| 朝秦暮楚是什么生肖| n1是什么意思| 三超是指什么| 靖康耻指的是什么历史事件| 透骨草长什么样| 心悸吃什么中成药| 青少年额头长痘痘是什么原因| 喜欢绿色的女人是什么性格| 笑掉大牙是什么动物| 身份证拍照穿什么衣服| 阴虚吃什么调理| 爱情的本质是什么| 叶酸对人体有什么好处| t是什么意思| 臀推是什么意思| 菠萝蜜是什么季节的水果| 血小板降低是什么病| 暂住证和居住证有什么区别| 时令水果是什么意思| 手心发热是什么原因引起的| 过氧化氢阳性什么意思| 木安读什么| 翠鸟吃什么| 治字五行属什么| 造影是什么检查| 1024是什么星座| sap是做什么的| 胃一阵一阵的疼吃什么药| 看看我有什么| 跌水是什么意思| 什么是水解奶粉| 喉咙痛是什么原因| 流虚汗是什么原因| 什么水果吃了对皮肤好| 葡萄球菌感染是什么原因引起的| 男女授受不亲是什么意思| 跖疣去医院挂什么科室| 什么治胃胀气| 急性心肌炎有什么症状| 吃什么头发长得快| 尿常规阳性是什么意思| 邮电局是干什么的| 手指甲没有月牙是什么原因| 什么样的人长寿| 书卷气是什么意思| ua是什么| 男子精少吃什么药可以生精| 中心思想是什么意思| 肾结石挂什么科室| 直男是什么| 比目鱼是什么鱼| 什么地溜达| 脸上长黑痣是什么原因| 副主任医师什么级别| 丑未相冲的结果是什么| 福鼎白茶属于什么茶| 睡觉后腰疼是什么原因引起的| 世界上最大的海洋是什么| 致意是什么意思| 胃恶心想吐吃什么药| 脖子上有痣代表什么| 胆囊结石需要注意什么| 舌苔重是什么原因| 轻度溶血是什么意思| 人工降雨的原理是什么| 干白是什么酒| 血亏什么意思| 宫腔内钙化灶是什么意思| 发改委主任什么级别| 推手是什么意思| 不长毛的猫叫什么名字| 相貌是什么意思| 表示什么意思| 垫底是什么意思| 逆天是什么意思| 激素六项都是查什么| 人过留名雁过留声什么意思| 吃薄荷对人身体有什么好处| 奈我何是什么意思| 一卡通是什么| 黑色签字笔是什么笔| 嗓子疼咽口水都疼吃什么药| 眩晕停又叫什么| 细胞是由什么构成的| 肾亏是什么原因造成的| 梦见上楼梯是什么意思| 手上螺纹多少代表什么| 大尾巴狼是什么意思| 米酒发酸是什么原因| 14数字代表什么意思| 什么是消毒| 怕热是什么原因| 橙色加蓝色是什么颜色| 女性感染梅毒有什么症状| out是什么意思| 金风玉露是什么意思| 朝圣者是什么意思| 肾火旺吃什么药| 猫发出咕噜咕噜的声音是什么意思| hcg是检查什么的| 藕带是什么| 儿童多动症挂什么科| 什么茶好喝| 藏医最擅长治什么病| 头麻是什么原因| 海带和什么不能一起吃| 尿道口流脓什么病| 江字五行属什么| 高氨血症是什么病| 第一次坐飞机需要注意什么| 柔式按摩是什么意思| 区委副书记是什么级别| 什么检查需要空腹| 食管有烧灼感什么原因| 睡不着吃什么药最有效| 女生隐私长什么样| 乳腺囊肿吃什么药| 第一次同房是什么感觉| 长疣是什么原因| 直肠壁增厚一般是什么情况| 静修是什么意思| 怀孕两个星期有什么反应| 超敏crp高是什么原因| 梦见自己尿裤子了是什么意思| 肾小球滤过率是什么意思| 蓝精灵是什么| 为什么肾阳虚很难恢复| 西芹炒什么好吃| 经常吐口水是什么原因| 舌头灼热感是什么原因| 蓬蒿人是什么意思| 南京区委书记什么级别| 赵云属什么生肖| 夏天煲鸡汤放什么材料| 曹操属什么| 多糖是什么| 图号是什么| 114514是什么梗| 白玫瑰适合送什么人| 目前是什么意思| 核桃壳有什么用| 椎间盘突出挂什么科| 玉米除草剂什么时候打最好| 91年出生属什么生肖| 梦见自己升职了是什么预兆| 肺火大吃什么药| 斛是什么意思| 痉挛是什么| 什么人容易得白塞氏病| 淋巴结有血流信号预示着什么| 大便绿色什么原因| 10月份什么星座| 1979年出生属什么生肖| 11月24是什么星座| 什么原因引起脑梗| 软著是什么| 鸡眼用什么药好| 什么叫一桌餐| 手心朝上是什么意思| 清明上河图什么季节| 语塞是什么意思| 维生素d3吃多了有什么副作用| vs是什么牌子| 什么动物有三个心脏| 耳聋是什么原因引起的| 麝牛是什么动物| 三班两倒是什么意思| 送手镯的寓意是什么| 岁运并临是什么意思| 菊花的功效是什么| 尼泊尔属于什么国家| 艾条什么牌子好用| 毛尖属于什么茶| 心悸症状是什么感觉| 公立医院是什么意思| QQ什么意思| c3是什么意思| 两班倒是什么意思| 双排是什么意思| 迷你巴拉巴拉和巴拉巴拉什么关系| 胸上长痘痘是什么原因| 皮肤黑穿什么颜色| 什么水果补钾| 独代表什么生肖| resp是什么| 什么是肠息肉| 凌驾是什么意思| 矫正度数是什么意思| 13岁属什么| 小孩说话晚是什么原因| 什么是腐女| seconds是什么意思| 婵字五行属什么| 为什么会干呕| 什么叫引流| 内膜厚是什么原因| 1954年出生属什么| 孩子流黄鼻涕是什么原因| 大麦茶是什么做的| 血痣是什么原因引起的| 什么病可以鉴定病残| 九九年属什么| 吃什么水果对心脏有好处| 十月7号是什么星座| soeasy是什么意思| 尿酸高可以吃什么| 肺部ct能查出什么病| 生气伤什么器官| 政协副主席是什么级别| 眼睑痉挛是什么原因造成的| 嗓子哑是什么原因引起的| 男人嘴角有痣代表什么| 女人湿气重吃什么药效果好| 自我是什么意思| 七星瓢虫吃什么食物| 山药有什么功效| 怀孕不能吃什么药| 什么都不做| 空腹喝牛奶为什么会拉肚子| 梦见驴是什么意思| 孕妇梦见掉牙齿是什么意思| 小孩脾胃虚弱吃什么药| 伏羲和女娲是什么关系| 胆的作用和功能是什么| 沙漠玫瑰什么时候开花| 品牌pr是什么意思| 眼角长脂肪粒是什么原因| 什么牌子的沐浴露好| 什么情况下需要打破伤风| 白色和什么颜色搭配最好看| 什么耳机比较好| 橘红是什么| 肩膀疼去医院挂什么科| 尿酸高的人不能吃什么| 85属什么生肖| 百度
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

过年做饭不发愁 宝鸡这俩地方春节假期可以买燃气

FPGA技术江湖 ? 来源:FPGA技术江湖 ? 2025-08-14 14:01 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大侠好,欢迎来到FPGA技术江湖。本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,按键的使用教程。话不多说,上货。

按键的使用教程

作者:李西锐校对:陆辉

按键是我们使用比较多的器件之一,其结构简单,使用方便。在玩具、家电等方面有广泛的应用。

按键是一种应用比较多的一种电子开关,在我们开发板上有两种按键开关:第一种是本章节需要讲解的轻触开关,第二种是自锁按键,按键按下后保持自锁状态,整个按键处于一直连通状态,再次按下,开关断开,同时开关按钮弹出。

本次我们实验任务,将使用按键控制LED灯点亮,当按键按下时,LED灯亮,松开熄灭。

我们的按键是共阴极设计,电路图如下:

9ee6e1d2-e582-11ed-ab56-dac502259ad0.png

分析电路可知,当我们的按键没有按下时,FPGA管脚为高电平,按键按下,FPGA管脚被短路,电平为低电平。所以我们的按键按下为低松开为高。那么在我们设计实验逻辑时,可以用按键的低电平控制LED灯点亮。

9efc9b9e-e582-11ed-ab56-dac502259ad0.png

对应的XDC约束语句如下:

9f06a300-e582-11ed-ab56-dac502259ad0.png

我们按键信号作为控制信号来使用,但是我们不能直接去使用,因为轻触按键在按下或者松开时,信号非常不稳定,会导致在按键没有完全按下或者松开时,信号出现很多的毛刺,这样的信号不能作为我们的控制信号,所以我们在写控制逻辑之前,我们首先需要对按键做一下消抖处理,实现信号稳定。我们处理的原理是,当信号一直处于低电平或者高电平一段时间后,我们默认信号处于稳定状态,这个时间我们暂定为10ms。

接下来我们先进行新建工程,首先点击create project。

9f151f98-e582-11ed-ab56-dac502259ad0.png

然后在打开的界面修改工程名字为key_led。

9f2d2be2-e582-11ed-ab56-dac502259ad0.png

保存位置确定后,点击next。

9f3ddeec-e582-11ed-ab56-dac502259ad0.png

我们选择RTL Project,点击next。

9f47f3aa-e582-11ed-ab56-dac502259ad0.png

我们在搜索窗口搜索我们板子的芯片型号,确定好之后点击next。

9f57c852-e582-11ed-ab56-dac502259ad0.png

点击Finish完成新建工程。新建完成之后,我们开始根据前面我们所讲的理论开始写代码。

9f649b72-e582-11ed-ab56-dac502259ad0.png

点击上图红色方框的加号开始新建代码文件。

9f71bd52-e582-11ed-ab56-dac502259ad0.png

点击next。选择创建文件。

9f7fcac8-e582-11ed-ab56-dac502259ad0.png

比如我们新建顶层文件,名字为key_led。

9f8e1344-e582-11ed-ab56-dac502259ad0.png

点击OK之后开始写代码,代码内容如下:

01  module jitter(
02      
03      input   wire        clk,
04      input   wire        rst_n,
05      input   wire        key,
06      
07      output  reg         flag
08  );
09
10      parameter t = 500_000;
11      
12      reg         [18:0]          cnt;
13      reg                         state;
14
15      always @ (posedge clk, negedge rst_n)
16      begin
17          if(rst_n == 1'b0)
18              begin
19                  cnt <= 19'd0;
20                  state <= 1'd0;
21                  flag <= 1'd1;
22              end
23          else
24              case(state)
25                  1'd0    :   begin
26                                  if(key == 1'b0)
27                                      begin
28                                          if(cnt == t - 1)
29                                              begin
30                                                  cnt <= 19'd0;
31                                                  state <= 1'd1;
32                                                  flag <= 1'b0;
33                                              end
34                                          else
35                                              begin
36                                                  cnt <= cnt + 1'b1;
37                                                  state <= 1'd0;
38                                                  flag <= 1'b1;
39                                              end
40                                      end
41                                  else
42                                      begin
43                                          cnt <= 19'd0;
44                                          state <= 1'd0;
45                                          flag <= 1'b1;
46                                      end
47                              end
48                  1'd1    :   begin
49                                  if(key == 1'b1)
50                                      begin
51                                          if(cnt == t - 1)
52                                              begin
53                                                  cnt <= 19'd0;
54                                                  state <= 1'd0;
55                                                  flag <= 1'b1;
56                                              end
57                                          else
58                                              begin
59                                                  cnt <= cnt + 1'b1;
60                                                  state <= 1'b1;
61                                                  flag <= 1'b0;
62                                              end
63                                      end
64                                  else
65                                      begin
66                                          cnt <= 19'd0;
67                                          state <= 1'b1;
68                                          flag <= 1'b0;
69                                      end
70                              end
71              endcase
72      end 
73  endmodule
74

接下来是按键控制LED的逻辑,当按键为低电平时,LED灯点亮。代码如下:

01  module key_ctrl(
02      
03      input   wire            clk,
04      input   wire            rst_n,
05      input   wire            flag,
06      
07      output  reg             led
08  );
09
10      always @ (posedge clk, negedge rst_n)
11      begin
12          if(rst_n == 1'b0)
13              led <= 1'b0;
14          else if(flag == 1'b0)
15              led <= 1'b1;
16          else
17              led <= 1'b0;
18      end
19  endmodule

两个模块做好之后,我们在顶层文件中例化子模块:

01  module key_led(
02      
03      input   wire            clk,
04      input   wire            rst_n,
05      input   wire            key,
06      
07      output  wire            led
08  );
09      
10      wire            flag;
11      
12      jitter jitter_inst(
13      
14      .clk                (clk),
15      .rst_n              (rst_n),
16      .key                (key),
17      
18      .flag               (flag)
19  );
20
21      key_ctrl key_ctrl_inst(
22      
23      .clk                (clk),
24      .rst_n              (rst_n),
25      .flag               (flag),
26      
27      .led                (led)
28  );
29      
30  endmodule

逻辑控制写好之后,我们做一下仿真,在仿真中,我们为了快速看到现象,我们将参数修改的小一些。代码如下:

01  `timescale 1ns / 1ps
02
03  module key_led_tb;
04
05      reg             clk;
06      reg             rst_n;
07      reg             key;
08      
09      wire            led;
10      
11      defparam key_led_inst.jitter_inst.t = 100;
12      
13      initial begin
14          clk = 0;
15          rst_n = 0;
16          key = 1;
17          #105;
18          rst_n = 1;
19          #1000;
20          
21          //模拟按键按下时的抖动
22          key = 0;
23          #20;
24          key = 1;
25          #30;
26          key = 0;
27          #30;
28          key = 1;
29          #10;
30          key = 0;
31          
32          #5000;
33          
34          //模拟按键松开时的抖动
35          key = 1;
36          #30;
37          key = 0;
38          #30;
39          key = 1;
40          #10;
41          key = 0;
42          #50;
43          key = 1;
44          
45          #1000;
46          $stop;
47      end
48      
49      always #10 clk = ~clk;
50      
51      key_led key_led_inst(
52      
53      .clk            (clk    ),
54      .rst_n          (rst_n  ),
55      .key            (key    ),
56
57      .led            (led    )
58  );
59
60  endmodule

仿真波形:

9f993bb6-e582-11ed-ab56-dac502259ad0.png

Flag信号等效按键,flag拉低时,LED灯为高电平,此时灯亮。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22092

    浏览量

    620487
  • led
    led
    +关注

    关注

    242

    文章

    23898

    浏览量

    676575
  • 电路图
    +关注

    关注

    10421

    文章

    10740

    浏览量

    544889
  • 按键
    +关注

    关注

    4

    文章

    227

    浏览量

    58162
  • Vivado
    +关注

    关注

    19

    文章

    835

    浏览量

    69116

原文标题:FPGA零基础学习之Vivado-按键使用教程

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vivado Tcl零基础入门与案例实战【高亚军编著】

    Vivado Tcl零基础入门与案例实战-高亚军编写
    发表于 01-14 11:13

    零基础入门FPGA,如何学习?精选资料分享

    问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导。如果想速成,那就上网看视频吧,这...
    发表于 07-20 07:28

    FPGA零基学习Vivado-LED流水灯实验

    及打算进阶提升的职业开发者都可以有系统性学习的机会。系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,本篇为FPGA零基
    发表于 04-18 21:12

    FPGA零基学习Vivado-数码管驱动设计实验

    不多说,上货。FPGA零基学习Vivado-数码管驱动设计实验数码管作为SANXIN-B04的显示装置,具有易控制,显示方便的特点。那么
    发表于 04-19 19:21

    FPGA零基学习Vivado-按键使用教程

    及打算进阶提升的职业开发者都可以有系统性学习的机会。 系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,按键的使用教程。话不多
    发表于 06-13 18:33

    FPGA零基学习Vivado-锁相环使用教程

    大侠好,欢迎来到FPGA技术江湖。本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白
    发表于 06-14 18:09

    零基学习LEBVIEW】06 IO接口

    零基学习LEBVIEW】06 IO接口,感兴趣的朋友一定要学习
    发表于 12-31 10:28 ?0次下载

    零基学习LEBVIEW】08 智能仪器

    零基学习LEBVIEW】08 智能仪器,感兴趣的朋友一定要学习
    发表于 12-31 10:28 ?0次下载

    FPGA零基础入门教程

    本文档的主要内容详细介绍的是FPGA零基础入门教程免费下载。
    发表于 01-18 16:47 ?61次下载
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>零基</b>础入门教程

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第九章Vivado按键实验

    按键FPGA设计当中最常用也是最简单的外设,本章通过按键检测实验,检测开发板的按键功能是否正常,并了解硬件描述语言和FPGA的具体关系,
    发表于 01-25 08:27 ?5次下载
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第九章<b class='flag-5'>Vivado</b>下<b class='flag-5'>按键</b>实验

    【四】零基础上手HAL库—GPIO按键

    【四】零基础上手HAL库—GPIO按键3.1前言我们在上一节已经知道了点灯操作,相当于是学会了GPIO输出的配置,接下来是GPIO输入完成按键扫描的操作。前期准备STM32各类型的板
    发表于 12-05 13:51 ?0次下载
    【四】<b class='flag-5'>零基</b>础上手HAL库<b class='flag-5'>之</b>—GPIO<b class='flag-5'>按键</b>

    FPGA零基学习Vivado-数码管驱动设计实验

    系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,本篇为数码管驱动设计实验。话不多说,上货。
    的头像 发表于 04-09 09:20 ?2430次阅读

    FPGA零基学习Vivado-锁相环使用教程

    PLL锁相环由以下几部分组成:前置分频计数器、相位频率检测器电路、电荷泵、环路滤波器、压控振荡器、反馈乘法器计数器和后置分频计数器。在工作室,相位频率检测器检测其参考频率和反馈信号之间的相位差和频率差,控制电荷泵和环路滤波器将相位差转换为控制电压
    的头像 发表于 05-31 17:42 ?3015次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>零基</b>础<b class='flag-5'>学习</b><b class='flag-5'>之</b><b class='flag-5'>Vivado-</b>锁相环使用教程

    FPGA零基学习Vivado-ROM使用教程

    系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,ROM使用教程。话不多说,上货。
    的头像 发表于 06-07 12:27 ?2120次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>零基</b>础<b class='flag-5'>学习</b><b class='flag-5'>之</b><b class='flag-5'>Vivado</b>-ROM使用教程

    【教程分享】 FPGA零基学习按键控制LED

    系统性学习的机会。 系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习
    的头像 发表于 06-13 08:05 ?2219次阅读
    白色虫子是什么虫图片 胆固醇高吃什么 乌鸦叫预示什么 褪黑素不能和什么一起吃 发低烧是什么原因
    cmn是什么意思 孕晚期白细胞高是什么原因 加持是什么意思 涤塔夫是什么面料 hcy是什么意思
    蒲公英吃了有什么好处 乳酸菌是什么菌 减肥期间吃什么主食 花椒泡脚有什么功效 空调什么度数最省电
    肾气虚吃什么中成药 chihiro是什么意思 什么是cosplay 怀孕后不能吃什么 治疗肺部气肿有什么方法
    思密达是什么意思hcv9jop0ns3r.cn 做梦梦到自己怀孕了是什么意思hcv7jop4ns7r.cn 什么样的头发hcv7jop4ns8r.cn adidas是什么牌子hcv8jop3ns4r.cn 岁寒三友是什么意思wuhaiwuya.com
    肝功能异常挂什么科hcv8jop5ns8r.cn 半枝莲有什么功效kuyehao.com 解辣喝什么hcv9jop3ns9r.cn 凝血功能差是什么原因hcv8jop8ns1r.cn 什么是激素脸hcv7jop6ns6r.cn
    梦到捡到钱是什么预兆hcv7jop5ns4r.cn 烦恼是什么意思hcv8jop0ns6r.cn 绿壳鸡蛋是什么鸡生的hcv7jop7ns0r.cn 什么网名好听hcv8jop4ns8r.cn 6月11号是什么星座hcv9jop8ns1r.cn
    儿茶酚胺是什么hcv7jop7ns4r.cn 仓鼠为什么吃自己的孩子hcv8jop3ns2r.cn 什么是焦虑hcv8jop9ns6r.cn 蚁后长什么样hcv8jop8ns2r.cn 淋巴挂什么科室hcv9jop2ns2r.cn
    百度