欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    四位电子密码锁设计.docx

    • 资源ID:3098519       资源大小:697.33KB        全文页数:26页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    四位电子密码锁设计.docx

    1、四位电子密码锁设计高级电子线路实验报告 题 目: 基于FPGA的四位电子密码锁设计 院 (系): 信息与通信学院 专 业: 学生姓名: 学 号: 2015 年 6 月 18 日基于FPGA的的四位电子密码锁设计摘要本文主要介绍了一种运用可编程逻辑器件(FPGA)技术来编程实现电子密码锁的设计方法。在整个系统设计实现中采用FPGA器件作为控制器,继而了解密码锁系统的总体流程、各个模块的功能与接口的分配。基于FPGA,使用VHDL语言编写模块程序,再通过Quartus II集成开发环境下进行设计、综合与仿真。要求用Verilog HDL语言实现系统中的各个模块功能,并且能够仿真,验证本次设计四位密

    2、码锁的功能。每按下一个数字键,就输入一个数值,并显示该数值,当按下密码更改键时会将目前的数字设定成新的密码。当按下激活电锁键的时候可以将密码锁上锁。当按下解除电锁键时会检查输入的密码是否正确,密码正确即开锁。电子密码锁由键盘扫描模块、分频模块 、密码计数模块 、比较器模块 、存储模块、显示模块和控制模块七大部分组成。通过硬件描述,验证了整个设计的正确性以及系统的完整性。关键词:可编程逻辑器件;电子密码锁;硬件描述;时序仿真引言本设计利用Quartus工作平台硬件描述语言,设计一种电子密码锁,并通过用FPGA芯片实现。用VHDL语言使用自顶向下的方法对系统进行了描述,并在FPGA芯片上实现。设计

    3、充分利用了FPGA的资源可编程特性,可高效率的对系统进行升级与改进。设计的密码锁可设置任意密码,比一般的四位密码锁具有更高的安全可靠性,因此,采用FPGA 开发的数字系统,不仅具有很高的工作可靠性,其升级与改进也极其的方便,应用前景十分宽广。随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高,因此导致了电子行业的蓬勃发展。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都获得了大大的提高。随着大规模集成电路技

    4、术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。1 总体方案设计1.1 方案论证方案一:采用数字电路控制。利用数字逻辑电路,实现对锁的电子控制,突破了传统的机械锁的单一性、保密性低、易撬性的缺点,数字电子密码锁具有保密性高、使用灵活性好、安全系数高的优点。虽然采用数字密码锁电路的好处是设计简单,但是由于其实纯电路实际,在系统运行时,延时会比较严重。方案二:通过单片机实现。现在一种新的方案就是采用一种以AT89S51为核心的单片机控制方案。虽然有灵活的设计和丰富的I

    5、O端口,但是单片机运行的缺点是程序运行时容易出现跑飞现象。通过以上比较显然单片机方案有较大的活动空间,不但能实现所要求的功能,而且能在很大程度上扩大功能,并可以方便的对系统进行升级。但是由于所学知识不能将其有效运用,现有环境不能满足,而且以单片机为核心的密码锁有一定的不足之处,在运行时会产生PC指针错误,因此提出了第三种方案。方案三:利用FPGA设计数字密码锁。FPGA即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物,是一种超大规模集成电路,具有对电路可重配置能力。通常FPGA都有着上万次的重写次数,也就是说现在的硬件设计和软件设计一样灵活、方便。相对于基

    6、于单片机技术的电子密码锁,用FPGA器件来构成系统,可靠性提高,并且由于FPGA具有的现场可编程功能,使得电子密码锁的更改与升级更为方便简单。通过以上比较描述,本设计采用基于FPGA的数字密码设计方案。1.2 基于FPGA的数字密码锁系统流程图根据所要实现的数字密码锁的功能,设计出所要完成的的系统流程,系统设计的流程图如3.1所示。图3.1详细的描述了一个数字密码锁所要完成的功能,开始时,首先要对密码锁系统进行复位初始化,将所要设置的密码首先存入到存储模块当中。然后进行键盘输入,键盘输入分为密码输入和功能输入,如果是密码输入就要把输入的密码与预置的密码进行比较,如果相同则开锁,不相同则报警,而

    7、其中密码的个数由计数器限制;如果是功能输入,则看是什么功能,本设计主要设计了四个功能:设置密码键、退出键、清零键和关锁键,密码锁会根据所要求的功能进行相应的操作。如果是其他的不与功能相对应的键输入,密码锁将进行系统复位初始化阶段,重新开始操作。图3.1系统流程图3.3 基于FPGA的数字密码锁总体框图通过数字密码锁系统结构的分析,我们知道通用的数字密码锁主要由八个部模块组成:分频模块、键盘扫描模块、比较模块、计数模块、寄存模块、存储模块、显示模块和控制模块。根据系统流程图的设计以及各个模块之间的逻辑关系将得到系统总体框图,如图3.2所示。图3.2数字电子密码锁系统总体框图键盘扫描模块:设定数字

    8、键09,以及功能键;分频模块:设定系统时钟CLK的频率,对其分频,分别作为按键检测时钟和LED控制器扫描时钟;密码计数模块:统计所输密码位数;比较器模块:比较所输两数是否相等;比较结果寄存器模块:存储比较器模块的结果;存储模块:存储所设置的密码;显示模块:显示所输数字;控制模块:根据分析的数字密码结果,控制单元的算法。2 系统详细设计2.1 分频模块设计分频模块的主要功能是所给频率转化成系统所需频率。通常数字电路中的分频操作是采用计数来进行。就是利用一个自由计数器来产生各种需要的频率,也就是先建立一个N位计数器,N的大小根据电路的需求来决定,N的值越大,电路可以分频的次数就越多,这样就可以获得

    9、更大的频率变化,以便提供多种不同频率的时钟信号。本密码系统所设计的分频模块是执行十分频功能的模块,其目的是为了得到频率为时钟频率十分之一的clk_scan。主要程序如下所示。if(clkevent and clk=1) then if(cnt=cnthigh)then cnt = 0; else cnt cnthigh/2)then clk_scan=1; else clk_scan key_code_reg=00000; key_out_reg =0000000000000001 ; temp_num =1; temp_function key_code_reg=00001; key_out

    10、_reg =0000000000000010 ; temp_num =1; temp_function key_code_reg=00010; key_out_reg =0000000000000100 ; temp_num =1;temp_function=0; 设行扫描信号为key_row30,列线按键输入信号key_col0.3与按键位置的关系如表4.2所示。表4.2 行扫描信号、列线按键输入信号与按键位置的关系key_row30key_col0.3对应的按键111011100(key_num)11011(key_num)10112(key_num)01113(key_num)11011

    11、1104(key_num)11015(key_num)10116(key_num)01117(key_num)101111108(key_num)11019(key_num)1011A (设置密码键)0111B (退出键)01111110C (清零键)1101D(没有设置)1011E(没有设置)0111F (关锁键)键盘扫描模块源代码编译后所生成的示意图如图4.4所示。图4.4键盘扫描模块示意图键盘扫描模块的输入输出管脚及代表的意义如下图所示。表4.3键盘扫描模块输入输出变量定义输入端子clk_scan时钟扫描信号key_col3.0键盘列扫描输出端子key_row3.0键盘行扫描key_co

    12、de3.0键值输出key_out15.0键盘按键one-hot码输出key_press有键按下key_num数字键key_func功能键源程序编译以后,建立仿真波形,所得功能仿真波形如图4.5所示。图4.5 键盘扫描模块功能仿真波形图在图5.5中,键盘扫描的列输入为1011,行输出为1011,由图5.3可得,此时按下的键应该是功能键A键,因此key_func、key_press变为高电平,key_num为低电平,而以one-hot码(独热码)编码的key_out输出为0000010000000000,符合源程序逻辑。2.3 比较模块比较模块的主要功能是比较输入的密码和预置的开锁密码是否一致。部

    13、分程序如下所示。 if en=1 then if(a=b)then y=1; else y=0; end if; else y=Z; end if;比较模块源代码编译后所生成的示意图如图4.6所示。图4.6 比较模块示意图比较模块的输入输出管脚及代表的意义如下图所示。表4.4 比较模块输入输出变量定义输 入端 子a输入数字b输入数字en使能输出端子y比较结果 源程序编译以后,建立仿真波形,所得功能仿真波形如图4.7所示。图4.7 比较模块功能仿真波形图如图4.7中,当输入输入a为5、b为9时,说明输入的密码与预置密码不一样,此时输出y变为低电平;当输入a、b都为4时,说明输入的密码与密码锁系统

    14、初始化时的密码相同,此时输出y变为高电平,符合源程序逻辑。2.4 计数模块本计数器模块设计的是一个加减计数器,带有清零端,模值为4。当up_down1.0为“10”时,执行的是加计数;当up_down1.0为“01”时,执行的是减计数。部分程序如下所示,本程序执行的是加计数情况下的计数情况。if up_down=10 then empty=0; if num=100 then num=100;full=1;carry=1; elsif num=011 then num=100;full=1;carry=0; else num=num+1; full=0;carry=0; end if;end

    15、if;计数模块源代码编译后所生成的示意图如图4.8所示。计数器的作用有两个:(1) 输出作为存储器的地址输入;(2)计数满指示送给控制模块,表示密码长度是否满足。图4.8 计数模块示意图计数模块的输入输出管脚及代表的意义如下图所示。表4.5 计数模块输入输出变量定义输 入 端 子clk 时钟输入信号clr清零up_down1.0加/减控制端 输 出 端 子num2.0密码的位数empty密码输入为空full密码输入为满carry密码输入位数溢出borrow密码输入位数借位源程序编译以后,建立仿真波形,所得功能仿真波形如图4.9所示。图4.9 计数模块功能仿真波形图在图4.9前面一部分,up_d

    16、own1.0为“10”,此时进行加计数,来一个时钟加一次,加到4以后,已满,一直保持为4,直到up_down1.0变为“01”时,变为减计数,来一个时钟减一次,直到为0保持。2.5 显示模块显示模块的主要功能是显示所输入的密码。本模块设计的是一个可以左右移位的移位显示器,左右移动由left_right1.0来控制,当left_right1.0为10时为左移,当left_right1.0为01时为右移。部分程序如下所示。 if clr=1 then for i in 0 to (m-1) loop shift_memory(i)0); end loop; elsif rising_edge(cl

    17、k) then if left_right=10 and full/=1 then shift_memory(0)=1& din; for i in 1 to (m-1) loop shift_memory(i)=shift_memory(i-1); end loop; elsif left_right=01 and empty/=1 then shift_memory(m-1)0); for i in (m-1) downto 1 loop shift_memory(i-1)=shift_memory(i); end loop; end if; end if;经源代码编译以后生成的显示模块示

    18、意图如图4.10所示。 图4.10 显示模块示意图显示模块的输入输出管脚及代表的意义如下图所示。表4.6 显示模块输入输出变量定义输 入信 号clk 时钟信号clr 清零full 数字输入满empty 数字输入空left_right1.0 数字左移位右移位dinn-2.0 比较结果输 出信 号reg0n-1.0 显示数字第一位reg0n-1.0 显示数字第二位reg0n-1.0 显示数字第三位reg0n-1.0 显示数字第四位reg0n-1.0 显示数字第五位reg0n-1.0 显示数字第六位源程序编译以后,建立仿真波形,所得功能仿真波形如图4.11所示。图4.11 显示模块功能仿真波形图如图

    19、4.11所示,当left_right1.0为10时,每按下一个数字键,输入一个数值,就在数码管reg0上显示该数值,并将以前已经输入的数据依序左移一个数字位置。当full为高电平时,reg0不再移入新的数字。当left_right1.0为01时,将reg5reg0所显示数值依序右移,最高位移入0。2.6 存储模块在数字密码锁中,密码存储模块是它的密码规定电路,其主要功能是存储预置的开锁密码。密码存储模块的地址选择信号由计数器模块电路来进行选择。部分程序如下所示。process(wr,ld,addr1,datain)begin if wr=1 then rom0(addr1) = datain;

    20、 elsif ld=1 then for i in 0 to (m-1) loop rom1(i)0 and addr17 then if rd=1 and sel=0 then dataout = rom0(addr1); elsif rd=1 and sel=1 then dataout = rom1(addr1); else dataout Z); end if; else dataout Z); end if;end process;比较存储模块源代码编译后所生成的示意图如图4.12所示。 图4.12 存储模块示意图存储模块的输入输出管脚及代表的意义如下图所示。表4.7 存储模块输入输

    21、出变量定义输 入信 号 addr1-1.0 地址 ld 置数端 wr 写入 rd 读 sel 片选datainn-1.0 输入数字输出信号dataoutn-1.0 输出数字源程序编译以后,建立仿真波形,所得功能仿真波形如图4.13所示。图4.13 存储模块功能仿真波形图当wr为高电平时,将datain所输入的数据存储到rom0中addr所对应的位置;当sel为低电平时,从rom0中addr所对应的位置读出数据并输出到dataout端口;当sel为高电平时,从rom1中addr所对应的位置读出数据并输出到dataout端口。当ld为高电平时,将rom0中的数据复制到rom1中的对应位置。2.7

    22、控制模块控制模块是数字密码锁系统的核心,是本设计中最重要的一部分。它相当于计算机CPU,负责接收从其他模块传来的输入信号,再根据系统的功能产生相应的控制信号送到相应的模块。控制模块源代码编译后所生成的示意图如图5.14所示。图5.14 控制模块示意图控制模块是整个电路的控制中心,主要完成如下功能:(1)密码核对:在密码更改、开锁之前必须核对密码;(2)密码变更:按下此键将目前输入的密码作为新密码;(3)激活电锁:上锁,上锁之前必须设定密码;(4)解除电锁:检查输入的密码是否正确,正确才能开锁;(5)报警:当输入的密码错误时,密码锁报警。下表显示的是控制模块的输入输出管脚,以及每个管脚的意义。

    23、表4.8 控制模块输入输出变量定义输入信号clk时钟输入信号preset上电复位key_press按下键key_num数字键key_func功能键key_out15.10键盘one-hot译码输出input_end输入完成carry密码输入位数溢出epual输出结果输出信号set_lock关锁set_alarm报警reset_c复位cp按键信号up_down1.0加/减控制端ps3.0现态ns3.0次态wr写入ld置数rd读取sel片选端cs比较器与比较结果寄存器的使能端f_end第一遍密码输入完成s_end第二遍密码输入完成h_code密码设定完成控制模块主要由状态机电路组成,采用有效状态机

    24、设计【5】,将系统分为10个状态机,即空闲状态(idle)、第一次密码输入状态(firstcode)、第二次密码输入状态(secondcode)、密码输入状态(firstcode)、戴锁状态(firstcode)、关锁状态(firstcode)、消除状态(firstcode)、密码输入状态(firstcode)、输入完成状态(firstcode)和报警状态(firstcode)输入状态。密码锁上电复位后,可进行密码设置,当第一次输入密码以后,led所显示数码逐位左移,第一次密码输入完成后f_end为高。若第二次所设密码和第一次所设的密码一致, s_end为高。此后h_code始终为高,代表密码

    25、锁内已经存有密码。此时密码锁处于开锁状态,set_lock为低。最后按下F(关锁键),进入关锁状态,set_lock输出高电平。假设密码已经设置好,按下错误密码确认后,set_alarm输出为高,报警。按下清零键C清除报警状态。若要修改之前所设置的密码,可在开锁状态下按下A(设置密码键),此时f_end与s_end均为低电平。若要重设密码,第一次输入完成后f_end变为高,第二次所设密码与第一次一致时, s_end输出为高。同时,控制模块ld端输出一个正脉冲,将新密码设定密码锁中。在修改密码过程中,若按下B(退出键),则可退出密码设置状态,原先所设密码保持不变。源程序编译以后,建立仿真波形,所得功能仿真波形如图5.15所示。图4.15 控制模块功能仿真波形图3 系统顶层模块设计3.1 顶层原理图在Quartus II环境下通过对数字密码锁分频模块、键盘扫描模块、计数模块、比较模块、比较结果寄存器模块、存储模块、显示模块和控制模块的VHDL源程序进行编译得到各个模块的实体图,然后把各个模块的实体图按对应接口连接起来,再加上时钟信号、上电复位信号、列密码输入等


    注意事项

    本文(四位电子密码锁设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开