版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 毕 业 论 文(设计)题 目: 基于VHDL的键盘扫描电路设计 系 : 机电工程系 学生:专 业: 电子信息工程 班 级:指导教师:起止日期: 2012.10.152013.01.06 2013年 1 月 6 日28 / 34基于VHDL的键盘扫描电路设计(东海科学技术学院 机电工程系, 316000)摘要随着科技的发展,时代的进步,生活的需要,在我们生活的很多地方领域,都有键盘的应用,而且它的应用非常广,当然键盘扫描的方法也有很多种。键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计成本,更可以使仪器设备的操作变得更为简单、方便、快捷,很大程度上提高系统综合性
2、能。随着信息产业和微电子技术的发展,很多系统设计技术已经成为信息产业最热门的技术之一,在很多地方上都有应用,比如航空航天、医疗保健、通讯、广播、工业、测量测试等很多热门领域。并且随着工艺的进步和技术的发展,向更广泛的应用领域扩展。本次设计主要是运用VHDL硬件描述语言和图形设计综合方法,在MAX+PLUS软件平台的环境下建立波形文件,生成电路符号,设置输入端口,实现程序的模拟仿真,得到仿真波形图,才完成了键盘扫描电路的程序设计。这个电路设计是一个关于小型的计算器的键盘按键电路的设计,主要由5个部分组成,它们分别为分频器电路、键盘扫描计数器电路、按键检测电路、按键抖动消除电路和键盘编码电路。本次
3、设计主要是设计一个4×4矩阵式的键盘扫描电路,它具有列扫描和行扫描的功能,有2个输入端口,分别为clk和col,同时也有2个输出端口,分别为row和bianma,按下按键的数据通过端口行、列线输入到FPGA芯片中去,FPGA芯片部的扫描模块会将数据传送到编码器中进行编码,最终完成本次电路的设计。在生活中是这种小型的计算器是非常常用的,虽然体型很小,但却被广泛的使用,很多其他的东西都是在这种小型的计算器的键盘的基础上设计的。关键词:键盘扫描;VHDL;MAX+PLUS;仿真AbstractWith the development of science and technology, t
4、he progress of the times, the need of the life, we live in a lot of place fields, there are keyboard application, but its application is very wide, of course, the keyboard scanning method also has a lot of, the keyboard is the design of single-chip microcomputer system a main information input inter
5、face, a reasonable design, not only can save the design cost of system, it can make the equipment operation more simple, convenient, fast, greatly improve the overall system performance. With the development of information industry and the development of microelectronic technology, a lot of system d
6、esign technology has become the information industry one of the hottest technologies, in many places have applications, such as aerospace, medical care, communication, broadcast, industrial, testing and many other hot areas. And with the technology progress and technology development, to the more wi
7、despread application domain expansion.The main design is the use of VHDL hardware description language and graphic design method in the MAX+PLUS software platform, established under the wave file, generating circuit symbols, set the input port, procedures to achieve the simulation, get the simulatio
8、n waveform, to complete the keyboard scanning circuit design program. The circuit design is a small calculator keyboard circuit design, mainly is composed by 5 parts, which respectively as the divider circuit, keyboard scan counter circuit, key detection circuit, key jitter elimination circuit and k
9、eyboard coding circuit. The design is the design of a 4 x 4 matrix keyboard scanning circuit, it has a column scanning and scanning function, having 2 input ports, respectively CLK and col, but also has 2 output ports, respectively row and bianma, press the key data through the port line, line input
10、 to the FPGA chip, FPGA chip inside the scanning module can transmit data to the encoder for encoding, the final completion of the circuit design. In life is such a small calculator is very common, though very small in size, but it is widely used, many other things are in such a small calculator key
11、board design based on.Key words:keyboard scan; VHDL ; MAX+PLUS ;simulation目录第1章绪论11.1研究的意义和背景11.2键盘在国外的发展状况11.3本课题研究的主要问题2第2章键盘扫描电路总体设计32.1 设计工具的简介32.1.1VHDL硬件描述语言32.1.2MAX+PLUS的简介32.1.3FPGA芯片的介绍52.2键盘扫描电路的基本流程72.3键盘扫描电路的原理框图8第3章键盘扫描电路的模块电路设计103.1分频器电路103.2键盘扫描计数器电路113.3按键检测电路123.4按键抖动消除电路133.5 键盘编码
12、电路133.6 扫描电路总电路图14第4章顶层设计164.1端口定义164.2仿真结果174.3电路符号17第5章软件调试185.1 分频器电路中185.2键盘扫描计数器电路中195.3按键检测电路中205.4按键抖动消除电路中205.5键盘编码电路中21总结23致24参考文献25附录26第1章 绪论1.1研究的意义和背景键盘与我们的生活息息相关,可以说是在我们的生活中是无处不在的,比如说手机键盘、电视机的键盘、电脑的键盘等等。按键就是一组排列好的不同功能的键,将外在的信号输入到终端,继而送入一个预定的系统中1。键盘是最常见的计算机输入设备,它被广泛的应用在微型计算机和各种终端设备上,计算机操
13、作者可以通过键盘向计算机输入各种指令、数据,指挥计算机的工作。键盘扫描是单片机技术的一种基本处理方法,而键盘扫描的方法有很多种,说到键盘扫描相信大多数人第一反应差不多都是行列矩阵扫描,行列扫描法是什么呢?把按键键盘排列成n行、m列的n*m行列点乘矩阵,同时n行、m列的线分别连接到两个并行接口双向传送的连接线上去,这样情况下点阵上的按键一旦被按下,就说明按键所在的行列点阵信号已经接通。按键作为一种普通的外部输入设备,在应用中是不可或缺的,它是控制者用来操作或是发布指令的一个,是人机交互应用的结合点2。按键所排列成的矩阵,需要用硬件或软件的方法轮转顺序地对其 行、列分别进行扫描,以查询和确认是否有
14、键按动。如有键按动,键盘会向主机发送被按键所在的行列点阵的位置编码,这种现象叫做键扫描码。这样,通过硬件或软件的方法对键盘分别进行列扫描、行扫描,就可以确定按下键的所在位置,输出并获得扫描位置码,任何矩阵键盘只要通过增加键盘的列或行就可以实现增加按键的数目。1.2键盘在国外的发展状况早在1714年,英、美、法、意、瑞士等国家的人相继发明了各种形式的打字机,最早的键盘是那个时候应用在那些技术还不成熟的打字机上的。1868年的时候,美国人克里斯托夫·拉森·肖尔斯(Christopher Latham Sholes)获打字机模型专利并取得经营权经营,又在几年后设计出了现代打字机的
15、实用形式和首次规了键盘,即现在的“QWERTY”键盘。 后来他就被称为“打字机之父”。直到1873年,肖尔斯又使用此布局的第一台商用打字机成功投放市场,这就为今天的键盘排列方式奠定了基础,1888年全美举行打字公开比赛,赢得冠军的是一位使用盲打技术的人,在美国也相继开始有了专门培养打字员的学校专门练习打字。因为每日的练习,大家的击键速度加快,满足了日常生活的需要。盲打技术的出现为以后键盘的打字打下了基础,在1934年,华盛顿一个叫德沃拉克的人为使左右手能交替击打更多的单词,发明了一种新的排列方法,这个键盘可缩短训练周期1/2时间,平均速度提高35%。DVORAK键盘布局原则是:1、尽量左右手交
16、替击打,避免单手连击。2、越排击键平均移动距离最小。3、排在导键位置应是最常用的字母。键盘是一种方便实用的手动输入设备,从这个意义上而言,键盘在计算机输入设备领域很难被淘汰。键盘是当前计算机输入设备中最主要的输入设备,随着科学技术的进步,可能会发生的是,键盘在未来有可能失去计算机主要输入设备的地位。 从目前的进展来看,出现了声控输入,手写输入和触摸或点击输入等几种非键盘输入方式,国外正在研发更先进的脑电波识别与输入技术。因此,给人一种符合发展规律的思维判断,即将来某一天,键盘这种输入设备会被更先进的输入设备淘汰,其实这种前景是值得商榷的。由Magic Cube公司设计的“Magic Cube”
17、(魔方)激光键盘,是一款超酷的产品,可以在任何具有表面平整的地方使用。这种非常酷,并且有用的键盘,可搭载应用在几乎任何有蓝牙的Mac、PC、iPhone、iPad、iPod touch,和Android系统的所有设备上使用。按照应用可以分为台式机键盘、笔记本电脑键盘、工控机键盘,速录机键盘,双控键盘、超薄键盘、手机键盘七大类。在我们生活中,随处可以看见键盘的使用,已经到了无处不在的地步,在未来,键盘的发展是可观的,最常用的就是电脑键盘和手机键盘,不管是触摸式的还是敲打式的,在未来都是不可淘汰的。键盘已经遍布了我们的生活,以后更是会向更多的方向发展,因此键盘不管在何种情况下,都不会被现实生活所淘
18、汰,只会向更好的方向发展,把键盘技术发展的更前卫、更先进、更方便。按键输入电路大多数应用的主要有两种:一种是非扫描方式可以判断多键状态,即允许多键同时作用,但这种不适用于大量按键情况,所需输入输出端口I/O较多。另一种是扫描阵列方式,可以适用于大量按键,但不能多键同时按下识别3。相对于现在来说,国的键盘相关的技术与国外的比较,还是有一定的差距的,国的发展方向正在向国外靠拢,在国外技术的基础上,来升级键盘的一些其他的功能,开发蕴含在其中的更多的能量,来提高我国在键盘扫描领域的一些技术,向高科技的电子产品迈进。不管是在技术上还是质量上,我们应该追求的是超过国外的技术,让国人相信中国的产品并不比外国
19、的差,而且相比国外的产品不管是在质量上还是产量上,都比外国的好,让中国的研究走上时尚的尖端,让国外的人也买我们中国的产品。1.3本课题研究的主要问题人们依靠键盘向计算机输入各种指令,指挥计算机工作,依靠键盘向计算机输入程序、资料,依靠键盘修改、调试程序,人们甚至可以依靠键盘来进行引人入胜的各式游戏。在高科技快速发展的今天,我们必须走在高科技尖端,随着潮流发展,这样才不至于被这个快速发展的时代淘汰,反而是我们要主宰这个世界,开发高科技,向更新的一个时代迈进。本课题是应用硬件描述语言VHDL设计一个键盘扫描电路。以FPGA芯片为主机控制核心的键盘扫描电路设计,该系统具备能够识别多个按键功能。该课题
20、主要解决以下几个问题:总体方案设计与论证,分析控制系统工作原理;选择合适的FPGA芯片系统的硬件设计;用硬件描述语言VHDL编制系统的软件与流程图、并仿真设计要求。本课题的目的是为了让学生通过毕业设计,培养学生综合运用多学科理论知识与技能,分析、解决一般工程技术问题的基本能力,与勇于实践探索的工程实现意识。第2章键盘扫描电路总体设计采用VHDL硬件描述语言,在FPGA芯片上实现键盘扫描系统会用到MAX+PLUS软件和FPGA芯片,以下主要介绍VHDL硬件描述语言、MAX+PLUS软件和FPGA芯片。2.1 设计工具的简介2.1.1VHDL硬件描述语言VHDL是VHSIC Hardware De
21、scription Language的缩写,其中VHSIC是Very High Speed Integrate Circuit的缩写,它是一种硬件描述语言,有非常强大的功能。VHDL已经成为一个数字电路和系统的描述、建模、综合的工业国际标准,因此在电子产业界获得了广泛的应用4。VHDL具有强大的功能,覆盖面广,描述能力强5。能支持系统行为级、寄存器传输级和逻辑门电路级三个不同层次的设计,能够完成从上层到下层(从抽象到具体)逐层描述的结构化设计思想。VHDL语言中具有许多与数字电路的结构直接相关的概念6。VHDL硬件语言是唯一被接纳为IEEE标准的语言,也就是说它是数字系统硬件设计描述的语言中最
22、为标准的语言7。其主要特点如下:1、具有很强的可移植性;2、能够将设计中的错误消除在电路系统安装之前,并检查设计系统功能的可行性,说明它有很强的预测能力;它还有着丰富的库函数和模拟仿真语句,随时都能对设计进行仿真模拟;3、在理解上比较容易,有良好的可读性,与高级语言接近;4、它的硬件结构与系统设计无关,有利于工艺的转换;5、它可以把已有的设计项目作为一个模块调用;支持模块的设计,可以将大规模设计项目分解成很多小项目,;6、针对一个确定的设计系统,可以用EDA工具进行优化和逻辑综合,并且自动的能把VHDL硬件描述语言转变化门电路级网表文件;7、设计灵活,修改方便,同时也便于设计结果的交流、保存,
23、产品开发速度快,成本低。本次在运用VHDL硬件语言进行编程、仿真,非常的方便,而且也省了很多的时间,也很容易懂,理解上也比其他的硬件语言容易的多。2.1.2MAX+PLUS的简介MAX+PLUS是Multiple Array Matrix and Programmable Logic User System的缩写,是美国Altera公司推出的第三代PLD开发系统,她接受对一个电路设计的文本描述或图形描述,使用MAX+PLUS的设计者不需要器件部的复杂构造,只运用自己熟悉的输入工具进行设计,由MAX+PLUS将这些设计自动转化为最终所需的格式它使设计者能方便地进行设计输入、快速处理和期间编程。其
24、易学、易用、高度集成化的特性使得受到广大用户的青睐,正被越来越广泛的应用8。MAX+PLUS软件大致可分为5个模块:设计输入编辑器,HDL综合器,仿真器,适配器和下载器。用这5个模块进行系统设计的编辑、编译、仿真、综合和芯片编程等功能9。1、硬件描述语言输入(Text Editor)MAX+PLUSII软件中有一个集成的文本编辑器,这个编辑器支持AHDL、Verilog和VHDL硬件描述语言的输入,还有一个模板使输入程序语言更加便捷,此软件可以对这些程序语言进行编译,同时形成可以下载的配置数据,文本编辑器窗口如图2.1所示:图2.1文本输入2、波形编辑器(aveform Editor)在进行仿
25、真逻辑电路的动作时,这时候需要在设计电路的输入端加入一定波形,同时波形编辑器可以立刻生成和编辑仿真时用的波形(*.SCF文件)文件,用这个编辑器的工具条可以非常容易快捷的生成编辑波形和波形。波形编辑器窗口如图2.2所示:图2.2波形编辑器3、符号编辑器(Symbol Editor)符号编辑器是在文本程序运行成功的基础上,自动生成的电路符号,该编辑器的优点是在画电路图是只要直接拿出来用就可以了,非常的便捷。电路符号如图2.3所示:图2.3电路符号4、开发系统的特点(1)具有界面的开放性Max+plus支持与Exemplarlogic, Mentor Graphics, Cadence,Viewl
26、ogic,Synplicty等,另外还有其他公司提供的EDA工具的接口。(2)Opencore特征Max+plus软件还具有开放核的功能特点,允许设计者们添加自己认为有价值意义的宏函数。(3)模块化工具设计者可以从任何设计输入和处理以与较验功能选项中进行选择,这样就可以使设计的环境得到用户化。(4)硬件描述语言(VHDL)Max+plus软件支持大多数VHDL设计的输入选项,包括Verilog HDL,VHDL和Altera公司自己开发的硬件描述语言AHDL。(5)丰富的资源设计库Max+plus有着丰富的数据库单元提供给设计者调用,其中包括多种最新的参数化的兆功能(Mage-Function
27、)和很多特殊逻辑功能(Macro-Function)以与74系列所需全部器件。(6)和结构无关Max+plus系统的Complier支持Altera公司的MAX9000、FLEX6000、FLEX8000、Classic、MAX5000、MAX7000和FLEX10K可编程的逻辑器件,形成世界上仅有的真正的和结构没有关系的可编程逻辑设计的环境。(7)完全集成化Max+plus的文本输入、处理与检验验功能全部都在统一的开发环境下完成,这样既能加快动态调试,又可以减少开发所需要的周期。2.1.3FPGA芯片的介绍FPGA(FieldProgrammable Gate Array),即现场可编程门阵
28、列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。 现在EDA技术的基本特征是用高级语言描述,并且具有系统级仿真和综合能力10。电子设计自动化简称EDA,在20世纪90年代初从计算机辅助设计、辅助制造、辅助测试和辅助工程这几个概念发展而来的11。现在EDA技术的基本就是以计算机为工具,设计人员在EDA软件的平台上,采用高级硬件描述的语言VHDL完成设计所需的文件,由计算机自动地来完成逻辑的编译、化简、分割、综合、优化、布局、布线这些功能,再进行系统仿真12。EDA技术是一种以计算机为基础核心的工作平台,是利用电子技术、计算机技术、智能化技术等多种应用学科的最新成果13。F
29、PGA的一个明显的特点是它有一个窄输入的逻辑单元,使用的是分布式互连的方案。FPGA的工作原理 :FPGA采取了逻辑单元阵列LCA(Logic Cell Array)这样的一个概念,部由三部分组成,包括输出输入模块IOB(Input Output Block)、可配置逻辑模块CLB(Configurable Logic Block)和部连线(Interconnect)。现场可编程门阵列(FPGA)是可编程器件,它和传统逻辑电路以与门阵列(比如PAL,GAL与CPLD器件)比较,FPGA是具有不同的结构。FPGA是用非常小型的查找表法(16×1RAM)来实现组合逻辑的,每一个查找表都要
30、连接到一个D触发器的输入端,触发器用来驱动其他的逻辑电路或是驱动I/O,这样就构成了既能实现组合逻辑电路的功能,同时又能实现时序逻辑电路功能的基本单元模块,这些模块之间都是运用金属连接线相互连接或是连接到I/O模块上去的。FPGA的逻辑是向自身静态储存单元加载编程数据来实现的,存储器单元中储存的值决定了逻辑单元的逻辑功能与各个模块之间或者是模块与I/O之间的连接方式,并且能够最终决定FPGA所能够实现的功能,FPGA允许的编程没有次数限制。 一片FPGA就可以实现逻辑功能十分复杂的逻辑部件甚至一个小型数字系统。如果将FPGA引入到数据采集系统中,无疑会使系统的体积更加小巧,其性能更加优越14。
31、FPGA部逻辑设计的功能分为扫描模块,编码模块,控制模块和FIFO RAM模块。因为FPGA基于RAM工艺技术,该器件在使用前需要从外部加载配置数据,需要一个外置存储器保存信息,采用可编程的串行配置器件,供电电压为3.3V。FPGA是一种可编程逻辑器件,它具有良好性能、极高的密度和极大的灵活性,外围电路具有简单可靠等特性。解析数据流和操作的复杂应用必须要求大量的触发器,有利于用来作暂态数据存储器和流水线寄存器以与宽计数器和大规模状态机矢量15。比如,一片FPGA芯片就可替代几片甚至几十片标准器件,其用户可用I/O引脚数目多达数百条16。我们在为一个特定的应用选择FPGA的时候,还有一些问题需要
32、仔细得考虑过。当然为了能够满足这个特定的应用,先应该考虑的是FPGA的部配置,FPGA的逻辑资源包括时钟分配单元、嵌入的存储器和多功能的I/O单元,一般情况下,即使具有一样的逻辑资源的FPGA,但是它们所能产生的部配置并不一定是一样的。因此选择好一个合适的又具有足够的逻辑资源和I/O引脚资源的FPGA,其部一些关键资源的有无对一个特定的设计是否可能实现,对下一步的设计来说显得尤为重要了。一个是进行设计的逻辑化简,再逻辑优化,再合并,最后是逻辑分割17。如果将FPGA引入到数据采集系统中,无疑会使系统的体积更加小巧,其性能更加优越18。FPGA的优点有以下几点:1、引脚多FPGA中除了个别的几个
33、引脚以外,大部分引脚都与可编程的输入/输出模块IOB相连,都可以根据需要设置成输入端或者输出端。这样一来,FPGA器件的最大可能的输入端数和输出端数要比同等规模的EPLD多很多,在应用方面也来得比较得心应手。2、高密度、编程速度快、设计灵活与其他可编程逻辑器件相比较,FPGA属于高密度PLD,具有更高的集成度和更强的逻辑实现功能,其集成度可以达到3万门/片以上,门延时已小于3ns。FPGA采用CMOS-SRAM工艺制作,其结构和阵列型不同,部由许多独立的可编程逻辑模块组成,逻辑模块之间可以直接灵活地相互连接,具有高密度、编程速度快、设计灵活和可再配置设计能力等许多优点。这不但在结构上提供给用户
34、极大的灵活性,而且在互联特性上提供了超出其他CPLD更大的自由度。3、可再配置设计能力FPGA中文名叫做现场可编程门阵列,它的现场体现在现场设计、现场编程、现场配置、现场修改和现场验证,从而现场来实现数字系统的单片化设计和应用。可编程逻辑器件FPGA能完成任何数字器件的功能,小至简单的电子产品、数字集成电路,大至复杂又很难设计的高性能CPU。可编程逻辑器件就像是一毫无痕迹的白纸,也像是一堆积木,工程师可以通过传统的原理电路图输入法,或者是利用硬件描述语言来自由地设计一个数字系统,再通过一些软件进行仿真,这样就可以再投入实际应用前事先了解、验证所设计的系统是否是正确的,是否可以投入使用生产。如果
35、存在一定的设计问题,还可以利用可编程逻辑器件的在线修改能力,随时地修改设计再仿真测试。2.2键盘扫描电路的基本流程键盘扫描电路的方法很多,一般让人第一个想到就是矩阵式的键盘扫描,用的地方也很多,应用也非常的广泛,其实还有很多其他的方法,有传统式的,有用其他不同语言编写的程序,可以达到不同的效果。键盘扫描电路的过程是,在未按下任何按键时,一直都保持的是循环扫描的状态,一直是015循环,当检测到有按键按下时,停止循环扫描,编码器编出按键上的数值,然后输出按键上的值,因为在按键时,会产生一部分抖动,所以要有消抖的过程,之后输出数据。过程如图2.4所示: 开始循环扫描 检测是否有 按键按下译岀按键上的
36、数值消除抖动数据输出是否图2.4总程序流程图2.3键盘扫描电路的原理键盘扫描电路时将各个五个模块结合起来,分别由分频器电路、键盘扫描计数器电路、键盘column和row按键检测电路、按键抖动消除电路、按键编码电路等组成,结合成的一个系统,分频器主要的作用是在扫描时起到一个分频的作用,按键扫描计数器电路达到一个计数的功能,按键检测电路是在整个电路中起到检测的功能,检测是否有按键按下然后输出,抖动消除电路的功能是消除抖动,避免按键时键盘产生的按键抖动效应产生不必要的抖动,按键编码电路的作用是有编码的功能,在更换不同的按键时,由于按键值的不同可以进行适当的改变。本次做的事一个计算器的键盘,扫描电路的
37、原理框图如图2.5所示:Clk 键盘编码Key_validKey_pressed 按键检测 row colclk Key_valid 抖动消除 Key_pressed按键码分频计数1KHzclockcount123×456÷789#+0-=图2.5扫描键盘的原理框图第3章 键盘扫描电路的模块电路设计3.1分频器电路分频器是音箱中的“大脑”,对音质的好坏至关重要。功放输出的音乐讯号必须经过分频器中的过滤波元件处理,让各单元特定频率的讯号通过。要科学、合理、严谨地设计好音箱之分频器,才能有效地修饰喇叭单元的不同特性,优化组合,使得各单元扬长避短,淋漓尽致地发挥出各自应有的潜能,
38、使各频段的频响变得平滑、声像相位准确,才能使高、中、低音播放出来的音乐层次分明、合拍、明朗、舒适、宽广、自然的音质效果。分频器本质上是由电容器和电感线圈构成的LC滤波网络,高音通道是高通滤波器,它只让高频信号通过而阻止低频信号;低音通道正好相反,它只让低音通过而阻止高频信号;中音通道则是一个带通滤波器,除了一低一高两个分频点之间的频率可以通过,高频成份和低频成份都将被阻止。在实际的分频器中,有时为了平衡高、低音单元之间的灵敏度差异,还要加入衰减电阻;另外,有些分频器中还加入了由电阻、电容构成的阻抗补偿网络,其目的是使音箱的阻抗曲线心理平坦一些,以便于功放驱动。假设系统由一个输出频率为3.684
39、MHz晶振提供时钟信号,则键盘扫描电路的输入时钟信号clk为3.684MHz。由于键盘扫描不需要那么高的频率,所以现在设计一个分频电路将频率降低为1khz。键盘扫描电路测试时采用输入为100khz的信号,所以仿真波形如图3.1所示:图3.1分频器电路仿真的波形由图可以看出clk为时钟脉冲,scan_f为扫描频率,由图可以看出在第101处会有一个分频,达到了分频的效果,可见分频器所起到了一个分频的作用。因为MAX+PLUS软件的强大,可以直接得出电路的电路符号,clk为一个时钟脉冲,作为分频器电路的输入,scan_f为分频器电路的输出,q不输出也不输入,只是作为一个端口,MAX+PLUS软件自动
40、生成电路符号,分频器电路的电路符号如图3.2所示:图3.2分频器电路符号3.2键盘扫描计数器电路扫描技术器电路以1khz分频器电路的输出为clock,按键(key_pressed)为使能键,当使用者尚未按下键盘时,key_pressed=1,此时由0到15反复计数,并输出计数值作为按键检测电路的输入扫描键盘,直到使用者按下键盘时key_pressed=0,计数器停止持续输出计数值。运行该电路的程序代码,其仿真结果如图3.3所示:图3.3 键盘扫描计数器电路仿真的波形从图3.3可以看出,当没有按键按下时,扫描计数器是按115反复计数的,比如图中当使用者按下“1”(对应的十进制编码为14)的按键时
41、,就保持这种状态,当输入的scan_f和使能键key_pressed都为高电平时,它又继续扫描,当又有按键按下时,又保持另一种状态,仿真波形如图3.4所示:图3.4 仿真波形同时也可以得到扫描计数器的电路符号,这个电路有3个输入端,分别是clk、scan_f、key_pressed,有1个输出端,输出端为scan_cnt,Clk是分频器电路的输出端。得到的扫描技术器的电路符号如图3.5所示:图3.5扫描计数器电路符号3.3按键检测电路在尚未按下任何按键时,一直都是循环计数,按键检测时按行逐一扫描键盘按钮,按键的行用变量row表示,列用变量col表示,16个按键的编码方式如表3.1所示:表3.1
42、 编码方式计数输入Row col0000Row1 col1扫描第一行键盘0001Row1 col20010Row1 col30011Row1 col40100Row2 col1扫描第二行键盘0101Row2 col20110Row2 col30111Row2 col41111Row4 col4当键盘输入到按键检测电路信号col的每一位值均为1,此时键盘无论扫描到哪个键,均使按键使能位(key_pressed)为1,表示检测到尚未有键按下。当使用者按下键盘按钮,则键盘输入到按键检测电路col的某一位值为0,键盘扫描到此键时,则key_pressed=0表示检测到已按键同时输出行的值。根据该电路的
43、程序代码,其仿真波形如图3.6所示:图3.6按键检测电路仿真波形图3.6中当col为1111表明无键按下,所以对应输出为0,当col为1011,表示第三列有键按下,而行扫描结果按下的键在第二行,因为scan_cnt取值为4、5、6、7,所以可以判断按下的键为第二行第三列,即为第6键,所以6的下方key_pressed值为0。也很方便的得到了按键检测电路的电路符号,该电路一共有2个输入,分别为col和scan_cnt,有2个输出端,分别为row和key_pressed。电路符号如图3.7所示:图3.7 按键检测电路符号3.4按键抖动消除电路消抖电路可以看成是具有倒数功能的计数器,主要目的是为了尽
44、量避免因为按键时键盘所带来的抖动使key_pressed产生不必要的抖动变化,因而造成计数器重复统计按键次数的结果。所以只需要把key_pressed作为计数器的重置输入,使计数器只有在使用者按下键盘时,在key_pressed=0时间足够长的一次使重置无动作,而计数器开始倒计数,自然可将key_pressed在短时间变为0的情况滤除掉。其仿真波形如图3.8所示:图3.8按键抖动消除电路的仿真波形同时得到按键抖动消除电路的电路符号,按键抖动消除电路有3个输入端口,分别为clk、scan_f和key_pressed,一个输出端口为key_vaild,在该电路中起到输出的作用。按键抖动消除电路符号
45、如图3.9所示:图3.9按键抖动消除电路符号3.5 键盘编码电路编码是按下面表格中相对应来编码的,比如“0”代表“1”,“3”代表“×”,一一对应来编码的,详见如表3.2所示:表3.2键盘编码表0123456789101112131415123×456/789#+0-=在单片机应用系统中,实现数据的输入、传达命令的功能,是人工干预的主要手段。键盘可以分成两大类:非编码键盘和编码键盘。编码键盘指的是由硬件逻辑电路完成必要的按键识别工作和可靠的措施。当每按一次键时,键盘就会自动显示被按键的读数,同时还会产生脉冲通知微处理器,一般情况下还会出现同时按键保护和反弹跳的功能。此键盘还
46、是比较容易使用的,但是硬件部分还是比较复杂的,该电路用的是编码键盘。键盘编码电路是在键盘上以015计数的方式扫描,但是015只是键盘位置的代号,并非键盘上真正的按键值,所以要设计一个键盘编码电路,而且在更换不同的键盘时,由于按键值的不同可以进行适当的改变。键盘编码电路的仿真如图3.10所示:图3.10键盘编码电路仿真波形从图中可以看出扫描时从015计数的方式扫描,注意015不是读出的值,而是按键的代号,这就是设计键盘编码电路的目的。同时,可以很方便的得出键盘编码电路的电路符号,该键盘编码电路中,有2个输入端,分别是scan_cnt和clk,同时该电路还有一个输出端是bianma,还有一个端口的
47、key_valid是中间变量,键盘编码电路的电路符号如图3.11所示:图3.11 键盘编码电路符号3.6 扫描电路总电路图扫描电路共有5个子电路组成的,这个电路共有2个输入项(时钟脉冲为clk,键盘的列输入为col),4个输出项(键盘的行输出为row,扫描频率为scan_f,按键确定信号为key_valid,按键值为bianma)。首先,将3.686MHz输入信号分频成1khz,此频率作为键盘扫描的频率。计数器的计数值输出到按键检测电路,检测按键是否有被使用者按下,同时输出到编码电路对键盘数值进行编码。当检测电路检测到有按键按下时,检测电路的key_pressed将为0,同时输出到扫描电路使计
48、数停止,与此同时抖动消除电路在进行确认到有使用者正确按键后,输出按键确定(key_valid)。扫描电路的电路图如图3.12所示:图3.12键盘扫描总电路图第4章 顶层设计4.1端口定义定义端口clk和col为输入端口后,将5个子程序进行整合,此时就有2个输出的端口,分别为row和bianma,这个整合的过程需要用到component映射的编程方法,将5个子程序整合起来,程序如下:ARCHITECTURE arc OF saomiaodian ISsignal scan_cnt: std_logic_vector(3 downto 0);signal key_pressed : std_log
49、ic;signal scan_f : std_logic;signal key_valid : std_logic;component fpq100to1PORT( clk : in std_logic; -clock scan_f : out std_logic; q : buffer std_logic_vector(osc_bit-1) downto 0 ); END component;component smjsqPORT( clk : in std_logic; scan_f : in std_logic; key_pressed : in std_logic; scan_cnt
50、: out std_logic_vector(3 downto 0);END component;component jiancePORT( col : in std_logic_vector(3 downto 0); scan_cnt : in std_logic_vector(3 downto 0); row : out std_logic_vector(3 downto 0); key_pressed : out std_logic);END component;component xiaodouPORT( key_pressed : in std_logic; -key_pressed
51、? clk : in std_logic; -clock for synchrony scan_f : in std_logic; -1khz clock key_valid : out std_logic);-key_valid?END component;component bianma1port( scan_cnt : in std_logic_vector(3 downto 0); clk , key_valid : in std_logic; bianma : out std_logic_vector(3 downto 0);END component;BEGINU1:fpq100t
52、o1 port map (clk , scan_f);U2:smjsq port map (clk , scan_f, key_pressed , scan_cnt );U3:jiance port map (col , scan_cnt , row , key_pressed );U4:xiaodou port map (key_pressed , clk , scan_f , key_valid );U5:bianma1 port map (scan_cnt , clk , key_valid , bianma );END arc;4.2仿真结果将5个子程序整合后的总程序进行编程并仿真,就
53、可以得到仿真波形,从仿真波形中很清楚的可以看到输入所对应的输出值与程序中设定的是一样的。仿真波形如图4.1所示:4.1键盘扫描电路仿真波形4.3电路符号在得到仿真波形的同时也可以生成电路符号,这个电路符号可以很清楚地看到按键编程整合后的整个按键图,从图中可以看到有两个输入端口,分别为clk和col,也有两个输出端口,分别为row和bianma,总按键芯片图如图4.2所示:图4.2总按键芯片图第5章 软件调试5.1 分频器电路中在所有的程序设计中,都是用VHDL硬件语言编程的,经过调试然后仿真,在程序不正确的情况下,查找问题,最终解决问题,在用VHDL硬件语言编程的过程中,都是由实体说明和结构体
54、两部分组成的,实体主要是用来说明实体的外部特征,结构体描述的是设计的行为和结构,指定了输入和输出之间的行为。entity fpq100to1 isgeneric (osc_f : integer := 3686 ; osc_bit : integer := 12);-generic (osc_f : integer := 100 ; osc_bit : integer := 7);-for testingport( clk : in std_logic; -clock scan_f : out std_logic;end fpq100to1;在分频器电路中,generic是一个类属语句,其后面
55、跟的是参数,在100处达到分频,port后面是端口名,clk是输入端,scan_f是输出端,此程序是错误的,运行如图5.1所示:图5.1分频器电路仿真错误图经过程序调试,错误的修改,终于把程序的错误之处解决了,定义的端口程序是:entity fpq100to1 is- generic (osc_f : integer := 3686 ; -osc_bit : integer := 12);generic (osc_f : integer := 100 ; osc_bit : integer := 7);-for testingport( clk : in std_logic; -clock scan_f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中生开学典礼学生代表演讲稿汇编7篇
- 金融期货合约种类
- 幼儿安全指导常识
- 感恩范文演讲稿模板集合七篇
- 2022做好铸牢中华民族共同体意识工作心得体会6篇
- 国庆节活动心得体会
- 教师演讲稿-15篇
- 3000字实习报告范文【6篇】
- 测量专业的实习报告集锦7篇
- 慢性肝衰竭护理诊断
- 艾草种植项目商业计划书范文参考
- 工程光学下习题库整理汇总
- 学生对科学实验课调查问卷
- NSE型板链斗式提升机(中文)
- 部编语文三年级上册课文全部量词
- 大力加强依法治校推进学校治理体系和治理能力现代化
- 水平定向钻施工组织方案通用
- 卢家宏《我心永恒MyHeartWillGoOn》指弹吉他谱
- 体检中心建设标准
- 上海高院最新口径《劳动争议案件若干问题的解答》
- 小说《活着》英文ppt简介
评论
0/150
提交评论