基于CPLD的智能密码锁设计与实现

2015-04-17 12:30颉洪睿孙丹丹魏学军
实验室研究与探索 2015年11期
关键词:密码锁状态机按键

颉洪睿, 孙丹丹, 魏学军

(北京邮电大学 a. 信息与通信工程学院; b. 电子工程学院, 北京 100876)



基于CPLD的智能密码锁设计与实现

颉洪睿a, 孙丹丹b, 魏学军b

(北京邮电大学 a. 信息与通信工程学院; b. 电子工程学院, 北京 100876)

随着可编程逻辑器件的发展,EDA技术已成为硬件系统电路设计的重要手段。本文提出了一种基于EDA技术,采用自顶向下的设计方法,能够快速设计、开发智能密码锁的方案,并阐述了其工作原理和软硬结合的设计理念。本方案以复杂可编程逻辑器件(CPLD)为核心,配合外围电路,在Quartus II环境下,利用VHDL语言编程实现。本文详细介绍了顶层文件和子模块的设计过程,其中包含了点阵动态扫描、按键防抖、抗干扰等工程技术,并涉及系统仿真分析与优化。硬件测试结果表明:本方案所设计的智能密码锁功能丰富、操作便捷、安全性高;电路结构简单、系统可靠性高、体积小、易于维护升级、实用性强。

密码锁; CPLD; EDA; VHDL

0 引 言

近年来,传统机械锁的安全性能已经不能满足用户需求,电子密码锁由于保密性好,安全系数高,受到了广大用户的青睐。基于此,本文提出了一种高性能智能密码锁的实现方案。利用复杂可编程逻辑芯片(CPLD),结合电子设计自动化(EDA)技术和VHDL语言,采用自顶向下的设计方法,设计了一款智能密码锁[1-5]。该密码锁拥有更改密码、清除密码、声光报警等功能,具有安全性高、功耗低、价格便宜,维护升级方便的特点,具有较好的应用前景。

1 系统设计

1.1 总体设计

本设计基于QuartusII软件开发平台,使用VHDL语言,运用自顶向下的设计方法,根据整个系统性能的描述和要求,进行系统的分解,将整体划分为6个子模块,分别是分频器、控制器、按键防抖、键盘模块、数码管显示模块、点阵显示模块[6]。密码锁的总体设计框图如图1所示。

1.2 模块设计

根据总体规划,依次设计各个模块的具体功能[7-8]。

(1) 分频器。采用串行分频的方式,以最大限度的节省资源。将50 MHz的系统频率分为1 kHz的高频信号,和250 Hz的低频信号供其它模块使用。

(2) 键盘模块。根据键盘的原理图,采取列扫描的方法。即每个时钟周期, 列扫描信号按照0111、1011、1101、1110的顺序循环,同时读出行信号的有效值。行列译码后,就可得到准确的按键值。利用这种方法,可极大地节省I/O资源[9]。

在键盘扫描过程中,需要考虑按键抖动带来的一系列问题。按键时产生的抖动会导致译码电路得到错误的译码值,若直接输出译码结果,会使整个系统的稳定性下降。因此,消抖处理是必不可少的。本设计采用如下的消抖方案。首先进行译码,再对译码结果进行消抖处理,采用计数器消抖的办法。该方案可以最大限度地提高系统的抗干扰能力[10]。

(3) 控制器。该部分是密码锁的核心,应具有密码存储、比对、修改,并控制其它模块工作等核心功能。而有限状态机及其设计技术是数字系统设计中的重要组成部分,是实现高效率高可靠逻辑控制的重要途径[11-12]。综上,控制器采用Mealy型状态机来实现。控制器根据现状态和输入信号,控制状态转移,并输出指令控制其它模块的工作。在VHLD实现过程中,通过三进程的描述方式来实现,分别描述状态机的次态逻辑,状态寄存器和输出逻辑。

具体来说,就是在第一个进程中,以当前状态和转移条件信号为敏感量,描述状态机的次态逻辑。在第二个进程中,以时钟和输入信号为敏感量,通过时序电路先完成状态转移,即将次态转为现态,再对输入信号进行处理、判断,根据判断结果给相应的转移条件信号赋值。在最后一个进程内,以当前状态,输入信号为敏感量,通过组合逻辑决定状态机的输出,并用这些输出信号去控制其它模块的工作。这样描述有利于对状态机的组合逻辑部分和时序逻辑部分分别测试,降低系统的开发难度[13]。控制器的流程图如图2所示。

(4) 显示模块。采用6 b共阴极数码管进行显示。因为数字电路处理的都是二进制信息,不便于用户操作。数码管的功能是将控制器传递的信息直观的显示出来,并能够根据指令,将显示的数据移位,方便用户使用。

(5) 点阵显示模块。使用动态扫描的方法,利用人眼视觉暂留的原理显示稳定的图像。其中,在点阵模块内置了一个小的分频器,产生低频信号(5 Hz左右)。点阵用高频信号显示静态图像,低频信号切换要显示图像,从而完成动画的显示。

(6) 按键防抖。考虑到用户每次按压键盘时间的不同、按键时信号抖动等问题。为了密码锁的流畅运行,首先对按键的信号进行处理。消除抖动后送至控制器。

1.3 顶层文件设计

按照设计方案,编写各模块代码,首先分析仿真波形,调试后再进行实际测试。然后寻找问题,再逐步修改并完善代码。当各模块满足设计要求后,利用原件例化功能将模块封装为原理图,供顶层文件调用。在顶层用QuartusII原理图连接各个模块。如图3所示。分频器输出两路信号,高频时钟供控制器,点阵和显示模块使用,低频时钟供防抖模块和键盘使用。按键和键盘将模块将输入信息送至控制器,控制器处理后控制点阵和显示模块正常工作,提示用户进行操作。

图3 VHDL顶层文件

2 仿真与分析

2.1 仿真波形

EDA仿真软件的使用可有效地验证系统功能,发现并纠正存在的错误,识别数据冲突等设计缺陷。从而帮助设计者完善设计方案,消除组合逻辑电路中的竞争和冒险,并优化系统速度[14-15]。

2.1.1 键盘模块仿真结果

KB_IN为键盘输入信号,KB_OUT为键盘模块的输出结果,没有按键按下时,KB_OUT输出为“10000”。对比图4中1,2,3部分可以看出。只有当键盘按下足够长的时间后,才会产生稳定的输出,持续一段时间后自动停止输出。而当按键时间过短,或是有抖动时,都没有输出。这样便于控制器准确获得按键信息,为整个密码锁的正常工作奠定了基础。

图4 键盘模块仿真结果

2.1.2 控制器仿真结果

图5中KB_OUT表示键盘输入,smg_num为数码管显示输出,receive_count表示输入数字的位数。图中:(1)表示有按键按下,(2)表示输入密码的个数,(3)表示确认密码键,(4)位状态机的状态。从(2)中可以看到,每次输入一个数字,记录输入数字位数的信号值加1。对比图中(1)~(4)可以看出,只用当输入密码位数大于3时,才能确认密码,随后状态机的状态转移,进入下一状态。

图中(5)表示解锁的过程,输入正确的密码后,状态转移。从图中可以看出,密码锁完成了设置密码和解锁的操作。此外,对比图中圆圈内部分可以发现,设置密码时,数码管上显示输入的数字,而在闭锁状态时,数码管只显示“—”,提示用户输入密码的位数。在提高密码锁保密性的同时,也使得操作更为人性化。

2.2 结果分析

通过仿真后,进行硬件测试。在闭锁时,若输入密码正确,密码锁打开,此时可以重置或修改密码,且密码位数4~6位可调;若输入错误,蜂鸣器、LED报警,点阵也动态显示密码错误的警示信息,此时可以通过键盘按键来关闭警报,系统运行正常。

硬件测试结果表明,密码锁达到了设计要求,且为进一步的升级维护留下了空间。

图5 控制器仿真结果

3 结 语

本文介绍了一种基于CPLD的密码锁设计方案和实现方法,详细介绍了主要功能模块和仿真波形。密码锁性能指标可以满足日常生活的需求,且系统体积小,结构简单,安全性高,保密性强,成本低,便于维护和升级,有良好的应用前景。

[1] 刘培植,胡春静.数字电路与逻辑设计[M].北京:北京邮电大学出版社, 2011.

[2] 刘爱荣. EDA技术与CPLD/FPGA开发应用简明教程[M].2版.北京:清华大学出版社,2013.

[3] 马金明,吕铁军.数字系统与逻辑设计[M].北京:北京航空航天大学出版社,2007.

[4] 潘 松,黄继业.EDA技术实用教程[M].4版.北京:科学出版社,2013.

[5] 黄正谨,徐 坚,章小丽,等.CPLD系统设计技术入门与应用[M].北京:电子工业出版社,2002.

[6] 李 欣,张海燕.VHDL数字系统设计[M].北京:科学出版社, 2009.

[7] 蒋 青,吕 翊.基于EDA技术的数字系统设计[J].重庆邮电大学学报(自然科学版),2003,15(3):92-94.

[8] 任晓东,文 博.CPLD/FPGA高级应用开发指南[M].北京:电子工业出版社,2003.

[9] 施帮利,杨 奕.基于FPGA的4*4键盘扫描电路的改进设计[J].西南师范大学学报(自然科学版),2013,38(3):67-70.

[10] 许德成.基于FPGA的按键消抖设计[J].吉林师范大学学报(自然科学版),2009,30(4):154-156.

[11] 袁东明,史晓东.现代数字电路与逻辑设计实验教程[M].北京:北京邮电大学出版社,2011.

[12] 宋泽明,陈文楷.基于VHDL的有限状态机设计[J].北京工业大学学报,2005,31(1): 21-24.

[13] 单长虹.用VHDL设计有限状态机的方法[J].电子技术应用,2001,27(7):11-13.

[14] 秦磊华,王小兰.EDA仿真在组成原理设计性实验中的应用[J],实验室研究与探索,2009,28(4):79-82.

[15] 董秀洁,杨 艳,周 游.FPGA/CPLD选型与设计优化[J].化工自动化及仪表,2009,36(3): 60-63.

Design of Intelligent Combination Clock Based on CPLD

XIEHongr-ruia,SUNDan-danb,WEIXue-junb

(a. School of information and Communication Engineering; b. School of Electronic Engineering;Beijing University of Posts and Telecommunications, Beijing 100876, China)

With the development of programmable logic devices, the EDA technology has become an important means of the hardware circuit design of systems. This paper presents a design scheme which is able to quickly design and develop electron password lock based on the EDA technology and the top-down design method, and elaborates its working principles and the design method of hardware and software combination. This scheme takes the CPLD as the core. With the help of external circuit and under the Quartus II environment, the scheme is realized by using the VHDL language. The paper introduces the design process of top-level files and sub-module, which contains engineering technology, such as lattice dynamic scanning, anti-shake of button, anti-jamming and so on. It also relates to simulation and optimization. Hardware test shows that this electron password lock has the advantages of feature-rich, easy to operate, high security, simple circuit structure, high system reliability, small volume, easy to maintain and upgrade, and strong practicability.

electron password lock; CPLD; EDA; VHDL

2015-03-25

北京邮电大学教改项目(00005782)

颉洪睿(1994-),男,甘肃兰州人,本科生,主攻信息工程。E-mail:x316639495@126.com

孙丹丹(1978-),女,黑龙江哈尔滨人,博士,讲师,主要从事无线移动Ad Hoc网络,宽带通信网的研究和教学。

Tel:010-62282134,E-mail:sdd661@bupt.edu.cn.

TP 312

A

1006-7167(2015)11-0099-04

猜你喜欢
密码锁状态机按键
基于有限状态机的按键检测程序设计
基于有限状态机的交会对接飞行任务规划方法
开启密码锁
数字密码锁的逻辑实现
一种多方向导光按键结构设计
双口RAM读写正确性自动测试的有限状态机控制器设计方法
基于有限状态机的STM32系统按键识别方法
解析某型号手机按键检测程序的缺陷
基于反熔丝FPGA的有限状态机加固设计
基于VHDL的一个简单Mealy状态机