




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子密码锁课程设计前言电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。目前设计密码锁的方法很多,例如用传统的PCB板设计、用PLC设计或者用单片机设计等等。而用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、规范化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程廷到高度自动化。摘要电子技术获得了飞速的发展,在其推动下,现在电子产品几乎渗透了社会的各个领域,有力地推动了社会生产里的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。首先EDA技术在进入21世纪后,得到了很大的发展,其基本特征是采用高级语言描述,具有系统级仿真和综合能力。VHDL硬件描述语言是设计源文件可以采用类似与C语言的书写形式,并采用结构设计方法。随着人们生活水平的提高,密码锁作为家庭防盗卫士的作用日趋重要,它与普通机械锁相比有一些独特的优势,如:保密性强,防盗性能好,可以不用钥匙,只要记住密码即可开锁。本文以MAX+PLUSII作为软件平台,用VHDL硬件语言描述,并结合PLD可编程逻辑器件的综合EDA技术使得高可靠性、高保密性的电子锁的设计变得简单易行。 关键词:电子密码锁 电子设计自动化 VHDL 硬件描述语言 设计方案论证1. 多拨式最简单的密码锁,常见於低安全设定的单车锁,使用多个拨圈。每 个圈的中间有凹位。锁的中心的一条轴,上有数个凸出的齿,用来卡住拨圈。当拨圈转到正确的密码组合,锁便可以打开。这种锁是最容易打开的。很多这类锁根本无需知道密码都能开启。除非它的内部组件造得完美无瑕,否则只要把轴向外拉,其中一个齿便会比其他更为拉紧拨圈。这时轮动被拉紧的拨圈,直至听到小小的卡声,表示这个齿已进入了正确的凹位。2单一转盘式 用在挂锁或匣万上的密码锁可以是只有一个转盘。转盘推动背後数个平衡碟片或凸轮。习惯上,开启这种锁时先把转盘顺时针转到第一个数字,然後反时针转到第二个数字,如此直至最後一个数字。凸轮上通常有凹位,当转入正确的密码後,各位成一直线,锁便可以打开。 这种密码锁不是很安全,部分密码挂锁可以拉紧锁头,然後转动转盘直至不能再动,这样便能把密码找出。亦有些转盘密码锁的数字之间有特定关系,使到密码的组合可能性大为降低。廉价的密码挂锁可以用特别的衬片打开,而无需使用密码。 使用在匣万上的密码锁结构较为严密。有经验的锁匠可以一面旋转转盘, 一面使用听筒小心聆听锁内凸轮的声音,判断可能的密码。3.电子密码锁 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。 其性能和特点如下:1保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。 3误码输入保护。当输入密码多次错误时,报警系统自动启动。 4. 电子密码锁操作简单易行,一学即会。 5.干扰码功能 在输入正确密码前可输入任意码。 6.安保功能 如果连续输错4次密码将会自动断电3分钟。 7.紧急开启功能(Panic Open) 出门时无需其他操作,只需一次的把手动作,可机械的开启门,所以遇到火灾等应急状况下也迅速,安全的开启门。 8.入侵感应功能 在门上锁的状态下,有人破锁而入时,会发出强力的报警音。 9.双重锁定功能 外部强制锁定:在内部不能开启,适用于外出时,防止有人入侵。 内部强制锁定:在外部不能开启,让您在家时更安心、安全。 10.弱电提醒当电量不足时,在启动开门时,会有美妙的音乐提示您及时更换电池。 11.自动上锁功能 采用全自动锁芯,门关后6秒内自动上锁,外出更加安全。 12.外部显示功能 当密码输入错误,锁舌没正常锁到位,室内反锁,弱电等情况下,外部都有提示功能。方案选择 EDA技术在进入21世纪后,得到了很大的发展,其基本特征是采用高级语言描述,具有系统级仿真和综合能力。VHDL硬件描述语言是设计源文件可以采用类似与C语言的书写形式,并采用结构设计方法。随着人们生活水平的提高,密码锁作为家庭防盗卫士的作用日趋重要,它与普通机械锁相比有一些独特的优势,如:保密性强,防盗性能好,可以不用钥匙,只要记住密码即可开锁。本设计以MAX+PLUSII作为软件平台,用VHDL硬件语言描述,并结合PLD可编程逻辑器件的综合EDA技术使得高可靠性、高保密性的电子锁的设计变得简单易行。设计实现作为通用电子密码锁,主要由三个部分组成: 键盘接口电路、电锁控制电路、输出显示电路。1. 键盘接口电路键盘接口电路包括键盘矩阵、键盘扫描、键盘消抖、键盘译码及按键存储。图1-1 键盘接口电路图矩阵式键盘工作原理: 矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。如图所示为一 34矩阵式键盘。矩阵式键盘以行、列形式排列,图中为 4行 3列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑 0 的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3KEYR0为扫描信号,其中的某一位为 0即扫描其中的一行。图1-2 键盘框架图键盘扫描信号 KEYR3 与第一行相连,KEYR2 与第二行相连,依此类推。很显然,扫描信号的变化顺序为:0111、1011、1101、1110,周而复始。在扫描的过程中,当有键按下时,对应的键位就为逻辑 0状态,从而从 KEYC2.0读出的键值相应列为0。具体情况如表 1-1所示:若从 KEYC2.0读出的值全为 1时,表示没有键被按下,则不进行按键的处理。如果有键被按下,则将 KEYC2.0读出的送至键盘译码电路进行译码。表 1-1 键盘扫描与其对应的键值的关系1-1时序产生电路在一个系统的设计中,往往需要多种时钟信号,最为方便的方法是利用一个自由计数器来产生各种需要的频率。本电路需要:系统主时钟、消抖取样时钟和动态扫描时钟。时序产生电路举例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY free_counter IS PORT ( CLK : IN STD_LOGIC ; CLK_A : OUT STD_LOGIC ; CLK_B : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ) ; END free_counter ; ARCHITECTURE a OF free_counter IS SIGNAL Q : STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = Q + 1; END IF; END PROCESS; CLK_A = Q(1) ; CLK_B = Q(4 DOWNTO 3) ; END a ; 分析:首选信号 Q建立一个 9位自由计数器,对输入主时钟进行降频处理;使用 CLK_A=Q(1)语句,取得一个脉冲波形,对主时钟进行 2分频,其值为 0、1、0、1等等;使用 CLK_B=Q(4 DOWNTO 3)语句,取得一脉冲序列,依次为 00、01、10、11、00等等; 1-2键盘扫描电路目标:提供键盘扫描信号,即表 1-1中的 KEYR3.0,变化顺序依次为 0111、1011、1101、1110依次重复出现。 程序清单: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY scan IS PORT ( CLK : IN STD_LOGIC ; CLK_SCAN : OUT STD_LOGIC_VECTOR (3 downto 0) ); END scan ; ARCHITECTURE a OF scan IS Signal S : STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL Q: STD_LOGIC_VECTOE(3 DOWNTO 0); Begin PROCESS (Clk) Begin IF CLKEvent AND CLK=1 then Q = Q+1; S :=Q(3 DOWNTO 2); END IF; END PROCESS; SCAN_OUT= 1110 WHEN S=0 ELSE 1101 WHEN S=1 ELSE 1011 WHEN S=2 ELSE 0111 WHEN S=3 ELSE 1111; END a ; 说明:程序中,S信号是用来产生扫描信号的四个状态,Q是为了对输入主时钟进行降频处理。键盘消抖电路:因为按键大多是机械式开关,在开关切换的瞬间会在接解点出现来回弹跳的现象,由图可见,虽然只是按了一次键,实际产生的按键信号却不只跳动一次,经过取样信号的检查后,将会造成误码判,认为是按了两次键。如果调整取样频率,可以发现抖现象得到了改善。 按键信号: 取样信号: 取样结果: 调整取样频率后的情况如下: 程序清单: LIBRARYieee; USE ieee.std_logic_1164.ALL; LIBRARY altera; USE altera.maxplus2.ALL; ENTITY debouncing IS PORT ( d_in, clk : IN STD_LOGIC; dd1, dd0, qq1, qq0 : OUT STD_LOGIC ; d_out,d_out1 : OUT STD_LOGIC ); END debouncing ; ARCHITECTURE a OF debouncing IS signal vcc, inv_d : std_logic ; signal q0, q1 : std_logic ; signal d1, d0 : std_logic ; BEGIN vcc = 1 ; inv_d vcc , q = q0 , clk = clk, clrn = inv_d , prn = vcc); dff2 : dff PORT MAP (d =vcc , q = q1, clk = clk, clrn = q0 , prn = vcc); process (clk) begin if clkevent and clk=1 then d0 = not q1; d1 = d0; end if ; end process ; dd0 = d0; dd1 = d1; qq1 = q1; qq0 = q0; d_out = not (d1 and not d0); d_out1 = not q1 ; END a;1-3键盘消抖电路因为按键大多是机械式开关,在开关切换的瞬间会在接解点出现来回弹跳的现象有时,虽然只是按了一次键,实际产生的按键信号却不只跳动一次,经过取样信号的检查后,将会造成误码判,认为是按了两次键。如果调整取样频率,现抖现象可得到改善。原理图如图1-3键盘消抖电路原理图。图1-3 键盘消抖电路原理图1-4键盘译码电路从前面所述的键盘扫描电路的输出可以看出,扫描得到的信号规律性不强,例如数字键主要用来输入数字,但键盘扫描输出无法拿来直接使用,必须对其进行译码才能使用。如表1-2所示,只要使用 casewhen 或 when else语句,便可完成设计。 表1-2 键盘译码电路输出值及其功能表键盘译码程序清单: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -* ENTITY KEYBOARD_DEC1 IS PORT ( clk : IN STD_LOGIC ; CLK_KEYBOARD : IN STD_LOGIC_VECTOR (1 downto 0); C: IN STD_LOGIC_VECTOR (2 downto 0); -key code after debounce out_numb : OUT STD_LOGIC_VECTOR(3 downto 0); - for numb. key out_func : OUT STD_LOGIC_VECTOR(3 downto 0); - for func. key flag_numb : OUT STD_LOGIC ; -flag for numb. key flag_func : OUT STD_LOGIC; -flag for func. key ); END KEYBOARD_DEC1 ; ARCHITECTURE a OF KEYBOARD_DEC1 IS signal FF : std_logic ; -FLAG OF FUNC. signal FN : std_logic ; -FLAG OF NUMB. signal Z : std_logic_VECTOR(4 downto 0) ; -SCAN CODE signal F : std_logic_VECTOR(3 downto 0) ; -FOR FUNC. CODE signal N : std_logic_VECTOR(3 downto 0) ; -FOR NUMB. CODE BEGIN PROCESS(clk) begin Z N N N N N N N N N 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 = ( NOT F(3) AND F(2) AND NOT F(1) AND NOT F(0) OR (NOT F(3) AND NOT F(2) AND NOT F(1) AND F(0) ) ; -CONNECTION FLAG_NUMB = FN ; FLAG_FUNC = FF ; OUT_NUMB = N ; OUT_FUNC = F ; END a; 说明: 1、键盘译码电路除了负责将键盘送出的数据进行译码外,另外就是在译码的同时,必须判别所按下的是数字键还是功能键。 2、若为数字键,则 flag_numb=1,且 out_num输出 BCD码,并送往显示电路。 3、若为功能键,则 flag_func=1,且 out_func输出 4位码,并送往电锁控制电路。 1-5按键存储电路 图1-4密码存储电路 如图1-4两个寄存器组中,左边的寄存器组存储原始密码,右边的存储输入密码即解锁密码。上面的输入端为脉冲输入,提供给全部的74194的脉冲输入。中间的输入端为密码输入端。注意到下面横向的输入端为控制原始密码和解锁密码输入的按键,称为“keep”,根据74194寄存器的特性:当s0、s1都为1时,寄存器将并行输入;当s0、s1都为0时,寄存器为保持状态。故当keep为1时,左端寄存器的s0、s1均为1,可以进行设置原始密码操作。当keep为0时,左边的寄存器的s0、s1均为0,保持状态,即设置了原始密码;而此时右边的寄存器的s0、s1的输入串联后用非门与keep连接,所以右端的s0、s1均为1,此时数据将输入右边的寄存器,并存储,即解锁密码的输入完成。图中纵向有两个按键,左右分别为clean1、clean2。其中clean1为原始密码的清零键,clean2为解锁密码的清零键。按下清零键即可将寄存器中存储的密码清零,重新进行设置原始密码或解锁密码操作。因为每次按键都会产生新的数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将键盘扫描译码后的结果记录下来。这一功能可以用移位寄存器来实现。常见的移位寄存器的下列四种:串行输入/串行输出(SISO),串行输入/并行输出(SIPO),并行输入/串行输出(PISO),并行输入/并行输出(PIPO)。 1、SISO串行输入/串行输出 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY siso IS PORT( DATA_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; DATA_OUT :OUT STD_LOGIC); END siso ; ARCHITECTURE a OF siso IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q(0) = DATA_IN; FOR I IN 1 TO 3 LOOP Q(I) = Q(I-1); END LOOP; END IF; END PROCESS; DATA_OUT = Q(3); END a; 2、SIPO-串行输入/并行输出 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY sipo IS PORT( D_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; D_OUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END sipo; ARCHITECTURE a OF sipo IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q(0) = D_IN; FOR I IN 1 TO 3 LOOP Q(I) = Q(I-1); END LOOP; END IF; END PROCESS; D_OUT = Q; END a; 3、PISO-并行输入/串行输出 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY piso IS PORT( DATA_IN :IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK :IN STD_LOGIC; nLOAD :IN STD_LOGIC; DATA_OUT :OUT STD_LOGIC); END piso; ARCHITECTURE a OF piso IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(nLOAD,CLK) BEGIN IF nLOAD = 0 THEN Q = DATA_IN; ELSIF CLKEVENT AND CLK = 1 THEN q(1) = Q(0) ; FOR I IN 1 TO 3 LOOP Q(I) = Q(I-1); END LOOP; END IF; END PROCESS; PROCESS(nLOAD,CLK) BEGIN IF nLOAD = 0 THEN DATA_OUT = 0; ELSIF CLKEVENT AND CLK = 1 THEN DATA_OUT = Q(3); END IF; END PROCESS; END a; 4、PIPO-并行输入/并行输出 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY piso IS PORT( DATA_IN :IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK :IN STD_LOGIC; DATA_OUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END piso; ARCHITECTURE a OF piso IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(nLOAD,CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q=DATA_IN; DATA_OUT=Q; END IF; END PROCESS; END A; 2电锁控制电路设计电锁控制电路是整个电路的控制中心,主要完成如下功能2.1数字按输入部分密码的输入 图2-1 密码输入电路图2-1中,9个数字由分配的9个按键进行输入,上面的输出提供给74194寄存器组的脉冲输入,如此,每按下一个按键就可以给寄存器一个高电平脉冲,使其存储数据,按下下一个按键时,寄存器将向上传送数据。如此依次存入四位密码。下面部分为编码电路。数据输入后通过该电路进行编码,把十进制数编成BCD码,并输出,传送给74194寄存器组。如按下按键1,则74194将接收到的是0001。如果输入数字键,第一个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须往左移动一位。若想要更改输入的数字,可按退格键来清除前一个输入的数字,或按清除键清除输入的所有数字,再重新输入 8位数字。既然设计的是四位电子密码锁,当输入的数字键超过 8位时,电路不应理会。2.2功能键输入部分退格键:只清除前一个输入的数字。清除键:清除所有输入。密码核对:在密码更改,开锁之前必须先核对密码。密码变更:按下此键将目前输入的数字设定为新的密码。激活电锁:上锁,上锁之前必须先设定密码才能上锁。解除电锁:检查输入的密码是否正确,正确才开锁。万用密码:电锁维护者使用。2.3密码的比
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牧草栽培工工艺考核试卷及答案
- 矿山安全设备监测检修工设备调试考核试卷及答案
- 技术类咨询培训方案
- 咨询公司差别定价方案
- 解决方案咨询部
- 漯河定制镀铜门施工方案
- 差异化产品营销方案模板
- 建筑方案设计理由简短
- 贵州建筑装饰方案设计公司
- 琼海互联网营销推广方案
- 电梯控制技术实训报告总结
- DB11∕T 3035-2023 建筑消防设施维护保养技术规范
- 【云南白药公司财务报表研究国内外文献综述4000字】
- 国际音标卡片(打印版)
- 科技与全球资源分配问题
- 2024年高等教育教育类自考-00285中国福利思想笔试历年真题荟萃含答案
- 蛋白质相互作用传递信息蛋白质
- 马克思主义劳动观的内涵
- 《金属热处理》课件
- 学生上下学交通方式台账
- 路边停车经营管理方案
评论
0/150
提交评论