智能密码锁控制系统设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计的背景、目的和意义
• 密码锁就是要有一定的自我保护功能,并 且能够定时更新防止破译的危险。密码锁 控制器是硬件与软件的结合。 • Verilog HDL只需要根据系统设计的要求施 加不同的约束条件,即可设计出实际电路。 利用计算机的强大功能,在EDA工具的支 持下,把逻辑验证与具体工艺库相匹配, 将布线及延迟计算分成不同的阶段来实现, 减少了设计者的繁重劳动。
• • • • • • • • • • • • • • •
//第一个always语句块,顺序状态转化(三段式第一段) always@(posedge clk , negedge nrst) begin if(!nrst) cs<=idle; else cs<=ns; end //第二个always语句块,根据不同的输入转换到不同的状态(三段式第二段) always@(nrst,cs,key_out,count) begin case (cs) idle: if(key_out) ns=tanqi; else ns=idle; tanqi: if(count==2'd3)
设计任务及要求
课程设计的任务 设计一个6位的数字密码锁,利用Verilog HDL语言来实现, 并用QuartusⅡ 记性仿真与测试。 课程设计的要求 设计一个简单的数字密码锁,密码为3位 1.在内部设置密码,其密码用3位十进制数表示 2输入密码时,每次输入一位数,输入后按# 进行确认。 3当输入的密码顺序与设置的密码一致时,密码锁打开,否 则,则报警。连续三次错误则锁死。
状态机设计(状态转换图)
状态机设计(状态编码)
• • • • •
• • • • • • • •
odule mimasuo( clk, //主时钟,直接接17号引脚,不需要外接 nrst, //复位按键,接上面一排的按键 mima_in, //密码输入,接三个下面的拨码开关 queren, //确认输好密码,接上面一排的按键
• • • • • • • • • • • • • • •
Leabharlann Baidu
//第三个always模块,状态机的输出,根据状态不同输出不同的信号(三段式第三段) always@(posedge clk ,negedge nrst) begin if(!nrst) {rlock,ropen}<=2'b11; else begin {rlock,ropen}<=2'b11; case(cs) idle:{rlock,ropen}<=2'b11; tanqi:{rlock,ropen}<=2'b11; sancisuosi:{rlock,ropen}<=2'b01; kaisuo:{rlock,ropen}<=2'b10; endcase end end
lock, open ); //三次错误,锁死,接LED灯 0-锁死 //密码正确,打开,接LED灯 0-打开
parameter mima=3'b011; input clk; input nrst; input [2:0]mima_in; input queren;
//设置默认密码
• • • • • • • • • • •
output lock; output open; reg is_right; reg [1:0]count; reg [3:0]cs; //当前状态 reg [3:0]ns; //下一个状态 parameter [3:0] idle=4'b0001,tanqi=4'b0010,sancisuosi=4'b0100,kaisuo=4'b1000; //四个状态,空闲,确认键按下,三次锁死,成功开锁 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));//按键消抖模块
• • • • • • • • • • • • • • •
确定输入和输出变量
Input:nRST,MIMA_IN,QUEREN,CLK; Output: OPEN,ERROR;
确定输入状态
input: output: CLK:主时钟 open:开锁成功 open=1 nREST:复位 ERROR:开锁错误 QUEREN:确认密码 ERROR=1 MIMA_IN:密码输入
• • • • • • • • • • • • • •
ns=sancisuosi; else if(count<2'd3&&is_right) ns=kaisuo; else ns=idle; sancisuosi:ns=sancisuosi; kaisuo:ns=kaisuo; endcase end //标志寄存器,判断密码输入是否正确 reg rlock; reg ropen; //密码输入错误计数
题目:智能密码锁控制系统设计
大作业摘要
• 基于FPGA设计的点子密码锁是一个小型的 数字系统,与普通机械锁相比,具有许多独 特的有点:保密性好,防盗性强,可以不用 钥匙,记住密码即可开锁等。目前使用的点 子密码锁大部分是基于单片机技术,在实际 应用中,程序容易跑飞,系统的可靠性较差。 此设计是一种基于现场可编辑门阵列FPGA 器件的电子密码锁的设计方法,采用VHDL 语言对系统进行描述,并在 EP3C10E144C8上实现。
整体设计框图
方案论证
• 方案1:采用数字电路控制,用以CMOS构成的数 字逻辑电路作为密码锁的控制核心,用verilog HDL硬件描述语言来进行仿真。 方案2:采用以AT89C51单片机为核心控制的方案。 能完成开锁,修改密码,密码错误报警,LCD显 示密码等基本的密码锁功能。 基于单片机的实现方案原理复杂,调试比较麻烦, 所用到的器件比较多,而用数字电路的实现过程 相对而言比较简单,软件易于实现,容易调试。