EDA课程设计报告电子密码锁设计Word文档下载推荐.docx
《EDA课程设计报告电子密码锁设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告电子密码锁设计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
![EDA课程设计报告电子密码锁设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/8/248a0a3c-1d90-4e0e-b520-0a0c5aa1a926/248a0a3c-1d90-4e0e-b520-0a0c5aa1a9261.gif)
设置按键还原初始密码。
第3章总体框图
1)设计方案:
电子密码锁,主要由四部分组成:
时序控制电路、密码输入电路、密码锁控制电路和密码锁显示电路。
时序控制电路来控制整个系统的运行时序,使其不会发生混乱。
作为电子密码锁的输入电路,可选用的方案有拨码与按键来控制输入和触摸式键盘输入等多种。
拨码与按键和触摸式4*4键盘相比简单方便而且成本低,构成的电路简单,本设计中采用拨码来作为该设计的输入设备。
密码锁的输入电路由拨码输入、计数器、译码器组成。
密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。
数字电子密码锁的显示信息电路可采用LED数码显示管和液晶屏显示两种。
液晶显示具有高速显示、可靠性高、易于扩展和升级的特点,但是普通的液晶存在亮度低、对复杂环境适应能力差的特点,但是在本设计中任然使用LED数码管。
根据以上选定的输入设备与与显示器件,并考虑到现实各项密码锁功能的具体要求,与系统的设计要求,系统设计采用自顶向下的设计方案。
整个密码锁系统的总体框图如图所示。
第4章功能模块
4.1输入模块
1)功能介绍
输入时有四个拨码键控制输入,每四个拨码来控制一位密码,再设一个拨码键a,每拨一次此按码键a,表示输入一位密码,在用计数器来计数,每输入一位密码时计数一次,并输出一位密码。
由于是拨码输入,加上消抖电路,使输入更加稳定。
2)输入模块与仿真图形
拨码与按键输入如下图
上图为拨码输入,当a给一个上升沿信号,在qout输出一个密码。
计数器如下图
上图为计数器,没输入一个密码计数一次。
消抖电路如下图
3)程序的输入
在文本区内输入程序,程序如下:
拨码与按键输入
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmimasuoIS
PORT(key0,key1,key2,key3,ret,a:
INSTD_LOGIC;
qout:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYmimasuo;
ARCHITECTUREoneOFmimasuoIS
BEGIN
PROCESS(a)
VARIABLEq:
STD_LOGIC_VECTOR(0TO3);
BEGIN
IFret='
1'
THEN
q:
=(others=>
'
0'
);
ELSE
ifa'
eventanda='
then
q(3):
=key3;
q
(2):
=key2;
q
(1):
=key1;
q(0):
=key0;
ENDIF;
qout<
=q;
ENDPROCESS;
endARCHITECTUREone;
计数器
USEIEEE.STD_LOGIC_unsigned.all;
ENTITYcnt4IS
PORT(a:
Q:
OUTSTD_LOGIC_vector(0to2));
ENDcnt4;
ARCHITECTUREBEHAVEOFcnt4IS
SIGNALq1:
STD_LOGIC_vector(0to2);
PROCESS(a)
ifa'
thenq1<
=q1+1;
ifq1="
110"
thenq1<
="
001"
;
endif;
ENDPROCESS;
Q<
=q1;
ENDBEHAVE;
4.2控制模块
1)功能介绍
开锁时,用四个拨码键来输入密码,计数器来计数密码的个数,将输入的密码与用户密码在比较器里进行比较,当输入的密码与开始时寄存在寄存器B中的密码一样时,则开锁,绿灯亮led1为高电平,红灯灭led2为低电平,当密码输入错时,绿灯灭led1为低电平,红灯亮led2为高电平。
当修改密码时,在寄存器B中,使key6键为高电平,即可在输入端就能输入要修改的密码。
按ret键可清除输入时输错的密码。
初始密码,可以在第一次输入时,按key6键,来存储密码。
2)控制模块与仿真图形
寄存器A如下图:
上图为寄存器A,存储每次输入的密码。
在文本区内输入程序,程序如下:
寄存器A
entitydff1is
port(clk:
instd_logic;
key6:
j:
instd_logic_vector(0to2);
d:
inSTD_LOGIC_vector(0to3);
q0:
outSTD_LOGIC_vector(0to3);
q1:
q2:
q3:
q4:
q5:
outSTD_LOGIC_vector(0to3));
endentitydff1;
ARCHITECTUREoneOFdff1IS
begin
process(j,clk)
ifclk'
eventandclk='
andkey6='
casejis
when"
=>
q0<
=d;
010"
q1<
011"
q2<
100"
q3<
when"
101"
q4<
=>
q5<
whenothers=>
null;
endcase;
endprocess;
endone;
寄存器B如下图:
上图为寄存器B,存储设置的用户密码,当key6为高电平时,可以来修改密码。
寄存器B
entitydff02is
endentitydff02;
ARCHITECTUREoneOFdff02IS
whenothers=>
endprocess;
endone;
比较器如下图:
上图为密码输入正确、错误时的比较器,当ok键为高电平时,进行比较。
比较器
entitybijiaois
port(ok:
n0,n1,n2,n3,n4,n5,b0,b1,b2,b3,b4,b5:
inSTD_LOGIC_vector(0to3);
led1:
outstd_logic;
led2:
outstd_logic);
end;
ARCHITECTUREoneOFbijiaoIS
SIGNALQ1,Q2:
STD_LOGIC;
process(n0,n1,n2,n3,n4,n5,b0,b1,b2,b3,b4,b5,ok)
ifok='
then
ifn0=b0andn1=b1andn2=b2andn3=b3andn4=b4andn5=b5then
Q1<
='
;
Q2<
ELSEQ1<
ENDIF;
led1<
=Q1;
led2<
=Q2;
ENDone;
六选一选择器如下图
上图为六选一选择器
六选一选择器
ENTITYmux61aIS
PORT(q0,q1,q2,q3,q4,q5:
inSTD_LOGIC_vector(0to2);
led:
outstd_logic_vector(5downto0);
y:
ARCHITECTUREoneOFmux61aIS
begin
process(j)
begin
000"
led<
="
011111"
y<
=q0;
101111"
110111"
=q2;
111011"
=q3;
111101"
=q4;
111110"
=q5;
endcase;
endprocess;
endone;
4.3显示模块
将密码用BCD七段数码管显示
2)显示模块与仿真波形图,如下图
上图将BCD码转化到七段译码电路上
七段译码器
ENTITYdecl7sIS
PORT(a:
instd_logic_vector(0to3);
led7s:
outstd_logic_vector(0to6));
ARCHITECTUREoneOFdecl7sIS
caseais
when"
0000"
led7s<
1000000"
0001"
1111001"
0010"
0100100"
0011"
0110000"
0100"
0011001"
0101"
0010010"
0110"
0000010"
0111"
1111000"
1000"
0000000"
1001"
0010000"
whenothers=>
null;
endcase;
第5章总体设计电路图
将各个模块连接在一起实现。
2)顶层文件如下:
3)波形仿真如下:
当key6为高电平时输入密码进如寄存器A,存储密码,当key6为低电平时,输入密码进入寄存器B,当寄存器B中的输入密码与寄存器A相同时为“104205”led1为高电平、led2为低电平,密码锁开锁。
设计正确。
第6章设计心得体会
通过这次设计,使我对EDA产生了浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
在当所有子模块都编写好了,连在一起时,运行时,我遇到了很大的麻烦,一直被时序问题所困扰,不能仿真出结果,在试验箱里也不能显示密码。
当解决了这个问题时,我特别的高兴。
当连接到试验箱上显示时,由于没有加消抖电路,所以在试验箱上显示很不稳定,所以在设计时应加上消抖电路,让输入、输出更稳定。
其次,在进行引脚连接时一定要细心,有些引脚不能使用,并且在拨码输入时要注意四个拨码的高地位,我因为没注意使得开始时一直不能得到正确的结果。
这次EDA课程设计历时三个星期,在整整三个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的学以致用,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到的问题,反映出来我的许多不足之处,我以后要努力克服缺点。
总的来说,这次设计的密码锁还是比较成功的,在设计中遇到了很多问题,最后在同学和老师的辛勤的指导下外加上自己的努力,终于都得到了解决,因此很有成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。