1、 目 录摘要2引 言3一、绪 论31、EDA技术简介32、电子密码锁的系统简介43、系统设计要求4三、 总体框图41、密码锁的组成42、硬件的选择43、总体框图5四、功能模块61、输入模块6(1)功能介绍6(2)(2)输入模块与仿真图形62、控制模块7(1)功能介绍7(2)控制模块与仿真图形73、显示模块10(1)功能介绍10五、电子密码锁的程序设计111、Quartus II软件介绍112、VHDL语言的特征123、VHDL语言的优点124、电路的VHDL描述13六、总体设计电路图191、总体电路图192、波形仿真20七、总结21参考文献22基于EDA技术设计电子密码锁摘要:随着人们生活水平
2、的提高,密码锁作为家庭防盗卫士的作用日趋重要,它与普通机械锁相比有一些独特的优势,尤其是其保密性强、防盗性能好,可以不用钥匙,只要记住密码即可开锁。本文以QUARTUSII作为软件平台,用VHDL硬件语言进行设计描述,基于可编程逻辑器件,并结合EDA技术的各项优势,使得高可靠性、高保密性的电子锁的设计变得简单易行。 关键词:电子密码锁 EDA VHDL Abstract: With the improvement of peoples living standard, the lock as home security guards increasingly important, compar
3、ed with ordinary mechanical locks have some unique advantages, especially its confidentiality, anti-theft performance, you can not have the key, just rememberThe password to unlock. As a software platform to QUARTUSII VHDL hardware language description of the design based on programmable logic devic
4、es, combined with the advantages of EDA technology, high reliability, high-security electronic lock design becomes simple.Key words : electronic password lock EDA VHDL引 言随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。所以,人们对锁的要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。电子密码锁的研究从20世纪30年代就
5、开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究
6、一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。一、绪 论1、EDA技术简介EDA即电子设计自动化,是近几年来迅速发展起来的计算机软件、硬件、
7、微电子技术交叉运用的现代电子学科,是20世纪90年代从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助翻译)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以ASIC为实现载体的电子产品自动化过程。在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编辑编译、化简、分隔、综合及优化,布局布线、仿真、目标芯片的适配编译,逻辑映射和编程下载等工作。设计者的工作只限于软件的方式来完成对旧的硬件功能描述,要在EDA工具的帮组下,就应用相应的FPGA器件就可以得到最后的设计结果。
8、尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。 2、电子密码锁的系统简介通用的电子密码锁主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。(1) 密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。(3)密码显示电路主要将显示数据的BCD码转换成相对应的编码。如,若选用七段数码管显示电路,主要将待显示数据的BCD码转换成数码
9、器的七段显示驱动编码。3、系统设计要求本文所设计的密码锁是一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下:(1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。(2)数码清除:按下此键可清除前面所有的输入值,清除为“0000”。(3)密码更改:按下此键时会将目前的数字设定成新的密码。(4)激活电锁:按下此键可将密码锁上锁。(5)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。三、 总体框图1、密码锁的组成电子密码锁,主要由三部分组成:密码输入电路、密码锁控制电路和密码锁显示电路。2、硬件的选择作为电子
10、密码锁的输入电路,可选用的方案有拨码与按键来控制输入和触摸式键盘输入等多种。拨码与按键和触摸式3*4键盘相比简单方便而且成本低,构成的电路简单,本设计中采用拨码与按键来作为该设计的输入设备。数字电子密码锁的显示信息电路可采用LED数码显示管和液晶屏显示两种。液晶显示具有高速显示、可靠性高、易于扩展和升级的特点,但是普通的液晶存在亮度低、对复杂环境适应能力差的特点,但是在本设计中任然使用LED数码管。3、总体框图根据以上选定的输入设备与与显示器件,并考虑到现实各项密码锁功能的具体要求,与系统的设计要求,系统设计采用自顶向下的设计方案。整个密码锁系统的总体总体框图如图3-1所示。输入模块寄存器与清
11、零信号发生电路数值比较器拨码与按键单脉冲控制输入译码LED灯扫描电路三选一选择器开/关锁电路控制模块显示模块BCD七段译码显示电路图3-1电子密码锁系统总体框图四、功能模块1、输入模块(1)功能介绍输入时有三个拨码键控制输入,每个拨码各控制一位密码,对于其中一个拨码键每拨一次码按一次按键,表示输入一位,当输入四位时输出一位数,用“888”作为初始密码。(2)(2)输入模块与仿真图形单脉冲控制如图4-1如下图图4-1 单脉冲控制下图为单脉冲控制输入,当M给一上升沿信号将在PUL输出一位与之对应的高或低电平。图4-2单脉冲控制输入四位串行输入并行输出寄存器如下图4-3 图4-3四位串行输入并行输出
12、寄存器图4-4四为串行输入并行输出寄存器上图为四为串行输入并行输出寄存器,它由4个D触发组成,当reset为高电平时,每给一脉冲输入数据将向右移一位二值代码,它能同时复位2、控制模块(1)功能介绍开锁时输入密码后,拨动 RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。按下REST可清除前面的输入值,清除为“888”。(2)控制模块与仿真图形输入译码器图4-5,如下
13、图图4-5输入译码器下图为译码器将4位二值代码转化成BCD码从“0000”“1001”表示09。图4-6译码器 总功能控制模块图4-7,如下图图4-7总功能控制模块 当CHANGE为高电平且rt为低电平时开始输入密码这时lockopen为高电平,而lockclose为低电平,当rt为高电平,change为低电平时开始检测密码,如上图开始密码为“108”当再次出现“108”时lockopen为高电平,而lockclose为低电平,当密码错误时lockopen为低电平,而lockclose为高电平。图4-8 4选1选择器与扫描器4选1选择器与扫描器图4-8,如下图图4-9多路选择器如上图多路选择器
14、可以从多组数据来源中选取一组送入目的地,在本设计中利用多路选择器做扫描电路来分别驱动输出装置,可以将低成本消耗,如上图当输入“819”时,在时钟地控制下qout将输出“819”,而与之对应的sel扫描对应的数码管。图4-10多路选择器波形仿真3、显示模块(1)功能介绍将密码用BCD七段数码管显示显示模块与仿真波形图4-11,如下图图4-11显示模块下图将BCD码转化到七段译码电路上图4-12仿真波形五、电子密码锁的程序设计1、Quartus II软件介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hard
15、ware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以artus II 通过和DSP Builder工具与Ma
16、tlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集面及简便的使用方法系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOP
17、C和HardCopy设计流程,并且继承了在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Qu Maxplus II 友好的图形界。2、VHDL语言的特征VHDL语言目前主要是对数字电路设计的描述,对模拟电路的设计尚不能很好地表达。VHDL语言在编程时要更加规范,程序结构要适合整个系统的硬件结构,要符合各模块的信号时序关系,以及数据流的走向。VHDL语言的设计格式更是面向具体的硬件对象的语言,因此任何独立于硬件实体的程序设计是没有意义的。现在EDA设计代替了传统的手工设计,都是以FPGA、CPLD、EPLD等可编程器件作为系统中硬件的载体,大部分是以VHDL作为设计语言,并针对所使用的芯
18、片来选择不同公司的软件在计算机上进行设计、综合。这种用程序设计完成的硬件结构可装载到对应的可编程器件中,进行仿真、模拟、验证。VHDL的语言特点主要有:(1)更加类似软件上的高级语言,具备更强的模块化能力并拥有良好的可读性以及程序的移植性;(2)淡化状态机,与或表达式等早一代硬件描述语言中的元素,用更类似于高级语言的表达式取代;(3)拥有高效率的生成代码,能够节省大量的资源。3、VHDL语言的优点严格地讲,VHDL是一种用来描述数字逻辑系统的“编程语言”。它通过对硬件行为的直接描述来实现对硬件的物理实现,代表了当今硬件设计的发展方向。VHDL是为了满足逻辑设计过程中的各种需求而设计的。第一,它
19、是可以用来描述逻辑设计的结构,比如逻辑设计中有多少个子逻辑,而这些子逻辑又是如何连接的。除此之外,VHDL并不十分关心一个具体逻辑依靠何种方式实现,而是把开发者的精力集中到逻辑所实现的功能上。第二,VHDL采用类似高级语言的语句格式完成对硬件行为的描述,具备更强的模块化能力,并拥有良好的可读性以及程序的移植性。第三,VHDL给出逻辑的模拟与调试为设计工作提供了最大的空间。鉴于VHDL具有以上诸多优点,只要开发者具备一定的高级语言程序设计基础,拥有Pascal、C等计算机高级语言的基础,同时又了解一些基本数字电路的设计方法,在此基础上来学习VHDL程序设计应该是比较容易的,可以轻松地掌握VHDL
20、使硬件工作软件化。现代电子系统设计人员应该把VHDL语言作为一种基础知识来学习,并要求能够熟练地使用EDA的设计工具。4、电路的VHDL描述-接线说明:10K10的CLK0(1)接4.88KHz,CLR(83)接K1,KIN0-KIN3接16-19,a-g接73-66,SEL2-SEL0接64-61;- status(5)接D0,LOCKS(4)接LED7,UNLOCKS(8)接LED5.-实验结果:STATUS=0时,输入4位数,按MEM键锁定,红灯亮;STATUS=1时,输入4位数,按ESC键解锁,如密码正确则红灯灭绿灯亮.LIBRARY IEEE;USE IEEE.STD_LOGIC_1
21、164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -此电子密码锁系统的主程序需要的标准程序包为STD_LOGIC_1164和STD_LOGIC_UNSIGNED。ENTITY keys_lock ISPORT ( clk ,clr,status : IN STD_LOGIC ; selout : OUT STD_LOGIC_VECTOR (2 downto 0) ; key : IN STD_LOGIC_VECTOR (3 downto 0) ; segout : OUT STD_LOGIC_VECTOR (0 TO 6); locks,unlocks: OU
22、T STD_LOGIC );END keys_lock ;ARCHITECTURE doit of keys_lock ISsignal counter1 : std_logic_vector(1 downto 0);signal counter : std_logic_vector(2 downto 0);signal counter2 : std_logic_vector(4 downto 0);signal dc0,dc1,dc2,dc3,lock0,lock1,lock2,lock3 : std_logic_vector(3 downto 0);signal dcc1 : std_lo
23、gic_vector(4 downto 0);signal dcc : std_logic_vector(6 downto 0);signal d0,d1,d2,d3 : std_logic_vector(0 to 6);signal clk1,test,koff: std_logic;component decode PORT( ssin : in std_logic_vector(3 downto 0); ssout: out std_logic_vector(0 to 6) );end component;-上面程序定义了矩阵键盘接口输入电路以及输出七段数码管的各个端口;begintes
24、t=key(3) and key(2) and key(1) and key(0);P1: process(clr,clk) begin if(clr=0) then counter1=00; elsif(clkevent and clk=1) then counter1=counter1+1; end if;end process P1;-上面程序定义了键盘扫描时序电路;clk1=0 when counter1=01 else 1;P2: process(clr,clk1,test) begin if(clr=0) then counter=000; elsif(clk1event and
25、clk1=1) then if(test=0) or (koff=0) then counter=counter; else counter=counter+1; end if; end if;end process P2;-上面程序用于判断输入信号是否有效的,如果有效则输出;selout=counter;dcc=counter & key;P3: process(clk,test) begin if(clkevent and clk=0) then if(dcc=0001110) then dcc1=00000; elsif(dcc=0011110) then dcc1=00001; els
26、if(dcc=0101110) then dcc1=00010; elsif(dcc=0111110) then dcc1=00011; elsif(dcc=1101110) then dcc1=00100; elsif(dcc=1111110) then dcc1=00101; elsif(dcc=0001101) then dcc1=00110; elsif(dcc=0011101) then dcc1=00111; elsif(dcc=1001101) then dcc1=01000; elsif(dcc=1011101) then dcc1=01001; elsif(dcc=11011
27、01) then dcc1=01010; elsif(dcc=1111101) then dcc1=01011; elsif(dcc=0101011) then dcc1=01100; elsif(dcc=0111011) then dcc1=01101; elsif(dcc=1001011) then dcc1=01110; elsif(dcc=1011011) then dcc1=01111; elsif(dcc=1001110) then dcc1=10000; elsif(dcc=1011110) then dcc1=10001; elsif(test=0) then dcc1=011
28、11; end if; end if;end process P3;-dcc1=0000 when (dcc=0001110) else- 0001 when (dcc=0011110) else- 0010 when (dcc=0101110) else- 0011 when (dcc=0111110) else- 0100 when (dcc=1101110) else- 0101 when (dcc=1111110) else- 0110 when (dcc=0001101) else- 0111 when (dcc=0011101) else- 1000 when (dcc=10011
29、01) else- 1001 when (dcc=1011101) else - 1010 when (dcc=1101101) else- 1011 when (dcc=1111101) else- 1100 when (dcc=0101011) else- 1101 when (dcc=0111011) else- 1110 when (dcc=1001011) else- 1111 when (dcc=1011011) else- 0000;-上面程序是键盘扫描电路部分的程序,用来提供键盘扫描信号;P4: process(test,clk,clr) begin if(clr=0) the
30、n counter2=00000; koff=1; elsif(clkevent and clk=1) then if(test=0) then counter2=00000; koff=0; elsif(counter211110) then counter2=counter2+1; - end if; elsif(counter2=11110) then koff=1; end if; end if;end process P4;-koff=0 when counter2=01110 else- 1;-上面程序是按键存储电路部分的VHDL编码,用于将整个键盘扫描完毕后的结果记录下来;P5:
31、 process(koff,clr) begin if(clr=0) then dc0=0000; dc1=0000; dc2=0000; dc3=0000; locks=0; unlocks=0; elsif(koffevent and koff=1) then if(dcc1=10000 and status=0) then lock0=dc0; lock1=dc1; lock2=dc2; lock3=dc3; locks=1; unlocks=0; elsif(dcc1=10001 and status=1) then if(dc0=lock0 and dc1=lock1 and dc2
32、=lock2 and dc3=lock3) then locks=0; unlocks=1; end if; else dc0=dcc1(3 downto 0); dc1=dc0; dc2=dc1; dc3dc0, ssout=d0);U2: decode port map(ssin=dc1, ssout=d1);U3: decode port map(ssin=dc2, ssout=d2);U4: decode port map(ssin=dc3, ssout=d3); segout=d0 when counter=000 else d1 when counter=001 else d2 w
33、hen counter=010 else d3 when counter=011 else 0000000;end doit;-此部分程序是弹跳消除电路部分的VHDL代码,作用是通过对信号的分频处理,从而将按键产生的不规则信号转换为便于识别的按键信号,达到消除抖动的目的;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY decode ISPORT( ssin : in std_logic_vector(3 downto 0); ssout: out std_logic_vector(
34、0 to 6) );end decode;ARCHITECTURE a of decode ISbegin ssout=1111110 when ssin=0000 else 0110000 when ssin=0001 else 1101101 when ssin=0010 else 1111001 when ssin=0011 else 0110011 when ssin=0100 else 1011011 when ssin=0101 else 1011111 when ssin=0110 else 1110000 when ssin=0111 else 1111111 when ssi
35、n=1000 else 1111011 when ssin=1001 else 1110111 when ssin=1010 else 0011111 when ssin=1011 else 1001110 when ssin=1100 else 0111101 when ssin=1101 else 1001111 when ssin=1110 else 1000111 when ssin=1111 else 0000000;end a;-此部分是输出七段显示器电路所对应的VHDL编码部分用于将待显示数据的BCD 码转换成数码器的七段显示驱动编码;六、总体设计电路图1、总体电路图图6-1总体
36、电路图2、波形仿真图6-2波形仿真当change为高电平,rt为低电平时,输入“952”验证,当再次输入“952”时锁打开,设计正确。设计使用FPGA芯片管脚图图6-3 FPGA芯片管脚设计图(FLEX10K系列EPF10K10LC84-4)本设计选用系统作为硬件验证系统,同时选用EPF10K10LC84-4作为主控芯片。该芯片是一种基于查找表结构的现场可编程逻辑器件,它的基本逻辑单元是可编程的查找表,能够实现组合逻辑运算,并可用可编程寄存器实现时序逻辑运算。设计时只需要对电子密码锁整体设计中的输入输出引脚作引脚锁定,然后重新编译和下载,即可进行电子密码锁的硬件验证。七、总结使用VHDL语言设
37、计电路,思路简单,功能明了使用Quartus II软件设计电路不仅可以进行逻辑仿真,还可以进行时序仿真;使用可编程逻辑器件不仅省去了电路制作的麻烦,还可以反复多次进行硬件实验,非常方便的修改设计,且设计的电路保密性很强。总之,采用EDA技术使得复杂的电子系统设计变得简单容易,可大大提高了设计效率。 本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以Quartus开发软件和开发系统为设计工具设计了一种具有密码输入、数码清除、密码解除、密码设置和密码激活等功能的电子密码锁。同时阐述电子密码锁的工作原理和软硬件实现方法。由于本设计中的FPGA芯片体积小,功耗低,价格便宜,安全可靠,稍加修改就可以改变密码的位数,而且维护和升级比较方便,很容易做成ASIC芯片,因而具有较好的应用前景。参考文献1潘松、黄继业,EDA 技术实用教程,科学出版社, 20022江国强编,EDA技术与应用,北京,电子工业出版社,20043童诗白、华成英编,模拟电子技术,高等教育出版社,2006 4阎石主编,数字电子技术基础第四版,高等教育出版社,20015吴正毅,测试技术与测试信号处理,清华大学出版社,19916宗孔德、胡广书,数字信号处理,清华大学出版社,1988 .第 22 页 (共 22 页)
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922