1、题目:智能密码锁控制系统设计大作业摘要基于FPGA设计的点子密码锁是一个小型的数字系统,与普通机械锁相比,具有许多独特的有点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。目前使用的点子密码锁大部分是基于单片机技术,在实际应用中,程序容易跑飞,系统的可靠性较差。此设计是一种基于现场可编辑门阵列FPGA器件的电子密码锁的设计方法,采用VHDL语言对系统进行描述,并在EP3C10E144C8上实现。设计的背景、目的和意义密码锁就是要有一定的自我保护功能,并且能够定时更新防止破译的危险。密码锁控制器是硬件与软件的结合。Verilog HDL只需要根据系统设计的要求施加不同的约束条件,即可设计
2、出实际电路。利用计算机的强大功能,在EDA工具的支持下,把逻辑验证与具体工艺库相匹配,将布线及延迟计算分成不同的阶段来实现,减少了设计者的繁重劳动。设计任务及要求课程设计的任务设计一个6位的数字密码锁,利用Verilog HDL语言来实现,并用Quartus 记性仿真与测试。课程设计的要求设计一个简单的数字密码锁,密码为3位1.在内部设置密码,其密码用3位十进制数表示2输入密码时,每次输入一位数,输入后按#进行确认。3当输入的密码顺序与设置的密码一致时,密码锁打开,否则,则报警。连续三次错误则锁死。确定输入和输出变量Input:nRST,MIMA_IN,QUEREN,CLK;Output:OP
3、EN,ERROR;确定输入状态input:output:CLK:主时钟 open:开锁成功 open=1nREST:复位 ERROR:开锁错误QUEREN:确认密码 ERROR=1MIMA_IN:密码输入整体设计框图方案论证方案1:采用数字电路控制,用以CMOS构成的数字逻辑电路作为密码锁的控制核心,用verilog HDL硬件描述语言来进行仿真。方案2:采用以AT89C51单片机为核心控制的方案。能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。基于单片机的实现方案原理复杂,调试比较麻烦,所用到的器件比较多,而用数字电路的实现过程相对而言比较简单,软件易于实现,容易调试。
4、状态机设计(状态转换图)状态机设计(状态编码)odule mimasuo(clk,/主时钟,直接接17号引脚,不需要外接nrst,/复位按键,接上面一排的按键mima_in,/密码输入,接三个下面的拨码开关 queren,/确认输好密码,接上面一排的按键lock,/三次错误,锁死,接LED灯 0-锁死open /密码正确,打开,接LED灯 0-打开);parameter mima=3b011;/设置默认密码input clk;input nrst;input 2:0mima_in;input queren;output lock;output open;reg is_right;reg 1:0
5、count;reg 3:0cs;/当前状态reg 3:0ns;/下一个状态parameter 3:0 idle=4b0001,tanqi=4b0010,sancisuosi=4b0100,kaisuo=4b1000;/四个状态,空闲,确认键按下,三次锁死,成功开锁wire key_out;/将确认键消抖后给了输出detect u1(.clk(clk),.reset(nrst),.pin_in(queren),.h2l_sig(h2l_sig);/按键消抖模块delay u2(.clk(clk),.reset(nrst),.h2l_sig(h2l_sig),.pin_out(key_out);/
6、按键消抖模块/第一个always语句块,顺序状态转化(三段式第一段)always(posedge clk,negedge nrst)beginif(!nrst)cs=idle;elsecs=ns;end/第二个always语句块,根据不同的输入转换到不同的状态(三段式第二段)always(nrst,cs,key_out,count)begincase(cs)idle:if(key_out)ns=tanqi;else ns=idle;tanqi:if(count=2d3)ns=sancisuosi;else if(count2d3&is_right)ns=kaisuo;else ns=idle;
7、sancisuosi:ns=sancisuosi;kaisuo:ns=kaisuo;endcaseend /标志寄存器,判断密码输入是否正确reg rlock;reg ropen;/密码输入错误计数/第三个always模块,状态机的输出,根据状态不同输出不同的信号(三段式第三段)always(posedge clk,negedge nrst)beginif(!nrst)rlock,ropen=2b11;elsebeginrlock,ropen=2b11;case(cs)idle:rlock,ropen=2b11;tanqi:rlock,ropen=2b11;sancisuosi:rlock,r
8、open=2b01;kaisuo:rlock,ropen=2b10;endcaseendend/第4个always语句块,在确认键按下的时候判断密码是否正确同时使错误数加一,来判断是否进行锁死always(negedge queren,negedge nrst)begin if(!nrst)begin count=0;is_right=0;end else if(!queren)if(mima_in=mima)is_right=1;else begin count=count+1b1;is_right=0;endendassign open=ropen;assign lock=rlock;en
9、dmodule状态机设计原理图RTL图仿真时序图 正确开锁的时序图演示照片三灯亮表示密码正确 开锁三五两灯同时亮表示密码输入错误 并且报警四个灯亮表示连续输入三次错误密码 锁死 并且报警 设计结论及评价优点:设计的密码锁控制器设置的是六位密码,在系统复位后,用户按键6次,输入一个完整的密码串,输入完后,系统会进行比对,如果发现密码吻合,则开门,否则系统报警,直到输入正确的密码,报警声停止。这样的设计可以很好的满足人们的日常需求。同时,密码锁还具有密码修改功能,方便操作,使得密码锁的使用更加安全、便捷。不足:在软件、硬件设计和仿真过程中遇到不少问题,但最终还是把它们解决了,使得设计符合要求。结论:智能密码锁由于采用Verilog HDL语言设计,用一片FPGA芯片来实现,因而体积小,功耗低,稍加修改就可以改变密码的位数和输入密码的次数,而升级和维护都很方便,而且容易做成 ASIC 芯片,具有较好的应用前景。但由于结构还比较简单,有待进一步完善。谢谢大家!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1