eda数字密码锁
密码锁程序
1、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;2、在锁的控制电路中储存一个可以修改的4位二进制代码,当开锁按钮开关的输入代码等于储存代码时,开锁;3、从第一个按钮触动后的30秒内若未将锁打开,则电路长报警5S,若输入密码错误1或2次,则每次短报警1S,若输错三次密码则长报警。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lock isport(clk_1k:in std_logic; --1024HZ频率输入管脚enter_2,enter_1: in std_logic; --设密码确认及输入密码确认datain:in std_logic_vector(3 downto 0); --密码数据输入speaker:out std_logic; --喇叭led_g,led_r:out std_logic); --绿灯及红灯end entity lock;architecture behave of lock issignal ram:std_logic_vector(3 downto 0);signal judge:std_logic;signal clk:std_logic;signal turn_on,turn_off:std_logic;beginprocess(Clk_1k)variable clk_count:std_logic_vector(8 downto 0):="000000000";beginif clk_1k'event and clk_1k='1' then --分频if clk_count<511 thenclk_count:=clk_count+1;elseclk_count:="000000000";clk<=not clk;end if;end if;end process;process(datain,enter_1) --设置密码beginif enter_1'event and enter_1='1' thenram<=datain;end if;end process;process(clk_1k) --判断第一位密码按下时开始计时beginif clk_1k'event and clk_1k='1' thenif enter_1='0' thenjudge<='0';end if;if judge='0' and enter_1='1' thenif datain/=ram then judge<='1';end if;end if;end if;end process;process(judge,clk,enter_2)variable count:std_logic_vector(4 downto 0):="00000"; --判断自第一个按键开始的时间是否超30秒variable judge_sh:std_logic_vector(1 downto 0):="00"; --判断输入错误密码次数variable switch:std_logic:='0'; --判断是否锁定键盘beginif clk'event and clk='1' thenif enter_1='0' then --数据复位count:="00000";judge_sh:="00";switch:='0';end if;if switch='0' thenif judge='1' thenif count<"11110" then --30 秒计时 count:=count+1;if enter_2='1' thenif datain = ram thenturn_on<='1';turn_off<='0';switch:='1'; --开锁elseif judge_sh<"10" thenjudge_sh:=judge_sh+1;turn_on<='1';turn_off<='1';s witch:='0'; -elseturn_on<='0';turn_off<='1';switch:='1'; -- 3次 end if;end if;elseturn_on<='0';turn_off<='0';switch:='0'; --等待下次输入end if;elseturn_on<='0';turn_off<='1';switch:='1';end if;end if;end if;end if;end process;process(clk,clk_1k,turn_on)variable count:std_logic_vector(3 downto 0):="0000"; --长报警时间variable count_sh:std_logic_vector(1 downto 0):="00"; --短报警时间variable temp,temp_sh:std_logic:='0'; --判断是短报警或长报警beginif clk'event and clk='1' thenif enter_1='0' then --数据复位count:="0000";count_sh:="00";temp:='0';temp_sh:='0';end if;if turn_on='0' and turn_off='1' thenif count<"0101" then --响5秒count:=count+1;temp:='1';led_g<='0';led_r<='1';elsetemp:='0';end if;elsif turn_on='1' and turn_off='0' thenled_g<='1';led_r<='0';elsif turn_on='1' and turn_off='1' thentemp_sh:='1'; --响1秒elsif turn_on='0' and turn_off='0' thenled_g<='0';led_r<='1';temp_sh:='0';else null;end if;end if;speaker<=(temp or temp_sh) and clk_1k; --驱动喇叭end process;课程 EDA技术课程设计题目电子密码锁专业姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个密码锁的控制电路,第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,当输入正确代码时,输出开锁信号以推动执行机构工作。
密码锁
课程设计课程设计名称:EDA课程设计专业班级电科1001学生姓名:王闯学号: 201048360119指导教师:焦素敏课程设计时间: 2013-2-25~2013-3-9电子信息科学与技术专业课程设计任务书学生姓名王闯专业班级电科1001 学号 201048360119 题目密码锁的设计课题性质工程设计课题来源自拟课题指导教师焦素敏同组姓名主要内容设计一个密码锁,要求开锁代码为2位十进制的并行码,当输入的密码与锁内的密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁。
密码可由用户自行设置。
可选用的器件有FLEX10K10、共阴极7段数码管、发光二极管、按键开关、电阻、电容。
任务要求(1)根据设计题目要求编写相应程序代码(2)对编写的VHDL程序代码进行编译和仿真(3)利用实验箱完成硬件验证(4)总结设计内容,完成课程设计说明书参考文献[1] 焦素敏.EDA课程设计指导书.郑州:河南工业大学,2008[2] 潘松,黄继业.EDA技术实用教程.北京:科学出版社,2002[3] 王国栋,潘松等.VHDL实用教程.成都:电子科技大学出版社,2000[4] 张亦华,延明.数字电路EDA入门.北京:电子工业出版社,2003[5]/ 中国电子制作网网站指导教师签字:焦素敏审查意见教研室主任签字:张庆辉 2013年 2月 25日说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页一、设计任务及要求密码锁在现实当中再普遍不过了,其原理简单的说,就是用户输入的密码是否与原先设置的密码相同,若相同,则锁打开。
反之,锁打不开。
该课程设计是用VHDL语言设计两位并行的十进制的密码锁,其主要功能是(1)密码可由用户自己设置、(2)可以多次重复输入、(3)由用户设置的密码可以独立显示(为了方便硬件验证时用得到)、(4)进行开锁时也有独立显示、(5)输入的密码是否正确都有各自的灯指示(正确绿灯亮,反之,红灯亮)、二、设计原理及总体框图密码锁主要由输入部分、输入存储部分、数据检测部分、输出存储部分和开锁状态部分构成。
eda综合实验
综合设计实验课题一、设计目的1、掌握用VHDL硬件描述语言做数字电路综合设计的方法。
2、熟练掌握程序的编译、仿真、生成模块及芯片引脚号码锁定方法并下载到目的芯片。
二、实验仪器ZY11EDA13BE试验箱三、设计实验内容(一) 七人表决器设计一个七人表决电路,当参与表决的七个人中有4个或4个以上赞同时,表决器输出“1”表示通过,否则输出“0”表示不通过。
实验室,可用7个电平开关作为七个表决器的输入变量,输入“1”表示表决者“赞同”,输入“0”表示表决者“不赞同”。
1、编写表决器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECIDE7 ISPORT( EN,Rd :IN STD_LOGIC;D :IN STD_LOGIC_VECTOR(6 DOWNTO 0);Y :OUT STD_LOGIC;Q1,Q2 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END DECIDE7;ARCHITECTURE STR OF DECIDE7 ISBEGINPROCESS(D,Rd)V ARIABLE QN1,QN2:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINQN1:="0000";QN2:="0000";IF(Rd='0') THENQ1<="0000";Q2<="0000";Y<='0';ELSIF(Rd='1' AND EN='1') THENFOR I IN 6 DOWNTO 0 LOOPIF(D(I)='1') THENQN1:=QN1+1;QN2:=QN2;ELSIF(D(I)='0') THENQN1:=QN1;QN2:=QN2+1;END IF;END LOOP;IF(QN1>3) THENY<='1';ELSE Y<='0';END IF;Q1<=QN1;Q2<=QN2;END IF;END PROCESS;END STR;2、二选一数据选择器与二进制计数器结合动态扫描程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dtsm isport(cp,reset:in std_logic;cntsh,cntsl:in std_logic_vector(3 downto 0);cntout:out std_logic_vector(3 downto 0);sel:out std_logic_vector(2 downto 0) );end dtsm;architecture behav of dtsm issignal sec:std_logic_vector(2 downto 0);beginprocess(reset,cp)beginif(reset='0') thensec<="000";elsif(cp'event and cp='1')thenif(sec="001")thensec<="000";elsesec<=sec+1;end if;end if;end process;process(sec,cntsh,cntsl)begincase sec iswhen"000"=>cntout<=cntsl;when"001"=>cntout<=cntsh;when others=>cntout<="0000";end case;end process;sel<=sec;End behav;3、数码管显示译码器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity bcddecoder isport(BCD:in std_logic_vector(3 downto 0);SEGOUT:out std_logic_vector(0 to 6)); end bcddecoder;architecture a of bcddecoder isbeginprocess(bcd)begincase bcd iswhen"0000"=>SEGOUT<="1111110";when"0001"=>SEGOUT<="0110000";when"0010"=>SEGOUT<="1101101";when"0011"=>SEGOUT<="1111001";when"0100"=>SEGOUT<="0110011";when"0101"=>SEGOUT<="1011011";when"0110"=>SEGOUT<="1011111";when"0111"=>SEGOUT<="1110000";when"1000"=>SEGOUT<="1111111";when"1001"=>SEGOUT<="1111011";when others=>SEGOUT<="0000000"; end case;end process;End a;(二)串行数字密码锁设计八位串行数字密码锁,当输入数码的位数与数码的值与开锁密码相同时,锁被打开;输入:数码开关D、试开锁信号TRY、读码按钮READ、复位信号RESET;输出:开锁状态显示LT。
彭胜-基于VHDL的电子密码锁设计与实现正文
1 引言电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
目前设计密码锁的方法很多,例如用传统的PCB 板设计、用PLC 设计或者用单片机设计。
而用V HDL 可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法,使设计过程达到高度自动化。
本设计在Max + plus Ⅱ的环境中进行,用Al2tera 公司ACEX 1 K系列的EP1 K30 TC14423 来实现。
ACEX 1 K是Altera 公司着眼于通信、音频处理及类似场合的应用而推出的FPGA 器件芯片系列,其典型门数为10 万门,是当今Altera 多种产品中应用前景最好的器件系列之一。
EDA 技术设计电子系统具有用软件的方式设计硬件;设计过程中可用有关软件进行各种仿真,系统可现场编程、在线升级,整个系统可集成在一个芯片上等特点;不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积、提高产品的技术含量,提高产品的附加值。
用VHDL设计电子密码锁方案:作为通用电子密码锁,主要由 3 个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路,作为电子密码锁的输入电路。
可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。
(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。
(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。
(3)七段数码管显示电路主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。
1.1 课题背景随着社会的发展和人们生活水平的提高,人们的安全意识也逐步加强。
传统的机械锁由于其构造的简单,失效的事件屡见不鲜,如何实现保密防盗这一问题变的尤其的突出,密码锁以其安全性高、成本低、功耗低、易操作等优点受到越来越多人的欢迎。
14位数字密码锁两种设计方案
设计方案系统设计方案利用所学的电子技术知识和电子设计方法,设计出一个电子密码锁有以下两种基本方案可以选择:方案一:利用数字逻辑电路,运用各种门电路,计数器,触发器,锁存器,编/译码器等数字逻辑器件实现电子控制。
从而实现想要设计的电子密码锁的功能。
此方法设计简单,但硬件电路比较多,操作起来比较复杂。
方案二:使用MCS-51系列单片机为核心控制附加一些简单的外围电路,利用单片机的一个I/O端口组成4×4键盘作为输入电路,采用汇编语言编写程序来实现电子密码锁的各项功能,程序语言功能强大,调试较为简单。
具有很强的实用性。
设计方案选择综上提出的两种方案,方案一给出的采用数字逻辑电路的设计方法的好处就是设计简单,因为采用数字逻辑电路可以分成各个功能模块来设计,每个模块实现各自的一个功能。
这钟方法设计的密码锁电路大致包含:按键输入、密码核对、密码修改、开锁电路、错误提示电路等功能模块。
采用数字电路虽然设计简单但是操作繁琐,要运用很多数字逻辑器件,硬件电路复杂,而且可能会出现较多器件故障,同时难以检查和维护。
方案二提出的使用单片机为核心控制的方案,利用单片机丰富的I/O端口和灵活的编程设计,不但能实现密码锁的功能,而且控制准确性高,外围电路少硬件电路简单,方便灵活,调试简单不易出错,体积小成本低也利于现实中实现,具有较高的实际意义和实用价值。
这个设计方案的最关键的地方就在于编程,利用程序的执行来实现密码锁的基本功能,因此单片机方案还有较大活动空间,能在很大程度上扩展功能,方便对系统进行升级。
针对第一种方案:系统vhdl设计功能描述:假设设计的密码锁有7个数据输入键,分别用K1到K7表示;一个“确认键”(按一下确认键,密码锁内部就产生一个正脉冲),用CLK_AFFIRM表示;一个“重置和修改密码使能键”,用S/W 表示;一个开锁状态指示灯GREENLED;一个密码输入错误报警器REDLED.1.密码预置。
数字密码锁的控制电路实验报告
数字密码锁的控制电路实验报告摘要:本实验旨在设计和实现一个数字密码锁的控制电路。
通过使用数字集成电路和逻辑门电路,我们成功地实现了一个简单而有效的数字密码锁系统。
实验结果表明,该控制电路能够准确地识别输入的密码,并控制锁的开关状态。
本实验为数字密码锁的设计和应用提供了有益的参考。
引言:数字密码锁是一种常见的安全措施,广泛应用于各种场合,如家庭、办公室和酒店等。
它通过输入正确的数字密码来控制锁的开关状态。
本实验旨在设计和实现一个数字密码锁的控制电路,以便更好地理解数字密码锁的工作原理和应用。
材料与方法:1. 数字集成电路(例如74LS47、74LS74)2. 逻辑门电路(例如74LS08、74LS32)3. 七段数码管4. 按钮开关5. 电源和电线6. 面包板和连接线实验步骤:1. 将数字集成电路和逻辑门电路按照电路图连接在面包板上。
2. 将七段数码管和按钮开关连接到电路中相应的引脚上。
3. 将电源和电线连接到电路中,确保电路正常工作。
4. 设计一个四位数字密码,并将其编程到电路中。
5. 测试电路的功能,尝试输入正确的密码并观察锁的开关状态。
结果与讨论:经过实验,我们成功地设计和实现了一个数字密码锁的控制电路。
该电路能够准确地识别输入的密码,并根据密码的正确与否控制锁的开关状态。
当输入正确的密码时,锁会打开;当输入错误的密码时,锁会保持关闭状态。
通过实验,我们发现数字集成电路和逻辑门电路在数字密码锁的控制中起到了关键作用。
数字集成电路负责将输入的密码转换为七段数码管上的数字显示,而逻辑门电路则负责判断输入的密码是否正确,并控制锁的开关状态。
此外,我们还发现,设计一个安全可靠的数字密码锁需要考虑以下几个因素:1. 密码的复杂性:密码应该足够复杂,以防止被他人轻易猜测或破解。
2. 锁的安全性:锁的机械结构应该坚固可靠,以防止被非法开启。
3. 电路的稳定性:电路应该能够稳定地工作,并能够抵抗外界的干扰。
EDA4位数字密码锁
摘要随着数字集成技术和电子设计自动化(EDA)技术的迅速发展,数字密码锁应运而生。
本文采用先进的EDA技术,利用QUARTUS Ⅱ工作平台和VHDL语言,设计了一种新型的数字密码锁,它不但可以完成锁具的基本功能,还能附加一些其他的智能,例如:报警、识别功能,数字密码锁具功能齐全,安全系数高,有机械锁无可比拟的优越性,它的造价成本低,易于操作,越来越受到众多客户的青睐,可以优先占领市场有利份额。
关键词:EDA技术 quartusⅡ工作平台 VHDL语言数字密码锁目录1 引言 (1)1.1课程设计背景 (1)1.2课程设计目的 (1)1.3课程设计内容 (2)2 数字密码锁设计 (2)2.1系统设计 (2)2.2模块功能 (2)2.2.1控制模块 (2)2.2.2比较模块 (3)2.2.3寄存模块 (5)3 仿真分析 (6)3.1控制模块的仿真 (6)3.2比较模块的仿真 (7)3.3寄存模块的仿真 (8)3.4系统的仿真波形 (9)3.5系统的引脚锁定 (11)4 总结 (11)参考文献 (13)1引言1.1 课程设计背景随着社会的发展和人们生活水平的提高,人们的安全意识的加强,安全防盗已成为社会问题。
自古以来锁在人们的生活中扮演着重要的角色,人们对其要求也较高,希望锁既要安全可靠地防盗,又要使用方便。
目前使用广泛的弹子锁由于要携带钥匙,经常更换锁芯等缺点,已经渐渐变得难以满足当前社会对于安全防盗的要求。
而数字密码锁由于其高安全性、低成本、易操作、密码可更换等优点受到越来越多人的欢迎。
随着现代电子技术的迅速发展,ASIC 技术的日趋进步和完善,数字系统的硬件设计正朝着速度快、体积小、容量大、重量轻的方向发展。
目前大部分密码锁采用单片机进行设计,电路比较复杂,性能不够灵活。
而硬件描述语言VHDL的出现,则为设计者提供了一种用形式化方法来描述数字系统硬件电路的方法。
VHDL 具有强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段。
基于Multisim的数字密码锁设计_eda课程设计报告
电子电路设计实验课程设计报告姓名:专业: 11电子信息工程2班学号:日期 2013 年 5 月 20 日——2012 年 6 月 3日学院信息科学与工程学院目录封面---------------------------------------------------------------------------1目录---------------------------------------------------------------------------2实验任务书--------------------------------------------------------------------3摘要---------------------------------------------------------------------------4正文---------------------------------------------------------------------------5一、系统设计1、设计要求2、系统设计方案2.1、系统整体设计2.2、系统各单元组成与功能-------------------------------------------------6二、系统各单元详细分析与设计1、所使用芯片的功能简介1.1、CD45321.2、741941.3、74851.4、7432、7304、74082、各单元电路分析与设计2.1、1位密码输入及比较单元2.2.开锁信号输出单元2.3.控制单元2.4.显示单元-------------------------------------------------------------10三、仿真结果演示---------------------------------------------------10四、总结与心得-------------------------------------------------15五、附录----------------------------------------------------------------16课程设计任务书摘要本次设计目的为使用Multsim 设计一个数字密码锁,使其能够设置5位密码,每位密码均由“0~9”十个数字组成。
EDA技术Verilog密码锁
电子科技大学实验报告学生姓名:吴成峰学号:2014070906016 指导教师:黄志奇一、实验室名称:主楼C2-514二、实验项目名称:密码锁三、实验原理:利用FPGA开发班上的3个按钮开关btn[2:0]来输入4位数字的密码。
例如,输入“2—0—1—2"打开门锁.将用拨位开关sw [7:0]来设置密码,通过按钮开关btn[2:0]来输入密码。
其中,btn[0]、btn[1]和btn[2]分别对应的有效输入为“00"(十进制0)、“01”(十进制1)和“10”(十进制2),sw[7:6]、sw[5:4]、sw[3:2]和sw[1:0] 分别对应密码的1、2、3、4位。
用sw[7:0]设置密码的同时,通过7段数码管复用电路,将其显示到7段数码管上.注意:需将8位输入扩展成16位,即,x[15:0]={2'b00,sw[7:6],2’b00,sw[5:4],2’b00,sw[3:2], 2'b00,sw [1:0]}输入4位数字后,才能知道所输入的密码是否正确。
如果密码是正确的,led[1]亮起;如果密码错误,led[0]将亮起.图1给出了设计的顶层模块。
当按下btn[0]、btn[1]、btn[2]中任何一个按钮时,将会产生一个时钟脉冲。
当分别按下按钮btn[0]、btn[1]、btn[2]时,锁模块对应的2位输入bn[1:0]为“00”、“01”和“10”.输入的密码与拨位开关上设置的密码相比较,产生图2所示的状态转移图.注意:即使密码输入错误,也必须完成完整的4位密码输入,才能进入“fail”状态E4。
图1. 门锁电路的顶层模块图2. 门锁电路的状态转移图四、实验目的:熟悉利用HDL代码输入方式进行组合逻辑电路的设计和仿真的流程,掌握Verilog语言的基本语法.并通过一个密码锁的设计把握利用EDA软件(Xilinx ISE 10。
1)进行HDL代码输入方式的电子线路设计与仿真的详细流程,熟悉摩尔状态机。
四位数字密码锁的设计
EDA 课程设计报告书课题名称 四位数字密码锁的设计 姓 名学 号 院 系 专 业 指导教师年 月 日※※※※※※※※※ ※※※※ ※※※※※※※※※※※级学生EDA 课程设计设计任务及要求:(1)设计任务:本课程设计要求设计的数字密码锁密码为4位,由密码锁输入电路、码锁控制电路、密码锁处理电路、显示电路四大部分组成,将各电路组合起来,构成了一个完整的电子密码锁。
(2)设计要求:①、密码输入:每按一个数字键,就输入一个数值,且将在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一位。
②、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。
③、密码修改:按下此键时将目前的数字设定成新的密码。
④、激活电锁:按下此键可将密码锁上锁,红色LED灯将闪烁一次。
⑤、解除电锁:按下此键会检查输入的密码是否正确,若绿色LED亮则表示密码正确,密码锁将解锁。
指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章年月日四位数字密码锁的设计1 设计目的随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱,电子密码锁的使用也体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
2 设计的主要内容和要求设计一个简单的数字电子密码锁,密码为 4 位。
要求具备如下功能:(1)如果输入数字键,第一个数字会从数码管的最右端开始显示,此后每按下一个数字键,数码管上的数字必须往左移动一格,以便将新的数字显示出来。
(2)本密码锁为四位密码锁,当输入的数字超过四个时,不会显示第四个以后的数字。
(3)按下密码清零键,清除所有输入的数字,清除成为“0000”,即做归零动作。
(4)按下解锁键,检查输入的密码是否正确,若解锁指示灯(绿色LED灯)闪烁一次,即表示密码正确(开锁)。
multisim电子密码锁课程设计
multisim电子密码锁课程设计一、课程目标知识目标:1. 学生能够理解电子密码锁的基本原理,掌握Multisim软件中相关电路设计与仿真操作;2. 学生能够描述数字电路的基础知识,包括逻辑门、触发器等,并运用到电子密码锁的设计中;3. 学生能够掌握电子密码锁的电路组成及其功能,理解各部分电路模块的工作原理。
技能目标:1. 学生能够运用Multisim软件设计简单的电子密码锁电路,并进行功能仿真;2. 学生通过实践操作,提高动手能力,培养问题发现与解决能力;3. 学生能够通过小组合作,提高沟通协调能力,培养团队协作精神。
情感态度价值观目标:1. 学生在学习过程中,培养对电子技术的兴趣,激发创新意识;2. 学生能够认识到电子技术在生活中的应用,增强学以致用的意识;3. 学生通过课程学习,培养严谨的科学态度和良好的学习习惯。
分析课程性质、学生特点和教学要求,本课程旨在使学生在掌握电子密码锁相关知识的基础上,提高实际操作能力和团队合作能力,培养对电子技术的热爱,为后续相关课程的学习打下坚实基础。
通过具体的学习成果分解,教师可进行针对性的教学设计和评估,确保课程目标的实现。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数字电路基础知识回顾:逻辑门、触发器、计数器等基本概念和工作原理。
- 教材章节:第五章 数字电路基础2. 电子密码锁原理介绍:密码锁的工作原理、电路组成及其功能。
- 教材章节:第七章 数字电路应用实例3. Multisim软件操作与仿真:Multisim软件的基本操作、电路设计与仿真步骤。
- 教材章节:第十章 电子设计自动化(EDA)工具4. 电子密码锁电路设计:运用Multisim软件设计电子密码锁电路,包括输入模块、处理模块、输出模块等。
- 教材章节:第七章 数字电路应用实例、第十章 电子设计自动化(EDA)工具5. 电路功能仿真与调试:对设计的电子密码锁电路进行功能仿真,分析并解决可能出现的问题。
eda课程设计电子密码锁
eda课程设计 电子密码锁一、课程目标知识目标:1. 学生能够理解电子密码锁的基本原理,掌握其电路组成及功能。
2. 学生能够了解数字电路的基本知识,包括逻辑门、触发器等,并运用这些知识分析电子密码锁的工作原理。
3. 学生能够掌握二进制与十进制的转换方法,并应用于电子密码锁的设计。
技能目标:1. 学生能够运用所学知识设计并搭建简单的电子密码锁电路。
2. 学生能够通过实际操作,调试并优化电子密码锁的性能。
3. 学生能够运用EDA软件(如Multisim、Protel等)进行电子密码锁电路的设计、仿真和测试。
情感态度价值观目标:1. 培养学生动手实践、解决问题的能力,增强自信心和成就感。
2. 培养学生团队协作精神,学会沟通与分享,提高合作能力。
3. 增强学生对电子科技的兴趣和热爱,激发创新意识和潜能。
课程性质分析:本课程为电子技术实践课程,注重理论联系实际,强调学生的动手能力和创新能力。
学生特点分析:学生处于高中阶段,具有一定的电子基础和逻辑思维能力,对实践操作充满兴趣。
教学要求:结合课程性质和学生特点,将课程目标分解为具体的学习成果,以项目为导向,引导学生通过实践探索,完成电子密码锁的设计与制作。
在教学过程中,注重启发式教学,鼓励学生提问、思考、解决问题,培养其创新能力和实际操作能力。
后续教学设计和评估将以此为基础,确保学生达到预定的学习成果。
二、教学内容1. 理论知识:- 数字电路基础知识:逻辑门、触发器、计数器等;- 电子密码锁原理:锁体结构、电路设计、密码设置与识别;- 二进制与十进制转换方法及其应用。
2. 实践操作:- 使用EDA软件(如Multisim、Protel)进行电子密码锁电路设计;- 搭建电子密码锁电路,进行实际操作和调试;- 分析并优化电子密码锁性能,提高其安全性。
3. 教学大纲:- 第一阶段:数字电路基础知识学习,占总课时1/3;- 第二阶段:电子密码锁原理学习,占总课时1/3;- 第三阶段:实践操作,包括EDA软件使用、电路搭建、调试与优化,占总课时1/3。
EDA课程设计(基于VHDL语言的8位数字密码锁设计)
东华理工大学机械与电子工程学院基于VHDL语言的8位数字密码锁设计一、摘要:数字控制的电子密码锁已经广泛应用在办公室、公司、宾馆、小区住宅等场所。
EDA技术的应用引起了电子产品系统开发的革命性变革。
利用先进的EDA工具,基于硬件描述语言,可以进行系统级数字逻辑电路的设计。
本文简述了VHDL语言的功能及其特点,并以8位串行数字锁设计为例,介绍了在QUARTUS II 6.0开发软件下,利用VHDL硬件描述语言设计数字逻辑电路的过程和方法。
关键词: QUARTUS II 6.0 EDA 电子密码锁(电子设计自动化) VHDL语言语言设计串行密码锁硬件描述语言数字逻辑电路Based on VHDL language 8 digits combination lock design Digital control of electronic locks has widely used in office, companies, hotels, residential area and etc.EDA technology application caused a electronic product development system of the revolutionary transformation. Using advanced EDA tools, hardware based description language, can undertake system in digital logic circuit design. This paper describes the function and characteristics of VHDL language, and eight serial number lock design as an example, this paper introduces QUARTUS II 6.0 software development in of VHDLhardware design of digital logic circuit process and method.Keywords: QUARTUS II 6.0, EDA (electronic design automation), electronic locks and VHDL language, language design, serial, locks and hardware description language, digital logic circuit二、引言:电子密码锁系统主要由电子锁体、电子密匙等部分组成,一把电子密匙里能存放多组开锁密码,用户在使用过程中能够随时修改开锁密码,更新或配制钥匙里开锁密码。
(完整word版)电子密码锁设计
电子密码锁设计1 设计任务及要求初始条件:计算机、Max+plusⅡ、EDA实验箱。
主要任务与要求:设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4位,用数据开关K1~K10分别代表数字1,2,…,9,0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。
可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。
用一位输出电平的状态代表锁的开闭状态。
提高部分:为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。
2 EDA简介EDA技术是在电子CAD技术基础上发展起来的通用软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
EDA 设计可分为系统级、电路级和物理实现级。
物理级设计主要指IC版图设计,一般由半导体厂家完成;系统级设计主要面对大型复杂的电子产品;而一般民用及教学所涉及基本是电路级设计。
我们常用的EDA软件多属于电路级设计。
电路初级设计工作,是在电子工程师接受系统设计任务后,首先确定设计方案,并选择合适的元器件,然后根据具体的元器件设计电路原理图,接着进行第一次仿真。
其中包括数字电路的逻辑模拟、故障分析、模拟电路的交直流分析、瞬态分析等。
这一次仿真主要是检验设计方案在功能方面的正确性。
仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线,有条件的还可以进行PCB后分析。
其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反馈回电路图,进行第二次仿真,也称作后仿真。
后仿真主要是检验PCB板在实际工作环境中的可行性。
EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:multiSIM7(原EWB 的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim等等。
电子密码锁原理图
电子密码锁原理图电子密码锁是一种通过密码输入来控制开关的电子设备,它在现代生活中得到了广泛的应用。
其原理图如下所示:1. 电子密码锁的输入部分。
电子密码锁的输入部分通常由按键、密码输入电路和控制电路组成。
按键用于输入密码,密码输入电路用于接收并识别输入的密码,控制电路则根据密码的正确与否来控制开关的通断。
2. 电子密码锁的密码识别原理。
密码识别原理是电子密码锁的核心部分,它通常采用数字电路和逻辑电路来实现。
当用户输入密码时,密码输入电路会将输入的密码转换成数字信号,并传送给逻辑电路进行比对。
逻辑电路会将输入的密码与预设的密码进行比对,如果输入的密码与预设的密码一致,则控制电路会打开开关,否则会保持关闭状态。
3. 电子密码锁的控制部分。
控制部分是电子密码锁的执行部分,它通常由继电器、触发器和开关等组件构成。
当逻辑电路判断密码正确时,控制电路会触发继电器或触发器,使开关通电;反之,控制电路会保持开关断电状态。
4. 电子密码锁的供电部分。
电子密码锁的供电部分通常由直流电源和稳压电路组成,以保证电子密码锁的稳定工作。
直流电源用于提供电子密码锁所需的电能,稳压电路则用于稳定电子密码锁的工作电压,防止因电压波动而影响电子密码锁的正常工作。
5. 电子密码锁的输出部分。
电子密码锁的输出部分通常由开关、指示灯和报警器等组件构成。
当电子密码锁判断密码正确时,控制电路会触发开关闭合,并点亮指示灯以示开锁成功;反之,控制电路会触发报警器以示密码错误。
总结。
通过以上原理图,我们可以清晰地了解到电子密码锁的工作原理。
它通过密码输入电路、密码识别原理、控制部分、供电部分和输出部分相互配合,实现了对开关的灵活控制。
电子密码锁的应用不仅提高了生活的便利性,同时也增强了安全性,是一种十分实用的电子设备。
EDA课设简易14位密码锁
目录一、设计要求..................................................................................二、设计内容..................................................................................三、14位密码锁控制电路原理图................................................四、Modelsim模拟仿真..............................................................五、课设心得................................................................................题目:简易14位密码锁控制电路数字密码锁的基本原理是,通过寄存器存储预置密码,输入密码后将数据寄存在另外的寄存器中。
然后分别将预置密码与输入密码通过比较器比较,如果相同,锁被打开,否则,不能打开。
本方案的以以上原理为基础,通过门电路与触发器的辅助,实现了预置密码,验证密码,修改密码的功能。
一、设计要求1、输入按键开关设计为7个,密码位数要14位。
14位数字密码分成高7位(DH6….DH0)和低7位(DL6….DL0)两次输入,用数字逻辑按键开关预置,2、开锁输出信号out为1表示开锁,否则不开锁。
3、输出报警信号均为1有效,分为声报警Sound the alarm (扬声器)和 light alarm(发光管),4、 14位数字密码分时操作,先预置高7位,然后再置入低7位,(顶层电路可参考图1)。
5、要求电路工作可靠,保密性强,开锁出错立即报警,(用声光两种形式同时报警)。
6、利用QuartusⅡ软件,混合设计方法进行设计、编译、并在FPGA 芯片上实现。
四位数字密码锁的设计
EDA 课程设计报告书课题名称 四位数字密码锁的设计 姓 名学 号 院 系 专 业 指导教师年 月 日※※※※※※※※※ ※※※※ ※※※※※※※※※※※级学生EDA 课程设计设计任务及要求:(1)设计任务:本课程设计要求设计的数字密码锁密码为4位,由密码锁输入电路、码锁控制电路、密码锁处理电路、显示电路四大部分组成,将各电路组合起来,构成了一个完整的电子密码锁。
(2)设计要求:①、密码输入:每按一个数字键,就输入一个数值,且将在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一位。
②、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。
③、密码修改:按下此键时将目前的数字设定成新的密码。
④、激活电锁:按下此键可将密码锁上锁,红色LED灯将闪烁一次。
⑤、解除电锁:按下此键会检查输入的密码是否正确,若绿色LED亮则表示密码正确,密码锁将解锁。
指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章年月日四位数字密码锁的设计1 设计目的随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱,电子密码锁的使用也体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
2 设计的主要内容和要求设计一个简单的数字电子密码锁,密码为 4 位。
要求具备如下功能:(1)如果输入数字键,第一个数字会从数码管的最右端开始显示,此后每按下一个数字键,数码管上的数字必须往左移动一格,以便将新的数字显示出来。
(2)本密码锁为四位密码锁,当输入的数字超过四个时,不会显示第四个以后的数字。
(3)按下密码清零键,清除所有输入的数字,清除成为“0000”,即做归零动作。
(4)按下解锁键,检查输入的密码是否正确,若解锁指示灯(绿色LED灯)闪烁一次,即表示密码正确(开锁)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:随着数字技术飞速发展,具有防盗报警功能的数字密码锁代替安全性差的机械锁已成为必然的趋势。
数字密码锁不但可以用来保管物品,还可以防止越权操作,例如银行自动柜员机、自动售货机、门卡系统等。
基于EDA技术设计的电子密码锁,以其价格便宜、安全可靠、使用方便,受到了人们的普遍关注。
而以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDE)为主要表达方式,以QuartusⅡ开发软件和KHF-3型CPLD/FPGA实验开发系统为设计工具设计的电子密码锁,由于其能够实现数码输入、数码清除、密码解除、密码更改、密码上锁和密码解除等功能,因此,能够满足社会对安全防盗的要求。
◆关键词:FPGA;VHDL;数字密码锁;原理图;VHDL源程序1.设计题目:数字密码锁2.设计要求:设计一个数字密码锁,用户可输入4位的二进制数,连续3次不正确则报警。
开锁密码可手动预置,并可进行修改密码,取消报警。
3.设计系统的功能要求与分析3.1系统的功能要求本次的设计主要是采用先进的EDA技术,利用Quartus II工作平台和VHDL设计语言的设计。
为了更好地满足实际的需要,将4位二进制改为3位十进制。
根据系统设计的要求,可以用自顶向下的设计思路设计一个简易的数字密码锁,该锁应在收到3位与规定码相符的十进制数码时打开,使相应的指示灯点亮;若收到的代码与规定的不符或者开锁程序有误,表示错误的指示灯点亮。
由于设计的这个密码锁密码位数较少,所以必须给操作的人严格的次数限制。
若连续三次没有输对,则表示操作的人不是该锁的使用者。
此时报警铃长响,这时只有锁的使用者才能关取消报警。
由于开锁密码可手动预置,故可在输入端加多一个按键,在开锁状态下按下此按键后可以进行密码设置和修改密码。
3.2系统的功能分析(1)系统接通电源后处于开锁状态,此时可以通过手动预置三位十进制数密码,再按上锁键将密码锁上锁,通过指示灯显示出上锁状态。
(2)开锁密码是3位十进制数,可以通过系统预先设定。
开锁时输入密码不足三位或超过三位,又或者密码错误均不能开锁。
(3)开锁程序由设计者确定,用户必须严格执行所规定的程序,方可开锁。
(4)开锁密码和程序正确,表示密码锁上锁的指示灯熄灭,此时处于开锁状态。
(5)系统允许用户在开锁过程中有3次错误,连续输入密码错误或三次以后,报警灯亮而上锁灯也依然在亮,此时必须通过取消报警键解除报警才能进行其他操作。
4.设计思路分析与方案选择4.1方案选择:要设计一个数字密码锁,可以有多种实现方法,下面列出其中的两种:方案一:采用键盘扫描的方法扫描键盘输入信号,扫描信号变化的顺序依次为1110—1101—1011—0111—1110……,周而复始。
键盘一个数字输入键,每次扫描产生新的按键数据,即采取串行左移输入数据。
设计系统由密码锁输入模块、密码锁控制模块和错误报警模块三个部分组成。
方案二:直接采用并行输入数据,每一个按键代表一个十进制数。
此系统则由密码锁控制模块、计数器I模块、计数器II模块、寄存器模块、比较器模块以及编码器模块六个部分组成。
其中,控制模块是核心。
经过比较,虽然方案一结构模块少,但程序过于复杂,难于理解和编译,而方案二虽然结构模块多了点,但易于读懂,而且操作过程简单,不易出现错误,故采用方案二设计本系统。
4.2设计方案分析根据系统设计要求,系统设计采用自顶向下的设计方法。
顶层设计采用原理图设计方式,系统整体组装设计结构图如图(1)所示,它由密码锁控制模块、计数器I模块、计数器II 模块、寄存器模块、比较器模块以及编码器模块六个部分组成。
图(1)系统整体组装设计结构图4.2.1编码器部分其共有三个输入和两个输出端口,如图(2)图(2)编码器部分 在时钟脉冲信号的作用下,当“en=1”时,表示此时可以输入三个十进制数码,分别对应关系如下: "0000000001"=>"0000";"0000000010"=>"0001";"0000000100"=>"0010";"0000001000"=>"0011";"0000010000"=>"0100";"0000100000"=>"0101";"0001000000"=>"0110";"0010000000"=>"0111";"010*******"=>"1000";"1000000000"=>c"1001"。
即当“key_in=左边数”时,“code_out=右边数”。
而当输入的数码等于系统设置密码时,“ps_i=1”,否则“ps_i=0”。
4.2.2计数器I 部分其部分有两个输入端和两个输出端,如图(3)输入编码 计数器I 寄存器 比较器 控制模块计数器II图(3)计数器I部分其脉冲信号为编码器的“code_out”的输出数值,|“clr”是清零端,当“clr=1”时“cout=0”;当“clr=0”时,“cnt=cnt+'1'”,若“cnt=10”时,再遇到下一个脉冲信号后则变成“11”,并使“cout=1”,最后将“cnt”的值赋给“addr”输出。
4.2.3寄存器部分此部分有5个输入端和一个输出端,如图(4)图(4)寄存器部分寄存器主要用来储存输入的三位十进制数码,即密码。
在时钟脉冲下降沿时若“en=1”,则可以输入数据。
此时,如果“addr”为when"01"=>if reg_wr='1' then m0<=data_in;else data_out<=m0;when "10"=>if reg_wr='1' then m1<=data_in;else data_out<=m1;when "11"=>if reg_wr='1' then m2<=data_in;else data_out<=m2;when OTHERS=>NULL。
4.2.4比较器部分此部分较为简单,其只有两个输入端和一个输出端,如图(5)图(5)比较器部分当从编码器“code_out”端输出的数a与储存在寄存器中的数b相等时,c端输出“1”,否则为“0”。
4.2.5计数器II部分此部分也只有两个输入端和一个输出端,如图(6)图(6)计数器II部分其主要是用来计算连续输入错误的次数。
当清零端“clr=1”时计数器II清零,“wro_count”自然也为零;当“clr=0”时,控制器的“cnt_clk2”端的输出信号作为此部分的脉冲信号,遇到上升沿时计数器加1,计到3次时“wro_count”端输出“1”,否则为“0”。
4.2.6中心控制部分此部分是整个系统的核心部分,其管脚也甚多,共有10个输入端和7个输出端。
如图(7)图(7)中心控制部分在“OUTLOCK”即开锁状态下,“key=0”,上锁指示灯熄灭;在“INLOCK”即安锁状态下,“key=1”,上锁指示灯亮,并且有“code_en=0;cnt_clr=1;reg_wr=0;warn=0”。
按下“start”键后,系统可以输入三位十进制密码,再按“enter”键确认,如果密码正确,则开锁,否则“wro_count=1”,连续输错三次,则“warn=1”,系统报警,按下“off_al=1”键则取消报警,而此过程中“key”始终为“1”。
5.VHDL源程序5.1底层文件VHDL源程序5.1.1编码器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dl_coder isport( clk:in std_logic;en:in std_logic;key_in:in std_logic_vector(9 downto 0);ps_i:out std_logic;code_out: out std_logic_vector(3 downto 0)); end dl_coder;architecture behave of dl_coder issignal key_in_1:std_logic_vector(9 downto 0);signal key_in_2:std_logic_vector(9 downto 0);beginU1:process(clk)beginif rising_edge(clk) thenif en='1' thenif key_in="0000000000" thenkey_in_1<=key_in;key_in_2<=key_in;elsekey_in_2<=key_in_1;key_in_1<=key_in;end if;end if;end if;end process;ps_i<='1' when key_in_2/=key_in_1 else '0';U2:process(clk)beginif rising_edge(clk) thenif en='1' and key_in/="000000000" thencase key_in iswhen "0000000001"=>code_out<="0000";when "0000000010"=>code_out<="0001";when "0000000100"=>code_out<="0010";when "0000001000"=>code_out<="0011";when "0000010000"=>code_out<="0100";when "0000100000"=>code_out<="0101";when "0001000000"=>code_out<="0110";when "0010000000"=>code_out<="0111";when "010*******"=>code_out<="1000";when "1000000000"=>code_out<="1001";when OTHERS=>code_out<="0000";end case;end if;end if;end process;end behave;5.1.3寄存器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dl_reg isport(clk:in std_logic;reg_wr:in std_logic;en:in std_logic;addr:in std_logic_vector(1 downto 0);data_in:in std_logic_vector(3 downto 0);data_out:out std_logic_vector(3 downto 0));end entity;architecture behave of dl_reg issignal m0:std_logic_vector(3 downto 0);signal m1:std_logic_vector(3 downto 0);signal m2:std_logic_vector(3 downto 0);beginprocess(clk)beginif falling_edge(clk) thenif en='1' thencase addr iswhen "01"=>if reg_wr='1' thenm0<=data_in;elsedata_out<=m0;end if;when "10"=>if reg_wr='1' thenm1<=data_in;elsedata_out<=m1;end if;when "11"=>if reg_wr='1' thenm2<=data_in;elsedata_out<=m2;end if;when OTHERS=>NULL;end case;end if;end if;end process;end behave;5.1.4比较器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dl_cmp isport(a:in std_logic_vector(3 downto 0);b:in std_logic_vector(3 downto 0);c:out std_logic);end dl_cmp;architecture behave of dl_cmp isbeginc<='1' when a=b else'0';end behave;5.1.5计数器II部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dl_counter2 isport(clk:in std_logic;clr:in std_logic;wro_count:out std_logic);end entity;architecture behave of dl_counter2 is signal cnt:std_logic_vector(1 downto 0); beginprocess(clk,clr)beginif clr='1' thencnt<="00";wro_count<='0';elsif rising_edge(clk) thenif cnt="10" thencnt<="11";wro_count<='1';elsecnt<=cnt+'1';end if;end if;end process;end behave;5.1.6中心控制部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dl_control isport(clk:in std_logic;lock:in std_logic;start:in std_logic;off_al:in std_logic;ps_ch:in std_logic;enter:in std_logic;wro_count:in std_logic;ps_i:in std_logic;cmp_r:in std_logic;cin:in std_logic;code_en:out std_logic;cnt_clr:out std_logic;cnt_clr2:out std_logic;cnt_clk2:out std_logic;reg_wr:out std_logic;key:out std_logic;warn:out std_logic);end dl_control;architecture behave of dl_control isCONSTANT KEY_ACTIVE:STD_LOGIC:='1';type state_type is (OUTLOCK,INLOCK,PS_INPUT,PS_RIGHT,PS_WRONG,ALARM,PS_CHANGE); signal state:state_type;beginprocess(clk)beginif rising_edge(clk) thencase state iswhen OUTLOCK=>key<='0';if lock=KEY_ACTIVE thenstate<=INLOCK;ELSIF ps_ch=KEY_ACTIVE thenstate<=PS_CHANGE;ELSEstate<=OUTLOCK;end if;when INLOCK=>key<='1';code_en<='0';cnt_clr<='1';reg_wr<='0';warn<='0';if start=KEY_ACTIVE thenstate<=PS_INPUT;elsestate<=INLOCK;end if;when PS_INPUT=>code_en<='1';cnt_clr<='0';reg_wr<='0';if cin='1' and ps_i='1' and cmp_r='1' then code_en<='0';cnt_clr<='1';cnt_clr2<='1';state<=PS_RIGHT;elsif ps_i='1' and cmp_r='0' thencode_en<='0';cnt_clr<='1';cnt_clr2<='0';cnt_clk2<='1';state<=PS_WRONG;elsif enter=KEY_ACTIVE and cin='0' then code_en<='0';cnt_clr<='1';cnt_clr2<='0';cnt_clk2<='1';state<=ALARM;elsestate<=PS_INPUT;end if;when PS_RIGHT=>if enter=KEY_ACTIVE thenstate<=OUTLOCK;elsestate<=PS_RIGHT;end if;when PS_WRONG=>if enter=KEY_ACTIVE and wro_count='1' then cnt_clk2<='0';state<=ALARM;elsif enter=KEY_ACTIVE thencnt_clk2<='0';state<=INLOCK;elsestate<=PS_WRONG;end if;when ALARM=>if off_al=KEY_ACTIVE thenwarn<='0';state<=INLOCK;elsecnt_clk2<='0';warn<='1';state<=ALARM;end if;when PS_CHANGE=>code_en<='1';cnt_clr<='0';reg_wr<='1';if cin='1' thencode_en<='0';cnt_clr<='1';state<=OUTLOCK;end if;WHEN OTHERS=>state<=INLOCK;end case;end if;end process;end behave;6.系统仿真与分析6.1系统整体组装设计原理图图(8)系统整体组装设计原理图6.2系统仿真波形图图(9)系统仿真波形图6.3波形图分析当系统刚开始工作时,处于开锁状态。