欢迎来到天天文库
浏览记录
ID:57601371
大小:5.53 MB
页数:130页
时间:2020-08-28
《FPGA综合设计实例.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章综合设计实例1键盘扫描与显示矩阵式键盘:行,列矩阵是键盘以行列形式排列,键盘上每个按键其实是一个开关电路,当某键被按下时,该按键对应的位置就呈现逻辑0状态.行扫描方式:逐行送0电平,读取列的状态,以判断按下的键号.列扫描方式:逐列送0电平,读取行的状态,以判断按下的键号.以行扫描为例:1给行依次送0111,1011,1101,1110信号;2读取列电平状态,数码管显示libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitykey_scanisport(column:instd_
2、logic_vector(3downto0);--列状态scan_cnt:instd_logic_vector(3downto0);---扫描字row:outstd_logic_vector(3downto0);---行状态key_pressed:outstd_logic);-----按键有效与否,后续判断为零则为有键按下end;architecturertlofkey_scanisbeginrow<="1110"whenscan_cnt(3downto2)="00"else"1101"whenscan_cnt(3downto2)="01"else"1011"whenscan_
3、cnt(3downto2)="10"else"0111";key_pressed<=column(0)whenscan_cnt(1downto0)="00"elsecolumn(1)whenscan_cnt(1downto0)="01"elsecolumn(2)whenscan_cnt(1downto0)=“10"elsecolumn(3);endrtl;按键扫描控制程序按键处理控制模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all
4、;entityscan_countisport(clk:instd_logic;--clockscan_clk:instd_logic;--1khzclkkey_pressed:instd_logic;--检测按键有效与否,停止计数.scan_cnt:outstd_logic_vector(3downto0));--计数end;architecturebehavofscan_countissignalqscan:std_logic_vector(3downto0);beginscan_1:process(clk,scan_clk,key_pressed)beginif(clk'
5、eventandclk='1')thenif(scan_clk='1'andkey_pressed='1')thenqscan<=qscan+1;endif;endif;endprocess;scan_cnt<=qscan;end;按键消抖控制模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydebounceisport(key_pressed:instd_logic;clk:instd_logic;--同步时钟sca
6、n_clk:instd_logic;--1khzclockkey_valid:outstd_logic);end;architecturebehavofdebounceisbegindebounce:process(clk,scan_clk,key_pressed)variabledbnq:std_logic_vector(5downto0);beginif(key_pressed='1')thendbnq:="111111";--unkey_pressed,countresetat63elsif(clk'eventandclk='1')thenifscan_clk='1'th
7、enifdbnq/=1thendbnq:=dbnq-1;--key_pressednotenoughlongtimeendif;endif;endif;ifdbnq=2thenkey_valid<='1';--key_validafterkey_pressed1/63ksecondelsekey_valid<='0';endif;endprocess;end;键盘译码及按键存储模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic
此文档下载收益归作者所有