码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 4x4矩阵键盘设计Verilog矩阵式键盘控制,视频/代码


    名称:4x4矩阵键盘设计Verilog矩阵式键盘控制

    软件:Quartus

    语言:Verilog

    代码功能:

    键盘控制电路设计,设计一个4x4矩阵式键盘控制电路,并实现按键的显示。

    演示视频:4x4矩阵键盘设计Verilog矩阵式键盘控制_Verilog/VHDL资源下载

    代码下载:

    4x4矩阵键盘设计Verilog矩阵式键盘控制_Verilog/VHDL资源下载名称:4x4矩阵键盘设计Verilog矩阵式键盘控制(代码在文末付费下载)软件:Quartus语言:Verilog代码功能:键盘控制电路设计,设计一个4x4矩阵式键盘控制电路,并实现按键的显示。演示视频:部分代码展示module key_4x4 ( clk_500KHz,//500KHZ reset, //低电平复位L_row, //行 H_col, //列 display_licon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=192

    部分代码展示

    module key_4x4 
    ( 
    clk_500KHz,//500KHZ 
    reset,       //低电平复位
    L_row,   //行 
    H_col,   //列 
    display_led8//数码管显示
    ); 
     
    input clk_500KHz;
    input reset;  
    input [3:0] L_row;//行
    output [3:0] H_col;//列
    output [8:0] display_led8;//[7:0]:a,b,c,d,e,f,g,an0 
     
    reg [3:0] H_col=4'd0; 
    reg [7:0] display_led8=8'd0; 
    parameter s_L_all=3'd0;
    parameter s_L_row1=3'd1;
    parameter s_L_row2=3'd2;
    parameter s_L_row3=3'd3;
    parameter s_L_row4=3'd4;
    parameter s_LH=3'd5;
     
    reg [2:0] state=s_L_all;  //状态标志 
    reg key_flag=0;   //按键标志位 
    reg [3:0] H_col_reg=4'd0;  //寄存扫描列值 
    reg [3:0] L_row_reg=4'd0;//寄存扫描行值 
    /************************************************************************ 
    逐行扫描原理 
    ************************************************************************/ 
    always @(posedge clk_500KHz or negedge reset) 
    if(!reset)  
    begin  
    H_col<=4'b0000; 
    H_col_reg<=4'b0000;   
    L_row_reg<=4'b0000;  
    state<=s_L_all; 
    end 
    else  
    begin  
    case (state) 
    s_L_all:begin 
    H_col[3:0]<=4'b0000; 
    key_flag<=1'b0; 
    if(L_row[3:0]!=4'b1111)  
    begin  
    state<=s_L_row1; 
    H_col[3:0]<=4'b0111;//有键按下,扫描第一行 
    end  
    else  
    state<=s_L_all; 
    end  
    s_L_row1:begin 
    if(L_row[3:0]!=4'b1111)  
    begin  
    state<=s_LH;//判断是否是第一行 
    end    
    else   
    begin  
    state<=s_L_row2; 
    H_col[3:0]<=4'b1011;  //扫描第二行 
    end 
    end  
    s_L_row2:begin     
    if(L_row[3:0]!=4'b1111)  
    begin  
    state<=s_LH;//判断是否是第二行
    

    设计文档:

    4x4矩阵键盘设计.doc

    1.要求

    2.键盘电路

    其中H0~H3为FPGA输出,L0~L3为FPGA输入,采用行扫描法。

    在上电默认情况下,L[3:0] =1111,因为上拉了3.3V,而默认情况下H[3:0]为低电平;一旦有某一个按键被按下,则对应L会拉低。因此可以通过对每一行H输出的控制,来检索是哪一个按键被按下了。

    3.工程文件

    4.程序代码

    5.程序综合编译

    6.RTL图

    7.状态机图

    8.仿真

  • 相关阅读:
    [NOI2018]情报中心
    如何展开一个专题分析报告
    如何合并pdf文件?多pdf文件合并技能分享
    用Wokwi仿真ESP-IDF项目
    style操作
    BACnet对象
    [Swift]单元测试
    element源码(五)radio 单选框组件
    chatgpt,神经网络与拥塞控制
    【MySQL】事务
  • 原文地址:https://blog.csdn.net/diaojiangxue/article/details/133849818
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号