《课程设计(论文)基于FPGA 的电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于FPGA 的电子密码锁设计.doc(15页珍藏版)》请在三一办公上搜索。
1、基于FPGA 的电子密码锁设计摘要本设计以现场可编程逻辑器件(FPGA)为设计载体以硬件描述语言(VHDL)为主要表达方式以Quartus开发软件给出了一种电子密码锁的设计方案同时阐述了电子密码锁的工作原理和软硬件实现方法最后对该电子密码锁进行了时序仿真和硬件验证,实现了可编程的片上系统(SOPC)。该密码锁可随时更新密码和升级算法,具有较好的可靠性和性价比,特别适用于宾馆、办公大楼、仓库等。关键词:电子密码锁;FPGA;VHDL;QuartusAbstractThe design field-programmable logic device (FPGA) for the design of
2、 vectors to the hardware description language (VHDL) as the main way of expression in order to develop software Quartus given an electronic password lock design also described an electronic password lock of the working principle and Finally software and hardware implementations of the electronic cod
3、e lock of the timing simulation and hardware verification, achieved a programmable system on chip (SOPC). The lock can always change your password and update algorithms, with better reliability and cost-effective, especially for hotels, office buildings, warehouses and so on.Key word: electronic com
4、bination locks, FPGA, VHDL, Quartus0 引言锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便。 弹子锁由于结构上的局限已难以满足当前社会管理和防盗要求, 特别是在人员经常变动的公共场所,如办公室、宾馆、仓库等地方。 电子密码锁是集计算机技术、 电子技术、 数字密码技术为一体的机电一体化高科技产品, 具有安全性高, 使用方便等优点, 越来越受到人们的青睐, 但是目前使用的电子密码锁大部分是基于单片机技术, 以单片机为主要器件, 其成本高且可靠性较差。 本文介绍一种采用现场可编程门阵列(FPGA)为核心器件的新型电子密码锁的设计方
5、法, 具有现场可编程在系统调试的功能, 即实现SOPC, 能够在产品设计开发、制造过程中对产品中的器件、 电路板甚至整个电子系统的逻辑和功能随时进行组态或重组。FPGA器件能够简化系统结构, 降低成本, 提高了系统的保密性和可靠性,具备万次以上的擦写能力。因此,采用这种器件开发的数字系统, 其升级与改进极其方便。1系统功能(1) 数码输入:按下一个数字键,其对应的数字就显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位,设计密码为4位系统只能显示前4位输入的数码。(2) 数码清除:当按下清除键时,清除前面输入的所有值,并显示为“ - - - -”。(3) 密码解除:按下55#键,可以
6、将电子密码锁的旧密码解除。(4) 密码更改:将旧密码解除之后,可以进行密码更改,输入任意四位密码数字,再按#号就可以将输入的数码当作新的密码。(5) 密码上锁:输入新的密码之后,按下11#键,可以进行密码上锁操作。(6) 密码解锁:按下99#键再输入数码,如果输入与系统储存密码一致,密码锁就能开启否则不能解锁。【1】2系统硬件部分设计硬件系统主要由键盘输入电路、显示译码电路和密码锁控制电路等组成。 密码锁的硬件系统示意图如图1所示。图1 系统整体框图2.1键盘输入电路键盘输入主要用于输入数据,由键盘扫描电路、消抖动电路、键盘译码器、按键数据缓存器和4 4 矩阵式键盘等组成。键盘采用4 4矩阵式
7、键盘,有09共10个数字键和6个功能键。各功能键的功能如下:1)Set:密码设置键,锁开的情况下,按下该键设置密码。锁未开,该键无效。2)Dial:拨号键,按下时,可以输入密码。3)Reset:系统复位键,按下该键,系统回到初始状态。4)Cheak:检查键,密码输完,按该键,如密码正确则开锁。5)Close:关锁键。6)Back:删除键,删除(除功能键之外)输入的数字。键盘扫描信号由计数器产生。每当扫描信号发生变化时,扫描键盘某一行按键的状态信号,如果没有按键被按下,则扫描下一行;如果有按键被按下,去抖动后,再次扫描被锁定行以确定按键是否误读;如果按键被证实按下,则一直等待直至用户释放该键。【
8、2】2.2 密码锁控制电路密码锁控制电路是整个系统的控制中心,当有按键按下时,系统根据译码所得数字,判断出按下的是功能键还是数字键,如果是功能键,则执行相应键的功能;如果是数字键,则作为密码。控制电路的硬件由一片EP1K30TC144-3 实现,控制功能由软件实现。【3】3系统软件部分设计与仿真3.1电子密码锁的整体结构电子密码锁的整体结构如2所示,它包括密码锁输入模块、控制模块和显示模块等。图2 电子密码锁整体元件例化框图3.2 电子密码锁输入模块密码锁输入模块由时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路和按键存储电路组成。时序产生电路用于产生电路中三种不同频率的工作脉冲波形,包
9、括系统时钟信号、弹跳消除取样信号和键盘扫描信号。键盘电路可提供键盘扫描信号。该信号由ky3-ky0进入键盘,其变化的顺序为1110-1101-1011-0111-1110 周而复始。 扫描信号0111代表扫描的为*、0、#这一排按键 ,当*这个按键被按下时,由kx2-kx0读出的值为011,按键位置的数码关系如表1所列。表1 按键位置数码表弹跳消除电路可避免误操作发生,由于设计中采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间,会在接触点出现信号来回弹跳的现象。为使电子密码锁可靠工作,必须加上弹跳消除电路。弹跳消除电路采用软件延时的方法消除抖动,其仿真波形如3所示。图3 消抖电路仿真图从图
10、3中可以看出,若采样信号连续两次或超过两次检测到高电平信号,说明按键状态确实发生了变化,此时电路输出一个时钟周期的按键信号,否则当作抖动处理而不予理会,以此来消除抖动。对于键盘译码电路,分为数字按键和功能按键,每一个按键可负责不同的功能,而键盘所产生的输出 (也就是扫描回复信号) 却无法直接拿来用作密码锁控制电路的输入,所以必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。【4】键盘存储电路可将每次扫描产生的新按键数据存储下来,因此新数据可能会覆盖前面的数据,所以需要一个按键存储电路,以将整个键盘扫描完毕的结果记录下来。图4 密码锁输入模块的仿真波形图4所示是密码锁输入模块的仿真
11、波形,图中,数字键数据“0、1、2、3、4、5、6、7、8、9” 和功能键数据 “0100、0001” 所得到的输出不同,由此可证明密码锁输入模块的正确性。3.3 控制模块密码锁控制电路是整个电路的控制中心,主要完成对数字键输入和功能键输入的响应和控制,密码锁控制电路的仿真波形如图5所示。图5 密码锁控制电路的仿真波形从图5可见,其数字键输入的响应控制过程如下:(1) 按下数字键,第一个数字会在显示器的最右端显示,随后每按下一个新数字 显示器上已经存在的数字整体会向左移一位,并将以新的数字显示出来。(2) 若要更改输入数字,则可按*键清除所有输入的数字,再重新输入数字。(3) 电子密码锁为4位
12、,当输入超过4位时电路不予理会,且不显示第4个以后的数字。功能按键的输入响应控制功能如:(1) 清除功能:按下*键可清除所有输入的数字,显示为“ -”。(2) 更改密码:按下55#键,输入旧密码 (设计中为“0000”),再按#键,即可解除旧密码。接着输入4位数字,再按下#键,就可以将4位数字作为新密码。(3) 密码上锁:输入4位新的密码数字之后再按11#键,就可以将密码锁上锁(4) 密码解锁:按下99#键可输入密码解锁假如输入“2345”这个密码,然后按下#键,系统将比较键盘输入的数码和寄存器中的数码,如果一致,就会给出一个开锁信号,密码锁开锁,否则密码输入无效。3.4 显示模块本电子密码锁
13、的显示模块比较简单,其作用是将控制模块的BCD码输出转换为7段显示编码然后驱动数码管,其仿真波形如图6所示:图6显示模块仿真波形4将各个模块整合为系统并硬件验证要完成电子密码锁的设计,还必须将上述三个功能模块进行整合,本设计选用杭州康芯电子有限公司生产的GW48EDA系统作为硬件验证系统,同时选用Altera公司的EP1K30TC144-3作为主控芯片【5】。该芯片是一种基于查找表结构的现场可编程逻辑器件,它的基本逻辑单元是可编程的查找表 ,能够实现组合逻辑运算,并可用可编程寄存器实现时序逻辑运算。本设计在Proteus ISIS中命名40X16,汇编语言程序命名为40X16.asm,点击菜单
14、Source的下拉菜单第一条Add/Remove Source Files,在弹出的对话框中点击New,选择40X16.asm,然后在CodeGereration tool一栏的下拉框中选择ASM51,点击OK,这样,菜单Source的下拉菜单中就多了个40X16.asm,点击菜单Source的下拉菜 单BuildAll,如果编译成功,会弹出BUILD LOG提示没有错误,如果程序中有错误,则编译失败,BUILDLOG也会对错误进行提示。编译完成后生成40X16.hex文件,在原理图中右键点击AT89C51再点击左键,会弹出Edit Component对话框中如图7所示,对其设置完后再点击OK
15、,就可以进行仿真了。然后只需要对电子密码锁整体设计中的输入输出引脚作引脚锁定,然后重新编译和下载,即可进行电子密码锁的硬件验证。经过验证表明:本设计能够实现电子密码锁的全部功能。【6】 图7 Edit Component对话框5总结 对于这一整个电子密码锁系统,设计的程序已经基本实现了预期的所有功能,充分利用了EDA 设计中的优点,将各模块以文件顶层设计的方式让所有子程序串联在了一起 ,通过满足某个条件而实现相关功能,显然这个系统的设计已经完成,也基本达到了作为数字密码锁的绝大部分功能。参考文献1 尹常永. EDA技术与数字系统设计. 西安电子科技大学出版社. 2004年2 于枫. ALTER
16、A可编程逻辑器件应用技术. 北京科学出版社. 2004年3 王道宪. CPLD/ FPGA可编程逻辑器件应用与开发. 国防工业出版社. 2005年4 李连华. 基于FPGA 的电子密码锁设计. 中国科技信息2006 (1) : 63 5 金西. VHDL 与复杂数字系统设计. 西安电子科技大学出版社. 2003年6 朱正涌. 半导体集成电路. 清华大学出版社. 2001年附录主要程序:LIBRARY IEEE ;UEE IEEE.STD_LOGIC_1164.ALL;UEE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DZMMSUO ISPORT(CLK,CLRM,P
17、RN:IN STD_LOGIC;KEY : IN STD_LOGIC _VECTOR(2 DOWNTO 0);DATA_N,DATA_F: OUT STD_LOGIC _VECTOR (3 DOWNTO 0);DATA_BCA: OUT STD_LOGIC _VECTOR (15 DOWNTO 0);FLAG_N,FALG_F,MINMAIN,SETIN,OLD,ENLOCK, Q: OUT STD_LOGIC);END DZMMSUO ;ARCHITECTUR BEHAVE OF DZMMSUO ISBEGIN IF CLRN0 AND PRN1 THENQ0;ELSIF CLRN1 AND
18、 PRN0 THENQ1;ELSIF CLKEVENT AND CLK1 THENQCLK CLRNINVD PRN;VCC DVCC QQ0;U2 DCFQ PORT MAP CLK CLK CLRN Q0 PRN ;VCC DVCC QQ1;PROCESS CLKBEGINIF CLKEVENT AND CLK1 THEN;D0NOT Q1;D1D0;END IF;END PROCESS;DD0D0 DD1D1 QQ1Q1 QQ0Q0;DOUTNOT D1 AND NOT D0;DOUT1NOTQ1;END ARCHITECTURE ART;KEYINPROCESS BLOCK ISSIG
19、NAL RST D0 D1 STDLOGIC;BEGINRSTRR2;PROCESS FLAGN RST ISBEGINIF RST1 THEN;ACC0000000000000000 CLEAR INPUT;NC000;ELSEIF FLAGNEVENT AND FLAGN1THEN;IF NC4 THEN;ACCACC 11 DOWNTO DATAN;NCNC+1;END IF;END IF;END IF;END PROCESS;END BLOCK KEYINPROCESS;LOCKPROCESS BLOCK ISBEGINPROCESS CLK DATAF ISBEGINIF CLKEVENT AND CLK1 THEN;IF NC4 THEN;IF DATAF 2 1 THEN 上锁控制信号有效REGACC 密码存储 QA1 QB0;ELSIF DATAF 0 1 THEN开锁控制信号有效IF REGACC THEN 密码核对QA0 QB1;END IF;ELSIF ACC1000100010001000 THENQA0 QB1;END IF;END BEHAVE;