veriloghdl矩阵键盘实验报告要点.docx

上传人:scccc 文档编号:11203729 上传时间:2021-07-13 格式:DOCX 页数:12 大小:53.19KB
返回 下载 相关 举报
veriloghdl矩阵键盘实验报告要点.docx_第1页
第1页 / 共12页
veriloghdl矩阵键盘实验报告要点.docx_第2页
第2页 / 共12页
veriloghdl矩阵键盘实验报告要点.docx_第3页
第3页 / 共12页
veriloghdl矩阵键盘实验报告要点.docx_第4页
第4页 / 共12页
veriloghdl矩阵键盘实验报告要点.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《veriloghdl矩阵键盘实验报告要点.docx》由会员分享,可在线阅读,更多相关《veriloghdl矩阵键盘实验报告要点.docx(12页珍藏版)》请在三一文库上搜索。

1、EDA 实验报告学院:物信学院专业:电信一班小组成员: 杨义,王祺,陈鹏,秦成晖指导老师:漆为民目录实验题目3实验目的3实验原理3实验内容5实验程序.5实验步骤10实验结果.1011实验体会10附录一.实验题目:矩阵键盘显示电路设计二.实验目的:1 .了解普通4X4键盘扫描的原理。2 .进一步加深七段码管显示过程的理解3 . 了解对输入/输由端口的定义方法。三.实验原理:软键盘的工作方式:VCCTAnnionL通常在一个键盘中使用了一个瞬时接触开关,并且用 如图所示的简单电路,微处理器可以容易地检测到闭合。 当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的

2、/IO 口的输入将被拉低 得到逻辑0。可遗憾的是,开关并不完善,因为当它们被 按下或者被释放时,并不能够产生一个明确的1或者0。尽管触点可能看起来稳定而且很快地闭合,但与微处理器 快速的运行速度相比,这种动作是比较慢的。当触点闭合 时,其弹起就像一个球。弹起效果将产生如图10-2所示的好几个脉冲。弹起的持续时间通常将维持在5ms-30ms之间。如果需要多个键,则可以将每个开关连接到微处理 器上它自己的输入端口。然而,当开关的数目增加时,这 种方法将很快使用完所有的输入端口。键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图10-3所示的二维矩阵。当行和列的数目一样多时,也就

3、是方型的矩阵,将产生一个最 优化而后列方式(i/o端被连接而时候)。一个瞬时接触开 关(按钮)放置在每一行与线一列的交叉点。矩阵所需的 键的数目显然根据应用程序而不同。每一行由一个输由端 口的一位驱动,而每一列由一个电阻器上拉且供给输入端 口一位。: 品口: n n n键盘扫描的实现过程如下:对于4X4键盘,通常连接为4行、4歹U,因此要识别按键,只需要知道是哪一行 和哪一列即可,为了完成这一识别过程,我们的思想是, 首先固定输由4行为高电平,然后输由 4列为低电平,在 读入输由的4行的值,通常高电平会被低电平拉低,如果 读入的4行均为高电平,那么肯定没有按键按下,否则, 如果读入的4行有一位

4、为低电平,那么对应的该行肯定有 一个按键按下,这样便可以获取到按键的行值。同理,获 取列值也是如此,先输由 4列为高电平,然后在输由 4行 为低电平,再读入列值,如果其中有哪一位为低电平,那 么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在 7段码管显示。4 .实验内谷:本实验要求完成的任务是通过编程实现对4X4矩阵键盘按下键的键值的读取,并在数码管上完成一定功能(如 移动等)的显示。按键盘的定义,按下”i 键则在数码管是显示“ E”键值。按下“ #键在数码管上显示“ F” 键值。其它的键则按键盘上的标识进行显示。在

5、此实验中数码管与 FPGA的连接电路和管脚连接在 以前的实验中都做了详细说明,这里不在赘述。本实验箱 上的4X4矩阵键盘的电路原理如图所示5 .实验程序:Module key(clk, reset,row, col, key_value );input clk,reset;input 3:0 row;output 3:0 col;output 3:0 key_value;reg 3:0 col;reg 3:0 key_value;reg 5:0 count;/delay_20msreg 2:0 state; /状态标志reg key_flag; /按键标志位reg clk_500khz; /5

6、00KHZ 时钟信号reg 3:0 col_reg; /寄存扫描列值reg 3:0 row_reg; / 寄存扫描行值always (posedge clk or negedge reset)if(!reset) begin clk_500khz=0; count=50) beginclk_500khz=clk_500khz;count=0;endelse count=count+1;endalways (posedge clk_500khz or negedge reset)if(!reset) begin col=4b0000;state=0;endelsebegincase (state

7、)0:begincol3:0=4b0000;key_flag=1b0;if(row3:0!=4b1111) begin state=1;col3:0=4b1110;end/有键按下,扫描第一行else state=0;end1:beginif(row3:0!=4b1111) begin state=5;end / 判断是否是第一行else begin state=2;col3:0=4b1101;end /扫描第二行end2:beginif(row3:0!=4b1111) begin state=5;end / 判断是否是第二行else begin state=3;col3:0=4b1011;e

8、nd /扫描第三行end3:beginif(row3:0!=4b1111) begin state=5;end / 判断是否是第三一行else begin state=4;col3:0=4b0111;end /扫描第四行end4:beginif(row3:0!=4b1111) begin state=5;end / 判断是否是第一行else state=0;end5:beginif(row3:0!=4b1111)begincol_reg=col; /保存扫描列值row_reg=row; / 保存扫描行值state=5;key_flag=1b1; / 有键按下endelsebegin state

9、=0;endendendcaseendalways (clk_500khz or col_reg or row_reg)beginif(key_flag=1b1)begincase (col_reg,row_reg)8b1110_1110:key_value=0;8b1110_1101:key_value=1;8b1110_1011:key_value=2;8b1110_0111:key_value=3;8b1101_1110:key_value=4;8b1101_1101:key_value=5;8b1101_1011:key_value=6;8b1101_0111:key_value=7;

10、8b1011_1110:key_value=8;8b1011_1101:key_value=9;8b1011_1011:key_value=10;8b1011_0111:key_value=11;8b0111_1110:key_value=12;8b0111_1101:key_value=13;8b0111_1011:key_value=14;8b0111_0111:key_value=15;endcaseendendendmodule六实验步骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个VHDL File ,打开 VHDL编辑器对话框。3、按照实验原理和自己

11、的想法,在VHDL 编辑窗口编写VHDL 程序,用户可参照光盘中提供的示例程序。4、编写完 VHDL 程序后,保存起来。方法同实验一。5、对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。编译仿真无误后,依照 4X4 矩阵键、数码管与 FPGA的管脚连接表或参照附录进行管脚分配。管脚分配完成后,再进行全编译一次,以使管脚分配生效。七实验结果:以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为 2048HZ ,按下矩阵键盘的某一个键, 则在数码管上显示对应的这个键标识的键值。按下“ *”键则在数码管是显示“ E”键值。按下“ #”键在数码管上显示“F

12、”键值。八实验体会: 刚刚开始接触这门课的时候,我们小组什么都不知道,只知道按照老师您打得程序来抄。然后一步步按步骤做,经过一段时间的学习,学会了程序的运行和管脚的输入及在仪器上的运行,通过阅读简单的程序,来增加自己的知识,然后通过改写成程序来增加对程序的理解。感觉这次能都把这串代码打由来还是很不容易的,不过大家都有收获就行。九.附录:相关管脚:端口名使用模块信 号对应FPGA管脚说明CLK数字信号源PIN_M1时钟为2048HZKR04*4车巨阵键 盘R0PIN_J19车巨阵键盘行 信号KR14*4车巨阵键 盘R1PIN_P15KR24*4车巨阵键 盘R2PIN_J17KR34*4车巨阵键

13、盘R3PIN_H11KC04*4车巨阵键 盘C0PIN_R14车巨阵键盘列 信号KC14*4车巨阵键 盘C1PIN_R16KC24*4车巨阵键 盘C2PIN_V19KC34*4车巨阵键盘C3PIN_H15A数码管模块A段PIN_H19键值显示B数码管模块B段PIN_J14C数码管模块C段PIN_H18D数码管模块D段PIN_H17E数码管模块E段PIN H1 4一F数码管模块F段PIN_G20G数码管模块G段PIN_G18SEL0数码管模块SEL0PIN_F20SEL1数码管模块SEL1PIN_E20SEL2数码管模块SEL2PIN_E19SEL3数码管模块SEL3PIN_E18SEL4数码管模块SEL4PIN_D20SEL5数码管模块SEL5PIN_D19SEL6数码管模块SEL6PIN_C18SEL7数码管模块SEL7PIN_C17表10-2端口管脚分配表

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

当前位置:首页 > 社会民生


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