基于VHDL语言的电子密码锁v10Word文档下载推荐.docx
- 文档编号:2955211
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:17
- 大小:177.23KB
基于VHDL语言的电子密码锁v10Word文档下载推荐.docx
《基于VHDL语言的电子密码锁v10Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的电子密码锁v10Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。
1.1电子密码锁的功能要求
1、设计六位密码(每位均可以是0~9任意数字)的电子密码锁,用四个拨码开关(k1~k4)输入,并通过七段数码管显示输入密码。
2、密码验证:
按键设置验证开始,输入密码后,密码正确时开锁,绿灯亮,红灯灭,表示开锁成功;
当密码输入错误时,绿灯灭,红灯亮,表示开锁失败。
3、密码更改:
密码验证正确后可以更改,并设置按键控制更改密码功能。
4、密码清除:
密码输入过程中可以清除,并重新输入。
5、初始密码:
预设初始密码为123456。
1.2总体模块设计
通过拨码输入密码,送到密码校验电路,如果校验正确开锁,并执行显示在LED灯上,同时密码校验正确可以进行密码修改。
图1
1.3顶层文件设计
本设计采用EDA技术和VHDL语言设计了一种按键输入密码并数码管回显,当输入正确密码时轰动绿灯亮、红灯熄灭表示开锁,而当输入错误密码时,红灯亮、绿灯熄灭表示关锁。
根据系统设计要求,系统设计采用自顶向下的设计方法。
顶层设计采用原理图设计方式,系统的整体组装设计原理图如图2所示。
它由拨码输入、寄存器、密码比较和显示灯四个模块组成。
其顶层文件设计如图:
图2
各功能模块的具体实现
2.1拨码输入模块
1、拨码输入模块包括设置密码并读取、输入密码、系统复位功能。
该模块中我们设置了6个按键,各个按键的功能分别为:
按键1、2、3、4分别对应4位二进制密码输入、键5为密码确认键、键6为系统复位和密码读取按键。
如图3:
图3
2、以上各子模块的设计均采用VHDL语言实现,其具体实现程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityais
port(k1,k2,k3,k4,k5:
instd_logic;
k_out:
outstd_logic_vector(3downto0);
q:
bufferstd_logic_vector(2downto0));
end;
architecturebhvofais
begin
process(k5)
begin
ifk5'
eventandk5='
1'
then
ifq<
"
101"
thenq<
=q+'
;
elseq<
="
000"
;
endif;
k_out<
=k1&
k2&
k3&
k4;
endprocess;
endbhv;
2.2寄存器
1、用两个寄存器,每个寄存器存入6个二进制数,每个寄存器的输入和输出各6个。
b2寄存器为存入拨码输入的6个二进制数,b1寄存器为存入密码的6个二进制数,并在b1中加入初始密码。
2、寄存器的VHDL程序如下:
b1寄存器(图4):
图4
entityb1is
port(
d1,d2,d3,d4,d5,d6:
instd_logic_vector(3downto0);
instd_logic_vector(2downto0);
q1,q2,q3,q4,q5,q6:
outstd_logic_vector(3downto0));
architecturebhvofb1is
signalqq1,qq2,qq3,qq4,qq5,qq6:
std_logic_vector(3downto0);
process(q)
if
q<
then
qq1<
0001"
qq2<
0010"
qq3<
0011"
qq4<
0100"
qq5<
0101"
qq6<
0110"
=d1;
=d2;
=d3;
=d4;
=d5;
=d6;
endif;
endprocess;
q1<
=qq1;
q2<
=qq2;
q3<
=qq3;
q4<
=qq4;
q5<
=qq5;
q6<
=qq6;
endbhv;
b2寄存器(图5):
图5
entityb2is
port(q:
architecturebhvofb2is
ifq="
thenq1<
=d1;
elsifq="
001"
thenq2<
=d2;
010"
thenq3<
=d3;
011"
thenq4<
=d4;
100"
thenq5<
=d5;
elseq6<
2.3密码比较模块
1、把2个寄存器里的二进制数进行比较,如图5.
2、比较模块的VHDL程序如下:
entitycis
port(c1,c2,c3,c4,c5,c6:
m1,m2,m3,m4,m5,m6:
s_out:
outstd_logic);
architecturebhvofcis
process(c1,m1,c2,m2,c3,m3,c4,m4,c5,m5,c6,m6)
if
c1=m1then
c2=m2then
c3=m3then
c4=m4then
c5=m5then
c6=m6then
s_out<
='
else
0'
endprocess;
2.3显示模块
1、本设计要求输入正确密码时,绿灯亮、红灯熄灭;
当输入错误密码时,5S后红灯亮绿灯灭。
2、LED显示电路的VHDL程序如下:
位码(图6):
图6
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityfis
port(s1,s2,s3,s4,s5,s6:
INSTD_LOGIC_vector(3downto0);
inSTD_LOGIC_VECTOR(2DOWNTO0);
cout:
bufferstd_logic_vector(2downto0);
dig:
bufferstd_logic_vector(5downto0);
DEL:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
architectureoneoffis
begin
process(q)
cout<
=cout+'
caseqis
when"
=>
DEL<
=s1;
dig<
011111"
=s2;
101111"
=s3;
110111"
=s4;
111011"
=s5;
111101"
when"
111110"
whenothers=>
null;
endcase;
endone;
LED七段数码管(图7):
图7
entitydis
port(keyin:
keyout:
outstd_logic_vector(6downto0));
endd;
architectureoneofdis
process(keyin)
ifcout<
casekeyinis
0000"
=>
keyout<
1000000"
1111001"
0100100"
0110000"
0011001"
0010010"
0000010"
0111"
1111000"
1000"
0000000"
1001"
0010000"
whenothers=>
=null;
endone;
系统仿真
将程序下载Cyclone系列芯片中,同时在EDA试验箱上进行硬件验证。
本文提出的电子密码锁由于采用VHDL语言设计,用一片FPGA实现,因而体积小,功耗低,稍加修改就可以改变密码的位数和输入密码的次数,具有较好的应用前景。
但由于结构还比较简单,有待进一步完善。
1)密码锁输入模块的仿真,如图12所示。
硬件测试
1)仿真波形正确后,便可进行下载;
2)选择GW48系列EDA试验开发系统;
3)使用Cyclone系列芯片EP3C25F324C8;
4)先进行引脚锁定,具体引脚锁定如图14;
5)选择模式3;
6)选择好硬件和模式后就可以下载都EDA实验箱;
密码锁引脚锁定图8
实践心得及体会
通过三星期的紧张工作,最后完成了我的设计任务——基于VHDL语言的电子密码锁设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
它不仅仅是一个学习新识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。
希望学校以后多安排一些类似的实践环。
通过对每个模块的了解和分析加深了对层次化设计的理念,每次遇到不会的及时查阅书籍进一步加深了对知识的理解程度,老师细致的讲解犹是我记忆犹新。
与同学的交流,使我们交换了各自的想法,有助于形成自己的构想,以及我们一起讨论不同之处也使我们彼此加深对知识的了解。
此次设计经历网上查阅资料、思考顶层文件的设计、各个模块的具体实现等,让我们掌握对信息的有选择性的摄取信息,培养了分层分布思考问题等理念,此次课程设计对我收益很大,学到很多东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 电子 密码锁 v10