- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA的电子密码锁设计推荐
基于FPGA的电子密码锁设计
一、设计要求:
1、开锁代码为8位二进制,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯。否则,系统进入“错误”状态,并发出报警信号。
2、开锁程序有设计者确定,并要求所内给定的密码可调,且预置方便,保密性好。
3、串行电子密码锁的报警方式是点亮指示灯,并使喇叭鸣叫报警,直到按下复位开关,报警才停止。此时,电子密码锁又进入等待下一次开锁的状态。
二.设计说明与提示 1.该题目的主要任务是产生一个开锁信号OPEN,而开锁信号的形成条件是,输入代码和已设密码相同。实现这种功能的电路构思有多种,本题目运用两片8位锁存器,一片存入密码,另一片输入开锁代码,通过比较的方式,若两者相等,则形成开锁信号。
2.在开锁信号产生时,要求输出声,光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯。
3.用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁。
三.设计思想:
电子密码锁的系统结构框图分成两大部分:控制器和处理器。整个系统的输入信号有一个时钟脉冲CLK ,输出信号有表示开锁,关锁信号的红灯,绿灯以及报警信号SPEAKER。控制器中的所有按键按下时均为高电平,即高电平有效。RW 为“密码设定”信号, OK 为“确定”信号, RED=‘0’GREED=‘1’为开锁信号CNT 表示上一位密码正确时,控制器给出的可进行下一位二进制密码比较的信号,OPEN=‘1’ 为控制器给出的锁开信号, OPEN=‘0’ 为控制器给出的密码错误信号。处理器中有一个计数器,计数器C1用是用来记录从第一个按钮触动后的5秒内若未将锁打开(即输入正确密码时间超过5秒),则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lock_m is
port(
key:in std_logic_vector(7 downto 0);
clk,clk1,ok,rw: in std_logic;
red,green,speaker,rwled,okrw:out std_logic);
end lock_m;
architecture behav of lock_m is
signal ok1,ok2,ok0,prr,start,pdan,rw1,rin:std_logic :=0;
signal sbuf1,sbuf2,keyin:std_logic_vector(7 downto 0):
signal mmst: std_logic_vector(7 downto 0):
signal cnt:std_logic_vector(2 downto 0):=000;
signal cnt1:std_logic_vector(4 downto 0):=00000;
begin
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/and prr=0) then
start=1;
else start=0;
end if;
end process;
inkey: process(key,start,clk) ----输入密码时间进入记时状态 begin
if clkevent and clk=1 then ok1=0;ok2=0;
if start=1 then sbuf1=keyin; ----将密码放入ro
文档评论(0)