资源描述:
《FPGA综合设计实例课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章综合设计实例1键盘扫描与显示矩阵式键盘:行,列矩阵是键盘以行列形式排列,键盘上每个按键其实是一个开关电路,当某键被按下时,该按键对应的位置就呈现逻辑0状态.行扫描方式:逐行送0电平,读取列的状态,以判断按下的键号.列扫描方式:逐列送0电平,读取行的状态,以判断按下的键号.以行扫描为例:1给行依次送0111,1011,1101,1110信号;2读取列电平状态,数码管显示libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;
2、entitykey_scanisport(column:instd_logic_vector(3downto0);--列状态scan_cnt:instd_logic_vector(3downto0);---扫描字row:outstd_logic_vector(3downto0);---行状态key_pressed:outstd_logic);-----按键有效与否,后续判断为零则为有键按下end;architecturertlofkey_scanisbeginrow<="1110"whenscan_cnt(3d
3、ownto2)="00"else"1101"whenscan_cnt(3downto2)="01"else"1011"whenscan_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;按键扫描控制程序按键处
4、理控制模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityscan_countisport(clk:instd_logic;--clockscan_clk:instd_logic;--1khzclkkey_pressed:instd_logic;--检测按键有效与否,停止计数.scan_cnt:outstd_logic_vector(3downto0))
5、;--计数end;architecturebehavofscan_countissignalqscan:std_logic_vector(3downto0);beginscan_1:process(clk,scan_clk,key_pressed)beginif(clk'eventandclk='1')thenif(scan_clk='1'andkey_pressed='1')thenqscan<=qscan+1;endif;endif;endprocess;scan_cnt<=qscan;end;按键消抖控制
6、模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydebounceisport(key_pressed:instd_logic;clk:instd_logic;--同步时钟scan_clk:instd_logic;--1khzclockkey_valid:outstd_logic);end;architecturebehavofdebounceisbe
7、gindebounce: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'thenifdbnq/=1thendbnq:=dbnq-1;--key_pressednotenoughlong
8、timeendif;endif;endif;ifdbnq=2thenkey_valid<='1';--key_validafterkey_pressed1/63ksecondelsekey_valid<='0';endif;endprocess;end;键盘译码及按键存储模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic