1、指导教师(签名):教研室主任(签名):课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题综合 指导教师签名: 年 月 日1 引言1.1设计背景在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着社会的发展和人们生活水平的提高,人们的安全意识也逐步加强。传统的机械锁由于其构造的简单,失效的事件屡见不鲜,如何实现保密防盗这一问题变的尤
2、其的突出,密码锁以其安全性高、成本低、功耗低、易操作等优点受到越来越多人的欢迎。在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。它早已超越了单纯的门道及钥匙管理,逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。在该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消防监控、餐饮收费、私家车库管理等,真正实现区域内一卡智能管理。基于EDA技术设计的电子密码锁。以其价格便宜、使用方便、安全性高、成本低、功耗低、易操作等优点,受到了人们的普遍关注。而以可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)
3、为主要表达方式,以Quartus5.1开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能够满足社会对安全防盗的需求。本设计的各个模块由相应的VHDL程序具体实现,并在Quartus5.1环境下进行了整体电路的模拟仿真,最终实现“密码锁控制器设计”的要求。目前使用的电子密码锁大部分是基于单片机技术, 以单片机为主要器件, 其编码器与解码器的生成为软件方式。在实际应用中, 由于程序容易跑飞, 系统的可靠性能较差。基于VHDL语言的电子密码锁已经是现代生活中经常用到的工具之一,用于各类保险柜、房门、防盗门等等。用电子密码锁代替传统的机械式密码锁,克
4、服了机械式密码锁密码量少、安全性能差的缺点。同时基于VHDL语言的电子密码锁是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂、家庭等。1.2设计任务与要求1.2.1内容及要求1设计一个电子密码锁,实现密码的输入、更改、上锁等功能;2密码输入:3密码上锁:4密码更改:5密码解除:1.2.2设计要求1根据任务要求确定电路各功能模块;2写出设计程序;3分析时序仿真结果;4提交设计总结。2总体方
5、案设计2.1方案设计密码锁控制器是硬件与软件的结合。根据设计要求,决定以FPGA芯片和VHDL语言设计此电子密码锁。用一片FPGA芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。2. 系统总框图本系统的硬件部分主要由密码锁控制电路、密码锁显示电路、LED显示电路、报警电路、密码更改与设置电路组成。整体系统框图如下图2.1所示。图 2.1 密码锁控制器系统总框图2.3.1密码锁内部结构密码锁控制器由密码锁主体部分和外部指示电路组成。其中密码锁主
6、要作用是接收输入的密码并进行密码的验证操作;外部指示电路的主要作用是用LED数码管显示输入的密码以及根据密码验证的结果给出不同的LED指示灯和数码管显示;当连续输入三次次错误密码时,启动报警装置,报警装置则采用扬声器。2.3.2密码锁功能介绍1、输入密码时,七段码管从右至左显示按键对应的数值,每按键一次,显示左移一次,6次密码输入结束后系统开始校验,校验结束后,七段码管全灭。也就是显示部分维持的时间就是按键6次的时间和校验的时间。2、密码输入连续三次错误开始报警,报警声要求为高声2.5KHz,低声1.25KHz交替报警,交替周期为1s(1Hz时钟,需要对系统时钟进行10K分频)。3、用LED模
7、块的LED1指示键盘状态,如果有按键按下,LED1亮起,直到松开该按键;用LED2指示门的状态,也就是密码校验结果,如果密码校验正确,LED2亮起,否则如果密码校验错误LED2闪烁4次,然后熄灭,表明密码错误。4、具有密码设置和更改的功能。输入密码正确后5秒内按*号键输入要设置和更改的密码,按#号键确认密码设置与更改,连续输入两次,则密码设置成功。3 密码锁的内部结构及单元主要功能3.1密码显示电路七段数码管是电子开发过程中常用的输出显示设备。在本设计中使用的是8个四位一体、共阴极型七段数码管。其单个静态数码管如下图3.6所示。由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段
8、被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相反。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。在键盘获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。键盘扫描与7段数码管显示示意图如下图3.1所示。图3.1 单个数码管管脚示意图3.2密码锁控制电路3.2.1 软键盘的实现通常在一个键盘中使用了一个瞬时接触开关,并且用如图2.3 所示的简单
9、电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的I/O口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的I/O 口的输入将被拉低得到逻辑0。图3.3 简单键盘电路但是开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图3.4 所示的好几个脉冲。弹起的持续时间通常将维持在5ms30ms 之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。
10、图3.4 按键抖动键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图3.5所示的二维矩阵。当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O端被连接的时候)。一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。图3.5 矩阵键盘3.2.2键盘扫描键盘扫描过程:对于44键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入
11、输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。本实验箱上的44矩阵键盘的电路原理如图3.6所示。与FPGA的管脚连接如表3-1所示。图3.6 44矩阵键盘电路原理图表3-1 44矩阵键与FPGA的管脚连接表信号名称对应FPGA管脚名说明KEY_C0F8矩阵键盘的第1列选择KEY_C1A14矩阵键盘的第2列选择KEY_C
12、2F10矩阵键盘的第3列选择KEY_C3B16矩阵键盘的第4列选择KEY_R0F12矩阵键盘的第1行选择KEY_R1B17矩阵键盘的第2行选择KEY_R2F15矩阵键盘的第3行选择KEY_R3B18矩阵键盘的第4行选择密码锁控制电路是整个系统的控制中心,当有按键按下时,系统根据译码所得数字,判断出按下的是功能键还是数字键,如果是功能键(*或#),则执行相应键的功能(*表示可以输入需要设置和更改的密码;#表示设置密码完成);如果是数字键,则作为密码。控制电路的硬件由一片EP2C35F484C8实现,控制功能由软件实现。以下是EP2C35F484C8的简单介绍:Altera公司发布的第二代Cycl
13、one FPGA,与第一代相比,加入了硬件乘法器,同时内部存储单元数量也得到了进一步的提升,EP2C35核心板上采用的FPGA是Altera公司CycloneII系列芯片EP2C35F484C8。下面介绍EP2C35核心板的有关特性。表3-2列出了EP2C35的有关资源特性,更详细的特性请参阅其数据手册。表3-2 EP2C35F484C8资源列表特性EP2C35逻辑单元Les33,216M4K Memory Blocks105所有RAM Bits483,8401818硬件乘法器35PLLs4用户可用I/O322基本串行主动配置器件EPCS4图3.7 EP2C35F484C8芯片管脚示意图如图3
14、.7所示BGA封装的FPGA(EP2C35)的管脚名称用行、列合在一起来表示。行用英文字母表示,列用数字来表示。通过行列的组合来确定是哪一个管脚。如A2表示A行2列的管脚。F3表示F行3列的管脚。表3-3 LED灯与FPGA的管脚连接列表端口名使用模块信号对应FPGA管脚说 明CLK数字信号源L2时钟为10KHZRST复位按键B3复位信号KEY-STATELED灯D1E9LED指示部分DOORLED灯D12B203.3 LED显示电路用LED显示电路状态模块中的LED1指示键盘状态,如果有按键按下,LED1亮起,直到松开该按键;3.4 报警电路根据设计要求,当密码输入连续三次错误,则报警电路连
15、通,其中报警声要求为高声2.5KHz,低声1.25KHz交替报警,交替周期为1s(1Hz时钟,需要对系统时钟进行10K分频)。在整个试验平台的下方有两组跳线,位于左边的一组跳线用来选取喇叭的声源信号。当跳线位于左边的时候喇叭的声源来自FPGA,位于右边时声源来自AIC23模块的输入信号。位于右边的一组跳线用来控制喇叭的开关,当跳线位于左边时喇叭为开的状态,位于右边时为关的状态。要使喇叭发声请确认喇叭处于开的状态,并且声源是信号输入。扬声器(喇叭)电路图如图3.8所示:图3.8 扬声器电路图3.5 密码更改与设置电路该电路的的具体功能是:按要求,该部分要用到I2C总线E2PROM 器件AT24C
16、08。它的容量为10248(8Kbytes),支持2.7V5.5V工作电压。当工作电压为5V的时候,其接口速度可以达到400kHz。实验箱上的供电为3.3V,所以其接口速度最高只能达到100kHz。AT24C08与外部的I/O接口引脚连接电路如图3.9所示。在本系统中I2CSCL、I2CSDA分别与FPGA连接。图3.9 AT24C08与外部的I/O接口引脚连接电路4 VHDL程序设计4.1 密码锁显示模块当输入密码时,七段码管从右至左显示按键对应的数值,每按键(09)一次,显示左移一次,6次密码输入结束后系统开始校验,校验结束后,七段码管全灭。表4-2 显示模块的管脚分配表DISPLAY0数
17、码管A段G6时间显示DISPLAY 1数码管B段G7DISPLAY 2数码管C段H3DISPLAY 3数码管D段H4DISPLAY 4数码管E段H5DISPLAY 5数码管F段H6DISPLAY 6数码管G段J4SEG-SEL0位选DEL0G5SEG-SEL1位选DEL1G3SEG-SEL2位选DEL2F4process(Clk1KHz,Rst) -显示右移 begin if(Rst=0 or push_num=0) then -复位时,全灭 buff1=15; buff2 buff3 buff4 buff5 elsif(Clk1KHzevent and Clk1KHz=1) then if(
18、kflag1= and kflag2= and (keyr=0111 or keyr=1101)and keyc/=1110)or keyr=1011) then=buff2;=buff3;=buff4;=buff5;=buff6; end if; end process; process(Clk1KHz,Rst) - 获取键值 begin or push_num=6) then -全灭 buff6buff6 -no change end case; elsif(keyr=2;=5;=8;=0;=3;=6;=9; process(SEG_SEL) case (SEG_SEL+1) is000D
19、isp_Temp=10; -001=buff1;010011100101110111 process(Clk) if(Clkevent and Clk=) then -扫描累加 SEG_SEL=SEG_SEL+1; DisplayDisp_Decode00000110 when 2=010110112 when 3=010011113 when 4=011001104 when 5=011011015 when 6=011111016 when 7=000001117 when 8=011111118 when 9=011011119 when 10=0100000000000000 -全灭
20、end behave;4.2 键盘扫描模块程序中,我们用kr表示矩阵键盘的行信号,kc表示矩阵键盘的列信号,KEY-State表示输入数据是否有效。具体端口管脚分配及其与FPGA芯片的具体连接表如下表4-3所示:表4-3 键盘扫描程序的管脚分配表KR04*4矩阵键盘R0矩阵键盘行信号KR14*4矩阵键盘R1KR24*4矩阵键盘R2KR34*4矩阵键盘R3KC04*4矩阵键盘C0矩阵键盘列信号KC14*4矩阵键盘C1KC24*4矩阵键盘C2KC34*4矩阵键盘C3键盘扫描部分分程序如下:process(Clk1KHz) -键盘扫描 if(Clk1KHz) then if(Kr=1111 kfla
21、g1= kcount=kcount+1; if(kcount=0) then kc elsif(kcount=1) then elsif(kcount=2) then else keyr=Kr; keyc=Kc; kflag2=kflag1;KEY_State4.3 时钟分频程序设计根据要求取FPGA的系统时钟为10KHz,因为系统中还需要有别的频率,如:1Hz(1S)、0.2Hz(5S),因此必须对其进行分频处理。对10KHz进行10分频即可得到1KHz的频率;对10KHz进行10K分频即可得到1Hz的频率;对10KHz进行50K分频即可得到0.2Hz的频率。时钟分频部分源程序如下: process(Clk); -对系统时钟进行10分频,得到1KHz的频率) then -检测时钟上升沿 if(Clk_Count110) then Clk_Count1=Clk_Count1+1; else Clk_Count10001 end
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1