1、1目录第一章 概要1.1 背景简介1.2 设计要求:第二章 设计思路2.1 端口定义2.2 总体结构2.3 设计方案第三章 单元电路设计3.1 简述3.2 密码锁输入电路的设计3.3 密码控制电路的设计3.3.1VHDL 源程序3.3.2 仿真波形3.4 密码显示电路的设计 3.4.1 密码锁显示电路设计简介3.4.2 VHDL 程序第四章 整体组装4.1 VHDL 源程序或原理图4.2 整体仿真波形第五章 设计体会2第一章 概要1.1 背景简介:数字密码锁随着电子工业的发展,数字电子技术已经深入到了人们生活的各个层面, 而且各种各样的电子产品也正在日新月异地向着高精尖技术发展。由于电子产品
2、的功能不断增加,使用也越来越方便,有些产品已经成为了人们日常生活中不可 缺少的必备物品。发展历史悠久的机械式门锁,因其功能单一,安全性能较差等 缺点,必将被新一代的电子门锁所代替。新颖的多功能电子门锁,集电子门锁、 防盗报警器,门铃等功能于一身,而且还具有定时器呼唤,断电自动报知,显示 屋内有无人和自动留言等诸多附加功能。在未来的生活中,数字密码锁必将在学 领域再创新的成绩,将给我们的生活带来更大的便利,前景不可估量。1.2 设计要求(1).具有密码输入功能;(2). 设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作, 用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表
3、示开锁;(3). 从第一个按钮触动后的 5 秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无 法再打开,并由扬声器发出持续 20 秒的报警信号。第二章 设计思路2.1 端口定义:输入:采样时钟 clk;译码输入 data3.0; 3输出:七段数码管驱动 q6.0;数值译码 q13.0.按键指示 key.2.2 总体结构:(1) 显示器(2) VHDL 程序输入(3) FPGA 芯片 扬声器2.3 设计方案密码锁控制器是硬件测试密码锁控制器是硬件与软件的结合。根据设计要求,决定以 FPGA 芯片和 VHDL 语言设计此电子密码锁。用一片 FPGA 芯片实现,从而大大简化了系统结构,降低了成
4、本,提高了系统的保密性和可靠性。这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。根据系统的设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图的设计方式和系统的整体组装,分别由密码锁输入模块、密码锁控制模块和密码锁显示译码模块等部分组成。即按照这三个组成模块定义相应的芯片引脚和输入输出的参数。第三章 单元电路设计3.1 简述:密码锁的内部结构及主要功能密码锁的内部结构即密码锁控制器由密码锁主体部分和外部指示电路组成。其中密码锁主要作用是接收输入的密码并进行密码的验证操作;外部指示电路的主要作用是用 LED数
5、码管显示输入的密码以及根据密码验证的结果给出不同的 LED 指示灯和数码管显示;当连续输入三次次错误密码时,启动报警装置,报警装置则采用扬声器。密码锁控制器的主要功能有: (1)密码输入:每按下一个键,要求在数码管上显示,并依次左移。 (2)密码校验:如果有按键按下,LED1 亮起,直到松开该按键;用 LED2 指示门的状 态,也就是密码校验结果,如果密码校验正确, LED2 亮起,否则如果密码校验 错误 LED2 闪烁 4 次,然后熄灭,表明密码错误。 4(3)错误报警:密码输入连续三次错误开始报警。 (4)密码修改:输入密码正确后 5 秒内按*号键输入要设置和更改的密码,按#号键确 认密码
6、设置与更改,连续输入两次,则密码设置成功。3.2 密码锁输入电路的设计密码锁输入模块由时序产生电路、键盘扫描电路、键盘译码电路和按键存储电路组成。通过这几个部分的组成可以将键盘输入的信号有时序的扫描存储而后传入控制模块来控制密码锁的动作。因此,定义键盘按键的位置和数码的关系如下表所示:扫描 00 00 00 01 01 01 10 10 10 11 11 11输出信号0011 0101 0110 0011 0101 0110 0011 0101 0110 0011 0101 0110按键号1 2 3 4 5 6 7 8 9 * 0 #备注:扫描位置是 CSR1.0,键盘输出信号 SEL3.2.
7、1.0,按键号即为键盘的位置密码锁输入电路仿真图如下:3.3 密码锁控制器设计密码锁控制电路软键盘的实现,通常在一个键盘中使用了一个瞬时接触开关,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的 I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的 I/O 口的输入将被拉低得到逻辑 0。53.3.1 VHDL 源程序library ieee;use ieee.std_logic_1164.all;entity decoder is port(clk: in std_logic; -译码器元件声明data :in std_logic_vector(3 downto 0); q:ou
8、t std_logic_vector(6 downto 0);q1 : out std_logic_vector(3 downto 0) ); end entity; architecture rt1 of decoder is begin process(clk,data) begin if rising_edge(clk) then case data is when “0000“=qqq q q q qdataoutdataoutdataoutdataoutdataoutdataoutdataoutdataoutdataoutdataoutnull;end case;end proces
9、s;end rtl;第四章 整体组装4.1 密码锁整体原理图VHDL 源程序:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity exp19 is 8port( Clk : in std_logic; -时钟信号 Rst : in std_logic; -复位信号 Kr : in std_logic_vector(3 downto 0); -键盘行 Kc : buffer std_logic_vector(3 downto
10、 0); -键盘列 SPK : out std_logic; -扬声器输出 KEY_State : out std_logic; -按键指示 Display : out std_logic_vector(7 downto 0); -七段码管显示 SEG_SEL : buffer std_logic_vector(2 downto 0); -七段码管片选 end exp19; architecture behave of exp19 is signal keyr,keyc : std_logic_vector(3 downto 0); signal kcount : std_logic_vect
11、or(2 downto 0); signal kflag1,kflag2 : std_logic; signal buff1,buff2,buff3,buff4,buff5,buff6 : integer range 0 to 15; signal push_num : integer range 0 to 15; -按键次数 signal Disp_Temp : integer range 0 to 15; signal Disp_Decode : std_logic_vector(7 downto 0); signal SEC1,SEC10 : integer range 0 to 9;
12、signal Clk_Count1 : std_logic_vector(3 downto 0); -1KHz 时钟分频计数器 signal Clk_Count2 : std_logic_vector(9 downto 0); -2Hz 时钟分频计数器 signal Clk1KHz : std_logic; signal Clk2Hz : std_logic; signal Clk1Hz : std_logic; signal Error_Num : integer range 0 to 3; signal Error_Flag : std_logic; signal Error_Count : std_logic_vector(2 downto 0); signal Music_Count : std_logic_vector(2 downto 0); begin process(Clk) begin if(Clkevent and Clk=1)then if(Clk_Count1=3) then if(Clk1Hz=1) then SPK=Music_Count(2); else SPK=Music_Count(1); end if;