FPGA矩阵键盘课程设计Word文档下载推荐.docx

上传人:b****6 文档编号:18660111 上传时间:2022-12-31 格式:DOCX 页数:13 大小:75.45KB
下载 相关 举报
FPGA矩阵键盘课程设计Word文档下载推荐.docx_第1页
第1页 / 共13页
FPGA矩阵键盘课程设计Word文档下载推荐.docx_第2页
第2页 / 共13页
FPGA矩阵键盘课程设计Word文档下载推荐.docx_第3页
第3页 / 共13页
FPGA矩阵键盘课程设计Word文档下载推荐.docx_第4页
第4页 / 共13页
FPGA矩阵键盘课程设计Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

FPGA矩阵键盘课程设计Word文档下载推荐.docx

《FPGA矩阵键盘课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《FPGA矩阵键盘课程设计Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

FPGA矩阵键盘课程设计Word文档下载推荐.docx

AbstractII

第1章绪论1

1.1课题背景1

1.2国内外发展现状1

1.3本文主要研究内容1

第2章软件及语言简介2

2.1Quartus软件简介3

2.2Verilog语言简介4

2.2.1Verilog语言的主要功能4

2.2.2Verilog语言设计数字系统的特点4

第3章4*4矩阵键盘的原理6

3.14*4矩阵式键盘6

3.2总体结构6

3.2.1LED数码管8

3.2.2键盘结构9

3.3键盘扫描9

3.4矩阵键盘接口电路的原理9

第4章程序调试11

4.1流程图11

4.2程序结果讨论11

第5章波形仿真及讨论13

5.1波形结果13

5.2结果讨论14

结论15

参考文献16

附录程序17

致谢19

第1章绪论

1.1课题背景

在现代的个人计算机系统中,一般都采用通用的标准键盘如标准键盘(如:

标准101/102键盘或Microsoft自然PS/2键盘)来实现人与计算机之间的接口交互,从而将需要的各种数据和指令等信息都通过键盘来输人计算机。

但是,各种嵌人式系统(如:

手机、微波炉、电风扇等)所需的键盘的按键个数非常有限,通常为几个到十几个不等(而标准键盘通常为:

一百多个按键并且每个按键所代表的功能含义也各不相同。

所以,每一种嵌入式系统都应对键盘(包括键盘扫描模块和相关控制信号等)进行专门设计,以便结合工程实际情况充分利用该系统已有的各种资源,使所设计的键盘很好地融合到嵌人式系统中[1]。

在现代个人计算机系统中,一般都采用通用的标准键盘(如:

标准101/102键盘或Microsoft自然PS/2键盘)来实现人与计算机之间的接口交互,所需要的各种数据和指令等信息都通过键盘来输入计算机。

但是,在各种嵌入式系统(如手机、微波炉、电风扇等)中,所需要的键盘按键个数非常有限,通常为几个到十几个不等(而标准键盘通常为一百多个按键),并且每个按键所代表的功能含义也各不相同。

所以,针对每一种嵌入式系统都应对键盘(包括键盘扫描模块和相关控制信号等)进行专门设计,结合工程实际情况充分利用该系统已有的各种资源,使所设计的键盘恰如其分地融合到嵌入式系统中,成为其不可分割的一部分[2]。

在数字电路中,可以利用编码器实现按键键值的直接编码。

将每个按键的输出信号对应连接到编码器的每个输入端,通过编码逻辑就可以在编码器的输出端得到对应每个按键的码值,早期称这种键盘为编码键盘。

但是,当按键较多时数码逻辑的成本较高,直接编码的方法也不够灵活,一旦编码逻辑固定就难以更改。

在通用键盘上或当按键数量较多时,普遍采用扫描方式产生键值。

将按键连接成矩阵,每个按键位于某行、某列的交点上,如图1所示,先通过扫描方式确定按下键的行和列位,即位置码或扫描码。

再查表将位置码转换为按键码值或者直接使用扫描码,有些参考书称此为“非编码键盘”。

但这种名称容易让人误解为没有对应的键值,因此又称为扫描式键盘[3]。

1.2国内外发展现状?

近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。

伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA技术的含量正以惊人的速度提升。

将尽可能大的完整的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用[4]。

?

作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。

而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。

1.3本文主要研究内容

本次设计要求设计一个4*4矩阵键盘,也就是行为4,列为4,一共可以设计16个按键。

其中设计方法为:

一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。

如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。

第2章软件及语言简介

2.1Quartus?

II软件简介

QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera?

Hardware?

Description?

Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度[5]。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;

支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用[6]。

目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法[7]。

QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;

芯片(电路)平面布局连线编辑;

LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;

功能强大的逻辑综合工具;

完备的电路功能仿真与时序逻辑仿真工具;

定时/时序分析与关键路径延时分析;

可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;

支持软件源文件的添加和创建,并将它们链接起来生成编程文件;

使用组合编译方式可一次完成整体设计流程;

自动定位编译错误;

高效的期间编程与验证工具;

可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;

能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件[8]。

2.2Verilog语言简介

1983年,GatewayDesignAutomation(GDA)硬件描述语言公司的PhilipMoorby首创了VerilogHDL。

后来Moorby成为VerilogHDL-XL的主要设计者和Cadence公司的第一合伙人。

1984至1986年,Moorby设计出第一个关于Verilog?

HDL的仿真器,并提出了用于快速门级仿真的XL算法,使VerilogHDL语言得到迅速发展。

1987年Synonsys公司开始使用VerilogHDL行为语言作为综合工具的输入。

1989年Cadence公司收购了Gateway公司,VerilogHDL成为Cadence公司的私有财产。

1990年初,Cadence公司把VerilogHDL和VerilogHDL-XL分开,并公开发布了VerilogHDL。

随后成立的OVI(OpenVerilogHDLInternational)组织负责Verilog?

HDL的发展并制定有关标准,OVI由VerilogHDL的使用者和CAE供应商组成。

1993年,几乎所有ASIC厂商都开始支持VerilogHDL,并且认为Verilog?

HDL-XL是最好的仿真器。

同时,OVI推出2.0版本的VerilongHDL规范,IEEE则将OVI的Verilog?

HDL2.0作为IEEE标准的提案[9]。

1995年12月,IEEE制定了VerilogHDL的标准IEEE1364-1995。

目前,最新的Verilog语言版本是2000年IEEE公布的Verilog2001标准,其大幅度地提高了系统级和可综合性能HDL既是一种行为描述语言,也是一种结构描述语言。

如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互连的结构模块。

这意味着利用Verilog语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计[10]。

2.2.1Verilog语言的主要功能

可描述顺序执行或并行执行的程序结构;

用延迟表示式或事件表达式来明确地控制过程的启动时间;

通过命名的事件来触发其他过程里的激活行为或停止行为;

提供了条件和循环等程序结构;

提供了可带参数且非零延续时间的任务程序结构;

提供了可定义新的操作符的函数结构;

提供了用于建立表达式的算术运算符、逻辑运算符和位运算符;

提供了一套完整的表示组合逻辑基本元件的原语;

提供了双向通路和电阻器件的描述;

可建立MOS器件的电荷分享和衰减模型;

可以通过构造性语句精确地建立信号模型[11]。

2.2.2Verilog语言设计数字系统的特点

主要采用自上而下的设计方法。

即从系统总体要求出发,自上而下地逐步将设计的内容细化,最后完成系统硬件的整体设计。

在设计的过程中,对系统自上而下分成三个层次进行设计:

第一层次是行为描述。

所谓行为描述,实质上就是对整个系统的数学模型的描述。

一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。

在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。

第二层次是RTL方式描述。

这一层次称为寄存器传输描述(又称数据流描述)。

如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。

要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。

也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。

第三层次是逻辑综合。

即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。

此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。

此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。

应用逻辑综合工具产生的门级网络表,将其转换成PLD的编程码点,即可利用PLD实现硬件电路的设计[12]。

由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计周期。

第3章4*4矩阵键盘的原理

3.14*4矩阵式键盘

矩阵式键盘(或者叫行列式键盘)常应用在按键数量比较多的系统之中。

这种键盘由行线和列线组成,按键设置在行、列结构的交叉点上,行、列线分别接在按键开关的两端。

行列式键盘可分为非编码键盘和编码键盘两大类。

编码键盘内部设有键盘编码器,被按下键的键号由键盘编码器直接给出,同时具有防抖和解决重键的功能。

非编码键盘通常采用软件的方法,逐行逐列检查键盘状态,当有键按下时,通过计算或查表的方法获取该键的键值,通常,计算机通过程序控制对键盘扫描,从而获取键值,根据计算机扫描的方法可以分为定是扫描法和中断扫描法两种,原理结构如图3-1所示。

图3-14*4矩阵键盘原理结构框图

3.2总体结构

由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生clk信号。

同时还必须有按键译码电路从kbrow信号和kbcol信号中译码出按键的值。

此外,一般还需要一个按键发生信号用于和其他模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。

由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。

在本次课程设计中,最为重要的两部分就是数码管显示电路以及键盘结构,这两部分的组成,形成了4*4矩阵键盘,通过键盘输入,数码管进行显示。

3.2.1LED数码管

led数码管(LEDSegmentDisplays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。

这些段分别由字母a,b,c,d,e,f,g,dp来表示。

图3-27段LED显示器件外形图

在本系统中,4*4键盘共有16个键,对其编号0~9,A~F,所以用一个7段数码管静态显示即可满足即时显示按键信息的要求。

所谓静态显示,就是当显示器件某个字符时,相应的显示段(发光二极管)恒定地导通或截止,直到显示方式显示一个字符时,只需要微处理器送一次代码,因此占用机时少,而且显示稳定可靠,其缺点是,使用元器件相对较多,且线路比较复杂,相对而言成本较高,比较适合显示位数较少的情况。

器件结构如图3-3所示。

图3-37段LED显示器件结构图

3.2.2键盘结构

本系统中的4*4矩阵式键盘结构简单,按键数较少,采用非编码式键盘,当有键盘按下时,由单片机通过程序扫描确定键值,设计一个4*4矩阵键盘,也就是行为4,列为4,一共可以设计16个按键。

并将获得的键值通过LED数码管显示出来,4*4矩阵式键盘结构及键值分布如图3-4所示。

图3-4键盘键值分布

3.3键盘扫描

本设计一共有三个模块,分别为:

扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。

扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。

键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。

时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。

行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下:

1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。

若所有列线均为高电平,则键盘中无键按下。

2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。

其方法是:

依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

4个模块来实现键盘扫描功能,分别为即时扫描模块、扫描控制模块、扫描脉冲模块和键值传送模块。

3.4矩阵键盘接口电路的原理?

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口则作为输入。

这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

第4章程序仿真

4.1流程图

本次设计的4*4矩阵键盘,作为输入的有clk,start,kbcol,分别是时钟信号,开始,行输入,作为输出的有kbrow,scan,seg7_out分别是列扫描,数码管位数以及输出结果即哪个键被按下,在程序仿真是我们给输入一个随机信号,若输入是1,2,3,4行,那么会有相应输出产生,否则数码管会显示零,具体流程图如4-1所示。

图4-1流程图

4.2程序结果讨论

只使用一个数码管显示,通过随机信号的不断变化,会有不同的输出产生,周而复始地扫描。

其停留在某个状态的时间大约为10ms。

更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生。

另外,更短的停留时间还容易采集到抖动信号,会干扰判断。

而太长的停留时间则会使某些较快的按键东走丢失。

完成程序见附录,部分主要程序如图4-1。

图4-1主要程序

图4-2程序结果

第5章波形仿真及讨论

5.1波形结果

运行结果如图5-1所示。

图5-1波形结果

5.2结果讨论

本次课程设计主要是使用软件QuartusII和Verilog语言进行编写程序,从而达到4*4矩阵键盘的目的,实现其相应功能。

首先输入程序,程序正确之后,进行波形仿真,由于不是实物,没有键盘,所以通过给一个随机信号来模拟某个键被按下,因此会出现一些没有的行数,故而在波形仿真数码管会产生0,这就是因为没有相应的列数有行数对应,4*4矩阵,那么就只有4行4列,只有随机信号产生1,2,3,4,这几行时,才会有相应的正确输出产生。

其次本次课程是仿真,通过时钟信号来控制,所以时钟信号一直有,就会一直进行循环列扫描,行扫描译码。

当进行列扫描时,扫描信号由列引脚进入键盘,以1000,、0100、0010、0001的顺序每次扫描不同的一列,然后读取行引脚的电平信号,以此可以判断是哪个按键被按下。

例如,当行扫描信号为“0100”时,表示正在扫描“89AB”一列,如果该列没有按键别按下,则由行信号读出的值为“0000”;

反之,如果按键“9”被按下时,则该行信号读出的值为“0100”。

结论

本次课题设计完成的是基于FPGA的4*4矩阵键盘设计,通过一个多星期的不断努力、克服各种困难,最终实现了任务目标。

本次设计解决的主要问题是是利用verilog?

HDL语言完成基于FPGA的矩阵键盘的编程问题。

矩阵式键盘是一种常见的输入装置,在日常生活中,矩阵式键盘在计算机、电话、手机、微波炉等各式电子产品上已经被广泛应用。

各式各样的矩阵键盘控制着各种各样的功能,矩阵式键盘控制接口电路是最基本的输入电路,它我们利用软件QuartusII自行设计并修改的键盘输入显示电路是通过VHDL语言编写并实现了键码的对应显示。

并且发现许多的问题,还有很多需要改进的地方,设计的过程很有意思也非常繁琐,再利用QuartusII进行

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

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1