电子密码锁课程设计本报告.docx
- 文档编号:5430726
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:18
- 大小:642.58KB
电子密码锁课程设计本报告.docx
《电子密码锁课程设计本报告.docx》由会员分享,可在线阅读,更多相关《电子密码锁课程设计本报告.docx(18页珍藏版)》请在冰豆网上搜索。
电子密码锁课程设计本报告
EDA综合课程设计报告
设计题目:
电子密码锁设计
设计者:
学号:
班级:
指导老师:
完成时间:
2012年1月5日
设计报告
综合测试
总评
格式
(10)
内容
(40)
图表
(10)
答辩
(20)
平时
(20)
目录
摘要2
第1章课题设计背景3
1.1EDA技术介绍3
1.2硬件描述语言VHDL4
1.3QuartusⅡ设计软件的简介4
第2章系统设计总述5
2.1设计要求6
2.2设计方案6
2.3设计技巧分析7
2.4整体组装设计原理图8
第3章单元模块程序设计9
3.1电子密码锁系统输入模块9
3.1.1输入模块程序9
3.1.2输入模块元件11
3.1.3输入模块仿真12
3.2电子密码锁系统控制模块12
3.2.1控制模块程序12
3.2.2控制模块元件14
3.2.3控制模块仿真15
3.3电子密码锁系统显示模块15
3.3.1显示模块程序15
3.3.2显示模块元件16
3.3.3显示模块仿真16
第4章收获与体验17
参考文献1
摘要
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,收到了广大的用户的青睐。
电子电路设计常用的方法是实验设计法,一般都包括设计法案提出、方案验证、方案修改3个阶段。
传统的实验设计法通常采用手工接实验电路来完成,往往需要经过试验和修改的反复过程,直到设计出正确的电路。
随着电子和计算机技术的发展,生产了在计算机平台上的EDA(电子设计自动化)技术,这种技术除了具有强大的设计功能外,还具有测试、仿真分析、管理等功能。
在“EDA桌面设计环境”下用计算机来完成电路的系统综合设计和仿真。
用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。
VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、规范化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程廷到高度自动化。
第1章课题设计背景
1.1EDA技术介绍
在电子设计技术领域,可编程逻辑器件(如PLD,GAL)的应用,已有了很好的普及。
这些器件为数字系统的设计带来极大的灵活性。
由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程、乃至设计观念。
纵观可编程逻辑器件的发展史,它在结构原理、集成规模、下载方式、逻辑设计手段等方面的每一次进步都为现代电子设计技术的革命与发展提供了不可或缺的强大动力。
随着可编程逻辑器件集成规模不断扩大,自身功能的不断完善和计算机辅助设计技术的提高,在现代电子系统设计领域中的EDA便应运而生了。
传统的数字电路设计模式,如利用卡诺图的逻辑化简手段以及难懂的布尔方程表达方式和相应的TTL或4000系列小规模集成芯片的堆砌技术正在迅速地退出历史舞台[1]。
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的[2]。
EDA技术就是以计算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPG刀CPLD器件,就可以得到最后的设计结果。
尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。
当然,这里的所谓EDA主要是指数字系统的自动化设计,因为这一领域的软硬件方面的技术已比较成熟,应用的普及程度也已比较大。
而模拟电子系统的EDA正在进入实用,其初期的EDA工具不一定需要硬件描述语言。
此外,从应用的广度和深度来说,由于电子信息领域的全面数字化,基于EDA的数字系统的设计技术具有更大的应用市场和更紧迫的需求性。
1.2硬件描述语言VHDL
硬件描述语言(HDL—HardwareDescriptionLanguage)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可,而且VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL–HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上不足,1985年美国国防部正式推出了VHDL(VeryHighSpeedICHardwareDescriptionLanguage)语言,1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD-1076)。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。
1.3QuartusⅡ设计软件的简介
QuartusⅡ是Altera提供的FPGA/CPLD开发集成环境,QuartusⅡ是Altera前一代FPGA/CPLD集成开发环境MAX+plusⅡ的更新换代产品,其界面友好,使用简捷。
在QuartusⅡ上可以完成VHDL行为仿真,功能仿真,结构综合,门级时序仿真,硬件测试等功能,它提供了一种与结构无关的设计环境,设计者能方便的进行设计输入、速处理和器件编程。
QuartusⅡ包括模块化的编译器。
编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑器数据接口等。
可通过选择Start单独运行各个模块。
还可通过择CompilerTool(Tools菜单),在CompilerTool窗口中运行该模块来启动编译器模块。
在CompilerTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
(1)可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
(2)芯片(电路)平面布局连线编辑;
(3)LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
(4)功能强大的逻辑综合工具,完备的电路功能仿真与时序逻辑仿真工具;
(5)定时/时序分析与关键路径延时分析,可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
(6)支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
(7)使用组合编译方式可一次完成整体设计流程,自动定位编译错误;
(8)高效的期间编程与验证工具;
(9)可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件,能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
第2章系统设计总述
电子密码锁在生活中十分常见,在这我将设计一个具有较低成本的电子密码锁,本文讲述了我整个设计过程及收获。
讲述了电子密码锁的的工作原理以及各个模块的功能,并讲述了所有部分的设计思路,对各部分电路方案的选择、元器件的筛选、以及对它们的调试、对波形图的分析,到最后的总体图的分析。
2.1设计要求
设计一个具有较高安全性和较低成本的通用电子密码锁,其具体功能要求如下:
(1)数码输入:
每按下一个数字键:
就输入一个数值,并在显示器上的最右方显示出该数值,同时将先前输入的数据依序左移一个数字位置
(2)数码清除:
按下此键可清除前面所有的输入值,清除成为“0000”。
(3)密码更改:
按下此键时会将目前的数字设定成新的密码。
(4)激活电锁:
按下此键可将密码锁上锁。
(5)解除电锁:
按下此键会检查输入的密码是否正确,密码正确即开锁。
2.2设计方案
图1-1电子密码锁总体方框图
该系统可以分成三部分来设计,数字密码输入部分、密码锁控制电路和密码锁显示电路。
作为密码锁的输入部分,可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。
考虑种种因素,建议本设计采用通用数字机械键盘。
根据以上选定的输入设备和显示器件,并考虑到实现各项数字密码锁功能的具体要求,整个电子密码锁系统的总体组成框图如图1-1所示。
(1)密码锁输入电路包括键盘扫描电路、时序产生电路、键盘去抖动电路、键盘译码电路等几个小的功能电路。
密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。
(2)七段数码管显示电路主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。
。
(3)根据以上选定的输入设备和显示器件,并考虑到实现各项数字密码锁功。
密码输入一般采用机械式和接触式两种键盘。
机械式3x4键盘虽然易产生抖动、磨损等问题,但具有电路结构简单、成本低、可靠性高、技术成熟、应用广泛等优点,在密码锁的设计过程中经常被采用。
图2是一个3×4矩阵式键盘的面板配置图,其中数字0~9作为密码数字输入按键,*作为“上锁”功能按键,#作为“解锁/清除”功能按键。
如图2所示:
2.3设计技巧分析
(1)密码锁输入电路KEYBOARD.VHD中对各种分频信号/信号序列的设计有独到之处。
该设计中,利用一个自由计数器来产生各种需要的频率,也就是先建立一个N位计数器,N的大小根据电路的需求决定。
N的值越大,电路可以除频的次数就越多,这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。
若输入时钟为CLK,N位计数器的输出为Q[N-1,0],则Q(0)为CLK的2分频脉冲信号,Q
(1)为CLK的4分频脉冲信号,Q
(2)为CLK的8分频脉冲信号,……Q(N-1)为CLK的2N分频脉冲信号;Q(5DOWNTO4)取得的是一个脉冲波形序列,其值是依00-01-10-11-00-01周期性变化的,其变化频率为CLK的25分频,也就是32分频。
我们利用以上规律即可得到各种我们所需要频率的信号或信号序列;
(2)键盘输入去抖电路的设计程序DEBOUCING.VHD在实际系统的开发中有较好的参考价值。
(3)密码锁控制电路CTRL.VHD中对于数据的更新及移位方法比较好。
程序中使用语句“ACC<=ACC(11DOWNTO0)&DATA_N”非常简洁地同时实现了ACC中低4位用DATA_N进行更新,而高12位用ACC中原来的低12位左移而来的处理。
(4)在密码锁输入电路等模块的程序的设计和仿真中,为了便于观察一些中间结果,在程序中增加了一些观测输出点。
这一设计技巧,对于较大的程序或多进程程序的设计非常重要。
同时在仿真时,为了便于观测全局结果,降低了分频常数。
同理,在进行程序仿真时,对于程序中数目较大的分频/计数/计时常数的修改是非常必要的。
2.4整体组装设计原理图
系统的整体组装设计有密码输入模块、密码控制模块、密码显示模块三部分组成,故如图2.1所示:
图2-1系统整体组装设计原理图
第3章单元模块程序设计
本章节介绍的是单独模块的程序、原理图、仿真以及功能说明,共有三个模块,分别是电子密码锁输入模块、电子密码锁控制模块以及显示模块。
3.1电子密码锁输入模块
1.时序产生电路
本时序产生电路中使用了三种不同频率的工作脉冲波形:
系统时钟脉冲(它是系统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。
2.键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号(表2-1中的KY3~KY0)的,扫描信号变化的顺序依次为1110-1101-1011-0111-1110......依序地周而复始。
3.弹跳消除电路
由于本设计中采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。
表2-1按键位置的数码关系
3.1.1输入模块程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSRIS
PORT(CLK_1K:
INSTD_LOGIC;
KEY_IN:
INSTD_LOGIC_VECTOR(2DOWNTO0);
DATA_N:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
DATA_F:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
FLAG_N:
OUTSTD_LOGIC;
FLAG_F:
OUTSTD_LOGIC;
CQD:
OUTSTD_LOGIC;
KSEL:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CSR:
OUTSTD_LOGIC_VECTOR(1DOWNTO0));
ENDENTITYSR;
ARCHITECTUREARTOFSRIS
SIGNALC_QD:
STD_LOGIC;
SIGNALC_SR:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALN,F:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALFN,FF:
STD_LOGIC;
SIGNALSEL:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALQ:
STD_LOGIC_VECTOR(5DOWNTO0);
SIGNALC:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
DATA_N<=N;
DATA_F<=F;
FLAG_N<=FN;
FLAG_F<=FF;
CQD<=C_QD;
CSR<=C_SR;
KSEL<=SEL;
C(0)<=KEY_IN(0);
C
(1)<=KEY_IN
(1);
C
(2)<=KEY_IN
(2);
COUNTER:
BLOCKIS
BEGIN
PROCESS(CLK_1K)IS
BEGIN
IF(CLK_1K'EVENTANDCLK_1K='1')THEN
Q<=Q+1;
ENDIF;
C_QD<=Q(3);
C_SR<=Q(5DOWNTO4);
ENDPROCESS;
SEL<="1110"WHENC_SR=0ELSE
"1101"WHENC_SR=1ELSE
"1011"WHENC_SR=2ELSE
"0111"WHENC_SR=3ELSE
"1111";
ENDBLOCKCOUNTER;
KEY_DECODER:
BLOCK
SIGNALZ:
STD_LOGIC_VECTOR(4DOWNTO0);
BEGIN
PROCESS(C_QD)
BEGIN
Z<=C_SR&C;
IF(C_QD'EVENTANDC_QD='1')THEN
CASEZIS
WHEN"11101"=>N<="0000";
WHEN"00011"=>N<="0001";
WHEN"00101"=>N<="0010";
WHEN"00110"=>N<="0011";
WHEN"01011"=>N<="0100";
WHEN"01101"=>N<="0101";
WHEN"01110"=>N<="0110";
WHEN"10011"=>N<="0111";
WHEN"10101"=>N<="1000";
WHEN"10110"=>N<="1001";
WHENOTHERS=>N<="1111";
ENDCASE;
ENDIF;
IFC_QD'EVENTANDC_QD='1'THEN
CASEZIS
WHEN"11011"=>F<="0100";
WHEN"11110"=>F<="0001";
WHENOTHERS=>F<="1000";
ENDCASE;
ENDIF;
ENDPROCESS;
FN<=NOT(N(3)ANDN
(2)ANDN
(1)ANDN(0));
FF<=F
(2)ORF(0);
ENDBLOCKKEY_DECODER;
ENDARCHITECTUREART;
3.1.2输入模块单元
有上面的程序通过quartusII,我们可以得到下面这个封装元件。
图2-1电子密码锁键盘输入
3.1.3输入模块仿真
图2-2密码锁输入模块的仿真图
3.2电子密码锁系统控制模块
密码锁的控制电路是整个电路的控制中心,主要完成对数字按键输入和功能按键输入的响应控制。
1.数字按键输入的响应控制
(1)如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。
(2)假如要更改输入的数字,可以按倒退按键来清除前一个输入的数字,或者按清除键清除所有输入的数字,再重新输入四位数。
(3)由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过四个时,电路不予理会,而且不再显示第四个以后的数字。
2.功能按键输入的响应控制
(1)清除键:
清除所有的输入数字,即做归零动作。
(2)激活电锁键:
按下此键时可将密码锁的门上锁。
(上锁前必须预先设定一个四位的数字密码。
)
(3)解除电锁键:
按下此键会检查输入的密码是否正确,若密码正确无误则开门。
3.2.1控制模块程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCTRLIS
PORT(DATA_N:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DATA_F:
INSTD_LOGIC_VECTOR(3DOWNTO0);
FLAG_N:
INSTD_LOGIC;
FLAG_F:
INSTD_LOGIC;
MIMAIN:
BUFFERSTD_LOGIC;
SETIN:
BUFFERSTD_LOGIC;
OLD:
BUFFERSTD_LOGIC;
CQD:
INSTD_LOGIC;
ENLOCK:
OUTSTD_LOGIC;
DATA_BCD:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDENTITYCTRL;
ARCHITECTUREARTOFCTRLIS
SIGNALACC,REG:
STD_LOGIC_VECTOR(15DOWNTO0);
BEGIN
PROCESS(CQD,FLAG_F)IS
BEGIN
IFCQD'
EVENTANDCQD='0'THEN
IFFLAG_F='1'THEN
IF(DATA_F="0100")THEN
ACC<="1111111111111111";
MIMAIN<='0';SETIN<='0';OLD<='0';
ELSIF(DATA_F="0001")THEN
IF(MIMAIN='0'ANDSETIN='0')THEN
CASEACC(7DOWNTO0)IS
WHEN"00010001"=>ENLOCK<='1';
WHEN"10011001"=>MIMAIN<='1';
ACC<="1111111111111111";
WHEN"01010101"=>SETIN<='1';
ACC<="1111111111111111";
OLD<='1';
WHENOTHERS=>NULL;
ENDCASE;
ELSIF(MIMAIN='1')THEN
IFACC=REGTHEN
ENLOCK<='0';
MIMAIN<='0';
ELSE
MIMAIN<='0';
ENDIF;
ELSIF(SETIN='1')THEN
IF(OLD='1')THEN
IF(ACC=REG)THEN
OLD<='0';
ELSE
SETIN<='0';
OLD<='0';
ENDIF;
ELSE
IF(ACC<"1001100110011001")THEN
REG<=ACC;
SETIN<='0';
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ELSIFFLAG_N='1'THEN
ACC<=ACC(11DOWNTO0)&DATA_N;
ENDIF;
ENDIF;
ENDPROCESS;
DATA_BCD<=ACC;
ENDARCHITECTUREART;
3.2.2控制模块单元
有上面的程序通过quartusII,我们可以得到下面这个封装元件。
图2-3电子密码锁控制元件
3.2.3控制模块仿真图
图2-4密码锁控制模块的仿真图
3.3电子密码锁系统显示模块
密码显示电路主要将显示数据的BCD码转换成相对应的编码。
如,若选用七段数码管显示电路,主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。
密码锁显示电路的设计比较简单,这里直接采用四个4-7译码器来实现。
3.3.1显示模块程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYMIS
PORT(DATA_BCD:
INSTD_LOGIC_VECTOR(3DOWNTO0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁 课程设计 本报