基于FPGA的电子密码锁的设计.doc
文本预览下载声明
随着社会物质财富的日益增长,安全防盗已成为人们所关注的焦点。然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。
1 系统功能描述
本设计主要实现以下六个功能:
(1)初始密码设置:系统上电后输入4位数字并按“*”后密码设置成功系统进入上锁状态。为了实际需要,系统另设置了一个4位数的优先级密码,当用户忘记密码或被他人更改密码后,可以用优先级密码清除所设密码。
(2)密码更改:为了密码安全及避免误操作,只能在开锁状态下先输入旧密码后才能更改系统密码,然后输入4位新密码后按“*”。
(3)解锁:输入密码或优先级密码后按“#”,系统即解锁。
(4)密码保护:密码输入错误时,系统自动记录一次错误输入,当错误输入次数等于3次时,系统报警并使键盘失效5分钟,以免密码被盗。
(5)清除输入错误:当输入数位小于4位时可以按“*”清除前面所有的输入值,清除为“0000”。
(6)系统复位:按“*”和“#”后系统即复位到初始状态。考虑到实际情况,系统只在密码更改状态和系统初始状态下才能复位。
2 系统设计思路
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
本文采用自顶向下的模块化设计方法,先对系统级进行功能描述,再进行功能模块的划分,最后分别对各个子模块进行VHDL建模。所设计的电子密码锁系统结构如图1所示。
键盘消抖 键盘编码 输入处理 显示
系统控制 键盘矩阵 时钟及扫描
图1 系统结构图
4 主要功能模块的仿真
图6是键盘编码模块的时序仿真图。其中信号mm是主控模块,用来限制复位条件,即只在S0和S6状态下产生复位信号RR;信号rst_key和unen_key共同控制键盘,也是来自主控模块;sn是模块输出信号,为高电平时表示有数字键被按下;sf为高电平时表示有功能键被按下。从仿真图上可知,模块设计满足要求。
不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。
显示全部