




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级电子线路实验报告题目:基于FPGA的四位电子密码锁设计院(系):信息与通信学院专业:学生姓名:学号:2015年6月18日高级电子线路实验报告用纸第I页共3页基于FPGA的的四位电子密码锁设计摘要本文主要介绍了一种运用可编程逻辑器件(FPGA)技术来编程实现电子密码锁的设计方法。在整个系统设计实现中采用FPGA器件作为控制器,继而了解密码锁系统的总体流程、各个模块的功能与接口的分配。基于FPGA,使用VHDL语言编写模块程序,再通过QuartusII集成开发环境下进行设计、综合与仿真。要求用VerilogHDL语言实现系统中的各个模块功能,并且能够仿真,验证本次设计四位密码锁的功能。每按下一
2、个数字键,就输入一个数值,并显示该数值,当按下密码更改键时会将目前的数字设定成新的密码。当按下激活电锁键的时候可以将密码锁上锁。当按下解除电锁键时会检查输入的密码是否正确,密码正确即开锁。电子密码锁由键盘扫描模块、分频模块、密码计数模块、比较器模块、存储模块、显示模块和控制模块七大部分组成。通过硬件描述,验证了整个设计的正确性以及系统的完整性。关键词:可编程逻辑器件;电子密码锁;硬件描述;时序仿真高级电子线路实验报告用纸第10页共3页 引言本设计利用QuartusII工作平台硬件描述语言,设计一种电子密码锁,并通过用FPGA芯片实现。用VHDL语言使用自顶向下的方法对系统进行了描述,并在FPG
3、A芯片上实现。设计充分利用了FPGA的资源可编程特性,可高效率的对系统进行升级与改进。设计的密码锁可设置任意密码,比一般的四位密码锁具有更高的安全可靠性,因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,其升级与改进也极其的方便,应用前景十分宽广。随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高,因此导致了电子行业的蓬勃发展。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都获得了大大的提高。随着大
4、规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。1总体方案设计1.1方案论证方案一:采用数字电路控制。利用数字逻辑电路,实现对锁的电子控制,突破了传统的机械锁的单一性、保密性低、易撬性的缺点,数字电子密码锁具有保密性高、使用灵活性好、安全系数高的优点。虽然采用数字密码锁电路的好处是设计简单,但是由于其实纯电路实际,在系统运行时,延时会比较严重。方案二:通过单片机实现。现在一种新的方案就是采用一种以AT89S51为核心的单片机控制方案。虽然有灵活的设计
5、和丰富的IO端口,但是单片机运行的缺点是程序运行时容易出现跑飞现象。通过以上比较显然单片机方案有较大的活动空间,不但能实现所要求的功能,而且能在很大程度上扩大功能,并可以方便的对系统进行升级。但是由于所学知识不能将其有效运用,现有环境不能满足,而且以单片机为核心的密码锁有一定的不足之处,在运行时会产生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(clkeventandclk=1)thenif(cnt=cnthigh)thencnt=0;elsecntcnthigh/2)thenclk_scan=1;elseclk_scankey_code_reg=00000;key_out_reg=0000000000000001;temp_num=1;temp_functionkey_code_reg=00001;key_out_reg=0000000000000010
10、;temp_num=1;temp_functionkey_code_reg=00010;key_out_reg=0000000000000100;temp_num=1;temp_function=0;设行扫描信号为key_row30,列线按键输入信号key_col0.3与按键位置的关系如表4.2所示。表4.2行扫描信号、列线按键输入信号与按键位置的关系key_row3.0key_col0.3对应的按键111011100(keynum)11011(keynum)10112(keynum)01113(keynum)110111104(keynum)11015(keynum)10116(keynum
11、)01117(keynum)101111108(keynum)11019(keynum)1011A(设置密码键)0111B(退出键)01111110C(清零键)1101D(没有设置)1011E(没有设置)0111F(关锁键)键盘扫描模块源代码编译后所生成的示意图如图4.4所示。KeyPadScanclk_scankeyow3.0key_col3.0key_code3.0key_out15.0key_presskey_numkey_funcinst图4.4键盘扫描模块示意图键盘扫描模块的输入输出管脚及代表的意义如下图所示。表4.3键盘扫描模块输入输出变量定义输入端子clk_scan时钟扫描信号k
12、ey_col3.0键盘列扫描输出端子key_row3.0键盘行扫描key_code3.0键值输出key_out15.0键盘按键one-hot码输出key_press有键按下key_num数字键key_func功能键源程序编译以后,建立仿真波形,所得功能仿真波形如图4.5所示。-key_col3-key_col2-ol1-key_col0OEE2E3口口目$E3O目osanw?;氾篆iAz一矩运海滙鳖逅+jkey_iowkey_rujint+jkey_out1111111X1011:111111101101:101101111110Xlioi1011.:AlOOOOOOOOOOOOOOO0000
13、0lOOOOOOOOOO目FilegditViewPrcjectAssigumentsFrocessingToolsWindowHelpSXjD1S箸晶瞩直Gc百1KeyPadScari|鬆=辔|疗帕鑒得ffi|KeyPadScan.vwf|0KePadScan.$im.vwf|悄KeyPad.bd(|KeyPadScan.vhdA,MasterTineBar:20.575ns|Pointer:37.16nsInterval:16.59nsSt&rt:End:图4.5键盘扫描模块功能仿真波形图在图5.5中,键盘扫描的列输入为1011,行输出为1011,由图5.3可得,此时按下的键应该是功能键A
14、键,因此keyfunc、keypress变为高电平,keynum为低电平,而以one-hot码(独热码)编码的key_out输出为0000010000000000,符合源程序逻辑。2.3比较模块比较模块的主要功能是比较输入的密码和预置的开锁密码是否一致。部分程序如下所示。ifen=1thenif(a=b)theny=1;elsey=0;endif;elsey=Z;endif;比较模块源代码编译后所生成的示意图如图4.6所示。图4.6比较模块示意图比较模块的输入输出管脚及代表的意义如下图所示。表4.4比较模块输入输出变量定义输入端子a输入数字b输入数字en使能输出端子y比较结果源程序编译以后,建
15、立仿真波形,所得功能仿真波形如图4.7所示。碱comparator4.vhd0FileEditViewProjectAssignmentsFrocessingToolsWindowHelpo1XjD0俸|站齬亀|cornparator4三11淞=少等|揶|A疗啊|ft.得comparator_4.vwfcomparatoi_4.sim.vw(如图4.7中,当输入输入a为5、b为9时,说明输入的密码与预置密码不一样,此时输出y变为低电平;当输入a、b都为4时,说明输入的密码与密码锁系统初始化时的密码相同,此时输出y变为高电平,符合源程序逻辑。2.4计数模块本计数器模块设计的是一个加减计数器,带有
16、清零端,模值为4。当up_down1.0为“10”时,执行的是加计数;当up_down1.0为“01”时,执行的是减计数。部分程序如下所示,本程序执行的是加计数情况下的计数情况。ifup_down=10thenempty=0;ifnum=100thennum=100;full=1;carry=1;elsifnum=011thennum=100;full=1;carry=0;elsenum=num+1;full=0;carry=0;endif;endif;计数模块源代码编译后所生成的示意图如图4.8所示。计数器的作用有两个:(1)输出作为存储器的地址输入;(2)计数满指示送给控制模块,表示密码长
17、度是否满足。图4.8计数模块示意图计数模块的输入输出管脚及代表的意义如下图所示。表4.5计数模块输入输出变量定义输入端子elk时钟输入信号clr清零up_down1.0加/减控制端输出端子num2.O密码的位数empty密码输入为空full密码输入为满carry密码输入位数溢出borrow密码输入位数借位源程序编译以后,建立仿真波形,所得功能仿真波形如图4.9所示。图4.9计数模块功能仿真波形图在图4.9前面一部分,up_down1.0为“10”此时进行加计数,来一个时钟加一次,加到4以后,已满,一直保持为4,直到up_down1.0变为“01”时,变为减计数,来一个时钟减一次,直到为0保持。
18、2.5显示模块显示模块的主要功能是显示所输入的密码。本模块设计的是一个可以左右移位的移位显示器,左右移动由left_right1.0来控制,当left_right1.0为10时为左移,当left_right1.0为01时为右移。部分程序如下所示。ifclr=1thenforiin0to(m-1)loopshift_memory(i)0);endloop;elsifrising_edge(clk)thenifleft_right=10andfull/=1thenshift_memory(0)=1&din;foriin1to(m-1)loopshift_memory(i)=shift_memory
19、(i-1);endloop;elsifleft_right=01andempty/=1thenshift_memory(m-1)0);foriin(m-1)downto1loopshift_memory(i-1)=shift_memory(i);endloop;endif;endif;经源代码编译以后生成的显示模块示意图如图4.10所示。ParameterValuem6n5dielkreg0n-1.0clrreg1n-1.0fullreg2n-1.0emptyreg3n-1.0left_right1.Oreg4n-1.0dinn-2.0reg5n-1.0inst图4.10显示模块示意图显示模块
20、的输入输出管脚及代表的意义如下图所示。表4.6显示模块输入输出变量定义输入信号elk时钟信号clr清零full数字输入满empty数字输入空left_right1.O数字左移位右移位dinn-2.O比较结果输出信号regOn-1.O显示数字第一位regOn-1.O显示数字第二位regOn-1.O显示数字第三位regOn-1.O显示数字第四位regOn-1.O显示数字第五位regOn-1.O显示数字第六位源程序编译以后,建立仿真波形,所得功能仿真波形如图4.11所示。JlafeA瓷:田田Sra-Hfflafflsra-HHEEditdisp_i*wErojctAh缰Ishift_reg.vhd图
21、4.11显示模块功能仿真波形图如图4.11所示,当left_rightl.O为10时,每按下一个数字键,输入一个数值,就在数码管regO上显示该数值,并将以前已经输入的数据依序左移一个数字位置。当full为高电平时,regO不再移入新的数字。当left_right1.O为01时,将reg5reg0所显示数值依序右移,最高位移入0。2.6存储模块在数字密码锁中,密码存储模块是它的密码规定电路,其主要功能是存储预置的开锁密码。密码存储模块的地址选择信号由计数器模块电路来进行选择。部分程序如下所示process(wr,ld,addr1,datain)beginifwr=1thenrom0(addr1
22、)=datain;elsifld=1thenforiin0to(m-1)looprom1(i)0andaddr17thenifrd=1andsel=0thendataout=rom0(addr1);elsifrd=1andsel=1thendataout=rom1(addr1);elsedataoutZ);endif;elsedataoutZ);endif;endprocess;比较存储模块源代码编译后所生成的示意图如图4.12所示。图4.12存储模块示意图存储模块的输入输出管脚及代表的意义如下图所示。表4.7存储模块输入输出变量定义输入信号addr1-1.O地址Id置数端wr写入rd读sei
23、片选datainn-1.O输入数字输出信号dataoutn-1.0输出数字源程序编译以后,建立仿真波形,所得功能仿真波形如图4.13所示。Name160.0ns320.0ns400.0ns480.0ns720.0ns880.0nsElo口IE3口IB目目目目目目Im国园IB目目目目国目Im+jadiii+jdatainwi-ldrdEtlt+jromO0tjromO1t+jromO2t+jromO3t+jromO4t+jromO5romO6+jromO7Iroml0roml1roml2t+jroml3roml4tjroml5romlBroml7t+jSataout19.1nsFileEditV
24、iewProjectAssignmentsFrocessingToolsWindowKelpo1X$口釦|e2promJ澱/豎轡|AT碱e2prom.vhd|0e2prom.vwf|邑e2prom.sim.vwf鳳SimulatorTool|曾SimulationReport-SimulationWavef.|远e2prom.sim1.vwfMasterTimeBar:|19.1ns|Pointer:|18.9nsInterval:|200psStart:|End:当wr为高电平时,将datain所输入的数据存储到rom0中addr所对应的位置;当sel为低电平时,从rom0中addr所对应的
25、位置读出数据并输出到dataout端口;当sel为高电平时,从rom1中addr所对应的位置读出数据并输出到dataout端口。当ld为高电平时,将rom0中的数据复制到rom1中的对应位置。2.7控制模块控制模块是数字密码锁系统的核心,是本设计中最重要的一部分。它相当于计算机CPU,负责接收从其他模块传来的输入信号,再根据系统的功能产生相应的控制信号送到相应的模块。控制模块源代码编译后所生成的示意图如图5.14所示。图5.14控制模块示意图控制模块是整个电路的控制中心,主要完成如下功能:(1)密码核对:在密码更改、开锁之前必须核对密码;(2)密码变更:按下此键将目前输入的密码作为新密码;(3
26、)激活电锁:上锁,上锁之前必须设定密码;(4)解除电锁:检查输入的密码是否正确,正确才能开锁;(5)报警:当输入的密码错误时,密码锁报警。下表显示的是控制模块的输入输出管脚,以及每个管脚的意义表4.8控制模块输入输出变量定义输入信号elk时钟输入信号preset上电复位keypress按下键keynum数字键keyfune功能键keyout15.10键盘one-hot译码输出inputend输入完成carry密码输入位数溢出epual输出结果输出信号setlock关锁setalarm报警resetc复位cp按键信号updownl.O力口/减控制端ps3.O现态ns3.O次态wr写入ld置数rd
27、读取sel片选端cs比较器与比较结果寄存器的使能端fend第一遍密码输入完成send第二遍密码输入完成hcode密码设定完成控制模块主要由状态机电路组成,采用有效状态机设计【5】,将系统分为10个状态机,即空闲状态(idle)、第一次密码输入状态(firstcode)、第二次密码输入状态(secondcode)、密码输入状态(firstcode)、戴锁状态(firstcode)、关锁状态(firstcode)、消除状态(firstcode)、密码输入状态(firstcode)、输入完成状态(firstcode)和报警状态(firstcode)输入状态。密码锁上电复位后,可进行密码设置,当第一次
28、输入密码以后,led所显示数码逐位左移,第一次密码输入完成后f_end为高。若第二次所设密码和第一次所设的密码一致,s_end为高。此后h_code始终为高,代表密码锁内已经存有密码。此时密码锁处于开锁状态,set_lock为低。最后按下F(关锁键),进入关锁状态,set_lock输出高电平。假设密码已经设置好,按下错误密码确认后,set_alarm输出为高,报警。按下清零键C清除报警状态。若要修改之前所设置的密码,可在开锁状态下按下A(设置密码键),此时f_end与s_end均为低电平。若要重设密码,第一次输入完成后f_end变为高,第二次所设密码与第一次一致时,s_end输出为高。同时,控
29、制模块ld端输出一个正脉冲,将新密码设定密码锁中。在修改密码过程中,若按下B(退出键),则可退出密码设置状态,原先所设密码保持不变。源程序编译以后,建立仿真波形,所得功能仿真波形如图5.15所示。H1Fil.EditViawErojeatAxsiatrun*xitPKaaaxKiziKToolsHtxndawHalt*SXDHdP1control二|左:护&轡匕迟r-4淀wtsritrE,vhd|-r81control,vwf|IcSconlrel.*im,vwl|kongzhi.bdF1-員冒冒m冒冒Qgqoq运5Y珥apiiiop弹冲西的西Yoociqi+巴oq幼两迈西FX迈西网SRoqi
30、輕終孕坪可迤运i远pipopqifi19甲0咨可罕耳5y5y?gTp?yyffo巴o紳讹8*0901;沁冬芮图4.15控制模块功能仿真波形图3系统顶层模块设计3.1顶层原理图在QuartusII环境下通过对数字密码锁分频模块、键盘扫描模块、计数模块、比较模块、比较结果寄存器模块、存储模块、显示模块和控制模块的VHDL源程序进行编译得到各个模块的实体图,然后把各个模块的实体图按对应接口连接起来,再加上时钟信号上电复位信号、列密码输入等输入信号及一系列的输出信号,就可以得到顶层实体原理图【6】,如图5.1、5.2所示。Q3|晶盼翻Is,IWItop.bdFKtop,vwf三JH矽AQF匕yj)to
31、pi,vwf|/clkgen/dlgen,vhd|jboi/control/control,vhdfeAO口耳一哪钦FinM图5.1顶层原理图IQ3top.bdFKErojctAssicxunTLtsFocssiTLC工oolnWindowHZpyj)topi,vwf|/clkgen/dlgen,vhd|jboi/control/control,vhdkeynum图5.2顶层原理图3.2顶层原理图仿真如图5.3所示,密码锁上电复位后,可进行密码设置,图中第一次所输密码为“5678”led所显示数码逐位左移,第一次密码输入完成后f_end为高。第二次所设密码也为“5678”,第二次密码输入完且两
32、次密码一致,s_end为高。此后h_code始终为高,代表密码锁内已经存有密码。此时密码锁处于开锁状态,set_lock为低。最后按下F(关锁键),进入关锁状态,set_lock输出高电平。teAag囤IMMtfs池X嗓如End;|clkon.vhdP21AZLnJTnPL2n1近晅砂iioi酒似岖XiQii疱沌英色Xmil;1ill!X1詁1XliiioixnilXol11?xmiXiiidXmiTiToX1i1irbib(:liiiiXiiiiXlinii_)jiit/:_:1:if1_rcibn;1J11J1*r1111y1141y5VF厂来FYb攻-1*r,-yhEr|1noXXoXJ
33、_X6J11ij图5.4顶层原理图仿真波形图如图5.5所示,若要修改之前所设置的密码,可在开锁状态下按下A(设置密码键),此时f_end与s_end均为低电平。图中重设密码为“1234”,第一次输入完成后f_end变为高。第二次所设密码也为“1234”,两次密码一致,则s_end输出为高。同时,控制模块ld端输出一个正脉冲,将新密码设定密码锁中。laiXga;*xroje4sipunn4PgooinfoXnilow|Pointer:甲|dk_oen.vhdEnd:|CIrde一禺ml禺lHIlllgllBIllll图5.5顶层原理图仿真波形图如图5.6所示,在修改密码过程中,若按下B(退出键),则可退出密码设置状态,原先所设密码保持不变。目FileEditViewProjectAssignmentsProcessingToolsWindowHelpSXD?|secretccide二滋/越轡物也令妙0secretcodel.vwf11H|secrelcode.vwf閒secretcode,bdf|也clkgen.vhdName_endih_code柜怡-Pclr+1key_row+1key_coll+jkey_codekey_Eijri.c1Hiciii如in*nci;,:;iicii;,::1011.如1.1.1亲1.门0;壯1.01;,:;ion如nyio;ai.ci
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国网湖北省电力有限公司高校毕业生招聘(第二批)笔试参考题库附带答案详解
- 2025年中国东航股份空保管理部校园招聘笔试参考题库附带答案详解
- 2025山西忻州汇丰长城文化园区发展有限公司招聘合同制讲解员10人笔试参考题库附带答案详解
- 2025国家中核北方核燃料元件有限公司招聘笔试参考题库附带答案详解
- 2025四川九洲电器股份有限公司招聘证券事务岗等岗位6人笔试参考题库附带答案详解
- 2025“才聚齐鲁成就未来”山东省环境保护科学研究设计院有限公司及权属企业校园招聘19人笔试参考题库附带答案详解
- 地铁员工安全培训体会课件
- 危险作业安全防护培训课件
- 危险作业安全培训课程课件
- 固化剂安全培训课件
- 高考英语688高频词汇excel版
- 圆度、圆柱度测量仪校准规范
- 第五章牛顿运动定律之板块模型问题专题课件高一上学期物理
- 表面活性剂的基本作用
- 员工网络安全责任书
- 工程建设项目审批流程图(政府投资工程建设项目(市政类线性项目))
- 士林变频器说明书SL
- 博雅汉语准中级加速篇1
- 第二章第一节 遗传论与环境论心理学课件
- 九年级物理上册《第十三章 内能与热机》单元检测卷及答案(沪科版)
- GB/T 16866-2006铜及铜合金无缝管材外形尺寸及允许偏差
评论
0/150
提交评论