ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:281.74KB ,
资源ID:9565279      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9565279.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的电子密码锁的设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的电子密码锁的设计.docx

1、基于FPGA的电子密码锁的设计基于FPGA的电子密码锁的设计随着社会物质财富的日益增长,安全防盗已成为人们所关注的焦点。然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至

2、 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上

3、完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。1 系统功能描述本设计主要实现以下六个功能:(1)初始密码设置:系统上电后输入4位数字并按“*”后密码设置成功系统进入上锁状态。为了实际需要,系统另设置了一个4位数的优先级密码,当用户忘记密码或被他人更改密码后,可以用优先级密码清除所设密码。(2)密码更改:为了密码安全及避免误操作,只能在开锁状态下先输入旧密码后才能 图1 系统结构图2.1 时钟产生模块此模块主要功能是产生时钟信号和键盘扫描信号。主要产生三个时钟信号(16 Hz、64 Hz、100 kHz),分别为系统各个功能模块提供时钟驱动

4、信号。其中键盘扫描模块包括在时钟产生模块中,用来产生扫描信号。由于要产生多个时钟信号。密码输入一般采用机械式和触摸式两种键盘。由于机械式键盘具有成本低、结构简单、可靠性高、应用广泛等优点,其按键分布及键值编码如图2所示。其中*、#为多功能组合键。键盘扫描电路用来产生扫描信号KH,其按照1110-1101-1011-0111的规律循环变化,并通过KC来检测是否有键按下。其他键也是类似原理。特别值得注意的是键盘扫描电路扫描时钟的确立,如果扫描时钟不合适,将产生键按下时反应太慢,或KC产生错误的输出。2.2 按键消抖模块本设计采用机械键盘,其缺点是易产生抖动,因此键盘输出KC20必须经过消抖电路后才

5、能加入到键盘编码模块,以避免多次识别。此模块采用状态机设计,其状态转换图如图3所示。只有当连续检测到3次低电平输入,模块才输出一次低电平。消抖电路的时钟选择很关键,选择不当则不能正常工作。因为键盘扫描电路的时钟是16 Hz且扫描信号为4组循环输出,所以消抖电路要能够在4个键盘扫描时钟内检测出是否有键按下就必须设置其时钟信号至少为键盘扫描时钟的4倍。2.3 键盘编码模块上述的键盘中可分为数字键和功能键,其中数字键用来输入数字,但键盘所产生的信号KC20并不能直接用于键盘输入处理模块,因此必须由键盘编码电路对数字按键的输出形式进行规划。同时多功能键*、#也分别被规划为“1010”和“1011”。另

6、外,在系统规划时,也将系统复位电路规划在此模块内,复位信号是由键盘编码模块和系统主控模块输出的系统复位辅助信号mm共同作用产生,从而实现只能在密码更改状态和系统初始状态下才能进行系统复位,确保系统安全可靠。2.4 按键输入处理模块按键输入处理模块用来储存每次按键产生的值,以免覆盖前面输入的数据,此模块使用串行移位寄存器对依次输入的4位十进制数字进行存储。按键输入超过4位时,后面的输入将被忽略。2.5 显示模块为了节省I/O管脚和芯片内部资源,本设计采用动态扫描的方法进行显示。模块用100 kHz时钟信号和人眼的视觉暂留效应使4位数码管看起来像是同时点亮。图4是根据VHDL代码所绘制的显示模块框

7、图。其中多路数据选择器是由按键次数(NC)控制选择哪一个数码管和哪一组输入数据。2.6 系统主控模块此模块是系统的核心控制模块,系统的所有控制行为都是由它完成的,采用状态机(FSM)来描述系统的控制行为。由于多进程编程状态机的输出是由组合电路发出的,如果这些输出信号被用作时钟信号,则极易产生错误的驱动,其优势是由时序器件同步输出,输出信号不会出现毛刺现象,从而很好地避免了竞争冒险的发生。缺点是与多进程状态机相比,输出信号要晚一个时钟周期。通过反复试验在VHDL编程时将输出信号与状态转换同步进行,从而很好地解决了输出信号滞后的问题。图5为主控模块的状态转换图。其中S0为系统上电初始化状态,也是系

8、统复位后所转入的状态。本设计设置S0状态的另一主要原因是考虑到一个完备的状态机应该具备初始化状态和默认状态。当芯片加电或者复位后,状态机应该能够自动将所有判断条件复位,并进入初始化状态。但需要强调的是,大多数FPGA有GSR(Global Set/Reset)信号,当FPGA加电后,GSR信号拉高,对所有的寄存器,RAM等单元复位/置位,这时配置于FPGA的逻辑并未生效;不能保证正确地进入初始化状态。所以使用GSR企图进入FPGA的初始化状态,常常会产生种种不必要的麻烦。S1为上锁状态,S2为解锁状态,S3为解锁错误次数记录状态,S4为系统报警状态,S5为开锁状态,S6为密码更改状态。三重要程

9、序模块分析1,密码设置模块 process(clk) -定义个存储器将密码存放在keyin中 begin if clkevent and clk=1 then keyin=key; end if;end process; prr=pdan or rw1 or rin or ok;st: process(keyin,prr,ok1) -第一次修改密码 begin if ok1=1 then start=0; elsif (keyin/=000000 and prr=0) then start=1; else start=0; end if; end process;inkey: process(

10、key,start,clk) begin -输入密码时间进入记时状态 if clkevent and clk=1 then ok1=0;ok2=0; if start=1 then sbuf1=keyin; -将密码放入rom1暂存器中 if ok=1 then ok2=1; elsif cnt=100 then cnt=000 ;ok1=1; -5秒到将cnt值零将ok1值置高 else cnt=cnt+1; end if ; else cnt=000;sbuf1=sbuf1; -当start=1时cnt永远保持0 end if; end if; end process; 2,报警信号产生模

11、块:pandan : process(ok,ok1,ok2,clk,start) -输入密码用于判断密码是否正确 begin if ok2=1 or ok1=1 then pdan=1; -开锁信号 elsif clkevent and clk=1 then if pdan=1 then if cnt1=10011 then pdan=0; -20秒后判断结束,进入等待外部输入状态 else cnt1=cnt1+1; end if; else cnt1=00000; -等待状态时cnt1一直为0 end if; end if; end process;3显示模块Display: process

12、(open,rw ,rin,clk1) -显示程序 begin if open=1 then -开锁信号密码正确 red=0;green=1; speaker=0; -红灯灭,绿灯亮 else -密码错误 red=1;green=0; speaker=clk1; -红灯亮,绿灯灭, end if; elsif rw=1 then -第一次修改密码显示状态 red=1;green=0;speaker=0; elsif rin=1 then red=0;green=0; speaker=0; else red=1;green=0; speaker=0; end if; end process;4

13、主要功能模块的仿真图6是键盘编码模块的时序仿真图。其中信号mm是主控模块,用来限制复位条件,即只在S0和S6状态下产生复位信号RR;信号rst_key和unen_key共同控制键盘,也是来自主控模块;sn是模块输出信号,为高电平时表示有数字键被按下;sf为高电平时表示有功能键被按下。从仿真图上可知,模块设计满足要求。不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1