数电设计密码锁.docx
《数电设计密码锁.docx》由会员分享,可在线阅读,更多相关《数电设计密码锁.docx(12页珍藏版)》请在冰豆网上搜索。
![数电设计密码锁.docx](https://file1.bdocx.com/fileroot1/2022-11/19/bb7cee6c-a822-4abd-90c4-257be3f3c95a/bb7cee6c-a822-4abd-90c4-257be3f3c95a1.gif)
数电设计密码锁
B
大连理工大学本科实验报告
题目:
电子锁
课程名称:
数字电路课程设计
学院系:
电子信息与电气工程学部
专业:
电气工程及自动化
班级:
学生姓名:
学号:
完成日期:
成绩:
2010年12月08日
题目:
电子锁
1设计要求
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
基于EDA技术设计的电子密码锁。
以其价格便宜、使用方便、安全性高、成本低、功耗低、易操作等优点,受到了人们的普遍关注。
而以可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ6开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能够满足社会对安全防盗的需求。
本设计的各个模块由相应的VHDL程序具体实现,并在QuartusⅡ6环境下进行了整体电路的模拟仿真,最终实现“密码锁控制器设计”的要求。
数字密码锁实现:
1、不需要带钥匙,只要记住开锁密码即可开锁的功能。
2、在输入密码正确后,还可以修改密码。
3、在输入密码的过程中,不显示密码,只显示无规律的提示某位密码是否输入完毕,防止了密码的泄漏,大大加强了密码锁的保密性。
2设计分析及系统方案设计
密码锁控制器是硬件与软件的结合。
根据设计要求,决定以FPGA芯片和VHDL语言设计此电子密码锁。
用一片FPGA芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。
这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。
另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。
本演示系统实现了:
1、输入密码正确后,正确小灯(green)亮,错误小灯(red)不亮;
2、当输入密码正确后,可修改密码,可使用want开关正确进行密码修改功能,而后密码被重新设定为新的密码,当密码输入错误的时候并不可以修改密码,此时即使按下want键也不好用;
3、输入错误密码,正确小灯(green)不亮,错误小灯(red)亮;
4、按下reset后,密码归为初始密码。
开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁。
否则系统进入“错误”状态,并发出报警信号——红灯亮。
开锁程序由设计者确定,并锁内给定的密码是可调的,且预置方便,保密性好。
串行数字锁的报警方式是点亮指示灯LEDR[0],直到按下复位开关,报警才停止。
此时,数字锁自动进入等待下一次开锁的状态。
3系统以及模块硬件电路设计
3.1系统总框图
图1密码锁控制器系统总框图
3.2密码提示电路
七段数码管是电子开发过程中常用的输出显示设备。
在本设计中使用的是1个共阴极型七段数码管。
其单个静态数码管如下图3.6所示。
由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段被输入高电平,则相应的这一段被点亮。
反之则不亮。
共阳极性的数码管与之相反。
在本次密码锁电路中,7段式数码显示管的作用为提示当前输入的密码为第几个,因为密码有八位,很可能让正在输入密码的人忘记输入到了第几位,而数显管恰好起到了提示作用,此处的设计体现了其更加智能化和人性化的理念。
图2单个数码管管脚示意图
3.3输入密码、更改密码、复位密码及报警电路
此处电路的实现需要使用四个开关及两个小灯。
开关SW[0]到SW[2]从左至右依次实现的按钮功能为用于输入串行密码(共8位)的密码按键,复位成初始系统自带密码的RESET键,当密码输正确的可以选择设置新密码的按键WANT,(当密码输入不正确时,此按键并不好用)。
灯分别为红灯绿灯用于报警电路提示此时输入的密码是正确的还是错误的。
同时在程序端口中需要的相当于时钟CLK功能的按键,在外部输入电路中起到的作用是相当于按键确认功能,每输入一位密码,确认该密码。
在程序中需要count计数以保证达到8位密码即判断密码输入正确与否,未达到8位由外部人员继续输入直至到达8位。
3.4模拟电路
3.4引脚分布
接口
名称
类型
(输入/输出)
结构图上
的信号名
引脚号
说明
clk
in
KEY[0]
PIN_G26
时钟信号,按一次输入一位
k
in
SW[0]
PIN_N25
高电平表示输入1
green
out
LEDG[0]
PIN_AE22
输入正确时亮
red
out
LEDR[0]
PIN_AE23
输入错误时亮
reset
in
SW[1]
PIN_N26
按下(为1)时复位,密码归为原密码
want
in
SW[2]
PIN_P25
是否修改密码,为1时修改
c
out
HEX0
(数码管)提示作用
c[0]
out
HEX0[0]
PIN_AF10
数码管
c[1]
out
HEX0[1]
PIN_AB12
数码管
c[2]
out
HEX0[2]
PIN_AC12
数码管
c[3]
out
HEX0[3]
PIN_AD11
数码管
c[4]
out
HEX0[4]
PIN_AE11
数码管
c[5]
out
HEX0[5]
PIN_V14
数码管
c[6]
out
HEX0[6]
PIN_V13
数码管
4系统的VHDL设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycodeis
port(
clk:
instd_logic;--电路工作时的时钟信号
c:
outstd_logic_vector(6downto0):
="1000000";--7段数显管
k:
instd_logic;--高电平表示输入1
green:
outstd_logic;--输入正确时亮
red:
outstd_logic;--输入错误时亮
reset:
instd_logic;--按下时复位
want:
instd_logic);--是否修改密码
end;
architectureaofcodeis
signalcode:
std_logic_vector(7downto0);--储存密码
signalgetcode:
std_logic_vector(7downto0);--储存修改后的密码
signalcounter:
std_logic_vector(3downto0);--计数
signalallow:
std_logic;--是否允许修改密码
begin
process(clk)
begin
ifreset='1'then--按下reset后,密码归为初始密码
getcode<="00000000";--初始密码
counter<="0000";--内部计数
code<="11001000";--密码
green<='0';
red<='0';
allow<='0';
elsifclk'eventandclk='1'then--输入clk脉冲,则接收1位密码
getcode<=getcode(6downto0)&k;--将这1位密码并入getcode中的最后一位
ifcounter="1000"then--输入为8位数码时比较
ifcode=getcodethen
green<='1';--正确灯亮
red<='0';
allow<='1';--允许修改密码
elsifallow='1'andwant='1'then--如果允许输入且想输入
code<=getcode;--输入新密码
green<='0';
red<='0';
else
allow<='0';
green<='0';
red<='1';--错误灯亮
endif;
counter<="0000";--重新计数
else
counter<=counter+1;--累加
endif;
endif;
endprocess;
process(clk)
begin
if(counter="0000")then--7段数显管显示0到9
c(6downto0)<="1000000";
elsif(counter<="0001")then
c(6downto0)<="1111001";
elsif(counter<="0010")then
c(6downto0)<="0100100";
elsif(counter<="0011")then
c(6downto0)<="0110000";
elsif(counter<="0100")then
c(6downto0)<="0011001";
elsif(counter<="0101")then
c(6downto0)<="0010010";
elsif(counter<="0110")then
c(6downto0)<="0000010";
elsif(counter<="0111")then
c(6downto0)<="1111000";
elsif(counter<="1000")then
c(6downto0)<="0000000";
elsif(counter<="1001")then
c(6downto0)<="0011000";
endif;
endprocess;
end;
5结论以及结果说明
5.1运行环境介绍
DE2是Altera公司针对大学教学及研究机构推出的FPGA多媒体开发平台。
DE2为用户提供了丰富的外设及过媒体特性,并具有灵活而可靠的外围接口设计。
DE2能帮助使用者迅速理解和掌握实时多媒体工业产品设计的技巧,并提供系统设计的验证。
DE2平台设计和制造完全按照工业产品标准进行,可靠性很强。
图3DE2开发平台示意图
Altera公司发布的第三代CycloneFPGA,与第一代相比,加入了硬件乘法器,同时内部存储单元数量也得到了进一步的提升,EP2C35核心板上采用的FPGA是Altera公司CycloneII系列芯片EP2C35F672C6。
下面列出了EP2C35的有关资源特性,更详细的特性请参阅其数据手册。
DE开发台上提供的硬件资源如下:
(1)AlteraCycloneII系列的EP2C35F672C6FPGAU11,内含3500个逻辑单元。
(2)主动串行配置器件EPCS16U30。
(3)板上内置用语编程调试和用户API设计的USBBlaster,支持JTAG模式和AS模式;U25是实现USBBlaster的US