矩阵键盘EDA技术课程设计
4×4矩阵式键盘的课程设计

“电子创新设计与实践”课程期中课题设计报告姓名:张思源,学:20102121026,年级:2010,专业:电信报告内容设计一个4*4矩阵键盘,并编写相关程序摘要1.4×4矩阵式键盘程序识别原理。
2.4×4矩阵式键盘按键的设计方法。
报告正文:一、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。
(2)键盘中对应按键的序号排列如图14.1所示。
二、参考电路图14.2 4×4矩阵式键盘识别电路原理图图14.1 4×4键盘0-F显示图14.3 4×4矩阵式键盘识别程序流程图三、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。
(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。
四、程序设计内容(1)4×4矩阵键盘识别处理。
(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
五、程序流程图(如图14.3所示)六、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;; CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;; PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW1LCALL DELAY10MSJZ SW1ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW2LCALL DELAY10MSMOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW3LCALL DELAY10MSJZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6LJMP DKKA: CJNE A,#0BH,KB MOV COUNT,#10 LJMP DKKB: CJNE A,#07H,KC MOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFH CLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KEMOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KFMOV COUNT,#11LJMP DKKF: CJNE A,#07H,KGMOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUANDK: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;; DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;; DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f,0x66,0x7f,0x39, 0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个//{ case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键// { case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}参考文献:百度百科。
基于EDA的矩阵键盘设计

学号 14082101445 成绩:信息学院《EDA技术及应用》课程论文题目:基于FPGA的矩阵键盘设计作者罗诗雨班级 08-1BF 系别信息学院专业自动化完成时间 2010年12月12日1 绪论随着人们生活水平的提高,19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB (Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
此次设计即为基于FPGA的矩阵键盘设计。
1.1 4×4矩阵键盘的工作原理在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
1.2矩阵键盘的功能特点在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵键盘中每条水平线和垂直线在交叉处不直接相连,而是通过一个按键相连接,这样在由N条水平线和M条垂直线最多可以有N *M 个按键,大大的减少了对于芯片I/O的占用。
4×4矩阵键盘EDA设计

else if(Clk4EN) begin
case(KeyOut) 4'b1110 : KeyTmp1[3:0] <= KeyDone;//扫描过程中消抖 4'b1101 : KeyTmp1[7:4] <= KeyDone; 4'b1011 : KeyTmp1[11:8] <= KeyDone; 4'b0111 : KeyTmp1[15:12] <= KeyDone; default : KeyTmp1 <= 16'hffff;//清零
2021/7/23
9
7/23/2021
硬件设计
8段数码管原理图
2021/7/23
11
硬件设计
2021/7/23
12
2021/7/23
软件设计
module matrix_keyboard(Clock,nRST,nEN,pEN,INT,KeyVal,KeyIn,KeyOut);
input
Clock;//系统时钟
KeyVal <= 8'hf2;
else if(pFlag[7])
KeyVal <= 8'hfa;
else if(pFlag[8])
KeyVal <= 8'hf9;
else if(pFlag[9])
KeyVal <= 8'hf6;
else if(pFlag[10])KeyVal <= 8'hf3;
else if(pFlag[11])KeyVal <= 8'hfb;
)
EDA矩阵键盘

实验十五矩阵键盘接口电路的设计一、实验目的1、了解普通4×4键盘扫描的原理。
2、进一步加深七段码管显示过程的理解。
3、了解对输入/输出端口的定义方法。
一、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。
作为一个嵌入系统设计人员,总是会关心产品成本。
目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。
嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。
图15-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图15-1 所示的简单电路,微处理器可以容易地检测到闭合。
当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。
可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。
尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。
当触点闭合时,其弹起就像一个球。
弹起效果将产生如图15-2 所示的好几个脉冲。
弹起的持续时间通常将维持在5ms∼30ms 之间。
如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。
然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。
图15-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图15-3 所示的二维矩阵。
当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。
一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。
矩阵所需的键的数目显然根据应用程序而不同。
每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。
图15-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
矩阵按键实验课程设计

矩阵按键实验课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握矩阵按键的基本原理和实验操作方法;技能目标要求学生能够独立完成矩阵按键实验,并能够分析实验结果;情感态度价值观目标要求学生培养对科学实验的兴趣,提高实验操作的规范性和准确性。
通过本课程的学习,学生将能够了解矩阵按键的原理和应用,掌握实验操作的基本技能,培养科学实验的兴趣和能力。
同时,学生将能够在实验过程中培养观察、思考、解决问题的能力,提高实验操作的规范性和准确性。
二、教学内容本课程的教学内容主要包括矩阵按键的基本原理、实验设备和实验操作方法。
首先,将介绍矩阵按键的基本原理,包括矩阵按键的结构和工作原理。
然后,将介绍实验设备的使用方法,包括矩阵按键模块、开发板和编程软件的使用。
最后,将介绍矩阵按键实验的操作方法,包括实验步骤、实验数据采集和实验结果分析。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学。
首先,将采用讲授法,向学生讲解矩阵按键的基本原理和实验操作方法。
然后,将采用实验法,让学生亲自动手进行实验操作,并观察实验结果。
此外,还将采用讨论法,引导学生进行小组讨论,共同分析实验结果。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备适当的教学资源。
教材方面,将使用《电子实验教程》一书,该书详细介绍了矩阵按键实验的操作方法和实验原理。
参考书方面,将提供《矩阵按键应用手册》等资料,供学生参考。
多媒体资料方面,将制作实验操作视频和实验原理动画,以直观地展示实验过程和原理。
实验设备方面,将准备矩阵按键模块、开发板和编程软件等设备,供学生进行实验操作。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地反映学生的学习成果。
评估方式包括平时表现、作业和考试等。
平时表现评估将关注学生在课堂上的参与度、提问和回答问题的积极性等。
作业评估将根据学生完成的实验报告和课后作业的质量进行评分。
课程设计报告矩阵键盘控制[1](1)
](https://img.taocdn.com/s3/m/53226ded5ef7ba0d4a733bb6.png)
忻州师范学院《EDA技术综合性设计》课程设计报告报告题目:矩阵键盘控制接口设计所在系部:电子系所在专业:电子信息科学与技术所在班级:电本0803班姓名:徐丽娜200807211163闫爱红 200807211164武艳红200807211165贺吉盛200807211166指导教师姓名:任国凤完成时间:2011.05.26目录一概述 (3)二方案设计与论证 (3)三单元电路设计 (4)1.键盘接口消抖动元件 (4)2.时钟产生电路 (5)3.键盘扫描电路 (5)4.键盘译码电路 (5)5.寄存器_选择器模块电路 (5)6.译码模块电路 (6)四器件编程与下载 (6)五性能测试与分析 (7)六实验设备 (8)七心得体会 (8)八参考文献 (8)九附录 (9)一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。
首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中。
正确的将脉冲源、FLEX10K \ EPF10K10LC84-4芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。
再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。
如:当按下5时,数码管显示05。
本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。
在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。
矩阵键盘键信号检测电路设计-EDA课程设计说明书

课程设计说明书题目EDA技术与应用系(部)专业(班级)姓名学号指导教师起止日期EDA技术课程设计任务书系(部):专业:指导教师:目录引言 (5)一、绪论 (5)1.1 FPGA概况 (5)1.2 此课题的研究意义 (6)二、矩阵键盘接口电路的原理与总体设计 (6)2.1 矩阵键盘接口电路的原理 (6)2.2 总体设计 (8)三、各模块的设计及仿真 (8)3.1 键盘扫描电路 (8)3.2 键盘译码电路和按键标志位产生电路 (11)3.3 时钟产生模块 (16)3.4 键盘接口电路顶层电路实现 (18)四、硬件测试 (19)五、实验设备 (19)六、总结 (20)参考文献 (20)矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。
并且进行模拟仿真,下载到EDA实验箱进行硬件验证。
一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
EDA课程设计-矩阵键盘-交通灯

1 矩阵键盘扫描要求:设计矩阵式键盘接口,并在一个数码管上面显示按下的数字,从0到9以及小数点。
判断键盘中有无按键按下是通过行线送入扫描线好然后从列线读取状态得到的。
其方法是依次给行线送低电平,检查列线的输入。
如果列线全是高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。
整个设计程序包括三个模块:时钟分频、键盘扫描和键译码转换。
时钟分频:由于使用的外部时钟频率为50MHz,这个频率对扫描来说太高,所以这里需要一个分频器来分得适合键盘扫描使用的频率。
键盘扫描:由键盘的工作原理可知,要正确地完成按键输入工作必须有按键扫描电路产生KEYI信号,同时必须有按键译码电路从KEYI中和KEYOUT中读出按键的键值。
键盘扫描电路是用于产生KEYI3~ KEYI0 信号,其变化顺序是1110→1101→1011→0111→1110…周而复始地扫描。
其停留时间大慨在10ms。
键盘译码:键盘译码电路是从keyI3~keyI0和keyout3~keyout0信号中译码出按键值的电路。
将此按键值显示在数码管上。
FPGA_CLK 系统的主时钟MASTER_RESET_n 主复位Button[0]-[15] 拨码开关/白色按钮通过跳线Jxx选择Seven_seg[0]-[7] 数码管的显示Seven_seg[8]-[15] 数码管的选择LED_DOWN[0]-[7] 8个ledKeyboard_Down[0]-[8] 键盘输入/AD输入,通过JP8选择低位表示行。
原理图中Keyboard_Down[0]-[4]对应KEYI[0-4]Keyboard_Down[5]-[8]对应KEYO[0-3]此例中Keyboard_Down[1]-[4]对应KEYI[0-3]Keyboard_Down[5]-[8]对应KEYO[0-3]2、交通灯的控制课程设计原理:在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《电子设计EDA》课程设计专业:电子信息科学与技术班级:2010级电信本(1)班姓名: ***学号: *********指导老师: ***完成时间: 2012.11—2012.12教师评分:目录一、绪论 (1)1.1 FPGA概况 (1)1.2 本课题的研究意义 (2)二、课程设计的任务和目的 (3)三、矩阵键盘接口电路的原理与总体设计 (3)3.1 矩阵键盘接口电路的原理 (3)3.2 总体设计 (5)四、各模块的设计及仿真 (6)4.1 键盘扫描电路 (6)4.2 键盘译码电路和按键标志位产生电路 (8)4.3 时钟产生模块 (10)4.4 键盘接口电路顶层电路实现 (12)五、参考文献 (13)六、心得体会 (13)七、附录 (14)7.1 源程序代码 (14)2题目:矩阵键盘控制接口设计一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。
其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。
典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。
PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。
还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。
PLA 器件既有现场可编程的,也有掩膜可编程的。
在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。
它采用了E'PROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。
这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL 结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。
这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。
与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量1稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。
几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
1.2 本课题的研究意义近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。
伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA技术的含量正以惊人的速度提升。
将尽可能大的完整的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用。
作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。
而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。
本次设计要求设计一个4*9矩阵键盘,也就是行为4,列为9,一共可以设计36个按键。
其中设计方法为:一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。
如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。
一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。
键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心设计,要不然看不出结果的。
2二、课程设计的任务和目的20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
本次设计在EDA开发平台QUARTUSⅡ7.2上利用VHDL语言设计矩阵键盘控制接口电路。
要求设计一个4×9矩阵键盘,一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。
键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
通过对课题的分析研究,掌握了VHDL语言编程方法,同时也增强了个人的学习能力和动手能力。
三、矩阵键盘接口电路的原理与总体设计本章首先介绍矩阵键盘的设计思路,总体来说行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
最后介绍4*9键盘的总体设计思路。
3.1 矩阵键盘接口电路的原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口3则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
行列式键盘的电路原理如图3.1.1所示:(为了说明问题以4*4为例)Keyin3Keyin2Keyin1Keyin0FPGAKeydrv0Keydrv0 Keydrv0 Keydrv01523467890A BC D E F+5v+5V图3.1.1 行列式键盘的电路原理图设置扫描信号为keydrv3~keydrv0,列线按键输入信号keyin3~keyin0与按键位置的关系如表3.1.1所示:表3.1.1 扫描信号和列线按键输入信号与按键之间的关系表keydrv3~keydrv0 keyin3~keyin0 对应的按键1110 1110 1 1101 2 1011 3 0111 4 1110 51101 1101 6 1011 7 0111 845 101111109 1101 0 1011 A 0111B 1110C 0111 1101D 1011 E0111F3.2 总体设计矩阵键盘控制系统的总体设计如图3.2.1所示:图3.2.1 键盘接口电路结构图由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生keydrv3~keydrv0信号,同时还必须有按键译码电路从keydrv3~keydrv0信号和keyin3~keyin0信号中译码出按键的值。
此外,一般还需要一个按键发生信号用于和其他模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。
由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。
因此得到键盘接口电路的结构如上图所示。
键盘译码电路按键标志产生电路4*9键盘时钟产生电路扫描电路keyvalukeypresseclkKeydrv[3..0]四、各模块的设计及仿真4.1 键盘扫描电路键盘扫描电路是用于产生keydrv3~keydrv0信号,其变化的顺序依次是1110---1101---1011---0111---……周而复始地扫描。
其停留在某个状态的时间大约为10ms。
更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按键东走丢失。
键盘扫描电路的外部接口电路如图4.1.1所示,其中clk_scan是周期为10ms的扫描时钟,keydrv为输出到键盘的扫描信号,宽度为4位。
图4.1.1 键盘扫描电路的外部接口电路图其VHDL描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY key_scan IS-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!PORT(clk_scan : IN STD_LOGIC; --扫描时钟,周期10mskeydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--输出扫描信号);-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!END key_scan;-- Architecture BodyARCHITECTURE key_scan_architecture OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1110" ;--定义状态机编码CONSTANT s1 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1101" ;CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1011" ;CONSTANT s3 :STD_LOGIC_VECTOR (3 DOWNTO 0):="0111" ;SIGNAL present_state:STD_LOGIC_VECTOR(3 DOWNTO 0);6--状态机现态SIGNAL next_state:STD_LOGIC_VECTOR(3 DOWNTO 0);--状态机次态BEGIN--状态更新进程PROCESS(clk_scan)BEGINIF(clk_scan'event and clk_scan='1') thenpresent_state<=next_state;END IF;END PROCESS;--状态译码PROCESS (present_state)BEGINCASE present_state ISWHEN s0=>next_state<=s1;WHEN s1=>next_state<=s2;WHEN s2=>next_state<=s3;WHEN s3=>next_state<=s0;--多余状态处理WHEN OTHERS=>next_state<=s0;END CASE;END PROCESS;--输出译码keydrv<=present_state;END key_scan_architecture;以上程序采用一个状态机来实现扫描电路。