数字密码锁设计学位论文Word文档下载推荐.docx
《数字密码锁设计学位论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字密码锁设计学位论文Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
![数字密码锁设计学位论文Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-2/3/88df7980-3ef3-4698-9e7e-dc12f41b6ced/88df7980-3ef3-4698-9e7e-dc12f41b6ced1.gif)
数字密码锁
Abstract
Theapplicationofelectronicsproductsbringsgreatconveniencetoourlife.Asaelectronicsproduct,digitalencryptedlockhasmoreadvantagesovertraditionallockinourdailyuse.Meanwhile,thedevelopmentofEDAtechnologytakesabreakthroughtotheperformanceofelectronicsproducts,whichsavestheresourcesandenhancesthereliability.Inthispaper,throughanalysisofthedigitalencryptedlock’sfunction,wedividedthewholesystemintoseveralmodules.Then,wedescribedeachmodulebyVHDL(VeryHigh-SpeedIntegratedCircuitHardwareDescriptionLanguage)anddrewthegraphicfiles.Wesimulatedthefilesandfinallygottheresults.Whenyouinputcorrectcodes,thedooropensandthelightisgreen.Whenthewrongcodesareinputted,thelightturnsredandthealertrings.Theresultshavedemonstratedthefeasibilityofourapproach.
Keywords:
FPGA;
ProgrammableLogicDevice;
DigitalEncryptedLock
第1章绪论
随着科技的发展,电子产品已广泛地应用于人们的日常生活,数字密码锁也应用于保险提箱、超市物品柜等诸多场合,给人们带来了安全和方便。
本项目的数字锁除能实现同于其他数字锁的一般功能外,还有一些其他的优点。
安装了报警装置,在输入错误密码后发出警报,提高了安全性。
另外键盘设有盲点,可以方便盲人开锁,扩大了它的应用领域。
基于这些优点和其广泛的实用性,该数字锁具有研发的意义。
近几年来EDA技术的迅猛发展给电子产品的设计带来了新方法,有文章评论可编程逻辑器件FPGA/PLD将冲击未来的系统设计[1]。
与此同时,IC技术发展日新月异。
1960年GordonMoore提出集成电路的功能随着时间呈指数增长的规律。
Moore的预言在其后的几十年中表现出惊人的吻合,且被称之为Moore定律[2]。
该定律指出,IC的集成度(即每个微电子芯片上集成的器件数),每IS个月翻一番,对应于IC制作工艺的特征线宽则每三年缩小30%。
根据按比例缩小原理(ScalingDownPrinciple),特征线条越窄,IC工作速度越快,单元功能消耗的功率越低。
因此,IC的发展不仅提高集成度,而且大大改善其性能(速度、功耗、可靠性等)。
现在人们已经能够把一个完整的电子系统集成在一个芯片上了。
因此,用一片可编程逻辑器件芯片——FPGA/CPLD实现数字锁的功能既节省了资源又提高了系统的可靠性。
本文将数字密码锁划分成控制器、比较器、计数器、编码器、数据选择器等一些模块,并加入使能电路、消抖电路和指示电路等外围电路。
对每一个模块均进行了VHDL语言描述和基于Max+plus
软件平台的计算机仿真[3-5],得到了较理想的波形。
仿真结果证明了我们设计的正确性。
波形及相关程序见附录。
本文具体安排如下:
论文的第一部分阐述课题的背景和研究意义;
第二部分给出了数字锁的设计方案,介绍数字锁的工作过程;
在第三部分中我们对系统的模块进行了仿真,得到了满意的结果;
最后一个部分给出了结论。
第2章设计方案
密码的输入方式有并行和串行两种。
采用串行输入方式,电路较简单,而且还有一个优点,就是串行输入必须用时序电路实现,对结果的判别与操作程序有关。
故本设计采用串行数字锁并对操作过程有所规定。
2.1系统模块划分
图2-1是数字密码锁的原理框图。
通过图2-1对数字密码锁的模块划分,我们可以确定整个系统的输入输出端口信号。
图2-1密码锁各模块划分
1.数字按键输入信号a0~a9,用来进行数字按键操作;
2.按键输入信号wait_t,用来建立密码器的等待状态;
3.按键输入信号ready,用来设置密码器的准备操作状态;
4.按键输入信号setup,用于内部人员进行重新设置密码器;
5.按键输入信号open_t,用来设置密码器进入启动状态;
6.绿灯指示驱动信号led_g,驱动绿灯显示;
7.红灯指示驱动信号led_g,驱动红灯显示;
8.蜂鸣器驱动信号alert,驱动蜂鸣器报警;
9.外部时钟信号clk,用来作为内部操作时钟和驱动蜂鸣器;
10.数码管显示译码输出a,b,c,d,e,f,g。
2.2信号功能描述
1)给密码锁上电后按下ready键,表示密码器准备就绪,可以接受外界输入密码。
2)通过a0~a9按键输入3位数字密码后按下open_t键,如果输入的密码正确,则开锁,同时密码器绿灯亮。
如果密码有误,则不能开启,同时红灯亮,发出警报。
3)密码锁开启结束后,密码锁进入下一次开锁等待状态。
这时设置按键wait_t使密码锁重新进入等待状态。
4)密码锁处于报警状态时,ready和wait_t键不起作用。
这种情况下,密码锁由内部人员按setup键来对密码锁进行重新设置,使其回到等待状态。
安全起见,setup应置于外部人员看不到的地方。
5)如果密码输入时操作失误,按下ready键重新回到密码锁准备就绪状态。
6)密码锁的工作时钟由外部晶振提供,可以用分频器对外部时钟进行分频操作,以产生需要的时钟。
2.3数字锁工作过程
首先,密码锁通过键盘输入数字密码,然后密码通过编码器转换输出BCD码,接下来通过比较器与预置密码进行比较,同时将输入的密码数字通过数码管显示译码模块显示出来,最后将比较的结果dep送入控制器中。
外部键每送入一个密码,计数器的计数值加1。
如果计数器的计数值计到3,表示3个密码已经输入完毕。
接下来计数器应向控制器发出反馈信号full,这表示控制器已经进入启动状态。
控制器模块在密码器每收到一个密码数字时向计数器发出一个时钟信号,如果密码器在按下open_t键以前收到第4个密码数字,将会转入报警状态,这时等待按下open_t键开始报警。
所以,密码器每输入一个密码应该向控制器模块送入一个data_in信号,显然这个信号也应该同步。
另外,数字密码a0~a9、ready、open_t、wait_t、setup均由按键方式产生,其产生时刻和持续时间长短是随机不定的,并且存在因开关簧片反弹而引起的电平抖动现象,因此每个开关后面安一个消抖模块以保证系统能捕捉到输入脉冲,同时保证每按一个键只形成一个宽度为系统时钟周期的脉冲。
控制器是数字密码锁的核心部分,下面将对这一部分作重点的分析。
将控制器的工作分为六个状态:
Qa—建立等待状态,Qb—准备就绪状态,Qc—密码输入状态,Qd—开启状态,Qe—报警状态,Qf—报警返回状态。
根据工作过程,可以得到控制器工作流程图,见附录,并化简得到状态转换的激励方程:
各状态之间的转换过程如下:
图2-2控制器状态转换图
上图描述了控制器在6个状态之间的跳转过程和具体转换条件,可以清楚地看出控制器的工作过程。
第3章仿真及测试结果
各模块的VHDL语言描述文件见附录,通过仿真得到了令人满意的波形。
3.1顶层设计仿真波形:
图3-1系统仿真结果
从图中看出,每输入一个密码,data_in出现一个高电平。
在输入正确密码1,2,3时,比较器判断信号均显示高电平,系统进入Qd启动状态。
按下open_t键以后,绿灯亮(低电平有效)。
开锁过程完成。
3.2时钟信号仿真波形:
图3-2时钟信号仿真波形一
clk_div2是clk的200,000分频为控制器提供时钟信号。
图3-3时钟信号仿真波形二
clk_div1是clk的1000分频,为报警器提供时钟信号。
3.3控制器的仿真:
下面我们对数字锁的核心部分——控制器进行仿真。
clk_div2为控制器提供时钟,dep为比较器输出信号,绿灯和红灯均为低电平有效。
c11为wait_t输出信号,c22为setup输出信号,c33为ready输出信号,c44为open_t输出信号。
本文仿真了控制器于不同状态的跳转情况。
仿真时间为3.25µ
s。
模块流程图见附录。
仿真源程序:
libraryieee;
useieee.std_logic_1164.all;
entitycontrol_modelis
port(c11,c22,c33,c44:
instd_logic;
data_in:
dep:
full:
clk_div2:
en:
outstd_logic;
cnp,reset:
s_lr,s_lg,wait_l:
:
outstd_logic);
endcontrol_model;
architecturecontrol_model_archofcontrol_modelis
typestateis(qa,qb,qc,qd,qe,qf);
signalcurrent_state:
state:
=qa;
begin
process
begin
waituntilclk_div2'
eventandclk_div2='
1'
;
wait_1<
='
casecurrent_stateis
whenqa=>
en<
0'
if(c11='
)then
current_state<
else
=qb;
s_lg<
s_lr<
endif;
whenqb=>
wait_1<
if(c33='
=qc;
reset<
whenqc=>
reset<
cnp<
if(c44='
=qf;
elsif(c33='
)then
reset='
elsif(full='
)then
=qd;
elsif(data_in='
cnp<
if(dep='
=qe;
whenqd=>
if(data_in='
elsif(c33='
elsif(c44='
whenqe=>
if(c33='
whenqf=>
if(c22='
wait_l<
endcase;
endprocess;
endcontrol_model_arch;
仿真波形:
图3-4系统各状态转换仿真图
从上图可以看出,系统处于a状态(建立等待状态)时,密码器不会接受除wait_t以外的信号,按下wait_t键,系统进入b状态(准备就绪状态)同时输出计数器清零信号setup。
这时按下ready键,密码锁进入c状态(密码输入状态),控制器接受密码输入。
当输入密码满3位时,full信号出现高电平,这时转入启动状态d状态。
控制器要判断接下来的信号是open_t还是数字键,假设我们又输入一个数字,data_in出现高电平,系统则进入报警状态e状态。
如果按下open_t键,如波形图c44出现高电平,控制器发出红灯亮信号并进入报警返回状态f状态。
这时我们完成了a→b→c→d→e→f的状态转换仿真。
按下setup键,c22信号出现高电平,数字锁重新进入b状态,按ready键,进入c状态,输入密码,dep出现低电平表明密码不符合,转入e状态。
系统于e状态时,按下ready键又转入c状态。
在c状态时按下open_t键,不符合启动程序,则进入f状态同时红灯亮。
完成b→c→e→c→f的转换仿真。
同样,f状态时按下setup键,c22信号出现高电平,数字锁重新进入b状态。
系统b状态按下ready键进入c状态,输入三位密码后进入d状态,若这时发现操作失误,按下ready键可输出reset信号,返回c状态(密码输入状态),若不按ready,按下open_t则开锁,绿灯亮。
第4章结论
本文用可编程逻辑器件实现了多功能数字锁系统的功能,增加了系统的及程度,节省了资源。
该密码锁在输入正确密码时,锁开启并且绿灯亮,输入密码不正确时,红灯亮并发出警报。
本文给出顶层原理图、模块框图以及各模块的VHDL语言源程序。
各模块的VHDL语言描述已通过计算机仿真测试,得到了满意的波形。
这证明了设计的正确性和方法的可行性。
谢词
感谢指导老师一直以来给我的帮助,在理论学习和查阅资料的过程中,张有志老师一直给我热心的指导,这为后来系统功能的具体实现打下了基础。
还要感谢实验室的老师在软件实现过程中给与的帮助。
仿真过程中遇到很多问题在老师帮助和个人努力下得以解决,最终完成了设计任务,得到正确结果。
参考文献
[1]可编程逻辑器件FPGA/PLD冲击未来的系统设计[OL].
[2]王金明等.数字系统设计与VerilogHDL[M].电子工业出版社,2002
[3]任勇峰,庄新敏.VHDL与硬件实现速成[M].国防工业出版社,2005
[4]金西.VHDL与复杂数字系统设计[M].西安电子科技大学出版社,2003
[5]冯涛,王程.Max+plus
入门与提高[M].人民邮电出版社,2002
[6]汪国强等.可编程路逻辑器件实验[M].电子工业出版社,2005
[7]居悌.可编程路逻辑器件的开发与应用[M].人民邮电出版社,1995
[8]赵立民.可编程路逻辑器件与数字系统设计[M].机械工程出版社,2003
[9]WayneWolf.FPGA-basedsystemdesign[M].ChinaMachinePress,2005
[10]杨恒.FPGA/CPLD最新实用技术指南[M].清华大学出版社,2005
[11]Vocke.Computeraidedroutingforcomplexprogrammablelogicdevicemanufacturingtestdevelopment[J].IEEE,April2000:
171-176
[12]CharlesW.McKay.DigitalCircuits[M].EnglewoodCliffs,N.J.c1978.
[13]AllanR.Hambley.Electronics[M].PublishingHouseofElectronicsIndustry,2005
[14]MarkD.Birnbaum.Essentialelectronicdesignautomation[M].2005
[15]于枫,张丽英,廖宗建.ALTERA可编程逻辑器件应用技术[M].科学出版社,2004
附录:
1)顶层文件VHDL源程序
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
USEIEEE.std_logic_arith.ALL;
USEIEEE.std_logic_unsigned.ALL;
USEWORK.cipher_example.ALL;
ENTITYcipher_topIS
PORT(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:
INstd_logic;
wait_t:
ready:
INstd_logic;
setup:
open_t:
clk:
led_g,led_r,alert:
OUTstd_logic;
a,b,c,d,e,f,g:
OUTstd_logic);
ENDcipher_top;
ARCHITECTUREcipher_top_archOFcipher_topIS
COMPONENTclkdiv_model
PORT(clk:
clk_div1:
clk_div2:
ENDCOMPONENTclkdiv_model;
COMPONENTkeysync_model
PORT(c1,c2,c3,c4:
a00,a10,a20,a30,a40,a50,a60,a70,a80,a90;
c11,c22,c33,c44:
a01,a11,a21,a31,a41,a51,a61,a71,a81,a91:
ENDCOMPONENTkeysync_model;
COMPONENTenable_model
PORT(open_t:
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:
en:
c4:
a00,a10,a20,a30,a40,a50,a60,a70,a80,a90:
ENDCOMPONENTenable_model;
COMPONENTinvert_model
PORT(wait_t:
c1,c2,c3:
ENDCOMPONENTinvert_model;
COMPONENTmux4_model
PORT(s0,s1:
e1,e2,e3,e4:
ENDCOMPONENTmux4_model;
COMPONENTencoder_model
PORT(a01,a11,a21,a31,a41,a51,a61,a71,a81,a91:
b1,b2,b3,b4:
data_in:
ENDCOMPONENTencoder_model;
COMPONENTcomparator_model
PORT(b1,b2,b3,b4:
dep:
ENDCOMPONENTcomparator_model;
COMPONENTcounter_model
PORT(reset:
cnp:
s0,s1OUTstd_logic;
full:
ENDCOMPONENTcounter_model;
COMPONENTdecoder_model
PORT(b1,b2,b3,b4