毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc

上传人:爱问知识人 文档编号:3949221 上传时间:2019-10-11 格式:DOC 页数:54 大小:14.11MB
返回 下载 相关 举报
毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc_第1页
第1页 / 共54页
毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc_第2页
第2页 / 共54页
毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc_第3页
第3页 / 共54页
毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc_第4页
第4页 / 共54页
毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于VHDL的多功能电子密码锁设计.doc(54页珍藏版)》请在三一文库上搜索。

1、 学 位 论 文 诚 信 声 明 书本人郑重声明:所呈交的学位论文(设计)是我个人在导师指导下进行的研究(设计)工作及取得的研究(设计)成果。除了文中加以标注和致谢的地方外,论文(设计)中不包含其他人或集体已经公开发表或撰写过的研究(设计)成果,也不包含本人或其他人在其它单位已申请学位或为其他用途使用过的成果。与我一同工作的同志对本研究(设计)所做的任何贡献均已在论文中做了明确的说明并表示了致谢。申请学位论文(设计)与资料若有不实之处,本人愿承担一切相关责任。 学位论文(设计)作者签名: 日期: 学 位 论 文 知 识 产 权 声 明 书本人完全了解学校有关保护知识产权的规定,即:在校期间所做

2、论文(设计)工作的知识产权属西安科技大学所有。学校有权保留并向国家有关部门或机构送交论文的复印件和电子版。本人允许论文(设计)被查阅和借阅;学校可以公布本学位论文(设计)的全部或部分内容并将有关内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存和汇编本学位论文。保密论文待解密后适用本声明。学位论文(设计)作者签名: 指导教师签名: 年 月 日论文题目: 基于VHDL的多功能电子密码锁设计专 业: 本 科 生: (签名)_指导教师: (签名)_ 摘 要随着社会的发展,安全防盗受到人们的重视。而锁一直都是人们的防盗首选。首先需能防盗且要实用方便。在现今社会技术环境下电子密码锁已成一种

3、趋势。本设计采用FPGA设计一个具有6位密码的电子密码锁并具有火灾报警和数字时钟功能。论文的硬件部分以EP1C3T144C8芯片为核心的开发板、4*4矩阵键盘、数码管、发光二极管、蜂鸣器等组成。软件以VHDL语言为基础在FPGA平台上设计。电子密码锁由分频模块、消抖模块、键盘扫描模块、密码控制模块、密码显示模块组成,实现了密码清除、密码修改、暗文输入、明文输入、上锁、解锁、错误报警的功能;火灾报警模块具有温度显示、报警功能;数字时钟模块显示时钟并可调。该电子锁有稳定性高、功耗低、防盗性强、可拓展等功能。可将其用于房门、保险柜等地方。本设计使用VHDL语言,产品可升级,可经过改造变为更优良的系统

4、。关键词:密码锁,VHDL,FPGA,EP1C3T144C8Subject: Design of electronic cipher lock based on VHDLSpecialty: MicroelectronicsName: Luo Xiangjun (Signature) _Instructor: Yue Gaili (Signature) _ ABSTRACTWith the development of society, people pay attention to safety precautions. The lock has been the peoples secur

5、ity choice. First, energy security and the need to be practical and convenient. In todays society technology environment electronic locks become a trend. This design uses an FPGA design have electronic locks 6 passwords.Hardware part of the thesis to EP1C3T144C8 chip as the core of the development b

6、oard, 4 * 4 matrix keyboard, LED, light emitting diodes, buzzer and so on. VHDL language based software design on an FPGA platform. Electronic locks generally comprises frequency module, debounce module, the keyboard scan module, password control module, the password display modules, to achieve a pa

7、ssword removal, password changes, the ciphertext input in plain text, lock, unlock, error alarm function .The electronic lock has high stability, low power consumption, strong security, scalability, and other functions. It can be used for door, safes and other places. The design uses VHDL language,

8、the product can be upgraded, can be revamped into a better system.KEY WORDS:Password lock, VHDL, FPGA, EP1C3T144C8 目 录第1章 绪论11.1 密码锁的研究背景及意义11.2 密码锁的研究现状及发展趋势21.3 本课题的主要研究内容21.4 本章小结3第2章 设计平台介绍42.1 FPGA简介4 2.1.1 FPGA工作原理4 2.1.2 FPGA基本特点4 2.2 Quartus II简介52.3 VHDL介绍52.4 本章小结7第3章 密码锁设计8 3.1 按键模块9 3.2

9、消抖模块13 3.3 分频模块14 3.4 密码控制模块18 3.5 初始密码寄存器模块21 3.6 密码译码模块22 3.7 本章小结27第4章 仿真和硬件验证244.1 模块仿真254.1.1 分频模块25 4.1.2 消抖模块25 4.1.3 键盘扫描模块26 4.1.4 密码控制模块264.1.5 密码译码模块284.2 硬件验证284.2.1 暗文密码输入284.2.2 明文密码输入294.2.3 密码输入正确294.2.4 密码输入错误304.3 本章小结30第5章 结论31参考文献32致谢33附录34附录1 硬件原理图34附录2 系统顶层文件图35附录3 硬件实物图36附录4 部

10、分模块代码37 IV第1章 绪论1.1 密码锁的研究背景及意义一直锁都是人们的常用防盗工具,随着社会发展,安全防盗问题越来越受到人们重视。传统的机械锁由于其密码量少,构造简易,不够稳定易破解,结构上的缺陷已不能满足当前社会的需求,在人常变化的地方问题更加突出,如办公室、宾馆、等场所。电子密码锁是使用了电子技术、数字技术等现代化产品,由于其稳定性好,不容易被破解,使用方便简单,得到了广大用户的赞赏。而当下很多密码锁使用单片机进行研发,电路繁琐、稳定性不好、性能灵活度不高、可移植性差。所以电子密码锁的防盗性和与稳定性一直是制造商所关注的主要内容。电子密码锁是是一种安全性高、稳定性好、较实用的数字电

11、路。电子密码锁的主要在于对对某些东西或某些地方进行保护,以防止不具有操作权限的人使用某些设施或者进行不当操作,比如ATM机、门禁系统或者保险箱中都有电子密码锁。在电子技术不断迅速发展的今天,具有防盗报警等功能的多功能电子密码锁代替弹子锁和稳定性、安全性低、易用性差的机械式密码锁已成为一种趋势。电子密码锁具有机械锁所不具有的优势,它不但可以完成机械锁本身所具有的功能,还可以拥有其他功能,如记忆、火灾预警、防盗报警等,电子密码锁以其稳定高、制作成本低、易操作、灵活性好等优点受到广大用户的赞赏。通常不同的电子密码锁拥有不一样的功能和操作,但其基本操作流程是一至的,开始先输入密码,然后由进行密码对比,

12、最后根据密码对比的结果来进行处理。使用大规模、超大规模可编程逻辑器件与EDA(电子设计自动化)技术已经成为现代数字技术发展的潮流,HDL(硬件描述语言)很适用于可编程逻辑器件的研发设计。尤其是在大容量CPLD(复杂可编程逻辑器件)和FPGA(现场可编程门阵列)的设计中,若采用以往的布尔方程描述方式或门级描述方式,很难迅速高效地完成。VHDL(高速集成电路描述语言) 能提供高级语言结构,能方便地描述大型电路,简洁了使用者的操作,有效快速地完成设计。1.2 密码锁的研究现状及发展趋势 在日常生活中,锁具被普遍使用,锁具的发展大致可分为三个阶段:木质锁、机械锁、电子锁以及用于特定场合的安全密码锁。目

13、前使用范围最广的是机械锁,这种锁结构简单且价格便宜,但安全性差。因为其工作原理是通过钥匙齿形来与锁芯配合完成的,一旦拿到钥匙就可开门,而且不只是钥匙,某些不法分子通过其他工具也可在没钥匙的情况下打开大门。并且这种机械锁多为金属制造易损坏、变形、生锈从而给人们的生活带来不便。而电子密码锁的安全性、方便性就高于机械锁。首先有了电子锁就可以不用佩戴钥匙并且再也不用烦恼钥匙丢了怎么办,其次以具有6位密码的电子锁而言其密码的组合有百万次,不用担心会被破解掉。一直以来人们从未中断过对锁的研究,因为锁一直是人们的安全保障,现在社会上更是出现了各种锁,比如磁卡锁、指纹锁、人脸识别、瞳孔识别等锁。然而由于制作成

14、本及使用局限性使得其并没有得到广泛使用,同样电子锁也存在其局限性,比如需电源提供能量。但随着集成电路的发展使得电子密码锁的体积也越来越小,同时功耗也在降低,稳定性和可靠性也得到提高。最终电子密码锁的局限会得到改善使得其得以普遍使用。目前电子密码锁的功能已变得多样化,不在仅限于开锁上锁同时还具有防撬、报警、记录、显示功能。在这方面上电子锁是机械锁所不能比拟的,其发展前景是远远超出了机械锁,而机械锁由于其结构上的局限使其不具有电子锁的发展前景。并且使用FPGA开发的电子锁具有良好的移植性,可配合其他电路形成更强大门禁系统,在以后的发展中电子密码锁必可获得迅速的发展及更广泛的应用。1.3 本课题的主

15、要研究内容1)基于VHDL语言编写出可实现多功能的电子密码锁。2)构思密码锁的总体设计方案,根据总体设计方案设计出相应的子模块。3)实现密码清除、密码修改、上锁、解锁、错误报警、温度显示、火灾报警、时钟显示等功能。4)通过对设计的分析,熟悉EDA设计的方法、内容及步骤。1.4 本章小结本章对电子密码锁的研究背景、研究意义、研究现状、发展趋势及研究内容进行了简单介绍,确定了密码锁的开发环境、仿真软件和设计语言,并明确了密码锁的设计方案和具体的开发步骤。第2章 设计平台介绍2.1 FPGA简介现场可编程门阵列FPGA器件是Xilinx公司与1985年首家推出,他是一种新型高密度PLD,采用CMOS

16、SRAM工艺制作。FPGA的结构与门阵列PLD不同,其内部由许多独立可编程逻辑模块组成,逻辑快之间可以灵活的相互连接。FPGA结构一般分为三部分:可编程逻辑快、可编程I/O模块以及可编程内部连线。配置数功能据存放在内部SRAM或者熔丝图上,基于SRAM的的FPGA器件工作前需要从外部加载配置数据。配置数据可存储在片外的EPROM或者计算机上,设计人员可以控制加载控制,在现场修改器件的逻辑功能,即所谓现场可编程。2.1.1 FPGA工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Bloc

17、k)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能

18、以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。2.1.2 FPGA基本特点(1) 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。(2) FPGA可做其它全定制或半定制ASIC电路的中试样片。(3) FPGA内部有丰富的触发器和IO引脚。(4) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。(5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状

19、态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。2.2 QuartusII简介 QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUSII的更新换代产品,其界面友好,使用便捷。QuartusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(

20、SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。QuartusII设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusII也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA Compiler II,并能直接调用这些工具。同样,Quartus II具有仿真功能,同时也支持第三方仿真工具,如ModelSim。此外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发和数

21、字通信模块的开发。Quartus II包括模块化得编译器。编译器包括的功能模块由分析/综合器(Analysis & Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。可以通过选择Start Compiler来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool(Tools菜单),在Comp

22、iler Tool窗口中运行该模块来启动编译器模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。Quartus II编译器支持的硬件描述语言有VHDL、Verilog和AHDL。Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。可以使用Quartus II带有的RTL Viewer观察综合后的RTL图。2.3 VHDL介绍硬件描述语言(HDL-Hardware Descr

23、iption Language)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计,而且VHDL语言可读性强,易于修改和发现错误。HDL是电子系统硬件行为描述、结构描述、数据流描述的语言。目前利用硬件描述语言可以进行数字电子系统的设计。随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计,也正在探索中。硬件描述的语言种类很多,有的从PASCAL发展而来,也有一些从C语言发展而来。有些HDL成为IEEE标准,但大部分是本企业标准。HDL发展的技术源头是:在HDL形成发展之前,

24、已有了许多程序设计语言,如汇编、C、PASCAL、FORTRAN、PROLOG等。这些语言运行在不同硬件平台、不同的操作环境中,它们适合于描述过程和算法,不适合作硬件描述。在利用EDA工具进行电子设计时,逻辑图、分立电子元件作为整个越来越复杂的电子系统的设计已不适用。任何一种EDA工具,都需要一种硬件描述语言作为EDA工具的工作语言。早期的硬件描述语言,如ABEL-HDL、AHDL,是由不同的EDA厂商开发的,互相不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上缺陷,1985年美国国防部正式推出了VHDL(Very High Speed IC Hardware Descr

25、iption Language)语言,即超高速集成电路硬件描述语言;1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD-1076)。VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL还具有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,只需花较少的精力用于物理实现。VHDL可以用简洁明确的代码描述来进行复杂控制逻辑

26、的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。VHDL的设计不依赖于特定的器件,方便了工艺的转换。VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求 ,自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,实现电子设计自动化。其中电子设计自动化EDA的关键技术之一就是可以用硬件描述语言来描述硬件电路。VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在20世纪80年代开发的HDL,现在已成为 IEEE承认的标准硬件描述语言。VHDL 支持硬件的设计、验证、综合和测试,以及硬

27、件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。VHDL主要用于描述数字系统的结构、行为和功能,其程序结构特点是将一个电路模块或一个系统分成端口和内部功能算法实现两部分。对于一个电路模块或者数字系统而言,定义了外部端口后,一旦内部功能算法完成后,其他系统可以直接依据外部端口调用该电路模块或数字系统,而不必知道其内部结构和算法。VHDL 的特点使得电子系统新的设计方法“自顶向下”设计方法更加容易实现。可以先对整个系统进行方案设计,按功能划分成若干单元模块,然后对每个单元模块进一步细分,直到简单实现的单元电路。VHDL语言的设计方

28、法是一种高层次的设计方法,也称为系统级的设计方法,其设计步骤如下: 第一步:按照“自顶向下”的设计方法进行系统划分。第二步:输入VHDL语言代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。第三步:将以上的设计输入编译成标准的VHDL文件。对于大型设计,还要进行代码级的功能仿真,主要是检验系统功能设计的正确性,因为对于大型设计,综合、适配要花费数小时,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间,一般情况下,可略去这一仿真步骤。第四步:利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网表文件,这

29、是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。综合后,可利用产生的网表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,较为粗略。一般设计,这一仿真步骤也可略去。第五步:利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。适配完成后,产生多项设计结果:(1) 适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(2) 适配后的仿真模型;(3) 器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得

30、到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。第六步:将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。如果是大批量产品开发,通过更换相应的厂家综合库,可以很容易转由ASIC形式实现。2.4 本章小结本章内容简述了密码锁设计所使用的FPGA开发环境,介绍了FPGA的工作原理和基本特点。并简述仿真所使用的QuartusII软件和开发所使用的VHDL语言,介绍了“自顶向下”的设计方法。第3章 密码锁设计 本设计以EP1C3T144C8

31、为核心,运用VHDL语言进行程序编写,配以相应硬件电路,实现目标功能。本设计的硬件由4*4矩阵键盘电路、DS18B20、数码管显示电路、蜂鸣器电路、LED电路等组成。其硬件框图如图3.1所示。EP1C3T144C84*4矩阵键盘数码管电路蜂鸣器电路DS18B20LED电路 图3.1硬件框图矩阵键盘用于密码数字键(09)、功能键(密码擦除、密码更改、上锁、解锁、转态切换)输入,DS18B20提供温度信号,数码管用于显示温度和密码,采用两个四位一体共阳数码管,数码管前两位显示温度,后六位通过状态切换键显示密码或时钟。蜂鸣器用于报警(密码输错三次),LED用于模拟开门信号(密码正确时绿灯亮,密码错误

32、红灯亮)。3.1 按键模块 图3.2 4*4矩阵键盘原理图图3.2所示的矩阵键盘使用的是复位开关式按键,VCC接5V电源,R1至R4为10K电阻,ABCD四引脚接FPGA芯片的输出,EFGH四引脚接FPGA的输入。扫描依次为01111011110111100111从ABCD四引脚输入键盘,当扫描信号为0111时,A引脚被置为低电平,此时若S1键按下则AE引脚导通,故E引脚同样变为低电平,ABCDEFGH的状态为01110111,若S2键按下则F引脚为低电平,ABCDEFGH的状态为01111011,以此类推可得其他按键的引脚状态。123A456B789C*0#D 图3.3键盘图数字键1键状态为

33、01110111编码0001,2键状态为01111011编码0010,3键状态为01111101编码0011,4键状态为10110111编码0100,5键状态为10111011编码0101,6键状态为10111101编码0110,7键状态为11010111编码0111,8键状态为11011011编码1000,9键状态为11011110编码1001,0键状态为11101011编码0000。功能键A键(密码清除键:密码输错时,按下此键清除密码)状态为01111110编码0011,B键(密码切换键:密码输入时按下此键可不显示密码)状态为101111110编码0110,C键(上锁键)状态为110111

34、10编码0100,D键(解锁键)状态为11101110编码0001,*键(密码更改键)状态为11100111编码1000,#键(状态切换键:切换密码和时钟显示)状态为11101101编码0010。 图3.4 键盘扫描模块Clk_in为100HZ时钟,in0至in3接键盘EFGH引脚,row3.0接ABCD引脚,data_n为数字键编码输出,data_f为功能键编码输出,flag_n为数字键标志位:当有数字键按下时flag_n为1否则为0。,flag_f为功能键标志位:当有功能键按下时flag_n为1否则为0。代码如下library ieee;use ieee.std_logic_1164.al

35、l;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jpsm2 isport(clk_in:in std_logic; in0:in std_logic; -in0为0时代表第四列有键按下 in1:in std_logic; -in1为0时代表第三列有键按下 in2:in std_logic; -in2为0时代表第二列有键按下 in3:in std_logic; -in1为0时代表第一列有键按下 row:out std_logic_vector(3 downto 0); -扫描行的信号 data_n:out

36、 std_logic_vector(3 downto 0);-数字键输出 data_f:out std_logic_vector(3 downto 0);-功能键输出 flag_n:out std_logic;-数字键标志位 flag_f:out std_logic);-功能键标志位 end entity jpsm2;architecture art of jpsm2 is signal scan_key:std_logic_vector(3 downto 0); signal key_in:std_logic_vector(3 downto 0); signal z:std_logic_ve

37、ctor(7 downto 0); signal cnt:std_logic_vector(1 downto 0); signal n,f:std_logic_vector(3 downto 0);beginkey_in=in0&in1&in2&in3;row=scan_key;data_n=n;data_f=f;flag_n=not(n(3) and n(2) and n(1) and n(0);flag_f=not(f(3) and f(2) and f(1) and f(0);p1:process(clk_in) -sm process begin if(clk_inevent and

38、clk_in=1)then cntscan_keyscan_keyscan_keyscan_key=0111; -扫描第4行 end case; end process; process(clk_in) beginzdata_ndata_ndata_ndata_ndata_ndata_ndata_ndata_ndata_ndata_ndata_ndata_fdata_fdata_fdata_fdata_fdata_fdata_f=1111; end case;end if;end process;end art;3.2 键盘消抖在按键合下和放开的刹那,输入信号会产生抖动即毛刺,如果不实施去抖动

39、处理,系统会将按键抖动识别为是用户的有效输入,从而发生误操作,导致错误的结果。按键的这种机械抖动是不可避免的,因此需进行消抖处理以消除抖动的影响,从而防止错误的产生。此处使用计数消抖法进行机械按键的去抖动处理:当输入为低电平时(此处设计按键低电平有效)对其计数,只有当低电平保持一段时间不发生改变即计数达到一定值,才确认它为有效;毛刺的续时间较短一般而言达不到计数值,从而实现去消抖的目的。 图3.5 键盘消抖模块clk接的是1KHZ时钟信号(由分频模块而来),周期为1ms,每个时钟上升沿到来时记一次数,计满5次时若sin未发生改变则sout=sin。代码如下:library ieee;use i

40、eee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jsxd isport(clk,sin:in std_logic; sout:out std_logic);end jsxd;architecture beh of jsxd issignal cntt:std_logic_vector(2 downto 0);beginprocess(clk)beginif (clkevent and clk=1) then if(sin=1) then sout=1;cnt=0

41、00; elsif(sin=0)then -当低电平有效信号输入时进行检测 if(cnt=100) then cnt=000;sout=0;-若计满,则输出低电平else cnt=cnt+1;-当有低电平信号输入时开始计数end if; end if;end if;end process;end beh; 3.3 分频模块开发板上的晶振频率为25MHZ使用时需分频得到需要的时钟频率。分频原理如下:确定一个N值,计数器从0到N计N+1个数,每计满N+1个数时,就将输入信号翻转一次,这样频率就变为原频率的12(N+1)。例如当计数值N=4时,从0到4计5个数,把输入翻转一次,再计5个数再翻转一次,这样就相当于输入10个原时钟信号得到一个新的时钟信号,实现了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1