电子系统设计键盘上课讲义.docx
- 文档编号:24277381
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:11
- 大小:142.97KB
电子系统设计键盘上课讲义.docx
《电子系统设计键盘上课讲义.docx》由会员分享,可在线阅读,更多相关《电子系统设计键盘上课讲义.docx(11页珍藏版)》请在冰豆网上搜索。
电子系统设计键盘上课讲义
电子系统设计实验报告
姓名杨熙丞
指导教师贾立新
专业班级自动化1201
学院信息工程学院
.设计题目
设计一4*4矩阵键盘编码器,其示意图如图所示。
丫0到丫3为4路列扫描信号输出线,轮流将每一列置为低电平。
X0到X3为4根行输入线,当没有键按下时,X0到X3被上拉电阻拉成高电平。
当有键按下时,在列扫描信号的作用下,闭合键对应的行输入线变为低电平。
当按键有效时,输出4位键值B3到B0,同时键值有效信号DAV产生由高到低的跳变。
KEYCLI为键盘接口的时钟信号.
2.设计方案
掌握利用可编程逻辑器件设计编码式键盘接口的方法。
1.键盘编码器实验电路由键盘编码器模块和显示模块组成。
显示模块主要是对
数码管的编译。
4*4矩阵键盘编码器应由键盘扫描电路,行值编码器,消抖电路几部分组成。
键盘扫描电路由2位二进制计数器CNT4和2线-4线译码器DECODER构成。
行值编码器由ENCODER成。
消抖电路的按键是否稳定闭合是通过一个具有异步清零和保持功能的16进制计数器CNT16来检测的。
消抖按键的原理如图1所示。
2.实验板连接图如图2所示。
KEYCL来自LED模块的CLKIN,用短路块选择频率
为2048Hz
3.FPGA管脚锁定参考图3和4。
按键抖动
稳定闭合
亠>16XTCLK0「
KA
\f\DJ\
1/
DAV
■
卜——键有效/
图1消抖电路
口□□□□□□更|
闻=】H
图2编码式键盘实验连接图
FPGA
引脚号
信号稱
符弓
FPGA引脚号
信号
FPGA
弓1脚号
LCD
摆口信号
RS(A0)
PIN9
KD
PFN47
J4-5
PIN14J
RW(A1)
PTN8
’莅岐
PIN48
J4^
PTXH2
E
pis-
ALE
PIN51
J4-7
PIN141
行输入
信号
X0
PIN18
INTO
PINP
J4*S
PINB9
XI
PIN21
INTI
P【M
J4-9
PIN)A*
X2
PIN22
DO
pisr
J^IO
PIN
X3
PW2+
DI
PIN5S
J4-I1
PtNU5
刿打描
Y0
PTW
D:
PIN59
J4-I2
PIN
VI
5
14-1M
1势
Y2
PIN27
D4
PIX63
J4-14
PINlil
Y3
PDJZS
D5
PIN64
J4-15
PIN129
DACDO
PIN-l
D&
PDJ65
J4d6
PIN126
图3FPGAI/O引脚分配图
(注意:
其中分配使用的是键盘行输入信号以及键盘列扫描信号即X0-X3和Y0-Y3)
乜乂m4-1LJike曰刊「口倂
信号名:
引脚号
信町勒
引Ilf号
刖1•号
槽号名
引为号
AAO
PTN100
BBO
pintr
cco
PIN136
DD0
PTN13"
AA1
PIN101
BBL
P氏LLS
CC)
PIN129
DDI
PIN1J9
AA2
PTN103
BB2
FIN119
CC2
PTX132
DD2
PIN141
AA3
PIN104
BBS
PINI2U
CCJ
PIN133
DD3
PIN142
AA4
PIN112
BIH
PINI:
1
CCJ
FINBl
DD4
PIN143
AA5
PIN113
BB5
PTN122
CC5
PIN135
DD5
PIN144
PIN114
BB«
PIN125
心
PIN1J6
DD6
MNJ
CLK1
PTN97
CT.KIN
PIN96
图4LED模块管脚锁定图
(注意:
AA0-AA6显示键值,CC0-CC6显示按键次数并检验防抖效果)
3.原理图设计
根据设计题目给出的功能要求,4*4矩阵键盘编码器应由键盘扫描电路,行值编码器,消抖电路几部分组成,其原理框图如图5所示。
图54*4矩阵键盘编码器原理图
设计好4*4矩阵键盘编码器后,加入十六进制计数器CNT16显示译码器7SLED.构成了4*4矩阵键盘编码器测试电路顶层原理图
图64*4矩阵键盘编码器测试电路顶层原理图
4.单元电路设计
1•列扫描计数器CNT4Alibraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt4aisport(clk:
instd_logic;
en:
instd_logic;q:
bufferstd_logic_vector(1downto0));
endcnt4a;
architectureoneofcnt4ais
beginprocess(clk,en)beginif(clk'eventandclk='1')thenif(en='1')thenq<=q+1;endif;
endif;
endprocess;
end;
2.2-4译码器DECODER的设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityDECODERis
port(
a:
instd_logic_vector(1downto0);
y:
outstd_logic_vector(3downto0)
);
endDECODER;
architectureoneofDECODERis
beginy(0)<='0'whena=0else'1';y
(1)<='0'whena=1else'1';y
(2)<='0'whena=2else'1';y(3)<='0'whena=3else'1';end;
3.优先编码器ENCODER的设计
设I0到I3为键输入信号,低电平有效,优先级次序为I0最高,I3最低。
y1,y0为编码输出,KA为键检测信号。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityencoderis
port(i0,i1,i2,i3:
inbit;y0,y1,ka:
outbit);endencoder;
architectureoneofencoderis
begin
y1<=(i0andi1and(noti2))or(i0andi1and(noti3));
y0<=(i0and(noti1))or(i0andi2and(noti3));
ka<=i0andi1andi2andi3;
end;
4.消抖计数器CNT16A的设计
消抖计数器CNT16A实际上是一个具有清零和保持功能的十六进制加法计数器。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityCNT16Ais
port(clk,clr:
instd_logic;dav:
outstd_logic);endcnt16a;
architectureoneofCNT16Ais
signalq:
std_logic_vector(3downto0);beginprocess(clk,clr)
begin
if(clk'eventandclk='1')thenif(clr='1')thenq<="0000";
elsif(q=15)then
q<="1111";
else
q<=q+1;
endif;
endif;
endprocess;process(q)begin
if(q="1111")then
dav<='0';
else
dav<='1';
endif;
endprocess;
end;
5.寄存器REG4的设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityREG4is
port(
clk:
instd_logic;
d:
instd_logic_vector(3downto0);q:
outstd_logic_vector(3downto0));
endREG4;
architectureoneofreg4is
begin
process(clk)
begin
if(clk'eventandclk='0')then
q<=d;
endif;
endprocess;
end;
6.CNT16十六进制计数器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityCNT16is
port(
clk:
instd_logic;
q:
bufferstd_logic_vector(3downto0)
);
endCNT16;
architectureoneofCNT16is
begin
process(clk)
beginif(clk'eventandclk='1')thenq<=q+1;endif;
endprocess;
end;
7.LED7S模块的设计
LED7S模块的功能是将二进制编码转换成七段显示码。
由于频率计的显示器件采用共阴七段LED数码管,七段显示码中的0表示点亮,1表示熄灭。
libraryieee;
useieee.std_logic_1164.all;
entityLED7Sis
port(din:
instd_logic_vector(3downto0);
Y:
outstd_logic_vector(6downto0));
endLED7S;architectureoneofLED7Sis
begin
process(din)
begincasediniswhen"0000"=>Y<="0111111";
when"0001"=>Y<="0000110";
when"0010"=>Y<="1011011";
when"0011"=>Y<="1001111";
when"0100"=>Y<="1100110";
when"0101"=>Y<="1101101";
when"0110"=>Y<="1111101";
when"0111"=>Y<="0000111";
when"1000"=>Y<="1111111";
when"1001"=>Y<="1101111";
when"1010"=>Y<="1110111";
when"1011"=>Y<="1111100";
when"1100"=>Y<="0111001";
when"1101"=>Y<="1011110";
when"1110"=>Y<="1111001";
when"1111"=>Y<="1110001";
whenothers=>Y<=null;
endcase;
endprocess;
end;
5.仿真结果
1.优先编码器ENCODER仿真如图7所示
图7ENCODER的仿真结果
2.2-4译码器DECODE的仿真如图8所示
.110.(1pa30
rt930.pns40q购
SO.Qni
60.pns
TOfl■&
0(1.Hm
90q□
L&“
1ft7
5酊
Au
ao
510
r1]5T10
匚1-
JO
oi
CD
kCi]
it
-1
L<[»1
■1II
r
~L
□5
iUL.:
qljl
\
urni
uni>
1L0L
Z3:
UL0
■j[3]
90
|
[
tC2I
HB
r
■tUI
5I
T
b
L曲i
nt
n
图8DECODER的仿真结果
3.CNT16A仿真结果如图9所示
图9CNT16A的仿真结果
六.总结
经过实际电路板测试,结果已经过老师验收这次试验让我了解了Quartus的使用方法,制作过程中也遇到了一些问题。
比如说无法下载,发现是软件没有破解。
还有最后数码管乱码,发现是数码管的阴阳极搞错。
这些问题虽小,却造成了很大的困扰,以后还需注意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 系统 设计 键盘 上课 讲义