《电子密码锁课程设计本报告.docx》由会员分享,可在线阅读,更多相关《电子密码锁课程设计本报告.docx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 SPOC/EDA 综合课程设计报告名目摘要2第 1 章 课题设计背景31.1 EDA 技术介绍31.2 硬件描述语言 VHDL41.3 Quartus设计软件的简介4第 2 章 系统设计总述52.1 设计要求62.2 设计方案62.3 设计技巧分析72.4 整体组装设计原理图8第 3 章 单元模块程序设计93.1 电子密码锁系统输入模块93.1.1 输入模块程序93.1.2 输入模块元件113.1.3 输入模块仿真123.2 电子密码锁系统掌握模块123.2.1 掌握模块程序123.2.2 掌握模块元件143.2.3 掌握模块仿真153.3 电子密码锁系统显示模块153.3.1 显示模块程序
2、153.3.2 显示模块元件163.3.3 显示模块仿真16第 4 章 收获与体验17参考文献18- 10 -摘要随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简洁,被撬的大事屡见不鲜,电子锁由于其保密性高,使用敏捷性好,安全系数高,收到了宽阔的用户的青睐。电子电路设计常用的方法是试验设计法,一般都包括设计法案提出、方案验证、方案修改3个阶段。传统的试验设计法通常承受手工接试验电路来完成,往往需要经过试验和修改的反复过程,直到设计出正确的电路。随着电子和计算机技术的进展,生产了在计算机平台上的EDA电子设计自动化技术,这种技术除了具有强大的设计功能外
3、,还具有测试、仿真分析、治理等功能。在“EDA 桌面设计环境”下用计算机来完成电路的系统综合设计和仿真。用VHDL可以更加快速、敏捷地设计出符合各种要求的密码锁,优于其他设计方法。VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性, 对电路的行为与构造进展高度抽象化、标准化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程廷到高度自动化。第 1 章课题设计背景1.1 EDA 技术介绍在电子设计技术领域,可编程规律器件(如 PLD,GAL)的应用,已有了很好的普及。这些器件为数字系统的设计带来极大的敏捷性。由于这类器件可以通过软
4、件编程而对其硬件的构造和工作方式进展重构,使得硬件的设计可以如同软件设计那样便利快捷。这一切极大地转变了传统的数字系统设计方法、设计过程、乃至设计观念。纵观可编程规律器件的进展史,它在构造原理、集成规模、下载方式、规律设计手段等方面的每一次进步都为现代电子设计技术的革命与进展供给了不行或缺的强大动力。随着可编程规律器件集成规模不断扩大,自身功能的不断完善和计算机关心设计技术的提高,在现代电子系统设计领域中的 EDA 便应运而生了。传统的数字电路设计模式,如利用卡诺图的规律化简手段以及难懂的布尔方程表达方式和相应的 TTL 或 4000 系列小规模集成芯片的堆砌技术正在快速地退出历史舞台1。电子
5、设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术, 它与电子技术、微电子技术的进展亲热相关,吸取了计算机科学领域的大多数最争论成果,以高性能的计算机作为工作平台,是 20 世纪 90 年月初从 CAD(计算机关心设计)、CAM(计算机关心制造)、CAT(计算机关心测试)和 CAE(计算机关心工程)的概念进展而来的2。EDA 技术就是以计算机为工具,在 EDA 软件平台上, 依据硬件描述语言 HDL 完成的设计文件,自动地完成规律编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、规律映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功
6、能的描 述,在 EDA 工具的帮助下和应用相应的 FPG 刀 CPLD 器件,就可以得到最终的设计结果。尽管目标系统是硬件,但整个设计和修改正程如同完成软件设计一样便利和高效。固然,这里的所谓 EDA 主要是指数字系统的自动化设计,由于这一领域的软硬件方面的技术已比较成熟,应用的普及程度也已比较大。而模拟电子系统的 EDA 正在进入有用,其初期的 EDA 工具不肯定需要硬件描述语言。此外,从应用的广度和深度来说,由于电子信息领域的全面数字化,基于 EDA 的数字系统的设计技术具有更大的应用市场和更紧迫的需求性3。1.2 硬件描述语言 VHDL硬件描述语言(HDLHardware Descrip
7、tion Language)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的规律功能、电路构造和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个 32 位的加法器,利用图形输入软件需要输入 500 至 1000 个门,而利用VHDL 语言只需要书写一行 A=B+C 即可,而且VHDL 语言可读性强,易于修改和觉察错误。早期的硬件描述语言,如 ABELHDL、AHDL,由不同的 EDA 厂商开发, 互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了抑制以上缺乏, 1985 年美国国防部正式推出了 VHDL(Very High Spee
8、d IC Hardware Description Language)语言,1987 年 IEEE 承受 VHDL 为硬件描述语言标准(IEEE STD-1076)。VHDL 是一种全方位的硬件描述语言,包括系统行为级、存放器传输级和规律门级多个设计层次,支持构造、数据流、行为三种描述形式的混合描述,因此VHDL 几乎掩盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL 来完成。1.3 Quartus设计软件的简介Quartus是 Altera 供给的 FPGA/CPLD 开发集成环境,Quartus是 Altera 前一代 FPGA/CPLD 集成开发环境
9、 MAX+plus的更换代产品,其界面友好, 使用简捷。在Quartus上可以完成 VHDL 行为仿真,功能仿真,构造综合,门级时序仿真,硬件测试等功能,它供给了一种与构造无关的设计环境,设计者能便利的进展设计输入、速处理和器件编程。 Quartus包括模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计关心模块、EDA 网表文件生成器、编辑器数据接口等。可通过选择Start 单独运行各个模块。还可通过择 Compiler ToolTools 菜单,在 Compiler Tool 窗口中运行该模块来启动编译器模块。在 Compiler Tool 窗口中,可以翻开
10、该模块的设置文件或报告文件,或翻开其他相关窗口。Quartus II 供给了完全集成且与电路构造无关的开发包环境,具有数字规律设计的全部特性,包括:(1) 可利用原理图、构造框图、VerilogHDL、AHDL 和 VHDL 完成电路描述, 并将其保存为设计实体文件;(2) 芯片电路平面布局连线编辑;(3) LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;(4) 功能强大的规律综合工具,完备的电路功能仿真与时序规律仿真工具;(5) 定时/时序分析与关键路径延时分析,可使用 SignalTap II 规律分析工具进展嵌入式的规律分析;(
11、6) 支持软件源文件的添加和创立,并将它们链接起来生成编程文件;(7) 使用组合编译方式可一次完成整体设计流程,自动定位编译错误;(8) 高效的期间编程与验证工具;(9) 可读入标准的 EDIF 网表文件、VHDL 网表文件和 Verilog 网表文件, 能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。第 2 章 系统设计总述2.1 设计要求设计一个具有较高安全性和较低本钱的通用电子密码锁,其具体功能要求如下:(1) 数码输入:每按下一个数字键:就输入一个数值,并在显示器上的最右方显示出该数值,同时将从前输入的数据依序左移一个数字位置(2) 数码去除:按下此键
12、可去除前面全部的输入值,去除成为“0000”。(3) 密码更改:按下此键时会将目前的数字设定成的密码。(4) 激活电锁:按下此键可将密码锁上锁。(5) 解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。2.2 设计方案密 码 锁 输 入 电 路键 盘 扫 描 电 路时 序 产 生 电 路扫 描 信 号按 键 输 入键 盘弹 跳 消 除 电 路键 盘 译 码 电 路密 码 锁 控 制 电 路寄 存 器 清 除 信 号 发 生 电 路开 / 关 门 锁 电 路数 值 比 较 电 路按 键 数 据 缓 存 器显 示 电 路B C D 至 七 段 译 码 电 路七 段 数 码 管图 1-1
13、电子密码锁总体方框图该系统可以分成三局部来设计,数字密码输入局部、密码锁掌握电路和密码锁显示电路。作为密码锁的输入局部,可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。考虑种种因素,建议本设计承受通用数字机械键盘。依据以上选定的输入设备和显示器件,并考虑到实现各项数字密码锁功能的具体要求, 整个电子密码锁系统的总体组成框图如图 1-1 所示。(1) 密码锁输入电路包括时序产生电路、键盘扫描电路、键盘去抖动电路、键盘译码电路等几个小的功能电路。密码锁掌握电路包括按键数据的缓冲存储电路,密码的去除、变更、存储、激活电锁电路存放器去除信号发生电路,密码核对数值比较电路,解锁电路(开/关门锁电路
14、)等几个小的功能电路。(2) 七段数码管显示电路主要将待显示数据的 BCD 码转换成数码器的七段显示驱动编码。(3) 依据以上选定的输入设备和显示器件,并考虑到实现各项数字密码锁功。密码输入一般承受机械式和接触式两种键盘。机械式 3x4 键盘虽然易产生抖动、磨损等问题,但具有电路构造简洁、本钱低、牢靠性高、技术成熟、应用广泛等优点,在密码锁的设计过程中常常被承受。图 2 是一个 34 矩阵式键盘的面板配置图,其中数字 09 作为密码数字输入按键,*作为“上锁”功能按键, #作为“解锁/去除”功能按键。如图 2 所示:2.3 设计技巧分析(1) 密码锁输入电路 KEYBOARD.VHD 中对各种
15、分频信号/信号序列的设计有独到之处。该设计中,利用一个自由计数器来产生各种需要的频率,也就是先建立一个 N 位计数器,N 的大小依据电路的需求打算。N 的值越大,电路可以除频的次数就越多,这样就可以获得更大的频率变化,以便供给多种不同频率的时钟信号。假设输入时钟为 CLK,N 位计数器的输出为 QN-1,0,则 Q0为 CLK 的2 分频脉冲信号,Q1为CLK 的 4 分频脉冲信号,Q2为CLK 的 8 分频脉冲信号,Q(N-1)为 CLK 的 2N 分频脉冲信号;Q5 DOWNTO 4取得的是一个脉冲波形序列,其值是依 00-01-10-11-00-01 周期性变化的,其变化频率为 CLK
16、的25 分频,也就是 32 分频。我们利用以上规律即可得到各种我们所需要频率的信号或信号序列;2) 键盘输入去抖电路的设计程序 DEBOUCING.VHD 在实际系统的开发中有较好的参考价值。3) 密码锁掌握电路 CTRL.VHD 中对于数据的更及移位方法比较好。程序中使用语句“ACC=ACC(11 DOWNTO 0)&DATA_N”格外简洁地同时实现了ACC 中低4 位用 DATA_N 进展更,而高 12 位用 ACC 中原来的低 12 位左移而来的处理。(4) 在密码锁输入电路等模块的程序的设计和仿真中,为了便于观看一些中间结果,在程序中增加了一些观测输出点。这一设计技巧,对于较大的程序或
17、多进程程序的设计格外重要。同时在仿真时,为了便于观测全局结果,降低了分频常数。同理,在进展程序仿真时,对于程序中数目较大的分频/计数/计时常数的修改是格外必要的。2.4 整体组装设计原理图系统的整体组装设计有密码输入模块、密码掌握模块、密码显示模块三局部组成,故如图 2.1 所示:图 2-1 系统整体组装设计原理图第 3 章 单元模块程序设计本章节介绍的是单独模块的程序、原理图、仿真以及功能说明,共有三个模块,分别是电子密码锁输入模块、电子密码锁掌握模块以及显示模块。3.1 电子密码锁输入模块1. 时序产生电路本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系统内部全部时钟
18、脉冲的源头,且其频率最高)、弹跳消退取样信号、键盘扫描信号。2. 键盘扫描电路扫描电路的作用是用来供给键盘扫描信号(表 2-1 中的 KY3KY0)的,扫描 信号变化的挨次依次为11101101101101111110.依序地周而复始。3. 弹跳消退电路由于本设计中承受的矩阵式键盘是机械开关构造,因此在开关切换的瞬间会在接触点消灭信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。表 2-1 按键位置的数码关系3.1.1 输入模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IE
19、EE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SR ISPORT(CLK_1K: IN STD_LOGIC;KEY_IN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);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);
20、CSR:OUTSTD_LOGIC_VECTOR(1DOWNTO0);END ENTITY SR; ARCHITECTURE ART OF SR ISSIGNALC_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);
21、BEGINDATA_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:BLOCK ISBEGIN PROCESS(CLK_1K) ISBEGINIF(CLK_1K”EVENT AND CLK_1K =”1”)THEN Q = Q+1;END IF;C_QD = Q(3);C_SR = Q(5 DOWNTO 4); END PROCESS;SEL =“1110“WHENC_SR=0ELSE“11
22、01“WHENC_SR=1ELSE“1011“WHENC_SR=2ELSE“0111“ WHEN C_SR= 3 ELSE“1111“; END BLOCK COUNTER; KEY_DECODER : BLOCKSIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGINPROCESS(C_QD) BEGINZ N N NNNNNNN N N F F F = “1000“;END CASE;END IF;END PROCESS;FN = NOT ( N(3) AND N(2) AND N(1) AND N(0); FF = F(2) OR F(0);END B
23、LOCK KEY_DECODER; END ARCHITECTURE ART;3.1.2 输入模块单元图 2-1 电子密码锁键盘输入有上面的程序通过 quartus II,我们可以得到下面这个封装元件。3.1.3 输入模块仿真图 2-2 密码锁输入模块的仿真图3.2 电子密码锁系统掌握模块密码锁的掌握电路是整个电路的掌握中心,主要完成对数字按键输入和功能按键输入的响应掌握。1. 数字按键输入的响应掌握(1) 假设按下数字键,第一个数字会从显示器的最右端开头显示,此后每按一个数字时,显示器上的数字必需左移一格,以便将的数字显示出来。(2) 假设要更改输入的数字,可以按倒退按键来去除前一个输入的数
24、字,或者按去除键去除全部输入的数字,再重输入四位数。(3) 由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过四个时,电路不予理睬,而且不再显示第四个以后的数字。 2功能按键输入的响应掌握(1) 去除键:去除全部的输入数字,即做归零动作。(2) 激活电锁键:按下此键时可将密码锁的门上锁。(上锁前必需预先设定一个四位的数字密码。)(3) 解除电锁键:按下此键会检查输入的密码是否正确,假设密码正确无误则开门。3.2.1 掌握模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE
25、.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL ISPORT( DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG_N: IN STD_LOGIC;FLAG_F: IN STD_LOGIC; MIMAIN: BUFFER STD_LOGIC; SETIN:BUFFER STD_LOGIC; OLD:BUFFER STD_LOGIC; CQD:IN STD_LOGIC; ENLOCK: OUT STD_LOGIC;DATA_BCD:OUT STD_L
26、OGIC_VECTOR(15 DOWNTO 0); END ENTITY CTRL;ARCHITECTURE ART OF CTRL ISSIGNAL ACC,REG:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGINPROCESS(CQD,FLAG_F) IS BEGINIF CQD” EVENT AND CQD=”0”THENIF FLAG_F=”1”THEN IF(DATA_F=“0100“)THENACC=“1111111111111111“; MIMAIN=”0”;SETIN=”0”;OLDENLOCKMIMAIN=”1”;ACCSETIN=”1”;ACC=“1
27、111111111111111“;OLD NULL;END CASE;ELSIF(MIMAIN=”1”)THENIF ACC=REG THEN ENLOCK=”0”; MIMAIN=”0”;ELSEMIMAIN=”0”; END IF;ELSIF(SETIN=”1”)THEN IF(OLD=”1”)THENIF(ACC=REG)THENOLD=”0”;ELSESETIN=”0”; OLD=”0”;END IF;ELSEIF (ACC“1001100110011001“)THEN REG=ACC;SETIN=”0”;END IF;END IF;END IF;END IF;ELSIF FLAG_N
28、=”1”THENACC=ACC(11 DOWNTO 0)&DATA_N;END IF;END IF;END PROCESS;DATA_BCDDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=“0000000“; END CASE;END PROCESS;END ARCHITECTURE ART;3.3.2 显示模块单元图 2-5 电子密码锁显示模块元件3.3.3 显示模块仿真图 2-6 密码锁显示模块仿真图第四章 收获与体验这次 EDA 课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同
29、时不仅可以稳固以前所学过的学问, 而且学到了很多在书本上所没有学到过的学问。通过这次设计,进一步加深了对EDA 的了解,让我对它有了更加深厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的快活。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,最终找出了错误和警告,排解困难后,程序编译就通过了,心里最终舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开头计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才觉察是由于输入的时钟信号对于器件的延迟时间
30、来说太短了。经过屡次调试,最终找到了比较适宜的输入数值:时钟周期设置在15秒左右比较适宜。另外,Endtime 的值需要设置的长一点:10us 左右,这样就可以观看到完整的仿真结果。其次,在连接各个模块的时候肯定要留意各个输入、输出引脚的线宽,由于每个线宽是不一样的,只要让各个线宽相互匹配,才能得出正确的结果,否则, 消灭任何一点小的误差就会导致整个文件系统的编译消灭错误提示,在器件的选择上也有肯定的技巧,只有选择了适宜当前电路所适合的器件,编译才能得到完满成功。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论学问是远远不够的,只有把所学的理论学问与实践相结合起来,从理论中得出结
31、论, 才能真正为社会效劳,从而提高自己的实际动手力量和独立思考的力量。在设计的过程中遇到问题,可以说得是困难重重,这到底第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中觉察了自己的缺乏之处,对以前所学过的学问理解得不够深刻,把握得不够结实。总的来说,这次设计的电子密码锁还是比较成功的,在设计中遇到了很多问题, 最终在教师的辛勤的指导下,最终游逆而解,有点小小的成就感,最终觉得寻常所学的学问有了有用的价值,到达了理论与实际相结合的目的,不仅学到了不少学问,而且熬炼了自己的力量,使自己对以后的路有了更加清楚的生疏,同时, 对将来有了更多的信念。最终,对给过我帮助的全部同学和各位指导教师再次表示忠心的感谢!参考文献1 EDA 技术与 VHDL2 SOPC/EDA 综合课程设计指导书,自编3 谭会生,张昌凡.EDA 技术及应用其次版.西安:西安电子科技大学出版社,20234 徐光军,徐光辉.CPLD/FPGA 的开发与应用. 北京:电子工业出版社,20235 李国丽,朱维勇. EDA 与数字系统设计. 北京:机械工业出版社,20236 第三届全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编(1997). 北京:北京理工大学出版社,19997 潘松,黄继业. EDA 技术有用教程. 北京:科学出版社,20238 altera .cn9 fpga .cn