基于FPGA的数字密码锁

合集下载

基于FPGA的电子密码锁设计

基于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 isport(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 issignal 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";beginprocess(clk) ---定义个存储器将密码存放在keyin中beginif clk'event and clk='1' thenkeyin<=key;end if;end process;prr<=pdan or rw1 or rin or ok;st: process(keyin,prr,ok1) -----第一次修改密码beginif ok1='1' then start<='0';elsif (keyin/="" and prr='0') thenstart<='1';else start<='0';end if;end process;inkey: process(key,start,clk) ----输入密码时间进入记时状态beginif clk'event and clk='1' then ok1<='0';ok2<='0';if start='1' then sbuf1<=keyin; ----将密码放入rom1暂存器中if ok='1' then ok2<='1';elsif cnt="100" then cnt<="000" ;ok1<='1'; --5秒到将cnt值零将ok1值置高else cnt<=cnt+'1';end if ;else cnt<="000";sbuf1<=sbuf1; ----当start=‘1’时cnt永远保持‘0’end if;end if;end process;pandan : process(ok,ok1,ok2,clk,start) ---输入密码用于判断密码是否正确beginif ok2='1' or ok1='1' then pdan<='1'; ------开锁信号elsif clk'event and clk='1' thenif pdan='1' thenif cnt1="10011" thenpdan<='0'; --20秒后判断结束,进入等待外部输入状态elsecnt1<=cnt1+'1';end if;elsecnt1<="00000"; ---等待状态时cnt1一直为‘0’end if;end if;end process;comp: process(pdan,rw1,sbuf1,mmst,rin,clk1) -----显示程序beginif pdan='1' then ------开锁信号密码正确if sbuf1=mmst then -----红灯灭,绿灯亮red<='0';green<='1';rwled<='0';speaker<='0';okrw<='0';else ------密码错误red<='1';green<='0';rwled<='0';speaker<=clk1;okrw<='0';end if; ----红灯亮,绿灯灭,elsif rw1='1' then ----第一次修改密码显示状态red<='1';green<='0';rwled<='1';speaker<='0';okrw<='0';elsif rin='1' thenred<='0';green<='0';rwled<='1';speaker<='0'; okrw<='1';elsered<='1';green<='0';rwled<='0';speaker<='0';okrw<='0';end if;end process;rewrite:process(rw,keyin,ok0,clk,start,pdan,rin)beginif clk'event and clk='1' thenif ok0='1' then rw1<='0';elsif keyin="" and pdan='0' and rin='0' thenif rw='1' thenrw1<='1';end if;end if;end if;end process;process(rw1,ok,keyin,clk)beginif clk'event and clk='1' thenok0<='0';sbuf2<=keyin;if rw1='1' thenif ok='1' thenok0<='1';if mmst=sbuf2 thenrin<='1';elserin<='0';end if;end if;elseif rin='1' thenif ok='1' thenmmst<=sbuf2;rin<='0';else mmst<=mmst;end if;else null;end if;end if;end if;end process;end behav;五、仿真波形:(密码正确)密码锁默认的密码为“”,当我们第一次设置的密码为key=””,然后按OK键盘确认。

基于FPGA的数字密码锁

基于FPGA的数字密码锁

基于F P G A的数字密码锁LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】CPLD/FPGA课程设计项目名称:基于FPGA的数字密码锁设计专业班级:学生学号:学生姓名:指导老师:2016年6月4日摘要本设计是基于现场可编程门阵列FPGA 器件的电子密码锁的设计。

通过Verilog 语言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。

同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。

本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能。

通过仿真调试,利用可编程器件FPGA的电子密码锁的设计基本达到了预期目的。

关键词:现场可编程门阵列;数字密码锁;Verilog HDL;AbstractThis design is the electronic code lock field programmable gate array FPGA devices based design. By Verilog language control 4-bit binary number, composed of figures arranged to form a simple digital lock, assuming that the default password is 4 digits: 0000, correct output when the input is 1, the output of the input error to zero. At the same time the number of input and output, and when more than three times the input error, an alarm signal is output, even if the fourth and fifth also enter the correct output alarm signal.This design uses Modelsim software write Verilog HDL hardware description language program to implement a password lock, alarm function. The simulation debugging, using the programmable device FPGA design basic electronic locks to achieve the desired purpose.Key words: FPGA;The digital combination lock;Verilog HDL;目录摘要 (I)Abstract (II)第1章所选项目的研究意义 (1)概述 (1)数字密码锁的研究现状 (2)数字密码锁的应用 (3)数字密码锁的困难 (3)本文研究意义 (3)设计思路 (4)第2章设计方案 (5)功能定义 (5)模块设计 (5)第3章系统软件设计 (7)设计概括 (7)设计流程 (7)密码存储模块 (7)编码模块 (8)比较模块 (8)主要程序模块 (9)第4章软件仿真 (14)仿真过程 (14)仿真结果 (15)仿真分析 (16)仿真过程 (17)结论 (18)参考文献 (19)附录1 程序代码 (20)项目创新及特色 (26)第1章所选项目的研究意义概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。

基于FPGA的电子密码锁的设计汪金涛

基于FPGA的电子密码锁的设计汪金涛

成绩课程设计报告题目:基于FPGA的数字密码锁设计学生姓名:汪金涛学生学号: 32系别:电气信息工程学院专业:电子信息工程届别: 2021届指导教师:李营电气信息工程学院制2021年5月目录1 课程设计的任务与要求 (1)课程设计的任务 (1)课程设计的要求 (1)2 电子密码锁简介 (1)国内外进展和现状 (1)课题研究目的和意义 (2)3 设计方案的制定 (2)设计思路 (2)整体方案设计 (4)密码锁输入电路设计 (4)矩阵式键盘工作原理 (4)密码锁输入电路要紧功能模块设计 (5)密码锁操纵电路设计 (7)密码锁显示电路设计 (8)Quartus Ⅱ软件引脚配置 (9)4 系统时序仿真结果 (9)5 总结与体会 (10)总结 (10)体会 (11)6参考文献 (11)附录 (13)基于FPGA的数字密码锁设计学生:汪金涛指导教师:李营电气信息工程学院电子信息工程专业1 课程设计的任务与要求课程设计的任务通用的电子密码锁要紧由三个部份组成:数字密码输入电路、密码锁操纵电路和密码锁显示电路。

(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳排除电路、键盘译码电路等几个小的功能电路。

(2)密码锁操纵电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄放器清除信号发生电路),密码查对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。

(3)密码显示电路要紧将显示数据的BCD码转换成相对应的编码。

如,假设选用七段数码管显示电路,要紧将待显示数据的BCD码转换成数码器的七段显示驱动编码。

课程设计的要求设计一个具有较高平安性和较低本钱的通用电子密码锁,具体功能要求如下:(1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。

(2)数码清除:按下此键可清除前面所有的输入值,清除为“0000”。

(3)密码更改:按下此键时会将目前的数字设定成新的密码。

FPGA实现的数字密码锁

FPGA实现的数字密码锁

二、文献综述随着大规模集成电路技术和计算机技术的不断发展,在涉及工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升,电子类的高新技术项目的开发也日益依赖于EDA技术的应用。

即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅度提高。

所以EDA技术将成为电子设计领域中的极其重要的组成部分。

电子设计专家认为,单片机时代已经结束,未来将是EDA的时代。

系统级设计进90年代以来,电子信息类产品的开发明显呈现两个特点:一是产品复杂程度提高;二是产品上市时限紧迫。

然而,电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计忙人、仿真和分析、设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,一种高层次的电子设计方法,也即系统级设计方法,应运而生。

高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述。

由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的方案与概念的构思上,一且这些概念构思以高层次描述的形式输人计算机,EDA系统就能以规则驱动的方式自动完成整个设计。

这样,新的概念就能迅速有效地成为产品,大大缩短了,产品的研制周期。

不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。

首先,工程师按照“自顶向下”的设计方法进行系统划分。

其次,输人VHDL代码,(VHDL是一种全方位的硬件描述语言,包括系统行为级。

寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL来完成。

基于FPGA的电子密码锁的研究与设计

基于FPGA的电子密码锁的研究与设计

论文题目:基于FPGA的电子密码锁设计摘要普通的机械锁保密性不好,防盗性差,而且必须使用钥匙。

但是,基于FPGA设计的电子密码锁与普通的机械锁比较来说,就克服了这些不足之处。

该论文主要描述的是一种电子密码锁的设计方法,这种电子密码锁是基于现场可编程门阵列(FPGA)的电子密码锁。

由FPGA构造的电子密码锁系统中,硬件电路可以实现所有的算法,大幅度提高了西戎的工作可靠性。

为了提高设计的效率,可以在更改设计时只更改FPGA中的控制和接口电路,这是因为FPGA的现场可编程功能,也正是利用这一点,可以将更新后的设计下载到FPGA中,省去了更改外部电路设计的麻烦。

所以,这样的系统既可以使工作的可靠性增强也可以更加方便的升级。

系统所实现的功能:用户给电子密码锁设定一个密码,当使用本机键盘开锁时,该密码与用户设定的密码比较,如果密码正确,则开锁;如果密码不正确,用LED灯报警;允许用户重新输入密码。

关键词电子密码锁;FPGA;硬件描述语言;EDAAbstractFPGA-based design of electronic locks is a small digital system,compared with ordinary mechanical locks,has many unique advantages:confidentiality,security and strong,you can not have the keys,remember a password to unlock.This paper describes an approach based on field programmable gate array(FPGA)devices electronic locks design.Construct systems with FPGA devices,all algorithms entirely by hardware circuit to achieve,making the work system reliability greatly improved.As the FPGA with field-programmable function,when you need to change the design,just change the FPGA control and interface circuitry using EDA tools designed updated downloaded to the FPGA without the need to change the external circuit design,greatly improving the design efficiency.Therefore,the use of digital FPGA development system,not only has high reliability,but also extremely easy to upgrade.System implemented features:electronic locks user to set a password when using the keyboard lock,compared with the password set by the user's password,if the password is correct,then unlock;If the password is incorrect,the speaker alarm,allows the user to re- enter the password.Key wordsElectronic locks;FPGA;Hardware Description Language;EDA目录摘要 (I)Abstract (II)前言 (1)第一章概述 (2)1.1 课题背景 (2)1.2 课题研究的目的和意义 (2)1.3 国内外现状 (3)1.4 课题的主要研究工作 (4)第二章相关知识介绍 (5)2.1 FPGA的相关介绍 (6)2.1.1 可编程逻辑器件 (6)2.1.2 FPGA简介 (7)2.1.3 FPGA应用特点 (7)2.1.4 FPGA的设计流程 (9)2.2 硬件描述语言Verilog (11)2.2.1 Verilog语言简介 (11)2.2.2 Verilog语言的优点 (11)2.2.3 Verilog语言的基本结构 (12)2.3 QuartusⅡ软件开发工具 (12)第三章电子密码锁的总体设计 (14)3.1 设计要求 (14)3.2 系统原理框图 (14)3.3 系统主控制流程框图 (15)第四章电子密码锁的软件设计 (17)4.1 主要功能模块设计 (17)4.1.1 输入模块 (18)4.1.2 显示模块 (19)4.3 电子密码锁的仿真 (19)第五章电子密码锁的硬件实现 (24)5.1 电子密码锁的硬件模块实现 (24)5.2 硬件设备 (24)5.3 硬件的实现 (25)结论 (27)参考文献 (28)致谢 (30)前言基于FPGA的电子密码锁是新型现代化安全管理系统,微机自动识别技术和现代安全管理措施技术,包括生物技术、通信技术、电子和机械电等诸多新技术都在其中体现,重要部门出入口安全防范问题因此得到了解决。

基于fpga的数字密码锁(使用矩阵键盘)

基于fpga的数字密码锁(使用矩阵键盘)

基于FPGA 数字密码锁板子使用的是DE2顶层topmodule lock(reset,clk,row,col,mm0,mm1,mm2,mm3,led1,led2,led3,set_flog); input clk,reset;input [3:0]row;output wire [3:0] col;output wire [6:0] mm0,mm1,mm2,mm3;output reg led1, led2,led3;wire [3:0]key_value;reg [3:0] temp_key;reg [3:0] m0,m1,m2,m3;reg [3:0] m_0,m_1,m_2,m_3;reg [5:0] state;reg [2:0] wei;wire key_valid;reg [1:0]count_wrong;output reg set_flog;parameter valid =6'b000000,set =6'b000001,collection_mm =6'b000010,cmd =6'b000100,collection =6'b001000,wrong =6'b010000,correct =6'b100000,die_lock =6'b000011,lock =6'b000111;always @(posedge clk or negedge reset)beginif(!reset)beginstate<=6'b000000;wei<=0;led3<=0;set_flog<=0;led1<=0;led2<=0;m0<=15;m1<=15;m2<=15;m3<=15;endelse begincase(state)valid :if(key_valid)begintemp_key<=key_value;state<=collection;endelsestate<=valid;collection : beginif(key_value>=0&&key_value<=9)beginif(led1&&(!set_flog))//开启状态不能按数字键state<=valid;else if((!key_valid)&&(wei<5))beginled2<=0;state<=collection_mm;wei<=wei+1'b1;endelsestate<=collection;endelseif(!key_valid)state<=cmd;endcollection_mm: begincase(wei)1:m0<=temp_key;2:m1<=temp_key;3:m2<=temp_key;4:m3<=temp_key;endcasestate<=valid;endcmd : begincase(temp_key)15:if(!led1)beginm0<=15;m1<=15;m2<=15;m3<=15;//*clearstate<= valid;wei<=0;led2<=0;led1<=0;endelsestate<= valid;14:if(led1)state<= valid;else if(wei) //back deletebegincase(wei)1:m0<=15;2:m1<=15;3:m2<=15;4:m3<=15;endcasewei<=wei-1'b1;state<=valid;led2<=0;endelsestate<=valid;13: if(set_flog)//保存密码beginset_flog<=0;led1<=0;m_0<=m0;m_1<=m1;m_2<=m2;m_3<=m3;state<=lock;endelseif((m0==m_0)&&(m1==m_1)&&(m2==m_2)&&(m3==m_3))//comparebeginstate<=correct;m0<=15;m1<=15;m2<=15;m3<=15;endelse beginstate<=wrong;count_wrong<=count_wrong+1;end12: state<=lock;10: if(led1) //setbeginset_flog<=1;wei<=0;m0<=15;m1<=15;m2<=15;m3<=15;state<=valid;enddefault:state<=valid;endcaseendcorrect :begin //openled1<=1;state<=valid;count_wrong<=0;endwrong :beginled2<=1;state<=valid;led1<=0;if(count_wrong==3) //lock diebegincount_wrong<=0;state<=die_lock;endendlock :beginled1<=0;wei<=0;led2<=0;m0<=15;m1<=15;m2<=15;m3<=15;set_flog<=0;state<=valid;enddie_lock:led3<=1;endcaseendendwire [15:0] mm={m3,m2,m1,m0};key key_scan(reset,clk,row,col,key_value,key_valid);display dis_u1(clk,mm,mm3,mm2,mm1,mm0);endmodule键盘扫描模块module key(reset,clk,row,col,key_value,key_flag);input clk,reset;input [3:0] row;//hangoutput reg [3:0] col;//lieoutput reg [3:0] key_value;output reg key_flag;reg [3:0] row_reg;reg [3:0] col_reg;reg [19:0] count;reg [2:0] state;reg clk_500khz;always @(posedge clk or negedge reset)if(!reset) beginclk_500khz<=0;count<=0;endelseif(count>=5000) begin clk_500khz<=~clk_500khz;count<=0;end else count<=count + 1'b1;always @(posedge clk_500khz or negedge reset)beginif(!reset)begin col<=0;state<=0;row_reg<=0;col_reg<=0;end elsebegincase(state)0:begincol<=0;key_flag<=0;if(row[3:0]!=4'b1111)beginstate<=1;col[3:0]<=4'b1110;endelse state<=0;end1: if(row[3:0]!=4'b1111) state<=5;else begin state<=2;col<=4'b1101;end2: if(row[3:0]!=4'b1111) state<=5;else begin state<=3;col<=4'b1011;end3: if(row[3:0]!=4'b1111) state<=5;else begin state<=4;col<=4'b0111;end 4: if(row[3:0]!=4'b1111) state<=5;else state<=0;5: if(row[3:0]!=4'b1111)begincol_reg<=col;row_reg<=row;state<=5;key_flag<=1;endelsestate <=0;endcaseendendalways@(clk or col_reg or row_reg or key_value)beginif(!reset)key_value<=0;else if(key_flag==1'b1)begincase({col_reg,row_reg})8'b1110_1110:key_value<=1;8'b1110_1101:key_value<=2;8'b1110_1011:key_value<=3;8'b1110_0111:key_value<=10;//a8'b1101_1110:key_value<=4;8'b1101_1101:key_value<=5;8'b1101_1011:key_value<=6;8'b1101_0111:key_value<=11;//b8'b1011_1110:key_value<=7;8'b1011_1101:key_value<=8;8'b1011_1011:key_value<=9;8'b1011_0111:key_value<=12;//c8'b0111_1110:key_value<=15;//*8'b0111_1101:key_value<=0;8'b0111_1011:key_value<=14;//#8'b0111_0111:key_value<=13;//d endcaseendendendmodule显示模块module display(clk,mm,wei0,wei1,wei2,wei3); input [15:0]mm;input clk;output reg [6:0] wei0,wei1,wei2,wei3;always @(clk)begincase(mm[3:0])4'b0000:wei0<=7'b 1000000;4'b0001:wei0<=7'b 1111001;4'b0010:wei0<=7'b 0100100;4'b0011:wei0<=7'b 0110000;4'b0100:wei0<=7'b 0011001;4'b0101:wei0<=7'b 0010010;4'b0110:wei0<=7'b 0000010;4'b0111:wei0<=7'b 1111000;4'b1000:wei0<=7'b 0000000;4'b1001:wei0<=7'b 0011000;4'b1010:wei0<=7'b 0001000;4'b1011:wei0<=7'b 0000011;4'b1100:wei0<=7'b 1000110;4'b1101:wei0<=7'b 0100001;4'b1110:wei0<=7'b 0000110;4'b1111:wei0<=~7'b 1000000;//4'b1111:wei0<=7'b 0001110;endcasecase(mm[7:4])4'b0000:wei1<=7'b 1000000;4'b0001:wei1<=7'b 1111001;4'b0010:wei1<=7'b 0100100;4'b0011:wei1<=7'b 0110000;4'b0100:wei1<=7'b 0011001;4'b0101:wei1<=7'b 0010010;4'b0110:wei1<=7'b 0000010;4'b0111:wei1<=7'b 1111000;4'b1000:wei1<=7'b 0000000;4'b1001:wei1<=7'b 0011000;4'b1010:wei1<=7'b 0001000;4'b1011:wei1<=7'b 0000011;4'b1100:wei1<=7'b 1000110; 4'b1101:wei1<=7'b 0100001; 4'b1110:wei1<=7'b 0000110; 4'b1111:wei1<=~7'b 1000000; //4'b1111:wei1<=7'b 0001110; endcasecase(mm[11:8])4'b0000:wei2<=7'b 1000000; 4'b0001:wei2<=7'b 1111001; 4'b0010:wei2<=7'b 0100100; 4'b0011:wei2<=7'b 0110000; 4'b0100:wei2<=7'b 0011001; 4'b0101:wei2<=7'b 0010010; 4'b0110:wei2<=7'b 0000010; 4'b0111:wei2<=7'b 1111000; 4'b1000:wei2<=7'b 0000000; 4'b1001:wei2<=7'b 0011000; 4'b1010:wei2<=7'b 0001000; 4'b1011:wei2<=7'b 0000011; 4'b1100:wei2<=7'b 1000110; 4'b1101:wei2<=7'b 0100001; 4'b1110:wei2<=7'b 0000110; 4'b1111:wei2<=~7'b 1000000; //4'b1111:wei2<=7'b 0001110; endcasecase(mm[15:12])4'b0000:wei3<=7'b 1000000; 4'b0001:wei3<=7'b 1111001; 4'b0010:wei3<=7'b 0100100; 4'b0011:wei3<=7'b 0110000; 4'b0100:wei3<=7'b 0011001; 4'b0101:wei3<=7'b 0010010; 4'b0110:wei3<=7'b 0000010; 4'b0111:wei3<=7'b 1111000; 4'b1000:wei3<=7'b 0000000; 4'b1001:wei3<=7'b 0011000; 4'b1010:wei3<=7'b 0001000; 4'b1011:wei3<=7'b 0000011; 4'b1100:wei3<=7'b 1000110; 4'b1101:wei3<=7'b 0100001; 4'b1110:wei3<=7'b 0000110; 4'b1111:wei3<=~7'b 1000000; //4'b1111:wei3<=7'b 0001110; endcaseend endmodule。

《基于VHDL语言和FPGA的电子密码锁》范文

《基于VHDL语言和FPGA的电子密码锁》范文

《基于VHDL语言和FPGA的电子密码锁》篇一一、引言随着科技的发展,电子密码锁已逐渐取代传统的锁具,成为了安全领域的重要组成部分。

而作为电子密码锁核心技术之一的FPGA(现场可编程门阵列)技术,以及VHDL语言编程的灵活性,更是对密码锁设计起到了重要的推动作用。

本文旨在详细探讨基于VHDL语言和FPGA的电子密码锁的设计与实现。

二、VHDL语言与FPGA概述VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述电子系统的结构和行为。

而FPGA则是一种可编程逻辑器件,其内部由许多可配置的逻辑单元组成,通过编程可以实现各种复杂的数字电路功能。

将VHDL语言与FPGA相结合,可以实现电子密码锁的高效、灵活和可定制的设计。

三、电子密码锁的设计要求在基于VHDL语言和FPGA的电子密码锁设计中,首先需要明确设计要求。

这些要求包括:高安全性、易于使用、良好的扩展性以及低成本等。

此外,密码锁应能抵抗各种常见的攻击方式,如暴力破解等。

四、基于VHDL的密码锁设计与实现基于VHDL语言的电子密码锁设计主要分为几个模块:密码输入模块、解码模块、控制模块和输出模块等。

密码输入模块负责接收用户输入的密码;解码模块对输入的密码进行解码,判断其是否正确;控制模块根据解码结果控制输出模块的开关状态;而整个系统则由FPGA实现。

在VHDL编程中,需要详细描述各个模块的功能、接口以及它们之间的通信方式。

例如,密码输入模块应能接收一定长度的密码输入,并将其传递给解码模块。

解码模块则根据预设的算法对密码进行解码,并将结果传递给控制模块。

控制模块根据解码结果控制输出模块的开关状态,以实现密码锁的开启或关闭。

五、FPGA的实现与优化在FPGA上实现电子密码锁时,需要利用FPGA的编程工具进行编程和配置。

首先,将VHDL代码编译成可在FPGA上运行的二进制代码;然后,将二进制代码下载到FPGA中,实现对电子密码锁的硬件配置。

基于fpga的数字密码锁设计与实现

基于fpga的数字密码锁设计与实现

一、概述在当今信息技术高度发达的时代,数字密码锁已成为人们生活中常见的安全保障措施之一。

随着FPGA(可编程逻辑门阵列)技术的不断成熟和普及,基于FPGA的数字密码锁设计与实现已经成为一个备受关注的研究方向。

本文将探讨基于FPGA的数字密码锁的设计原理、实现过程以及相关技术细节,为相关领域的研究和应用提供参考。

二、数字密码锁的基本原理1.数字密码锁的基本功能数字密码锁是一种利用密码验证来进行身份识别和门禁控制的设备。

其基本功能包括输入密码、密码验证和门禁控制等。

2.数字密码锁的工作原理数字密码锁通常由键盘、控制单元和执行单元等组成,其工作原理是用户通过键盘输入密码,控制单元接收并验证密码的正确性,然后执行单元根据验证结果控制门禁的开启或关闭。

三、基于FPGA的数字密码锁设计1.基于FPGA的数字密码锁的优势相比传统的基于单片机或嵌入式系统的数字密码锁,基于FPGA的数字密码锁具有更高的灵活性和可扩展性。

FPGA可以根据实际需求进行灵活的硬件逻辑设计,同时兼容多种通信协议和接口,使得其在数字密码锁设计中具有显著的优势。

2.基于FPGA的数字密码锁的设计原理基于FPGA的数字密码锁主要包括密码输入模块、密码验证模块和门禁控制模块。

密码输入模块负责接收用户输入的密码,密码验证模块根据预设的密码进行验证,门禁控制模块根据验证结果控制门禁的开启或关闭。

3.基于FPGA的数字密码锁的设计流程(1)确定需求:明确数字密码锁的功能和性能要求。

(2)硬件设计:设计数字密码锁的硬件逻辑,包括键盘接口、密码验证逻辑和门禁控制逻辑。

(3)软件设计:设计数字密码锁的用户界面和控制逻辑。

(4)综合与实现:将硬件和软件进行综合,实现数字密码锁的功能。

四、基于FPGA的数字密码锁的实现1.硬件设计(1)键盘接口设计:采用矩阵式键盘接口,利用FPGA内部的GPIO 接口进行连接。

(2)密码验证逻辑设计:采用逻辑门设计密码验证逻辑,包括密码存储、密码输入和密码比对等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CPLD/FPGA课程设计项目名称:基于FPGA的数字密码锁设计专业班级:学生学号:学生姓名:指导老师:2016年6月4日摘要本设计是基于现场可编程门阵列FPGA 器件的电子密码锁的设计。

通过Verilog语言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。

同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。

本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能。

通过仿真调试,利用可编程器件FPGA的电子密码锁的设计基本达到了预期目的。

关键词:现场可编程门阵列;数字密码锁;Verilog HDL;AbstractThis design is the electronic code lock field programmable gate array FPGA devices based design. By Verilog language control 4-bit binary number, composed of figures arranged to form a simple digital lock, assuming that the default password is 4 digits: 0000, correct output when the input is 1, the output of the input error to zero. At the same time the number of input and output, and when more than three times the input error, an alarm signal is output, even if the fourth and fifth also enter the correct output alarm signal.This design uses Modelsim software write Verilog HDL hardware description language program to implement a password lock, alarm function. The simulation debugging, using the programmable device FPGA design basic electronic locks to achieve the desired purpose.Key words: FPGA;The digital combination lock;Verilog HDL;目录摘要.................................................................. Abstract............................................................... 第1章所选项目的研究意义 01.1 概述 01.2 数字密码锁的研究现状 (1)1.2.1 数字密码锁的应用 (2)1.2.2 数字密码锁的困难 (2)1.3 本文研究意义 (2)1.4 设计思路 (3)第2章设计方案 (4)2.1 功能定义 (4)2.2 模块设计 (4)第3章系统软件设计 (6)3.1 设计概括 (6)3.2 设计流程 (6)3.2.1 密码存储模块 (6)3.2.2 编码模块 (7)3.2.3 比较模块 (7)3.3 主要程序模块 (8)第4章软件仿真 (13)4.1 仿真过程 (13)4.2 仿真结果 (15)4.3 仿真分析 (15)4.3.1 仿真过程 (16)结论 (17)参考文献 (18)附录1 程序代码 (19)项目创新及特色 (25)第1章所选项目的研究意义1.1 概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。

在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进行保管。

如果使用传统的机械锁进行对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丢失将对物品保管的安全性大打折扣,也为人们的生活及心情带来不便。

随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性。

数字密码锁因为它的保密性很高,安全系数也非常高,再加上其不需要携带避免了丢失的可能,省去了因钥匙丢失而需要换锁的麻烦,受到了越来越多的人的欢迎。

随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产安全的物品非常追捧,对其安全性的要求也非常的高。

为了达到人们对锁具安全性的高要求,加强锁具的安全保密性,用密码锁来取代传统机械锁的锁具是必然趋势。

数字密码锁比传统机械锁具更加的安全[1]。

锁具发展到现在已有若干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。

其必须用钥匙才能打开。

所以在人们的日常生活中离不开锁,这使得我们队锁具的结构和原理也多少有些了解,因此,就有了不借用钥匙就打开锁的方法。

锁具都存在致命的弱点,比如锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松打开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求[2]。

安全防盗已成为人们所关注的焦点。

然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。

基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流[3]。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。

但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。

厂商也可能会提供便宜的但是编辑能力差的FPGA。

因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。

另外一种方法是用CPLD(复杂可编程逻辑器件备)[4]。

因此,随着电子技术的飞速发展数字密码锁的产生是必然,其在使用的方便性、防盗报警功能、智能管理等方面都是传统机械锁无法比拟的,在对安全性有较高要求的设施及场所中得到了广泛应用。

1.2数字密码锁的研究现状现如今,随着高新技术的涌入,对传统锁具进行了很大的的改进,锁具的防盗性能得到了充分的加强,由传统锁具改进的智能密码锁已成为现如今安防系统中最强大的组成部分,它的作用是每一个传统机械锁具无法取代的。

由于其在市场中巨大的潜力,国内外许多的公司都投入很大的人力、物力来从事智能数字密码锁的研究开发生产。

目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。

IC 卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段[5]。

在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。

这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。

1.2.1 数字密码锁的应用密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步[6]。

随着大规模集成电路技术的发展,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛[7].随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC 卡辨认)已在国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流[8]。

1.2.2 数字密码锁的困难1.Verilog HDL语言的程序设计和控制函数的调用编写Verilog HDL语言时,输入4位密码未能和程序预设密码进行比较,无论密码输入正确与否,锁均不打开,而且报警计数器也不进行+1操作。

在程序编译时,函数调未能调用成功。

2.报警程序模块的设计计数器+1操作进行时,系统中断,从而导致系统重置,计数器又从0开始进行+1操作,导致系统不报警。

3.用Modelsim仿真软件波形时,为准确输出正确波形在程序编写时,未考虑初始密码,导致波形错误。

相关文档
最新文档