摘要VHDL非常适用于可编程逻辑器件的应用设计。尤其在大容量CPLD和FPGA的应用设计中,若采用以往的布尔方程或门级描述方式,很难快速有效地完成。VHDL能提供高级语言结构,方便地描述大型电路,快速地完成设计。它是一种标准语言,它的设计描述可被不同的工具所支持,可用不同器件来实现。文中以基于FPGA的电子密码锁的设计为实例,从方案的确定,各阶层的划分,VHDL的应用,采用了VHDL自顶向下的设计方法。它是一种高效率设计出它体积小、功耗低、价格便宜、安全可靠、维护和升级都十分方便的电子密码锁电路。关键词:VHDL;自顶向下的设计方法;数字密码锁;EDA;数字系统ABSTRACTVHDLisverysuitabletothedesignofprogrammablelogicdevices.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电子密码锁总体设计框图时序产生电路时钟发生器键盘扫描电路图1-2总体结构框图第一章电子密码锁单元电路设计2.1可编程逻辑器件当今社会是数字集成电路广泛应用的社会,数字集成电路本身在不断的更新换代,由早期的电子管,晶体管,中小规模集成电路到超大规模集成电路。在现代复杂数字逻辑设计中,专用集成电路越来越广泛。而可编程逻辑器件兼有专有集成电路的高集成度,高可靠性的优点,有克服了专有集成电路设计时间长,投资大,灵活性差的缺点,而且可编程逻辑器件设计灵活,发现错误容易,逐步成为复杂数键盘弹跳消斗电路键盘译码电路寄存器清除信号发生电路开关门锁电路数字比较电路按键数据缓存器BCD七段译码电路字逻辑设计的理想器件,在某些专用集成设计中,可编程逻辑设计为实现功能作为必须的一步。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个乘积项可以