矩阵键盘控制接口电路设计

合集下载

矩阵键盘电路设计

矩阵键盘电路设计

矩阵键盘电路设计矩阵键盘是一种常见的输入设备,它通过矩阵布局的按键组成,可以方便地输入数字、字母和其他符号。

在电子设备中,矩阵键盘通常采用扫描电路进行输入和控制。

在本文中,将探讨矩阵键盘电路的设计。

首先,我们需要确定矩阵键盘的布局。

一般情况下,矩阵键盘采用4×4或者3×4的布局。

每个按键都是一个开关,当按下时闭合,松开时断开。

接下来,我们需要设计输入电路。

输入电路通过扫描矩阵键盘的每一行和每一列来检测按键的状态。

为了实现这个功能,我们可以使用两个二进制计数器来控制扫描的行和列。

每当计数器增加时,就对应地扫描一行或者一列。

我们可以通过多路复用器和反向器将计数器输出与矩阵键盘的行和列相连。

当计数器的输出与矩阵键盘的行和列相连后,我们可以通过逐行或逐列地扫描矩阵键盘并检测按键的状态。

如果有按键按下,我们可以将对应的按键编码为数字信号。

在设计输入电路时,我们还需要考虑按键去抖动的问题。

按键去抖动是指当按键被按下或松开时,会产生多次开关闭合的现象。

为了解决这个问题,我们可以使用一个滤波器电路来消除按键的抖动。

滤波器电路可以采用RC滤波器或者Schmitt触发器等。

设计好输入电路后,接下来需要设计控制电路。

控制电路负责扫描矩阵键盘的每一行和每一列,以及对按键的状态进行控制。

我们可以使用计时器和计数器来控制扫描的速度和顺序。

当检测到按键按下时,控制电路会将对应的按键编码为数字信号并传递给接收端。

此外,在设计控制电路时,我们还需要考虑矩阵键盘的多键同时按下的问题。

当多个按键同时按下时,我们需要使用矩阵解码器来对这些按键进行解码,并将解码结果传递给接收端。

在进行电路设计时,我们还需要考虑一些其他的因素,比如布线、电源供应和接收端的设计等。

布线是指将电路中的各个元件和连接线布置在PCB板上的过程。

在布线时,我们需要确保信号传输的可靠性和稳定性。

电源供应是指提供电路所需的电源电压和电流的过程。

接收端的设计是指接收和处理从矩阵键盘电路传递过来的数字信号的过程。

矩阵键盘显示电路的设计

矩阵键盘显示电路的设计

矩阵键盘显示电路的设计一、实验目的1、了解普通4×4键盘扫描的原理。

2、进一步加深七段码管显示过程的理解。

3、了解对输入/输出端口的定义方法。

二、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。

作为一个嵌入系统设计人员,总是会关心产品成本。

目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。

嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。

图12-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图10-1 所示的简单电路,微处理器可以容易地检测到闭合。

当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。

可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。

尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。

当触点闭合时,其弹起就像一个球。

弹起效果将产生如图12-2 所示的好几个脉冲。

弹起的持续时间通常将维持在5ms∼30ms 之间。

如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。

然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。

图12-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图12-3 所示的二维矩阵。

当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。

一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。

矩阵所需的键的数目显然根据应用程序而不同。

每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

图12-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

矩阵键盘的接口与控制

矩阵键盘的接口与控制

if(recode==0xfe) { switch(sccode) { case 0xfe: keyvalue=0;break; case 0xfd:keyvalue=1;break; case 0xfb:keyvalue=2;break; case 0xf7:keyvalue=3;break; case 0xef:keyvalue=4;break; case 0xdf:keyvalue=5;break; case 0xbf:keyvalue=6;break; case 0x7f:keyvalue=7;break; default:break; } }
sccode=P1; recode=temp; temp=temp<<1|0x01; } else temp=temp<<1|0x01; } if(recode==0xfe) { switch(sccode) { case 0xfe: keyvalue=0;break; case 0xfd:keyvalue=1;break; case 0xfb:keyvalue=2;break; case 0xf7:keyvalue=3;break; case 0xef:keyvalue=4;break; case 0xdf:keyvalue=5;break; case 0xbf:keyvalue=6;break; case 0x7f:keyvalue=7;break; } }
4*4矩阵键盘与51单片机的接口
P1口的高四位连接键盘的列线,低四位连接键盘的行线
实验箱上的键盘
列 线 接 口 插 孔
行 线 接 口 插 孔
实验箱上的键盘原理图
“0”
键盘与单片机的接口
3条行线连接P3口的低三位 8条列线连接P1口

课程设计报告矩阵键盘控制

课程设计报告矩阵键盘控制

北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:矩阵键盘控制接口设计作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:作者姓名:作者学号:0指导教师姓名:完成时间:2009-12-18内容摘要本课程设计所用实验器材主要有计算机和北京精仪达盛科技有限公司的EL教学实验箱。

经编译、仿真,检查无误并且符合设计要求后,正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。

将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。

本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。

在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。

关键词:VHDL语言 EDA技术按键消抖动电路键盘扫描电路键值译码电路按键码存储电路显示键值电路目录一概述 (5)二方案设计与论证 (5)三单元电路设计 (6)1.键盘接口消抖动元件 (6)2.时钟产生电路 (6)3.键盘扫描电路 (7)4.键盘译码电路 (7)5.寄存器_选择器模块电路 (7)6.译码模块电路 (7)四器件编程与下载 (8)五性能测试与分析 (16)六实验设备 (16)七心得体会 (16)八参考文献 (17)课程设计任务书一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。

首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。

矩阵键盘电路设计

矩阵键盘电路设计

学号: 2课程设计题目矩阵键盘电路设计教学院计算机学院专业计算机应用技术班级姓名指导教师2010 年01 月12 日前言.................................................................... 第一章需求分析.........................................................功能描述.........................................................功能分析......................................................... 第二章系统的原理及分析.................................................用到的知识点的介绍,知识点使用的总体思路第三章详细设计.........................................................硬件设计系统结构图,元器件的选择等软件设计所设计的软件关键模块的程序流程第四章测试............................................................运行结果分析等第五章总结............................................................. 参考文献................................................................ 附录关键程序代码........................................................矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

单片机4×4矩阵键盘设计方案

单片机4×4矩阵键盘设计方案

1、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。

(2)键盘中对应按键的序号排列如图14.1所示。

2、参考电路图14.2 4×4矩阵式键盘识别电路原理图3、电路硬件说明(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。

4、程序设计内容(1)4×4矩阵键盘识别处理。

(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

5、程序流程图(如图14.3所示)6、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;;CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;;PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHJZ SW1LCALL DELAY10MS JZ SW1MOV A,P3ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0 LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4 LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8 LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1 LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5 LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9 LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2 LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6 LJMP 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,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KE MOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KF MOV COUNT,#11 LJMP DKKF: CJNE A,#07H,KG MOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUAN DK: 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,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;;;;;;;;;;结束标志;;;;;;;;;;END7、C语言源程序#includeunsigned 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];}}}}8、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。

矩阵式键盘的接口设计与编程

矩阵式键盘的接口设计与编程

;<--------------------------判断是否真的有键按下--------------------->
T_KEY:
ACALL
DL_20MS
;调用延时子程序
ACALL
P_KEY
;再次调用“有无按键按下子程序”
JNZ
IN_SCAN
;若有键按下,则执行逐行扫描程序
AJMP
SCAN
;若无键按下,则不断查询
;<--------------------------扫描数据初始化----------------------->
单片机原理及应用技术
—1—
one 矩阵式键盘接口设计——基于行反转法
4×4矩阵式键盘接 口设计如图所示
—2—
图中P1口的低4位作为行线,P2口的低4位作为列线。行线通过74LS21进行逻辑与操作后作为单 片机的外部中断源输入,当有键按下时以中断形式去执行相应的按键处理程序。
行反转法因判键时将输入与输出线反转互换而得名,步骤如下:
PB口作为扫描口需要设为输出,PA口设为读入。 逐行扫描时,PB口的状态为:
PB7 PB6 PB5 PB4 111 1 111 1 111 1 111 1 111 0 110 1 101 1 011 1
PB3 PB2 PB1 PB0 1 110 1 101 1 011 0 111 1 111 1 111 1 111 1 111
—3—
【例9-3】 行反转法判断按键编号,并存入40H单元,程序如下
ORG
0000H
LJMP
MAIN
ORG
0003H
LJMP
INT0
ORGБайду номын сангаас

矩阵键盘及其电路设计

矩阵键盘及其电路设计
键(9键)。
3、矩阵式键盘的按键识别方法
• 逐行扫描法是一种逐行或逐列判断是否有键按下的方法。扫描法又称为逐行或列扫 描查询法,是一种最常用的按键识别方法。利用行扫描法判断矩阵键盘中被按下的 键时主要经过以下步骤。
• 第一步、识别有无键按下 • 让所有的行线均置为0电平,即P1.4-P1.7均输出低电平,读取列线P1.0-P1.3的值,
若P1.0-P1.3均为高电平,则表示无键按下,若不全为高电平,则表示有键按下 • 第二步、若有键被按下,识别出具体的按键 • 方法是采用逐行扫描的办法,即逐行置零电平,检查各列线的电平。如首先置第一
行为0,其余行为1,也就是让P1.4-P1.7输出0111,读取列线P1.0-P1.3的值,若不 全为1,则根据读取的列值即可判断出按键在第一行第几列上,从而识别出按键的 位置,若全为1,表示第一行无键按下,那么就再置第二行为0,其余行为1,即 P1.4-P1.7输出1011,再读取列值,根据列值结果,判断第二行上有无键被按下, 依此类推,识别出按键的键值。
1、独立式键盘及其接口
• 独立式键盘,是一种最简单的键盘构成 方法,它将每个按键的一端接到单片机 的I/O口,另一端接地,如图所示。
• 主要特点是各个键相互独立,每一个按 键对应一根输入口线。键盘软件结构简 单,但当键盘数目较多时,需占用大量 的输入口线,所以在使用上受到了很大 的限制。
2、矩阵式键盘及其接口
键盘及其电路设计
一、键盘的基本概念
• 键盘是一组开关的集合,是最常用的输入设备之一。组成键盘的按键 有触点式和非触点式两种。
• 触点式按键通常是机械触点开关,它利用了机械触点的通、断特性来 完成信息的输入。
• 非触点式按钮主要指利用电子器件的通、断来完成信息的输入,如工 作在开关状态的三极管等。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东北石油大学课程设计课程硬件课程设计题目矩阵键盘控制接口电路设计院系计算机与信息技术学院专业班级学生姓名学生学号指导教师2011年 07月 10 日东北石油大学课程设计任务书课程硬件课程设计题目矩阵键盘控制接口设计专业计算机与信息技术09-4 姓名学号主要内容、基本要求、主要参考资料等一、主要内容:利用EL教学实验箱、微机和QuartusⅡ软件系统,设计并实现一个4×8键盘接口控制器。

设计过程中使用层次设计方法和VHDL语言,完成硬件设计和功能仿真。

最后下载到EL教学实验箱中予以实现。

二、基本要求:1.按照层次设计方法实现键盘接口控制器中的时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路和显示八段数码管电路。

2.按下某一键时,在数码管上显示该键对应的键值。

三、参考文献:[1] 潘松.EDA技术实用教程[M].北京:科学出版社, 2003.11-13.[2] 杨恒.FPGA/CPLD最新实用技术指南[M].北京:清华大学出版社, 2005.20-22.[3] EDA先锋工作室.Altera FPGA/CPLD设计[M].北京:人民邮电出版社2005.32-33.[4] 潘松.SOPC技术实用教程[M] .清华大学出版社.2005.1-15.完成期限:第19周指导教师:专业负责人:2011年06 月28 日目录第1章EDA的概述 (1)1.1 EDA的概述 (1)第2章QUARTUS II系统 (3)2.1 QUARTUS II (3)第3章矩阵键盘控制接口电路 (4)3.1 概述 (4)3.2 底层实体电路 (7)3.3 顶层实体电路 (10)3.4 仿真结果 (17)3.5 硬件验证结果 (18)结论 (21)参考文献 (22)第1章EDA的概述1.1 EDA的概述EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。

在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。

这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。

这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC 版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

二、几个有关EDA的专题网站(1) EDA中心(2) EDA中国门户网站(3) 中国EDA工程网(4) EDA爱好者(5) EDA教学与研究三、设计方法(1) 前端设计(系统建模RTL 级描述)后端设计(FPGAASIC)系统建模(2) IP 复用(3) 前端设计(4) 系统描述:建立系统的数学模型。

(5) 功能描述:描述系统的行为或各子模块之间的数据流图。

6) 逻辑设计:将系统功能结构化,通常以文本、原理图、逻辑图、布尔表达式来表示设计结果。

(7) 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性及时序特性。

四、EDA工具软件EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。

目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、PSPICE、multiSIM7(原EWB的最新版本)、OrCAD、PCAD、、LSIIogic、MicroSim,ISE,modelsim等等。

这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。

EDA工具软件厂商三巨头:Synopsys、Mentor Graphics、Cadence。

“eda”在英汉词典中的解释(来源:百度词典):EDA abbr. 1. =Economic Development Administration (美国)(商务部)经济开发署 2. =Economic Development Association (美国)经济开发协会eda abbr. 1. =early departure authorized 经批准提前出发第2章QUARTUS II系统2.1 QUARTUS IIQuartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、V erilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

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

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

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

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

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

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

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

Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus 平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

支持MAX7000/MAX3000等乘积项器件第3章矩阵键盘控制接口电路3.1 概述在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。

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

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

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

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

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

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

实验仪器中4×8矩阵键盘的电路原理图如图所示:图3-1 4×8矩阵键盘的电路原理图扫描信号为BCOM[8..1],在BCOM[8..1]前已接有一个3-8译码器,3-8译码器的输入为SEL0~SEL3。

当3-8译码器的输入为“000”时,即BCOM1为‘0’,其他位为‘1’,我们按下第一排第一键,此时KIN0输出‘0’,KIN1~KIN3输出全为‘1’,按下第二排第二键时,KIN1输出‘0’,其他输出‘1’;当3-8译码器输入为001时,即BCOM2为‘0’,我们按下第一排第二键,此时KIN0输出‘0’,KIN1~KIN3输出全为‘1’,同理其他键依此类推。

键盘上的每个按键就是一个开关,当某键被按下时,该按键的接点会呈现‘0’状态,反之为‘1’。

扫描信号为SEL[2..0]进入3-8译码器,再从译码器输出到键盘,所以第一次只能扫描一排,依此周而复始。

按键位置与数码的关系如表50-1所示。

若从KIN[3..0]输出的皆为‘1’时,表示没有按键按下,代表该列没有按键被按下,则不进行按键编码的操作,反之,如果有被按下时,则应将KIN[3..0]读出的值送到译码电路进行编码。

设置扫描信号为SEL2~SEL0,列线按键输入信号KIN3~KIN0与按键位置的关系如表所示:SEL2~SEL0 KIN3~KIN0 对应的按键键盘译码输出按键功能000 1110 0 00000 数字0 1101 6 00100 数字6 1011 LAST 10100 功能键0111 CTRL 11000 功能键001 1110 1 00001 数字1 1101 7 00111 数字7 1011 STEP 10101 功能键0111 EMPTY1 11010 扩展1010 1110 2 00010 数字2 1101 REG 10010 功能键1011 C 01100 字母C 0111 EMPTY2 11011 扩展2011 1110 3 00011 数字3 1101 EXEC 10011 功能键1011 D 01101 字母D 0111 EMPTY3 11100 扩展3100 1110 MEM 10000 功能键1101 8 01000 数字8 1011 E 01110 字母E 0111 EMPTY4 11101 扩展4101 1110 ESC 10001 功能键1101 9 01001 数字9 1011 F 01111 字母F 0111 SHIFT 11001 功能键110 1110 4 00100 数字4 1101 A 01010 字母A 1011 NEXT 10110 功能键0111 NONE 11110 无定义111 1110 5 00101 数字5 1101 B 01011 字母B 1011 ENTER 10111 功能键0111 NONE 11110 无定义图3-2 键盘参数表3.2 底层实体电路弹跳消除电路因为按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。

相关文档
最新文档