eda设计书正文数字密码锁设计.docx
- 文档编号:7038071
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:10
- 大小:88.39KB
eda设计书正文数字密码锁设计.docx
《eda设计书正文数字密码锁设计.docx》由会员分享,可在线阅读,更多相关《eda设计书正文数字密码锁设计.docx(10页珍藏版)》请在冰豆网上搜索。
eda设计书正文数字密码锁设计
1.设计的意义
随着社会物质财富的日益增长,安全防盗已成为全社会问题。
人们对锁的要求越来越高,既要安全可靠地防盗,又要使用方便。
弹子锁由于结构上的局限已难以满足当前社会管理和防盗要求,特别是在人员经常变动的公共场所,如办公室、宾馆等地方。
电子密码锁由于其自身的优势,越来越受到人们的青睐,但是目前使用的电子密码锁大部分是基于单片机用分离元件实现的,其成本较高且可靠性得不到保证。
EDA(ElectronicsDesignAutomation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)3个阶段。
前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提出了并行设计环境概念,提供了独立于工艺和厂家的系统级的设计工具。
EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。
目前应用比较广泛的硬件描述语言就是VHDL。
VHDL是目前大规模集成电路设计中最具代表性、使用最广泛的硬件描述语言之一,为设计者提供了一种用形式化方法来描述数字系统硬件电路的方法。
VHDL具有强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段。
根据系统的行为和功能要求,可以自上而下的完成相应的描述、综合、优化、仿真与验证,直至生成器件系统。
VHDL使得设计者可以进行更大、更复杂的数字系统的设计
本文采用先进的EDA技术,利用QUARTUSⅡ工作平台和VHDL语言,设计了一种新型的密码锁。
该密码锁具有密码预置和误码报警等功能,保密性好,远远大于以往的密码锁,使随机破译成功率极低,编码可变,避免因人员的更替而使锁的保密级别下降且有利于用户编制易于记忆的密码,因而该数字密码锁具有体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便等优势。
2.设计原理
2.1设计要求
设计一种数字密码锁,密码由4位二进制数字组成,初始设定为“0000”。
可有用户任意输入正确时开锁,密码输入错误时报警。
按“安锁”键,将锁闭合;开锁时,先按“输入密码键”,输入密码,再按“确认”键;若输入密码内容有误,则报警;只有在开锁状态下才可以重新设置密码,先按“修改密码”键,输入新码,再按“确认”键。
2.2模块功能
系统主要由3个模块组成,分别是控制模块、寄存器模块、比较器模块。
2.2.1控制模块
控制模块采用有限状态机设计,将系统分为7个状态,即开锁状态(outlock)、安锁状态(inlock)、输入密码状态(input)、密码初验正确状态(right)、密码初验错误状态(wrong)、报警状态(alarm)、修改密码状态(change)。
状态转移图如图1。
enter=’0’
enter=’0’
lock=’0’
enter=’0’
enter=’0’
图1状态转移图
系统上电时,处于开锁状态,当输入修改密码xiu信号时,系统进入修改密码状态;若输入安锁lock信号,系统进入安锁状态,锁闭合:
在安锁状态,输入输入密码start信号,系统进入输入密码状态;在输入密码状态,如输入密码内容和长度均正确,进入密码初验正确状态,如果密码错误,进入密码初验错误状态;在密码初验正确状态,输入确认信号enter时,进入开锁状态,在开锁状态kai信号等于‘1’;在密码初验错误状态,输入确认信号enter时,进入报警状态;在报警状态。
warn信号等于‘1’。
2.2.2比较模块
在数字密码器中,比较器模块的功能是对按键输入和寄存器模块的输出进行比较,然后将比较的结果送入到控制器模块。
比较器的具体工作原理是:
当比较结果相等时,c输出为1;当比较结果不相等时,c的输出为0。
2.2.3寄存模块
寄存器模块用于存放预设和修改后的密码,并在开锁时将所存密码输出到比较器与按键输入的密码进行比较,判断由按键输入密码是否正确的结果
3.仿真分析
3.1控制模块的仿真
控制模块是系统的核心,其仿真波形如图2所示。
各端口功能如下:
输入信号:
clk输入时钟,lock安锁信号,start开始输入密码,xiu修改密码,enter密码确认,Yes密码比较。
输出信号:
warn警告信号,kai密码正误显示信号,wr寄存器读写信号,en密码输入使能。
图2控制模块仿真波形
波形仿真分析:
起始初始密码为“0000”,安锁后锁关闭kai信号为‘0’;开锁时,按下start开锁键,密码比较yes信号为‘1’有效,输入密码正确,按下enter确认键,锁开,锁开标志信号op有效为‘1’;开锁状态下,按下xiu修改密码键,输入新密码后按确认键start,密码修改成功,再按下lock安锁,此时密码为新输入密码;按下输入密码键start输入密码键若输入密码错误,按下确认键enter后,报警warm信号有效。
3.2比较模块的仿真
比较器模块的工作原理是:
当比较结果相等时,输出为1;当比较结果不相等时,输出为0。
其仿真波形如图3。
各端口功能如下:
输入信号:
a按键输入的密码,b寄存器储存的密码。
输出信号:
c按键输入与寄存器的密码是否相等。
图3比较器仿真波形
波形仿真分析:
起始寄存器输出密码为“0001”,键盘输入为“0011”时不相等,所以输出c为0;当寄存器输出密码为“0011”,键盘输入为“0011”时相等,所以输出c为1,其他与此相同。
3.3寄存模块的仿真
开锁时将所存密码输出到比较器与按键输入的密码进行比较,达到判断由按键输入密码是否正确的结果。
图4是寄存器模块的仿真波形。
图4寄存器仿真波形
波形仿真分析:
当使能信号en有效时,将data_in输入的信号存储到寄存器中,无论输入信号data_in为多少,输出信号data_out都为寄存器所存内容。
当使能信号en无效时,输出data_out信号,不随data_in输入改变。
3.4系统的仿真波形
图5系统报警仿真波形
图6系统开锁仿真波形
波形分析:
上电后,系统的初始密码为“0000”,按下start键由键盘key输入密码“0000”,输入密码正确按确认键enter键锁开按,锁关闭开锁输出标志信号kai无效为1,显示开锁;在开锁状态下按xiu修改密码键后,由键盘key输入新密码0001后按确认键enter密码修改成功,按lock键密码锁上锁,此时密码锁密码为新密码;若按下start键后输入的密码错误如图“0011”与密码锁密码“0001”不同,warm报警信号有效,锁不开且报警。
若按下start键后输入的密码正确如图“0001”与密码锁密码“0001”相同,kai开锁信号有效,锁开且不报警。
3.5系统的引脚锁定
图7引脚锁定表
4.设计总结
通过这次的课程设计,理论加上实践,使我对EDA有了更深刻的认识,尤其是对FPGA/CPLD硬件原理的理解,各种程序认识,也纠正了自己以前很多不对的看法,当然在设计的过程中,我也遇到了很多困难,如在进行引脚连接时一定要细心,有些引脚不能使用,我因为没注意使得开始时一直不能得到正确的结果在查阅了书籍资料之后,对这次设计有了一个整体的认识,做出了初步的原理图,然后经过反复的调试后,逐步修改,尽量使其性能达到完美。
这个过程是最困难的过程,也是我收获最大的过程,使自己的实验动手能力有了进一步的提高。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划。
总之,这次设计使我受益匪浅,让我对以后的工作学习有了更大的信心。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到的问题,反映出来我的许多不足之处,我以后要努力克服缺点。
这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
总的来说,这次设计的密码锁还是比较成功的,在设计中遇到了很多问题,最后在同学和老师的辛勤的指导下外加上自己的努力,终于都得到了解决,因此很有成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。
参考文献
[1]VolneiA.Pedroni著,乔庐峰、王志功等译,VHDL数字电路设计教程.电子工业出版社,2010。
[2]周立功,EDA实验与实践.第一版.北京航空航天大学出版社,2007。
[3]潘松,黄继业。
《EDA技术实用教程》。
科学出版社2010.6。
[4]刘江海。
《EDA技术课程设计》。
华中科技大学出版社209.5。
附录
电子密码锁程序源代码
libraryieee;
useieee.std_logic_1164.all;
entitymimais
port(clk,lock,start,xiu,enter,yes:
instd_logic;
warn,kai,wr,en:
outstd_logic);
end;
architecturebhvofmimais
typestateis(inlock,input,rightx,wrong,unlock,change,alarm);
signalps,ns:
state;
begin
process(clk)
begin
ifclk'eventandclk='1'then
ps<=ns;
endif;
endprocess;
process(ps,lock,start,xiu,enter,yes)
begin
casepsis
wheninlock=>kai<='0';en<='0';warn<='0';
if(start='1')thenns<=input;
elsens<=inlock;
endif;
wheninput=>en<='1';kai<='0';warn<='0';
if(yes='1')thenns<=rightx;
elsens<=wrong;
endif;
whenrightx=>en<='0';kai<='1';warn<='0';
ifenter='1'thenns<=unlock;
elsens<=rightx;
endif;
whenwrong=>en<='0';kai<='0';warn<='0';
ifenter='1'thenns<=alarm;
elsens<=wrong;
endif;
whenunlock=>kai<='1';warn<='0';en<='0';
iflock='1'thenns<=inlock;
elsifxiu='1'thenns<=change;
elsens<=unlock;
endif;
whenalarm=>warn<='1';kai<='0';en<='0';
ifenter='1'thenns<=inlock;
elsens<=alarm;
endif;
whenchange=>en<='1';warn<='0';kai<='1';
ifenter='1'thenns<=unlock;
elsens<=change;
endif;
endcase;
endprocess;
end;
libraryieee;
useieee.std_logic_1164.all;
libraryieee;
useieee.std_logic_1164.all;
entityjiis
port(clk,en:
instd_logic;
data_in:
instd_logic_vector(3downto0);
data_out:
outstd_logic_vector(3downto0));
end;
architecturebhvofjiis
signalm:
std_logic_vector(3downto0);
begin
process(clk)
begin
if(clk'eventandclk='0')then
ifen='1'then
m<=data_in;
elsedata_out<=m;
endif;
endif;
endprocess;
end;
libraryieee;
useieee.std_logic_1164.all;
entitybiis
port(a,b:
instd_logic_vector(3downto0);
c:
outstd_logic);
end;
architecturebhvofbiis
begin
c<='1'whena=belse
'0';
end;
libraryieee;
useieee.std_logic_1164.all;
entitytopis
port(clk,lock,start,xiu,enter:
instd_logic;
key:
instd_logic_vector(3downto0);
warn,kai:
outstd_logic);
end;
architecturebhvoftopis
componentmimais
port(clk,lock,start,xiu,enter,yes:
instd_logic;
warn,kai,en:
outstd_logic);
endcomponent;
componentjiis
port(clk,en:
instd_logic;
data_in:
instd_logic_vector(3downto0);
data_out:
outstd_logic_vector(3downto0));
endcomponent;
componentbiis
port(a,b:
instd_logic_vector(3downto0);
c:
outstd_logic);
endcomponent;
signale,g:
std_logic;
signalf:
std_logic_vector(3downto0);
begin
u1:
mimaportmap(clk=>clk,lock=>lock,start=>start,
xiu=>xiu,enter=>enter,yes=>g,kai=>kai,
warn=>warn,en=>e);
u2:
jiportmap(clk=>clk,en=>e,data_in=>key,data_out=>f);
u3:
biportmap(a=>key,b=>f,c=>g);
end;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 设计 正文 数字 密码锁