基于FPGA的电子密码锁设计.doc
《基于FPGA的电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的电子密码锁设计.doc(43页珍藏版)》请在冰点文库上搜索。
摘要
VHDL非常适用于可编程逻辑器件的应用设计。
尤其在大容量CPLD和FPGA的应用设计中,若采用以往的布尔方程或门级描述方式,很难快速有效地完成。
VHDL能提供高级语言结构,方便地描述大型电路,快速地完成设计。
它是一种标准语言,它的设计描述可被不同的工具所支持,可用不同器件来实现。
文中以基于FPGA的电子密码锁的设计为实例,从方案的确定,各阶层的划分,VHDL的应用,采用了VHDL自顶向下的设计方法。
它是一种高效率设计出它体积小、功耗低、价格便宜、安全可靠、维护和升级都十分方便的电子密码锁电路。
关键词:
VHDL;自顶向下的设计方法;数字密码锁;EDA;数字系统
ABSTRACT
VHDLisverysuitabletothedesignofprogrammablelogicdevices.Itisdifficulttodesignlargeca-pacityCPLDandFPGAwiththedescriptionmethodofBooleanequationsorofgates.VHDLcanprovidehighlevellanguagestructure,describelargescalecircuitconvenientlyandcompletedesignrapidly.Itisastandardlanguage.Itsdesigndescriptioncanbesupportedbydifferenttoolsandimplementedbydifferentdevices.Thispaperintro-ducestheVHDLtop-downdesignmethodincludingschemedetermination,hierarchydivision,andInordertoFPGA-basedelectronicpassword-lockdesignasanexample.Itisahighlyefficientdesignofitssmallsize,lowpowerconsumption,cheap,safeandreliable,maintenanceandupgradesareveryconvenientelectronicpasswordlockcircuit.
Keywords:
VHDL;top-downdesignmethod;digitalcodelock;EDA;digitalsystem
目录
摘要…………………………………………………………
ABSTRACT……………………………………………………
第一章总体设计
1.1设计任务和要求………………………………………………………………
1.2设计方案的比较论证……………………………………………………………
1.3基于FPGA电子密码锁总体设计框图…………………………………………
第二章电子密码锁单元电路设计
2.1可编程逻辑器件………………………………………………………………
2.1.1FPGA器件的特点…………………………………………………………
2.1.2设计器件的选择…………………………………………………………
2.1.3设计方法采用自顶向下的设计…………………………………………
2.2功能电路的设计………………………………………………………………
2.2.1键盘扫描电路设计…………………………………………………………
2.2.2时序产生电路设计…………………………………………………………
2.2.3键盘消抖电路设计…………………………………………………………
2.2.4键盘译码电路设计…………………………………………………………
2.2.5按键存储电路设计…………………………………………………………
第三章电子密码锁控制电路设计
3.1数字按键输入部分………………………………………………………………
3.2功能键输入部分…………………………………………………………………
3.3三种工作模式……………………………………………………………………
3.4系统各功能模块设计…………………………………………………………
第四章电子密码锁显示电路设计
4.1数据选择电路……………………………………………………………………
4.1.1电路原理…………………………………………………………………
4.2BCD对七段显示器译码电路……………………………………………………
4.2.174LS48引脚图…………………………………………………………4.2.274LS48内部引脚功能………………………………………………
4.2.3BCD对七段显示器译码电路原理……………………………………
4.3七段显示器扫描电路………………………………………………………………
第五章程序调试、波形仿真、结论分析
5.1EDA工具简介………………………………………………………………………
5.2FPGA的器件的配置与下载……………………………………………………
5.2.1配置方式………………………………………………………………5.2.2基于差分的下载电缆……………………………………………………
5.3程序调试、波形仿真………………………………………………………………
5.3.1键盘扫描电路程序波形仿真…………………………………………
5.3.2时序产生电路程序波形仿真…………………………………………
5.3.3键盘消抖电路程序波形仿真…………………………………………
5.3.4键盘译码电路程序波形仿真…………………………………………
5.3.5按键存储电路程序波形仿真…………………………………………
第六章结语……………………………………………………………………
致谢…………………………………………………………………………
参考文献…………………………………………………………………………
附程序………………………………………………………………………………
第一章电子密码锁总体设计
随着电子技术的发展,电子密码锁是现代社会用的比较广泛的一种智能工具,具有防盗报警、语音提示等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。
目前大部分密码锁采用单片机进行设计,电路较复杂,性能不够灵活。
本文采用先进的EDA(电子设计自动化)技术,利用MAXPUS‖工作平台和VHDL(超高速集成电路硬件描述语言),设计了一种新型的电子密码锁。
它能实现数码输入、数码清除、密码变更、激活电锁、解除电锁、显示器开关和万用密码等功能。
用FPGA(现场可编程门阵列)芯片和实现。
由于充分利用了FPGA芯片密度大、功耗低、可重复编程和具有嵌入式阵列块的结构特点,,因而该密码锁体积小、功耗低、价格低、安全可靠、具有智能语音提示、维护和升级方便。
根据设计的器件、价格成本、可靠性的考虑,可以有不同的设计方案,在设计之前就对几种方案进行论证,首先介绍一下本次设计的电子密码锁的任务和设计要求。
1.1设计任务和要求
设计一个基于FPGA的电子密码锁,通过基于可编程逻辑器件FPGA的方法实现。
要求实现从键盘输入四位密码数字,能在数码管上显示其数字。
其中输入的密码数字是可清除、改变的。
1.2设计方案的比较论证
设计电子密码锁的方案很多,现在讨论常见的三种设计.
方案一:
分立元件设计的电子密码锁,全部设计均采用硬件来完成其功能,这种设计需要的元件多,在组装和焊接过程中易出错。
而且调试不方便,使用寿命较短。
方案二:
设计采用基于单片机设计,利用51系列单片机为核心。
目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。
但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,因此整个系统显得十分复杂。
方案三:
利用FPGA来完成设计。
如下图1—1所示整个系统由四部分组成:
键盘模块、FPGA控制模块、显示模块、时钟脉冲器
图1—1系统框图
FPGA编程灵活,可减少硬件的使用,查错,改错容易,整个系统设计只有三部分组成——4×4矩阵键盘接口电路、密码锁的控制电路设计、输出七段显示电路的设计。
用VHDL硬件编程语言编程,简单灵活,实现效率高,使用方便可靠。
综上所述,选择方案三来完成设计更方便更合理更简洁。
1.3基于FPGA电子密码锁总体设计框图
时钟发生器
时序产生电路
键盘扫描电路
键盘
弹跳消斗电路
键盘译码电路
寄存器清除信号发生电路
开关门锁电路
按键数据缓存器
数字比较电路
BCD七段译码电路
图1-2总体结构框图
第一章电子密码锁单元电路设计
2.1可编程逻辑器件
当今社会是数字集成电路广泛应用的社会,数字集成电路本身在不断的更新换代,由早期的电子管,晶体管,中小规模集成电路到超大规模集成电路。
在现代复杂数字逻辑设计中,专用集成电路越来越广泛。
而可编程逻辑器件兼有专有集成电路的高集成度,高可靠性的优点,有克服了专有集成电路设计时间长,投资大,灵活性差的缺点,而且可编程逻辑器件设计灵活,发现错误容易,逐步成为复杂数字逻辑设计的理想器件,在某些专用集成设计中,可编程逻辑设计为实现功能作为必须的一步。
2.1.1FPGA器件的特点
在可编程逻辑设计器件中,比较典型的是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,本设计采用常用的现场可编程门阵列FPGA设计。
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须将用通用的EPROM、PROM编程器即可。
一个典型的FPGA芯片是围绕一个大的二维可编程逻辑块组织,在芯片的周围还有若干输出输入块,内部芯片体系与芯片外部电路之间的接口。
包括送入和从可编程逻辑块中读出的逻辑信号,编程或者是调试所需的信号。
在输入和输出块与可编程逻辑块之间也会有内部连线,同时还有各种开关,用于连接和控制逻辑块与输入输出块。
图2-1FPGA内部结构图
FPGA的基本结构可由可编程逻辑功能块(CLB),接口功能块(IOB)和可编程内
部连线(PI)三大部分组成,如图2-1所示。
其中(CLB)在芯片上按照矩阵排列,定义逻辑基本功能,(IOB)用于芯片周围的输入输出,实现内部逻辑和器件封装引脚之间的接口联系;(PI)在其周围起连接的作用,完成各个模块信号之间的传递。
在FPGA内部中的可编程逻辑块(CLB)除实现逻辑功能外,还具有数据存储的功能,同时也具有用于数据查找的功能。
通过逻辑查找表法将产生的逻辑地址,映射成查找表(LUT)中对应的数字信号数据,实现数据的查找。
内部原理图如3-2所示。
2.1.2设计器件的选择
设计电子密码锁时,选择FPGA器件EPM7128SLC84,它是Altera公司生产的一中高性能的可编程器件。
以下就是EPM7128SLC84可编程器件简单介绍:
EPM7128SLC84是MAX7000系列器件,采用0.8mCMOSEPROM技术制造。
是高密度、高性能的CMOSEPLD(可擦除可编程的逻辑器件)器件。
它分为8个逻辑阵列块(LAB),每一LAB又分为16个宏单元。
其宏单元由逻辑阵列、乘积项选择矩阵和可编程触发器三个功能块组成。
它共有2500个可用门,128个宏单元组成。
100个外部引脚。
8个逻辑阵列块通过可编程连线阵列(PIA)与全局总线连在一起。
全局总线由所有的专用输入、I/O引脚和宏单元馈给信号。
EPM7128sLC84的4个专用输入,既可以作为通用输入,也可以作为每个宏单元和I/O引脚的高速、全局控制信号,如时钟(Clock)、清除(Clear)和输出(OutputEnable)等。
逻辑阵列实现组合逻辑,给每个宏单元提供5个乘积项。
“乘积项选择矩阵”分配这些乘积项作为到“或”门和“异或”门的主要逻辑输入,以实现组合逻辑函数,或者把这些乘积项作为宏单元中触发器的辅助输入。
比如:
清除、置位、时钟和时钟使能控制。
每个宏单元的1个乘积项可以反相后回送到逻辑阵列。
这个“可共享”的乘积项能够连接到同一个LAB中任何其它乘积项上。
根据设计的逻辑需要,MAx+PLusl开发系统将自动优化乘积项的分配。
每个宏单元的触发器可以单独地编程为具有可编程时钟控制的D触发器、T触发器、SR触发器或JK触发器。
另外只要需要,也可将触发器旁路,现组合逻辑工作方式。
每个触发器也支持异步清零和异步置位功能,乘积项选择矩阵分配乘积项来控制这些操作。
MAX70OO中有可编程连线阵列(PIA)、IlO控制,并且编程具有保密性,另外还增加了可编程速度/功率控制和电压摆率的控制。
2.1.3设计方法采用自顶向下的设计
传统的电子设计通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后再根据主时钟的功能要求将它们组合成更大的功能模块,以此流程,逐步向上递推,这种设计不仅实现效率低,成本高,而且还易出错。
而自顶向下的设计则可以弥补不足,这种设计是首先从系统设计入手,在对顶层进行功能框图的划分和结构设计。
在框图一级进行仿真、纠错,再对高层次的系统进行行为描述,在系统一级进行验证。
由于设计主要仿真和调试过程是在高层上完成的,这有利于及早发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功仿真的工作量,提高了一次设计成功率。
2.2功能电路的设计
4位数的电子密码锁的设计由三部分组成:
①3×4矩阵键盘接口电路的设计(内容包括:
时序产生电路,键盘扫描电路,弹跳消除电路,键盘译码电路,按键存储电路),②密码锁的控制电路设计(内容包括:
数字按键的数字输入、存储及清除,功能按键的功能设计,移位寄存器的设计与控制,密码清除、变更、存储电路,密码核对、激活及解除电锁电路);③输出七段显示电路的设计(内容包括:
数据选择电路,BCD对七段显示器译码电路,七段显示器扫描电路)。
每一部分都包含了若干子电路,将各电路组合起来,就构成了一个整体。
电子密码锁的主要功能包括:
数码输入、数码清除、密码变更、激活电锁、解除电锁、显示器开关和万用密码
2.2.1、键盘矩正电路设计
键盘接口电路的设计内容包括:
键盘矩阵的工作原理及运用、时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键存储电路。
如下图所示是电子密码锁的输入电路框图
3×4键盘接口电路:
如下图2—2所示:
按键存储
键盘译码
1
2
3
4
5
6
7
8
9
0
*
#
清抖电路
键盘扫描
矩阵式键盘工作原理:
矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各种电子产品中被广泛应用。
如图所示为一3×4矩阵式键盘。
矩阵式键盘以行、列形式排列,图1-1中为4行3列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3—KEYR0为扫描信号,其中的某一位为0即扫描其中的一行。
键盘扫描信号KEYR3与第一行相连,KEYR2与第二行相连,依此类推。
很显然,扫描信号的变化顺序为:
0111、1011、1101、1110,周而复始。
当扫描信号为0111时,扫描KEYR3.0这一行,当扫描信号为1011时,扫描KEYR3.1这一行,当扫描信号为1101时,扫描KEYR3.2这一行,当扫描信号为1110时,扫描KEYR3.3这一行。
在扫描的过程中,每扫描一行就检查这一行有没有键被按下当有键按下时,对应的键位就为逻辑0状态,从而从KEYC2..0读出的键值相应列为0.具体情况如表1-2所示:
若从KEYC2..0读出的值全为1时,表示没有键被按下,则不进行按键的处理。
如果的键被按下,则将KEYC2..0读出的送至键盘译码电路进行译码
如图2—3所示
1
2
3
4
5
6
7
8
8
0
*
#
经上拉电阻后接VCC
。
KEYC2..0
KEYR3..0
键盘扫描与其对应的键值的关系(如下表1-1)
KEYR3..0
KEYR2..0
对应的按键
0111
011
1
101
2
110
3
1011
011
4
101
5
110
6
1101
011
7
101
8
110
9
1110
011
0
101
*
110
#
2.2.2时序产生电路
在一个系统的设计中,往往需要多种时钟信号,最为方便的方法是利用一个自由计数器来产生各种需要的频率。
本电路需要:
系统主时钟、消抖取样时钟和动态扫描时钟。
系统所需要的时钟由计数器来提供,计数器是用来对输入脉冲的数目进行计数的时序逻辑部件。
本次设计就是采用自由计数器来提供所须的频率。
计数器的分类
按计数脉冲的输入方式分:
同步计数和异步计数。
异步计数器,计数脉冲仅输入到最低位触发器的时钟输入端,同步计数器则同时输入到所有触发器的时钟输入端。
后者计数速度高,因而得到广泛应用。
计数器的基本特征——模
计数器电路的主要部分由一组触发器构成。
一组n个触发器共有2t1个状态。
实际64计数器可能只需要K个状态,则K<211。
随着输入脉冲数目的变化,计数器经历预先设定的K个不同的状态So,Sl,…,SK—l序列。
在Sx—l状态下,再输入一个计数脉冲,计数器就返回到马状态,形成一个工作周期。
在计数器的整个工作周期内,从初始状态开始并返回到初始状态以前的全部状态数,称为计数器的模。
例如,若计数器的全部状态数为K,就称为模K计数器。
模K加法计数器的状态转换可用下式描述:
Si41一Si十1(dK)
其中mod为modulo(模)的缩写。
计数器的模是计数器的重要特征。
实际上,各种不同进位制的计数器可用其模来命名,例如4位二进制计数器可作为十六进制计数器使用,于是可称为模16计数器。
通过设计电路改变模的值,可以得到十六以内的任意进制计数器,如后述。
可编程计数器的使用方法实际上是通过软件程序改变计数器的模
2.2.4键盘消抖电路
按键消抖动电路(又叫弹跳消除电路)即顶层V佃L文本的debounuin:
block模块。
因为按键大多是机械式开关结构,在开关切换的瞬间会在接触点弹性簧片间出现若干个随机的来回弹跳的抖动现象,抖动信号的周期大致在20—40M,对于激活关闭一般电器(如电灯)并不会有何影响,但对于灵敏度较高的数字逻辑电路系统,却有可能产生误动作而出错。
为此需要设置与某一时钟同步的按键消抖动电路,且必须合理地选择同步时钟的工作频率,达到既要照顾响应按键动作的精度(及时快速响应),又要可靠地消抖动(单次输出,而不是两次或多次输出,那样依然有抖动),但是,这两个要求是互相矛盾的,要在调试中兼顾。
若同步时钟的工作频率不合适,弹跳现象就不能很好消除,。
及时快速响应的指标可能很高,但消抖动效果却不理想。
在开关切换的瞬间会在接解点出现来回弹跳的现象,其现象可用图2—3表示:
由图可见,虽然只是按了一次键,实际产生的按键信号却不只跳动一次,经过取样信号的检查后,将会造成误码判,认为是按了两次键。
如果调整取样频率,可以发现抖现象得到了改善。
按键信号
取样信号
取样结果
图2—4
调整取样频率后的结果为:
按键信号
取样信号
取样结果
图2—5
因此必须加上弹跳消除电路,且仔细选择同步时钟的工作频率,以避免误操作信号的发生。
注意,弹跳消除电路所使用脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;通常将扫描电路或LED显示电路的工作频率定在24Ik左右,两者的工作频率是通常的4倍或高。
2.2.5键盘译码电路
即顶层VHDL文本的KEYBOARD_DEC1模块。
键盘中的按键分为数字键和功能键,键盘参数如表2—3所示。
数字键主要用来输入数字,但从表中发现,键盘所产生的输出的四个状态0111、1011、1101、1110无法拿来直接使用;另外不同的数字按键也担负不同的功能,因此必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。
针对有表可以对照的电路设计,只要使用CASE—WHEN或WHEN_ELSE语句,便可轻松完成设计,详见顶层VHDL文本的keydecoder:
block模块的描述。
从前面所述的键盘扫描电路的输出可以看出,扫描得到的信号规律性不强,例如数字键主要用来输入数字,但键盘扫描输出无法拿来直接使用,必须对其进行译码才能使用。
如表所示,只要使用case…when或when…else语句,便可完成设计。
表2—3
KEYR3..0
KEYR2..0
对应按键
译码输出
功能
0111
011
1
0001
数码输入
101
2
0010
数码输入
110
3
0011
数码输入
1011
011
4
0100
数码输入
101
5
0101
数码输入
110
6
0110
数码输入
1101
011
7
0111
数码输入
101
8
1000
数码输入
110
9
1001
数码输入
1110
011
0
0100
数码输入
101
*
0000
数码输入
110
#
0001
2.2.6按键存储电路
因为每次按键都会产生新的数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将键盘扫描译码后的结果记录下来。
这一功能可以用移位寄存器来实现。
寄存器是一种常用的时序逻辑电路。
有趣的是,这种时序逻辑电路只包含存储电路。
寄存器的存储电路是由锁存器或触发器构成的,因为一个触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。
1、移位寄存器分类
移位寄存器按输入输出方式分类:
常见的移位寄存器的下列四种:
串行输入/串行输出(SISO)
串行输入/并行输出(SIPO)
并行输入/串行输出(PISO)
并行输入/并行输出(PIPO)
2、单向串行移位寄存器(用