按键处理部分 王安然.

Slides:



Advertisements
Similar presentations
九年级物理一轮复习 第一章 声现象 知识要点. 1. 声音的产生和传播  ( 1 )声音的产生:声音是由于物体的振动产生的。  凡是发声的物体都在振动。振动停止,发声也停止。  ( 2 )声源:正在发声的物体叫声源。固体、液体、气体 都可以作为声源,有声音一定有声源。  ( 3 )声音的传播:声音的传播必须有介质,声音可以在.
Advertisements

第一章 声现象 第二节声音的特征.
第五章 话语的语用意义(上) 主讲人:周明强.
勝過這世界 我能勝過這世界 因有耶穌在我心 黑暗權勢已破碎 因耶穌基督寶血. 勝過這世界 我能勝過這世界 因有耶穌在我心 黑暗權勢已破碎 因耶穌基督寶血.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
第一部分 中考基础复习 第一章 声现象.
眼科B超的原理及使用方法 一 基础知识.
第二十一章信息的传递 电磁波的海洋 九年级物理.
校務會議 業 務 報 告 教官室 主任教官: 廖世文 中校 99/06/25.
朝鲜.
主办:泰兴市质量强市领导小组办公室 承办:泰 兴 市 市 场 监 督 管 理 局.
95課綱 歷史科第二冊(中國史) 第三單元(章) 近世發展(宋、元明、清) 第三主題(節) 士紳社會與庶民文化
健康檢查簡介 新湖國小健康中心 王淑華護理師 99/11/17.
颈椎移位.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
理 想 理想是大海的航标, 指引你前进的方向; 理想是闪闪的明灯, 照亮你前进的航程; 理想是生命的动力,帮助你战胜困难;
EDA技术 第9章 FPGA硬件设计.
第十章 波动和声.
第二章 项目一:企业厂区与车间平面设计 1.
高中生职业生涯规划 河南省淮滨高级中学 朱凯
第一章 复 习 锦囊妙计 多看书 多看笔记 善于梳理.
高二选修 外力作用下的振动.
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
第十章 信息的传递 一、电话 1、电话的诞生 1876年贝尔发明了电话。最简单的电话由话筒和听筒组成,话筒能把声信号变成电信号,听筒能把电信号变成声信号。
Chapter 5 Sequential Logic Circuit
公司法(六) 股份有限公司 1.
《生活与哲学》第一轮复习 第七课唯物辩证法的联系观.
第三节 超声与次声 上派中学 李泽贵.
身边的噪音 ——六(1)班班队活动 李瑷蔚 符蓉.
电工电子实验中心.
日本 班級:六年四班 座號: 八號 姓名:楊維綱.
VHDL數位電路實習與專題設計 文魁資訊-UE301
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 30, 2017 ZDMC.
VHDL數位電路實習與專題設計 文魁資訊-UE301
Chapter 5 Verilog 硬體描述語言
Chapter 5 Verilog硬體描述語言
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
第17章 Verilog中的高级结构 学习内容: 任务和函数的定义和调用 怎样使用命名块 怎样禁止命名块和任务 有限状态机(FSM)及建模.
EDA技术 廖义奎.
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
Danny Mok Altera HK FAE AHDL培训教材 Danny Mok Altera HK FAE 2018/12/9 P.1.
Verilog硬件描述语言基础.
EDA 技术及应用 实验安排.
语法进阶.
时序电路设计 刘鹏 浙江大学信息与电子工程系 Apr. 24, 2011 EE141
精简指令集(RISC)CPU的构造原理和设计方法
一、選擇題 ( )1、下列敘述何者錯誤? (A)由彈弓射出的石子具有能量 (B)一物體具有作功的本領,則此物具有能 量 (C)被壓縮的彈簧具有能量,被拉長的彈簧 則不具有能量 (D)將地面的重物,吊到高處則此物具有能 量。 C.
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 29, 2016 ZDMC.
第14章 对验证的支持 学习内容 理解Verilog文本输出 理解不同的读取仿真时间的系统函数 理解 Verilog文件I/O功能.
计算机学院 数字逻辑实验的要求.
徵才說明會 安泰證券營業部經理: 陳文賢 2019/4/22.
计算机EDA设计 教 程 北航计算机学院 艾明晶.
设计示例一 用门级结构描述D触发器:.
K60入门课程 06 首都师范大学物理系 靳熙芃.
九年级物理 信息的传递 第二节 电磁波的海洋.
核探测与核电子学国家重点实验室 中国科学技术大学近代物理系
《信息技术与教育技术》听觉媒体技术.
演講人:國立彰化師大附工 機電科主任:楊 昭 德
实验十 电子秒表.
力学实验复习 杨昌彪 月.
全台灣最美的日出好美…好美… 這就是傳說中的潑墨二寮,耳聞她的日出有如國畫般 所以稱為潑墨二寮
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
2.4 让声音为人类服务.
第二节 声音的特性 人们有规律的、好听悦耳、使人愉快的声音叫做乐音,无规律的、难听刺耳、让人心烦的声音叫做噪声。
多姿多彩的世界.
智力抢答器综合设计 陈学英.
聲音是一種波 測驗題庫 陳記住 錄製分享 資料來源:教育部國民中學學習資源網.
声音的特性.
96 教育部專案補助計畫案明細 單位 系所 教育部補助款 學校配合款 工作໨目 計畫主 持人 備註 設備費 業務費 579,000
Presentation transcript:

按键处理部分 王安然

按键电路 键盘作为常用的人机交互工具,用于操作设备运行指令和数据的输入装置,应用于各种电子设备及产品; 本节带领大家学习和分析基于FPGA驱动按键电路的消抖处理;

按键电路 常见的按键连接方式有两种形式: 独立式按键:每个按键单独连接到一个I/O口上,通过判断按键端口的电位识别按键的操作,编程简单,需要更多I/O资源 矩阵式按键:通过行列交叉编码连接,通过分时扫描的方法识别按键的操作,节约I/O资源,编程较复杂

按键电路 根据上图可知: 左侧硬件连接方式: 按下按键:按键接通,按键端口与地导通,为低电平(GND) 松开按键:按键断开,按键端口通过上拉电阻,为高电平(3.3V电压) 右侧硬件连接方式反之

按键使用 module key ( input key_n, input rst_n, output reg led_out ); always @(negedge key_n or negedge rst_n) if (!rst_n) led_out <= 1'b0; else led_out <= ~led_out; endmodule

按键抖动原理 抖动的产生 : 通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。 因而在闭合及断开的瞬间均伴随有一连串的抖动。按键抖动导致按键电路的输出波动,使系统产生误触发或其他不稳定结果

按键抖动原理 一次完整的按键操作过程中包含5个小过程,如下:

按键抖动原理 为了消除按键抖动对设计的影响,需要对按键系统进行优化处理,也就是按键消抖处理 按键消抖处理主要分两种方式: 1.硬件消抖 2.软件消抖

按键抖动原理 常用的硬件消抖方式有两种: 1.RS触发器消抖:根据RS触发器特性将不稳定的信号转化为矩形波 2.电容充放电消抖:根据电容的充放电将信号中的窄脉冲消除 常用的软件消抖方式有两种: 1.延时采样:检测按键电平变化后延时(10ms以上),采样作为有效信号 2.周期采样:每隔固定时间采样(10ms以上) ,采样作为有效信号

延时采样消抖示意

延时采样消抖设计框图 边沿检测:按键输入变化检测 计数器计数:计数器计数20ms后采样,将10ms的抖动跨过 延时采样:基于计数器的计时,并采样 下降沿检测:这里使用的是按下有效脉冲输出

边沿检测程序实现 边沿检测的方法: 定义一个寄存器对输入信号进行锁存,然后将寄存器的数据与下一个时刻的输入信号做对比, 如果两者不相等则认为输入信号在这个时间段发生了变化,产生了边沿,key_an产生高电平的脉冲。 (key_n_r == key_n_r1)? //前一刻后一刻不相等,边沿 (key_n_r & (!key_n_r1))? //前一刻低,后一刻高,上升沿 ((!key_n_r) & key_n_r1)? //前一刻高,后一刻低,下降沿 reg [KEY_WIDTH-1:0] key_n_r,key_n_r1; //Register key_n_r1, lock key_n_r to next clk always @(posedge clk or negedge rst_n) if (!rst_n) key_n_r <= {KEY_WIDTH{1'b1}}; else begin key_n_r <= key_n; //消除亚稳态影响 key_n_r1 <= key_n_r; //时序延迟1个clk周期 end //Detect the edge of key_n //边沿检测 wire key_an = (key_n_r == key_n_r1)? 1'b0:1'b1;

延时采样程序实现 延时采样的方法: 当key_an产生脉冲时,计数器cnt清零并持续对clk计数, 因为我们要采集输入信号变化后20ms的状态值,系统时钟12MHz,计数器终值 = 12M/50 = 240K,所以计数器计数到240K-1时采样。 reg[18:0] cnt; //Count when a edge of key_n is occured always @(posedge clk or negedge rst_n) if (!rst_n) cnt <= 19'd0; else if(key_an) cnt <=19'd0; //按键边沿时计数器清零 else cnt <= cnt + 1'b1; //计数器对12MHz时钟计数   //Sample key_jit when cnt count to CNT_NUM(20ms) if (!rst_n) key_jit <= {KEY_WIDTH{1'b1}}; //计数器20ms时进行采样 else if (cnt == CNT_NUM-1) key_jit <= key_n_r;

仿真文件程序实现 testbench: 测试程序中 key_in 作为按键的输出给设计文件, 模拟按键,正常为高电平,按下按键为低电平,前后各有抖动 integer ii; reg key_in; //active low initial begin key_in = 1'b1; #400; for(ii=0;ii<=4;ii=ii+1) key_in = #50 ~key_in; #1000 key_in = 1'b1; #50 key_in = 1'b1; #400; $stop; end

延时采样仿真结果 红色 key_n 为按键输入, 前后各有抖动 紫色 key_an 为边沿检测信号 绿色 key_jit 为延时采样, key_pulse 为脉冲输出, key_state 为状态输出

周期采样消抖示意

周期采样消抖设计框图 计数器计数:计数器固定计数20ms采样,相邻采样最多只有 一个落在不稳定的区间,化不稳定为稳定 周期采样:基于计数器的计时,并采样 下降沿检测:这里使用的是按下有效脉冲输出

周期采样程序实现 reg [KEY_WIDTH-1:0] key_n_r; reg [18:0] cnt; //Count for 20ms always @(posedge clk or negedge rst_n) if(!rst_n) cnt <= 19'd0; else if(cnt >= CNT_NUM-1) cnt <= 19'd0; else cnt <= cnt + 1'b1; reg [KEY_WIDTH-1:0] key_n_r; //Sample key_jit when cnt count to CNT_NUM(20ms) if(!rst_n) begin key_n_r <= {KEY_WIDTH{1'b1}}; key_jit <= {KEY_WIDTH{1'b1}}; end else begin key_n_r <= key_n; //消除亚稳态影响 if(cnt == CNT_NUM-1) key_jit <= key_n_r; //20ms采样 else key_jit <= key_jit; end

按键抖动原理 红色 key_n 为按键输入, 前后各有抖动 绿色 key_jit 为延时采样, key_pulse 为脉冲输出, key_state 为状态输出

矩阵按键原理及优势 原理: 将按键按矩阵排列,使用行线和列线分别连接到按键开关的两端,列线通过上拉电阻连接到VCC, 当无按键按下时,列线处于高电平的状态,而当有按键按下时,列线电平 由与此列线相连的行线电平决定。 最后通过行列扫描法就可以判断各按键的操作状态 优势: 相对独立按键来说,当键盘中按键数量较多时,矩阵按键可以节约I/O资源的占用,如4*4矩阵可以通过8个I/O口实现16个按键的连接,且数量越多优势越明显。

矩阵式按键硬件连接

矩阵按键行列扫描法 状态 行 列 按键 STATE0 ROW1=0 第1行输出低电平 其余为高电平 判断第1列电平:COL1==0/1 K1按下/松开 判断第2列电平:COL2==0/1 K2按下/松开 判断第3列电平:COL3==0/1 K3按下/松开 判断第4列电平:COL4==0/1 K4按下/松开 STATE1 ROW2=0 第2行输出低电平 K5按下/松开 K6按下/松开 K7按下/松开 K8按下/松开 STATE2 ROW3=0 第3行输出低电平 K9按下/松开 K10按下/松开 K11按下/松开 K12按下/松开 STATE3 ROW4=0 第4行输出低电平 K13按下/松开 K14按下/松开 K15按下/松开 K16按下/松开

矩阵式按键设计框图 row <= 4'b1110; key_out[3:0] <= col;

200Hz分频信号 计数器计数,分频产生200Hz的信号

状态转换 状态机,实现状态转换及各状态的输出

周期采样消抖输出 根据不同状态下获取对应状态下矩阵按键的返回值,对应输出扫描消抖过的信号

仿真文件测试程序实现

矩阵按键仿真结果 红色key_n为Testbench中模拟的按键信号 黄色col和row对应矩阵按键的行列信号 绿色key_out为16个按键分别的状态输出