4×4键盘扫描时序逻辑电路的VHDL模型试验

上传人:公**** 文档编号:493302643 上传时间:2023-01-02 格式:DOC 页数:9 大小:143KB
返回 下载 相关 举报
4×4键盘扫描时序逻辑电路的VHDL模型试验_第1页
第1页 / 共9页
4×4键盘扫描时序逻辑电路的VHDL模型试验_第2页
第2页 / 共9页
4×4键盘扫描时序逻辑电路的VHDL模型试验_第3页
第3页 / 共9页
4×4键盘扫描时序逻辑电路的VHDL模型试验_第4页
第4页 / 共9页
4×4键盘扫描时序逻辑电路的VHDL模型试验_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《4×4键盘扫描时序逻辑电路的VHDL模型试验》由会员分享,可在线阅读,更多相关《4×4键盘扫描时序逻辑电路的VHDL模型试验(9页珍藏版)》请在金锄头文库上搜索。

1、汕头大学实验报告实验三4X 4键盘扫描时序逻辑电路的 VHDL模型实验一、实验目的1、了解普通4X 4键盘扫描的原理。2、掌握组合逻辑电路和时序逻辑电路的混和设计。3、进一步加深七段码管显示过程的理解。二、硬件要求1、4X 4键盘阵列。2、FPGA主芯片。3、可变时钟源。4、七段码显示区。5、LED显示模块。三、实验原理本实验主要完成的实验是完成 4X4键盘扫描的,然后获取其键值,并对其进行编码, 从而进行按键的识别,并将相应的按键值进行显示。键盘扫描的实现过程如下:对于4 X 4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程, 我们的思想是,

2、首先固定输出4行为高电平,然后输出 4列为低电平,在读入输出的 4行的值,通常高电平会被低电平拉 低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出 4行为低电平,再读入列值,如果其中有 哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在 7段码管和LED显示。四、实验内容及步骤本实验内容是完成 4X4键盘的扫描,然后将正确的键值进行显示,实验步骤如

3、下:1、编写键盘扫描和显示的 VHDL代码。2、用MaxPlusll对其进行编译仿真。3、 在仿真确定无误后,选择芯片ACEX1KEP1K30QC208。4、给芯片进行管脚绑定,在此进行编译。5、 根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连 线。6、给目标板下载代码,在 4 X 4键盘输入键值,观看实验结果。五、VHDL程序设计代码及结果1、4 X 4键盘扫描源程序LIBRARY IEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;E

4、NTITY Vhdll ISPORT(CLK_1K : IN STD_LOGIC;- 时钟输入 1KHZCLK_40K : IN STD_LOGIC;-40K TimeCIkKEY_LIE : IN STD_LOGIC_VECTOR(3 DOWNTO 0);- 列输入START :OUT STD_LOGIC;-二-十进制数据输出标志KEY_HANG :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);- 行输出DATA_P : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);- 二-十进制数输出DISP_DA TA : OUT STD_LOGIC_VECTOR

5、(6 DOWNTO 0);- 数码管显示译码输出DISP_SEL : OUT STD_LOGIC_VECTOR(1 downto 0);- 数码管显示扫描输出END ;ARCHITECTURE RTL OF Vhdl1 ISSIGNAL INT : STD_LOGIC;-列与非信号SIGNAL CLK_SEL : STD_LOGIC;-键值控制 1khz 的时钟信号SIGNAL START_REG:STD_LOGIC;-数据输出标志信号SIGNAL DISP_SEL_REG:STD_LOGIC_VECTOR(1 DOWNTO 0);-数码管显示扫描信号SIGNAL DATA_L,DATA_H:

6、STD_LOGIC_VECTOR(3 DOWNTO 0);-二-十进制 低位、高位信号SIGNAL DATA_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);- 二-十进制低位高位暂存信号SIGNAL KEY_HANG_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);-行输出信号SIGNAL DISP_DATA_REG:STD_LOGIC_VECTOR(3 DOWNTO 0);-二-十进制低位、高位暂存信号(数码管用)SIGNAL KEY_CODE:STD_LOGIC_VECTOR(7 DOWNTO 0);-行歹廿 相并信号SIGNAL DATA_P_REG

7、:STD_LOGIC_VECTOR(7 DOWNTO 0);- 二-十进制数信号BEGINKEY_CODE=KEY_HANG_TMP&KEY_LIE;-行、列相并DATA_P=DATA_P_REG;START= START_REG;KEY_HANG=KEY_HANG_TMP;DISP_SEL=DISP_SEL_REG;CLK_SEL=CLK_1K AND ( NOT INT);- 无键按下时有 CLK-SEL时钟信号输出PROCESS (CLK_SEL,CLK_40K , INT)VARIABLE STA TE : INTEGER RANGE 0 TO 3 ;BEGINIF RISING_ED

8、GE(CLK_40K) THEN -一个40K的脉冲上升沿到来输入一次列状态以判断是否有按键按下INTKEY_HANG_TMPKEY_HANG_TMPKEY_HANG_TMPKEY_HANG_TMPDATA_TMP -再嵌套一个 CASE语句CASE KEY_CODE IS-实现把像并数据译码 十六进制的1到FWHEN 01110111=DATA_L =0001;-把1放入低四位DATA_H DATA_L =0010;DATA_H DATA_L =0011;DATA_H DATA_L =0100;DATA_H DATA_L DATA_L =0110;DATA_H DATA_L =0111;DA

9、TA_H DATA_L =1000;DATA_H -9 键DATA_L =1001;DATA_H -0 键DATA_L =0000;DATA_H -A键,实现步进加一功能IF DATA_H =1001 THENIF DATA_L=1001 THEN DATA_H=1001; DATA_L=1001;ELSE DATA_L=DATA_L + 1;END IF;ELSIF DATA_L=1001 THENDATA_L=0000;DATA_H=DATA_H+1;ELSEDATA_L=DATA_L+1;DATA_H-B 键,实现步键加十IF DATA_H=1001 THENDATA_H=1001;EL

10、SEDATA_L=DATA_L;DATA_H-C 键,实现步 进减一IF DATA_L=OOOO AND DATA_H=OOOO THEN DATA_L=0000;DATA_H=0000;ELSIF DATA_L=OOOO THENDATA_L=1001;DATA_H= DATA_H-1;ELSEDATA_L =DATA_L-1;DATA_H-D 键,实现步进 减 十IF DATA_H=OOOO THENDATA_H=0000;ELSEDATA_L=DATA_L;DATA_H-E 键,实现 送数功能DATA_L=DATA_L;DATA_H=DATA_H;DATA_P_REG=DATA_ H&DATA_L;START_REG-F 键,实现清零功能DATA_L=0000;DATA_H-不可缺少STATE:=2;END CASE;WHEN 2 =-状态2实现去抖动功能IF COUNTER=31 THEN -计数延时去抖COUNTER:=0;STATE:=3;ELSECOUNTER:=COUNTER+1;STATE:=2;END IF;WHEN 3 =-清除数据输出标志START_REG

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号