veriloghdl矩阵键盘实验报告_第1页
veriloghdl矩阵键盘实验报告_第2页
veriloghdl矩阵键盘实验报告_第3页
veriloghdl矩阵键盘实验报告_第4页
veriloghdl矩阵键盘实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA实验报告学院物信学院专业电信一班小组成员杨义,王祺,陈鹏,秦成晖指导老师漆为民目录实验题目3实验目的3实验原理3实验内容5实验程序5实验步骤10实验结果10实验体会10附录11一实验题目矩阵键盘显示电路设计二实验目的1了解普通44键盘扫描的原理。2进一步加深七段码管显示过程的理解。3了解对输入/输出端口的定义方法。三实验原理软键盘的工作方式通常在一个键盘中使用了一个瞬时接触开关,并且用如图所示的简单电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的I/O口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO口的输入将被拉低得到逻辑0。可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1或者0。尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图102所示的好几个脉冲。弹起的持续时间通常将维持在5MS30MS之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图103所示的二维矩阵。当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O端被连接的时候)。一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。键盘扫描的实现过程如下对于44键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。四实验内容本实验要求完成的任务是通过编程实现对4X4矩阵键盘按下键的键值的读取,并在数码管上完成一定功能(如移动等)的显示。按键盘的定义,按下“”键则在数码管是显示“E”键值。按下“”键在数码管上显示“F”键值。其它的键则按键盘上的标识进行显示。在此实验中数码管与FPGA的连接电路和管脚连接在以前的实验中都做了详细说明,这里不在赘述。本实验箱上的4X4矩阵键盘的电路原理如图所示五实验程序MODULEKEYCLK,RESET,ROW,COL,KEY_VALUEINPUTCLK,RESETINPUT30ROWOUTPUT30COLOUTPUT30KEY_VALUEREG30COLREG30KEY_VALUEREG50COUNT/DELAY_20MSREG20STATE/状态标志REGKEY_FLAG/按键标志位REGCLK_500KHZ/500KHZ时钟信号REG30COL_REG/寄存扫描列值REG30ROW_REG/寄存扫描行值ALWAYSPOSEDGECLKORNEGEDGERESETIFRESETBEGINCLK_500KHZ50BEGINCLK_500KHZCLK_500KHZCOUNT0ENDELSECOUNTCOUNT1ENDALWAYSPOSEDGECLK_500KHZORNEGEDGERESETIFRESETBEGINCOL4B0000STATE0ENDELSEBEGINCASESTATE0BEGINCOL304B0000KEY_FLAG1B0IFROW304B1111BEGINSTATE1COL304B1110END/有键按下,扫描第一行ELSESTATE0END1BEGINIFROW304B1111BEGINSTATE5END/判断是否是第一行ELSEBEGINSTATE2COL304B1101END/扫描第二行END2BEGINIFROW304B1111BEGINSTATE5END/判断是否是第二行ELSEBEGINSTATE3COL304B1011END/扫描第三行END3BEGINIFROW304B1111BEGINSTATE5END/判断是否是第三一行ELSEBEGINSTATE4COL304B0111END/扫描第四行END4BEGINIFROW304B1111BEGINSTATE5END/判断是否是第一行ELSESTATE0END5BEGINIFROW304B1111BEGINCOL_REGCOL/保存扫描列值ROW_REGROW/保存扫描行值STATE5KEY_FLAG1B1/有键按下ENDELSEBEGINSTATE0ENDENDENDCASEENDALWAYSCLK_500KHZORCOL_REGORROW_REGBEGINIFKEY_FLAG1B1BEGINCASECOL_REG,ROW_REG8B1110_1110KEY_VALUE08B1110_1101KEY_VALUE18B1110_1011KEY_VALUE28B1110_0111KEY_VALUE38B1101_1110KEY_VALUE48B1101_1101KEY_VALUE58B1101_1011KEY_VALUE68B1101_0111KEY_VALUE78B1011_1110KEY_VALUE88B1011_1101KEY_VALUE98B1011_1011KEY_VALUE108B1011_0111KEY_VALUE118B0111_1110KEY_VALUE128B0111_1101KEY_VALUE138B0111_1011KEY_VALUE148B0111_0111KEY_VALUE15ENDCASEENDENDENDMODULE六实验步骤1、打开QUARTUSII软件,新建一个工程。2、建完工程之后,再新建一个VHDLFILE,打开VHDL编辑器对话框。3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中提供的示例程序。4、编写完VHDL程序后,保存起来。方法同实验一。5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。编译仿真无误后,依照4X4矩阵键、数码管与FPGA的管脚连接表或参照附录进行管脚分配。管脚分配完成后,再进行全编译一次,以使管脚分配生效。七实验结果以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为2048HZ,按下矩阵键盘的某一个键,则在数码管上显示对应的这个键标识的键值。按下“”键则在数码管是显示“E”键值。按下“”键在数码管上显示“F”键值。八实验体会刚刚开始接触这门课的时候,我们小组什么都不知道,只知道按照老师您打得程序来抄。然后一步步按步骤做,经过一段时间的学习,学会了程序的运行和管脚的输入及在仪器上的运行,通过阅读简单的程序,来增加自己的知识,然后通过改写成程序来增加对程序的理解。感觉这次能都把这串代码打出来还是很不容易的,不过大家都有收获就行。九附录相关管脚端口名使用模块信号对应FPGA管脚说明CLK数字信号源PIN_M1时钟为2048HZKR044钜阵键盘R0PIN_J19KR144钜阵键盘R1PIN_P15KR244钜阵键盘R2PIN_J17KR344钜阵键盘R3PIN_H11钜阵键盘行信号KC044钜阵键盘C0PIN_R14KC144钜阵键盘C1PIN_R16KC244钜阵键盘C2PIN_V19钜阵键盘列信号KC344钜阵键盘C3PIN_H15A数码管模块A段PIN_H19B数码管模块B段PIN_J14C数码管模块C段PIN_H18D数码管模块D段PIN_H17E数码管模块E段PIN_H14F数码管模块F段PIN_G20G数码管模块G段PIN_G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论