EDA课设电子密码锁.docx
- 文档编号:4487754
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:145.14KB
EDA课设电子密码锁.docx
《EDA课设电子密码锁.docx》由会员分享,可在线阅读,更多相关《EDA课设电子密码锁.docx(13页珍藏版)》请在冰豆网上搜索。
EDA课设电子密码锁
1前言1
2设计原理2
2.1设计要求2
2.2设计方案3
3仿真分析4
3.1QuartusII仿真软件4
3.2整体波形仿真5
3.3模块波形仿真6
3.3.1寄存器模块波形仿真6
3.3.2控制器模块波形仿真6
3.3.3比较器模块波形仿真7
3.4实验箱下载验证7
4设计总结8
5参考文献9
附录10
1前言
由于安全防盗已成为全社会关注的问题。
基于EDA技术设计的电子密码锁,以其价格便宜、安全可靠、使用方便,受到了人们的普遍关注。
而以现场可编程逻辑器件(FPGA>为设计载体,以硬件描述语言(VHDL>为主要表达方式,以QuartusⅡ开发软件和GW48EAD开发系统为设计工具设计的电子密码锁,由于其能够实现数码输入、数码清除、密码解除、密码更改、密码上锁和密码解除等功能,因此,能够满足社会对安全防盗的要求。
b5E2RGbCAP
随着现代电子技术的迅速发展,ASIC技术的日趋进步和完善,数字系统的硬件设计正朝着速度快、体积小、容量大、重量轻的方向发展。
一个复杂的数字系统大概需要百万个以上的逻辑门或传输晶体管器件,如信号处理器,ALU等,如果人工的话需要非常长的时间,这样效率就明显会下降。
目前大部分密码锁采用单片机进行设计,电路比较复杂,性能不够灵活。
而硬件描述语言VHDL的出现,则为设计者提供了一种用形式化方法来描述数字系统硬件电路的方法。
VHDL具有强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段。
根据系统的行为和功能要求,可以自上而下的完成相应的描述、综合、优化、仿真与验证,直至生成器件系统。
VHDL使得设计者可以进行更大、更复杂的数字系统的设计。
本文采用先进的EDA技术,利用QuartusⅡ工作平台和VHDL语言,设计了一种新型的密码锁。
该密码锁具有密码预置和误码报警等功能,保密性好,远远大于以往的密码锁,使随机破译成功率几乎为零,编码可变,避免因人员的更替而使锁的保密级别下降且有利于用户编制易于记忆的密码,因而该数字密码锁具有体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便等优势。
p1EanqFDPw
数字密码锁是在实际应用中使用极其广泛的一种数字电路,它的主要功能是用来对某些物品进行加密保护,目的是避免无权人员进行越权操作。
随着人们生活水平的提高,密码锁作为家庭防盗卫士的作用日趋重要,它与普通机械锁相比有一些独特的优势,如:
保密性强,防盗性能好,可以不用钥匙,只要记住密码即可开锁。
所以,具有防盗报警功能的数字密码锁代替安全性较差的机械锁已经成为必然趋势。
DXDiTa9E3d
2设计原理
2.1设计要求
本系统是基于EDA作为开发工具,VHDL语言为硬件描述语言,QuartusⅡ作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。
本系统具体采用元件例化的方法将各个工作模块连接在一起,实现系统完整的功能。
数字密码锁的系统结构框图如图1所示。
RTCrpUDGiT
设计一个电子密码锁,实现密码的输入、更改、上锁等功能;密码输入:
开锁代码为二进制数,当输入的密码时,显示器上将显示该数值;密码上锁:
当按下上锁键后,密码锁将被上锁;密码更改:
当按下密码更改键后,密码锁将被重置为新密码;密码解除:
当按下解锁键后,如果密码正确,密码锁将被打开。
5PCzVD7HxA
2.2设计方案
根据“自顶而上”的设计方法,将系统顶层实体划分为若干模块,然后按功能分为若干模块,然后对每一模块进一步细分,直至得到简单易实现的子模块。
jLBHrnAILg
控制器是整个系统的功能核心,接受按键和其他模块传来的信号,再根据系统功能产生相应的控制信号送到相关的模块,输出钥匙信号和报警信号。
xHAQX74J0X
键盘输入密码给比较器和寄存器。
并提供密码脉冲信号给控制器;比较器用来比较输出和寄存器输出数据是否相等,输出送给控制器;寄存器在校验密码时,输出密码以供比较,在修改密码时,保存新密码。
钥匙信号控制锁打开、关闭,报警信号可以接LED及其他安防设备。
LDAYtRyKfE
按“安锁”键,将锁闭合;开锁时先按“输入密码”,再按“确认”;若输入密码内容有误,报警;只有在开锁状态下才可以设置新密码,按“修改密码”输入新密码,按“确认”。
Zzz6ZB2Ltk
此次设计用拨码开关的高低电平来实现二进制输入。
3仿真分析
3.1QuartusII仿真软件
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL dvzfvkwMI1 QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。 具有运行速度快,界面统一,功能集中,易学易用等特点。 rqyn14ZNXI QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。 对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 EmxvxOtOco 此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统 SixE2yXPq5 MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。 目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。 Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。 6ewMyirQFL QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括: 可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;kavU42VRUs LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;y6v3ALoS89 功能强大的逻辑综合工具; 完备的电路功能仿真与时序逻辑仿真工具; 定时/时序分析与关键路径延时分析; 可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析; 支持软件源文件的添加和创建,并将它们链接起来生成编程文件; 使用组合编译方式可一次完成整体设计流程; 可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件; 能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。 3.2整体波形仿真 在数字密码锁代码编写完成后,用QuartusII对其进行编译并仿真,整个系统的仿真波形如图2所示。 可以看到,系统的初始密码为“000”,按“输入密码”键(start>后,“钥匙信号”(key>变为高电平,再按“确认”键(enter>,此时系统为开锁状态;M2ub6vSTnP 在此状态下,按“修改密码”键(ps_ch>,输入新密码“111”,再按“确认”键(enter>; 按“安锁”键(lock>,锁闭合(key变为低电平>; 再按“输入密码”键(start>,此时输入密码“000”,然后按“确认”键(enter>,系统报警(warn>,因为新密码已变为“111”;0YujCfmUCw 再次按“输入密码”键(start>,此时输入密码“111”,“钥匙信号”(key>变为高电平,报警信号(warn>变为低电平,然后按“确认”键(enter>。 eUts8ZQVRd 图3-1数字密码锁整体仿真波形 3.3模块波形仿真 3.3.1寄存器模块波形仿真 图3是寄存器模块的仿真波形。 m的初始值为000。 当en=1时,寄存器将data_in的数据赋给m,当en=0时,寄存器将m的数据赋给data_out。 sQsAEJkW5T 图3-2寄存器模块波形仿真 3.3.2控制器模块波形仿真 图4是控制器模块的仿真波形。 按“输入密码”键(start>,再使“确认”键(enter>、“比较信号”键分别为高电平有效,“钥匙信号”(key>变为高电平,系统处于开锁状态;在此状态下,按“修改密码”键(ps_ch>,计数器时钟信号(cnt_clk>有效计数,按“安锁”键(lock>,锁闭合,钥匙信号(key变为低电平>;使“确认”键(enter>为高电平、“比较信号”键为低电平,这时再按“输入密码”键(start>,钥匙信号(key变为低电平>,系统报警(warn>。 GMsIasNXkA 图3-3控制器模块波形仿真 3.3.3比较器模块波形仿真 图5是比较器模块的仿真波形。 在数字密码锁中,比较器模块的功能是将输入数据与寄存器数据进行比较,结果送入控制器模块。 比较器的具体工作原理是: 当a和b相等时,c输出为1,不相等时为0。 TIrRGchYzg 图3-4比较器模块波形仿真 3.4实验箱下载验证 根据程序的要求对应好管脚,下载到实验箱,通过拨码开关输入密码,将其显示在数码管上,将钥匙信号,报警信号连LED灯,若系统的初始密码为“000”,按“输入密码”键(start>后,“钥匙信号”(key>灯不亮,再按“确认”键(enter>,(key>灯亮状态。 7EqZcWLZNX 在此状态下,按“修改密码”键(ps_ch>,输入新密码“111”,再按“确认”键(enter>。 按“安锁”键(lock>,锁闭合(key灯不亮>。 再按“输入密码”键(start>,此时输入密码“000”,然后按“确认”键(enter>,系统报警(warn>灯亮,因为新密码已变为“111”。 lzq7IGf02E 再次按“输入密码”键(start>,此时输入密码“111”,然后按“确认”键(enter>, zvpgeqJ1hk 4设计总结 使用VHDL语言设计电路,思路简单,功能明了使用QuartusII软件设计电路不仅可以进行逻辑仿真,还可以进行时序仿真。 使用可编程逻辑器件不仅省去了电路制作的麻烦,还可以反复多次进行硬件实验,非常方便的修改设计,且设计的电路保密性很强。 总之,采用EDA技术使得复杂的电子系统设计变得简单容易,可大大提高了设计效率。 NrpoJac3v1 本文以现场可编程逻辑器件(FPGA>为设计载体,以硬件描述语言(VHDL>为主要表达方式,以QuartusⅡ开发软件和开发系统为设计工具设计了一种具有密码输入、密码修改、报警、密码设置等功能的电子密码锁。 同时阐述电子密码锁的工作原理和软硬件实现方法。 由于本设计中的FPGA芯片体积小,功耗低,价格便宜,安全可靠,稍加修改就可以改变密码的位数,而且维护和升级比较方便,很容易做成ASIC芯片,因而具有较好的应用前1nowfTG4KI 本次课设,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。 fjnFLDa5Zo 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 tfnNhnE6e5 5参考文献 [1]孟庆海,张洲.《VHDL基础及经典实例开发》.西安交通大学出版社,2008 [2]李洋.《EDA技术》<第2版).机械工业出版社,2009 [3]VolneiA.pedroni《CircuitDesignwithVHDL》.电子工业出版社,2008HbmVN777sL [4]谭会生《EDA技术综合应用实例与分析》.西安电子科技出版社,2003 [5]潘松,黄继业.《EDA技术实用教程》.科学出版社,2018 附录 源程序: -------------------控制模块----------------------- libraryieee。 useieee.std_logic_1164.all。 entitycontrolis port(clk,lock,start,ps_ch,enter,yes: instd_logic。 warn,key,wr,en: outstd_logic>。 endcontrol。 architecturebhvofcontrolis typestateis(inlock,input,right1,wrong,unlock,change,alarm>。 V7l4jRB8Hs signalps,ns: state。 begin process(clk> begin ifclk'eventandclk='1'then ps<=ns。 endif。 endprocess。 process(ps,lock,start,ps_ch,enter,yes> begin casepsis wheninlock=>key<='0'。 en<='0'。 warn<='0'。 wr<='0'。 if(start='1'>thenns<=input。 elsens<=inlock。 endif。 wheninput=>en<='1'。 wr<='0'。 key<='0'。 warn<='0'。 if(yes='1'>thenns<=right1。 elsens<=wrong。 endif。 whenright1=>en<='0'。 wr<='0'。 key<='0'。 warn<='0'。 ifenter='1'thenns<=unlock。 elsens<=right1。 endif。 whenwrong=>en<='0'。 wr<='0'。 key<='0'。 warn<='0'。 ifenter='1'thenns<=alarm。 elsens<=wrong。 endif。 whenunlock=>key<='1'。 warn<='0'。 en<='1'。 wr<='0'。 iflock='1'thenns<=inlock。 elsifps_ch='1'thenns<=change。 elsens<=unlock。 endif。 whenalarm=>warn<='1'。 key<='0'。 en<='0'。 wr<='0'。 ifenter='0'thenns<=inlock。 elsens<=alarm。 endif。 whenchange=>en<='1'。 wr<='1'。 warn<='0'。 key<='1'。 ifenter='1'thenns<=unlock。 elsens<=change。 endif。 endcase。 endprocess。 endbhv。 -----------------寄存器模块-------------------- libraryieee。 useieee.std_logic_1164.all。 entityregis port(clk,wr,en: instd_logic。 data_in: instd_logic_vector(2downto0>。 data_out: outstd_logic_vector(2downto0>>。 endreg。 architecturebhvofregis begin process(clk> variablem: std_logic_vector(2downto0>。 begin ifclk'eventandclk='1'then ifen='1'andwr='1'thenm: =data_in。 endif。 ifwr='0'anden='1'thendata_out<=m。 endif。 endif。 endprocess。 endbhv。 --------------比较器模块----------------------- libraryieee。 useieee.std_logic_1164.all。 entitycmpis port(a,b: instd_logic_vector(2downto0>。 c: outstd_logic>。 end。 architecturebhvofcmpis begin c<='1'whena=belse '0'。 endcmp。 -----------编码器模块------------------------- libraryieee。 useieee.std_logic_1164.all。 entityais port(a,b,c,clk: instd_logic。 digit1,digit2,digit3: outstd_logic_vector(3downto0>>。 83lcPA59W9 enda。 architectureaofais begin process(clk> variabletemp1: std_logic。 variabletemp2: std_logic。 variabletemp3: std_logic。 begin temp1: =a。 temp2: =b。 temp3: =c。 casetemp1is when'0'=>digit1<="0000"。 when'1'=>digit1<="0001"。 endcase。 casetemp2is when'0'=>digit2<="0000"。 when'1'=>digit2<="0001"。 endcase。 casetemp3is when'0'=>digit3<="0000"。 when'1'=>digit3<="0001"。 endcase。 endprocess。 enda。 ------------------顶层文件--------------------- libraryieee。 useieee.std_logic_1164.all。 entitye_lockis port(clk,lock,start,ps_ch,enter: instd_logic。 key_in: instd_logic_vector(2downto0>。 warn,key: outstd_logic。 digit3,digit2,digit1: outstd_logic_vector(3downto0>>。 mZkklkzaaP ende。 architecturebhvofe_lockis componentcontrolis port(clk,lock,start,ps_ch,enter,yes: instd_logic。 warn,key,wr,en: outstd_logic>。 endcomponent。 componentregis port(clk,wr,en: instd_logic。 data_in: instd_logic_vector(2downto0>。 data_out: outstd_logic_vector(2downto0>>。 endcomponent。 componentcmpis port(a,b: instd_logic_vector(2downto0>。 c: outstd_logic>。 endcomponent。 componentais port(a,b,c: instd_logic。 digit1,digit2,digit3: outstd_logic_vector(3downto0>>。 AVktR43bpw endcomponent。 signald,e,g: std_logic。 signalf: std_logic_vector(2downto0>。 begin u1: controlportmap(clk=>clk,lock=>lock,start=>start,ORjBnOwcEd ps_ch=>ps_ch,enter=>enter,yes=>g,key=>key, warn=>warn,wr=>d,en=>e>。 u2: regportmap(clk=>clk,wr=>d,en=>e,data_in=>key_in,data_out=>f>。 2MiJTy0dTT u3: cmpportmap(a=>key_in,b=>f,c=>g>。 u4: aportmap(key_in(0>,key_in(1>,key_in(2>,digit1,digit2,digit3>。 gIiSpiue7A endbhv。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电子 密码锁