您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页矩阵键盘控制接口电路设计

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

来源:华佗小知识


东 北 石 油 大 学

课 程 设 计

课 程 硬件课程设计 题 目 矩阵键盘控制接口电路设计 院 系 专业班级 学生姓名 学生学号 指导教师

2011年 07月 10 日

东北石油大学课程设计任务书

课程 硬件课程设计 题目 矩阵键盘控制接口设计

专业 姓名 学号 主要内容、基本要求、主要参考资料等 一、主要内容:

利用EL教学实验箱、微机和QuartusⅡ软件系统,设计并实现一个4×8键盘接口控制器。设计过程中使用层次设计方法和VHDL语言,完成硬件设计和功能仿真。最后下载到EL教学实验箱中予以实现。 二、基本要求:

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

2. 按下某一键时,在数码管上显示该键对应的键值。 三、参考文献:

[1] 李国洪,胡辉.可编程器件与EDA技术与实践[M].北京:机械工业出版社,2004. [2] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.

[3] 王行,李衍.EDA技术入门与提高[M].西安:西安电子科技大学出版社,2005. [4] 徐惠民,安德宁.数字逻辑设计与VHDL描述[M].北京:机械工业出版社,2008.

完成期限: 18-19周 指导教师: 专业负责人:

2011年 06 月28 日

目 录

第1章 EDA的概述 .................................................................................................................... 1 第2章 QUARTUS II系统 .......................................................................................................... 3 第3章 矩阵键盘控制接口电路 ................................................................................................. 4

3.1 概述................................................................................................................................. 4 3.2 底层实体电路................................................................................................................. 6 3.3 顶层实体电路................................................................................................................. 9 3.4 仿真结果....................................................................................................................... 16 3.5 硬件验证结果............................................................................................................... 17 结 论..................................................................................................................................... 20 参考文献..................................................................................................................................... 21

东北石油大学本科生硬件课程设计

第1章 EDA的概述

EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。电子设计自动化(EDA)技术是电子设计技术和先进的电子制造技术的核心[1]。

20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展[2]。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度[3]。

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

随着计算技术和数字技术的发展,在现代电子设备中,单纯用模拟电路实现的已经很少见,通常只在微弱信号放大、高频数据采集和大功率输出等局部电路采用模拟电路,其余部分广泛采用数字电路。因此,对大多数电子设备而言,其整体部分是数字系统[4]。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。 1.几个有关EDA的专题网站

(1) EDA中心 www.eda.ac.cn (2) EDA中国门户网站 www.edacn.net

1

东北石油大学本科生硬件课程设计

(3) 中国EDA工程网 www.edagc.com (4) EDA爱好者 www.edafans.com (5) EDA教学与研究 www.edateach.com 2.设计方法

(1) 前端设计(系统建模RTL 级描述)后端设计(FPGAASIC)系统建模 (2) IP 复用 (3) 前端设计

(4) 系统描述:建立系统的数学模型。

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

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

(7) 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性及时序特性。 3.EDA工具软件

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

目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、PSPICE、multiSIM7(原EWB的最新版本)、OrCAD、PCAD、、LSIIogic、MicroSim,ISE,modelsim等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。

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

2

东北石油大学本科生硬件课程设计

第2章 QUARTUS II系统

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程[5]。

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 友好的图形界面及简便的使用方法[6]。

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

Altera的Quartus II可编程逻辑软件属于PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

3

东北石油大学本科生硬件课程设计

第3章 矩阵键盘控制接口电路

3.1 概述

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

实验仪器中4×8矩阵键盘的电路原理图如图3-1所示:

图3-1 4×8矩阵键盘的电路原理图

4

东北石油大学本科生硬件课程设计

表3-1 键盘参数表

SEL2~SEL0 KIN3~KIN0 对应的按键 1110 000 1101 1011 0111 1110 001 1101 1011 0111 1110 010 1101 1011 0111 1110 011 1101 1011 0111 1110 100 1101 1011 0111 1110 101 1101 1011 0111 1110 110 1101 1011 0111 1110 111 1101 1011 0111 0 6 LAST CTRL 1 7 STEP EMPTY1 2 REG C EMPTY2 3 EXEC D EMPTY3 MEM 8 E EMPTY4 ESC 9 F SHIFT 4 A NEXT NONE 5 B ENTER NONE 键盘译 按键功能 码输出 00000 00100 10100 11000 00001 00111 10101 11010 00010 10010 01100 11011 00011 10011 01101 11100 10000 01000 01110 11101 10001 01001 01111 11001 00100 01010 10110 11110 00101 01011 10111 11110 数字0 数字6 功能键 功能键 数字1 数字7 功能键 扩展1 数字2 功能键 字母C 扩展2 数字3 功能键 字母D 扩展3 功能键 数字8 字母E 扩展4 功能键 数字9 字母F 功能键 数字4 字母A 功能键 无定义 数字5 字母B 功能键 无定义

扫描信号为BCOM[8..1],在BCOM[8..1]前已接有一个3-8译码器,3-8译码器

5

东北石油大学本科生硬件课程设计

的输入为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译码器,再从译码器输出到键盘,所以第一次只能扫描一排,依此周而复始。按键位置与数码的关系如表3-1所示。

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

设置扫描信号为SEL2~SEL0,列线按键输入信号KIN3~KIN0与按键位置的 关系如表3-1所示。

3.2 底层实体电路

弹跳消除电路

因为按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。

弹跳现象产生的原因可从图3-2说明。虽然只是按下按键一次然后放掉,然而实际产生的按键信号却不只跳动一次,经过取样的检查后将会造成误判,以为按键两次。

如果调整抽样频率,可以发现弹跳现象获得了改善,如图3-3所示。

因此必须加上弹跳消除电路,避免误操作信号的发生。注意,弹跳消除电路所使

用脉冲信号的频率必须比其它电路使用的脉冲信号的频率更高;通常将扫描电路或LED显示电路的工作频率定在24HZ左右,两者的工作频率是通常的4倍或更高。

按键信号 抽样信号 抽样结果

图3-2 弹跳现象产生错误的抽样结果

6

东北石油大学本科生硬件课程设计

按键信号 抽样信号 抽样结果

图3-3 调整抽样频率后得到的抽样结果

该元件为一个通用的全功能的消抖动元件,内含有自由计数器模块、消抖动模块和微分模块。各引脚说明如下:

Key为按键输入信号,高电平有效,有抖动毛刺; clr是清零信号,低电平有效; clk是同步时钟信号,选择20MHZ; dly_out是消抖动输出; diff_out是消抖动微分输出。

LIBRARY IEEE; --消除

USE IEEE.STD_LOGIC_11.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY debouncing IS

PORT(clk,key:IN STD_LOGIC; clr:IN STD_LOGIC;

dly_out,dif_out:OUT STD_LOGIC); END debouncing;

ARCHITECTURE a OF debouncing IS SIGNAL sample,dly,diff:STD_LOGIC; BEGIN

free_counter:block --计数器模块

SIGNAL QQ:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL d0:STD_LOGIC; BEGIN

PROCESS(clr,clk) BEGIN

if clr='0'then d0<='0';

7

东北石油大学本科生硬件课程设计

QQ<=(OTHERS=>'0'); elsif clk'event and clk='1'then

d0<=QQ(4); QQ<=QQ+1; end if; end process;

sample<=not(QQ(4) and (not d0)); end block free_counter; debunce:block --消抖动模块 signal d0,d1,s,r:std_logic; begin

process(clk,clr) begin

if clr='0' then dly<='0';

elsif rising_edge(clk) then if sample='1' then d1<=d0; d0<=key; s<=d0 and d1; r<=not d0 and not d1; if s<='0' and r<='0' then dly<=dly;

elsif s<='0' and r<='1' then dly<='0';

elsif s<='1' and r<='0' then dly<='1'; else dly<='0'; end if; end if; end if; end process; dly_out<=dly; end block debunce;

8

东北石油大学本科生硬件课程设计

differential:block --微分模块 signal d1,d0:std_logic; begin

process(clk,clr) begin

if clr='0'then

d0<='0';d1<='0'; elsif rising_edge(clk)then d1<=d0;d0<=dly; end if;

diff<=d0 and not d1; end process;

dif_out<=diff; end block differential; END a;

弹跳消除电路生成元件:

图3-4 弹跳消除电路生成元件

3.3 顶层实体电路

1、时钟产生电路

当一个系统中使用不同操作频率的脉冲波形时,最方便的方法就是利用一个自由计数器来产生各种频率。本电路中就使用三种不同频率的工作脉冲波形。它

9

东北石油大学本科生硬件课程设计

们分别是:系统时钟(它是系统内部所有时钟的提供者,频率最高)、弹跳消除取样信号、键盘扫描信号和七段显示器扫描信号。在很多的电路设计中,键盘扫描信号和七段显示器扫描信号可以使用相同的时钟信号,本设计也采用此方法。 该模块中的扫描信号就是取了计数器中的3个值,使用语句: SELTMP<=Q(7 DOWNTO 5); 此处SELTMP要预先定义为3bit的宽度。 2、键盘扫描电路

扫描电路的作用是用来提供键盘扫描信号的电路,扫描信号的变化的顺序依次为000-001-010-011-100-101-110-111„„依次的周而复始。扫描时依序分别扫描八列按键,当扫描信号为000时,扫描0这一列按键„„每扫描一列按键,就检查一次是否有按键按下,如果这排有按键按下,就马上停止扫描,立即进行按键编码动作,存储键码,如果没有按键按下,则继续扫描下一列。 用语句SELTMP<=Q(7 DOWNTO 5); SELOUT<=SELTMP; 即可实现键盘扫描。 3、键盘译码电路

上述键盘中的按键可分为数字键和功能键。

数字键主要用来输入数字,但键盘所产生的输出KIN3~KIN0无法拿来直接使用;另外不同的数字按键也担负不同的功能,因此必须由键盘译码电路来规划第个按键的输出形式,以便执行相应的动作。

译码电路负责的工作有:

a)判别是否有键按下。

b)将被按下键编码成对应的ZOUT[7..0]8位二进制编码,即用十进制数来显示按键值:KEY_CODE<=ZOUT;

c)把KEY_CODE送到内部下一级电路,即按键码的寄存器_选择器模块。

4、按键码存储电路

因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后记录下来。 5、显示电路

该模块把DB[3..0]的值译成8位的数码管所对应的0、1、2、3、4、5、6、7、

10

东北石油大学本科生硬件课程设计

8、9,使数码管正常显示按键值。

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

entity keys_test is port(clk20,clr:in std_logic;

selout:out std_logic_vector(2 downto 0); notselout_0:out std_logic;

key:in std_logic_vector(3 downto 0); segout:out std_logic_vector(7 downto 0)); end keys_test;

architecture a of keys_test is

component debouncing --键盘扫描模块 port(key:in std_logic; clk,clr:in std_logic; dly_out:out std_logic); end component;

signal clk,clk1,clk2,clk4:std_logic;

signal seltmp:std_logic_vector(2 downto 0); signal key_code:std_logic_vector(7 downto 0); signal c:std_logic_vector(3 downto 0); signal db,key_in:std_logic_vector(3 downto 0); signal seg:std_logic_vector(7 downto 0); begin

segout(7 downto 0)<=seg; selout<=seltmp;

notselout_0<=not seltmp(0); key_in<=not key;

11

东北石油大学本科生硬件课程设计

fenpin:block

signal m:integer range 0 to 10#5#; begin

process(clk20) begin

if clk20'event and clk20='1'then if m=10#5# then m<=0; else m<=m+1; end if; end if; end process; process(m) begin

if m=10#5# then clk4<='1'; else clk4<='0';

end if;

end process; end block fenpin;

counter:block --时钟产生电路

signal q:std_logic_vector(10 downto 0); begin process(clk4,clr) begin

if clr='0' then q<=(others=>'0');

elsif clk4'event and clk4='1' then q<=q+1; end if; end process; clk<=q(0); clk1<=q(2); clk2<=q(4);

seltmp<=q(7 downto 5); --扫描信号取计数器3个值 end block counter;

12

东北石油大学本科生硬件课程设计

debounuing:block --例化语句 begin

u1:debouncing port map(key=>key_in(0), dly_out=>c(0),clr=>clr,clk=>clk); u2:debouncing port map(key=>key_in(1), dly_out=>c(1),clr=>clr,clk=>clk); u3:debouncing port map(key=>key_in(2), dly_out=>c(2),clr=>clr,clk=>clk); u4:debouncing port map(key=>key_in(3),

dly_out=>c(3),clr=>clr,clk=>clk);

end block debounuing;

key_decoder:block --键盘译码电路 signal z:std_logic_vector(6 downto 0); signal zout:std_logic_vector(7 downto 0); begin

z<=(not c)&seltmp;

key_code<=zout; --用十进制数显示 process(clk1,clr) begin if clr='0' then

zout<=(others=>'0'); elsif clk1'event and clk1='1' then case z is

WHEN\"1110000\"=>ZOUT<=\"00000000\"; WHEN\"1110001\"=>ZOUT<=\"00000001\"; WHEN\"1110010\"=>ZOUT<=\"00000010\"; WHEN\"1110011\"=>ZOUT<=\"00000011\"; WHEN\"1110100\"=>ZOUT<=\"00010000\"; WHEN\"1110101\"=>ZOUT<=\"00010001\"; WHEN\"1110110\"=>ZOUT<=\"00000100\"; WHEN\"1110111\"=>ZOUT<=\"00000101\"; WHEN\"1101000\"=>ZOUT<=\"00000110\"; WHEN\"1101001\"=>ZOUT<=\"00000111\";

13

东北石油大学本科生硬件课程设计

WHEN\"1101010\"=>ZOUT<=\"00010010\"; WHEN\"1101011\"=>ZOUT<=\"00010011\"; WHEN\"1101100\"=>ZOUT<=\"00001000\"; WHEN\"1101101\"=>ZOUT<=\"00001001\"; WHEN\"1101110\"=>ZOUT<=\"00001010\"; WHEN\"1101111\"=>ZOUT<=\"00001011\"; WHEN\"1011000\"=>ZOUT<=\"00010100\"; WHEN\"1011001\"=>ZOUT<=\"00010101\"; WHEN\"1011010\"=>ZOUT<=\"00001100\"; WHEN\"1011011\"=>ZOUT<=\"00001101\"; WHEN\"1011100\"=>ZOUT<=\"00001110\"; WHEN\"1011101\"=>ZOUT<=\"00001111\"; WHEN\"1011110\"=>ZOUT<=\"00010110\"; WHEN\"1011111\"=>ZOUT<=\"00010111\"; WHEN\"0111000\"=>ZOUT<=\"00011000\"; WHEN\"0111001\"=>ZOUT<=\"00011010\"; WHEN\"0111010\"=>ZOUT<=\"00011011\"; WHEN\"0111011\"=>ZOUT<=\"00011100\"; WHEN\"0111100\"=>ZOUT<=\"00011101\"; WHEN\"0111101\"=>ZOUT<=\"00011001\"; WHEN\"0111110\"=>ZOUT<=\"00011110\"; WHEN\"0111111\"=>ZOUT<=\"00011111\"; WHEN OTHERS=>ZOUT<=\"11111111\"; end case; END IF; END PROCESS;

END BLOCK key_decoder;

REG_MULTIPLEXER:BLOCK --按键码的存储模块

SIGNAL KEY_CODE1:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(CLK2,clr) begin

if clr='0' then

14

东北石油大学本科生硬件课程设计

KEY_CODE1<=(others=>'0'); ELSIF(CLK2'EVENT AND CLK2='1')THEN if(key_code=\"11111111\") then KEY_CODE1<=KEY_CODE1;

ELSE KEY_CODE1<=KEY_CODE; end if; END if; END PROCESS;

DB<=KEY_CODE1(3 DOWNTO 0)WHEN(SELTMP(0)='0')ELSE KEY_CODE1(7 DOWNTO 4)WHEN(SELTMP(0)='1')ELSE \"0000\";

End Block REG_MULTIPLEXER;

seven_segment:block --显示模块 begin

seg<=\"00111111\" when db=\"0000\" else \"00000110\" when db=\"0001\" else \"01011011\" when db=\"0010\" else \"01001111\" when db=\"0011\" else \"01100110\" when db=\"0100\" else \"01101101\" when db=\"0101\" else \"01111101\" when db=\"0110\" else \"00000111\" when db=\"0111\" else \"01111111\" when db=\"1000\" else \"01101111\" when db=\"1001\" else

\"01110111\" when db=\"1010\" else

\"01111100\" when db=\"1011\" else \"00111001\" when db=\"1100\" else \"01011110\" when db=\"1101\" else \"01111001\" when db=\"1110\" else \"01110001\" when db=\"1111\" else \"00000000\";

end block seven_segment; end a;

15

东北石油大学本科生硬件课程设计

顶层实体电路生成元件:

图3-5 顶层实体电路生成元件

3.4 仿真结果

在软件平台的录入设计中,应当先录入底层debouncing.vhd设计文本,并把它设为当前的工程项目,经编译、仿真,得到仿真波形图后,退出debouncing.vhd文本;再录入顶层文本key_test.vhd,并把它设为当前的工程项目,经编译、仿真,得到仿真波形图。

弹跳消除电路设计实体仿真波形如图3-6和3-7所示:

图3-6 弹跳消除电路设计实体原始波形图

图3-7 弹跳消除电路设计实体仿真波形图

顶层设计实体仿真波形如图3-8和3-9所示:

16

东北石油大学本科生硬件课程设计

图3-8 顶层设计实体原始波形图

图3-9 顶层设计实体仿真波形图

3.5 硬件验证结果

将实验箱与微机和电源分别连接好。首先检测试验箱是否可以使用,经检测无误后,开通电源。根据引脚的锁定情况,将CLK20时钟接20MHZ时钟输入,KEY[3..0]分别接实验仪器的键盘输出KIN[3..0],SELOUT[2..0]分别接实验仪器的扫描输入SEL[2..0],SEGOUT[7..0]分别接7段显示器输入DP~A,如图3-10所示。即把芯片与5行×6列薄膜轻触按键键盘、数码管及脉冲源正确连接起来。对引脚配置编译后,

可将设计好的程序下载到实验箱的FLEX10K \\ EPF10K10LC84-4芯片中,如图

17

东北石油大学本科生硬件课程设计

3-11所示,即可测试功能。

图3-10 引脚配置图

图3-11 下载成功图

当KEY[3..0]=1110,SELOUT[2..0]=111,查表可知是数字键5。对应“数字5”按

18

东北石油大学本科生硬件课程设计

键的按下,在试验仪的两只7段数码管上,会依次显示两位数(05),适当选取SELOUT[2..0]的扫描速度,就可以根据人的视觉暂留现象,看到连续的两位数字:(05),如图3-12所示。

图3-12 EL实验箱

19

东北石油大学本科生硬件课程设计

结 论

通过此次课程设计,让我对EDA这门技术有了更深的体会,并更好的学会了使用QuartusⅡ软件进行硬件设计。

此次课程设计时基于VHDL语言进行的矩阵键盘控制接口电路设计,在课程设计时,我逐渐掌握了VHDL语言的语句及语法等的使用。但在学习过程中,也遇到了很多困难,由于刚刚学习EDA不久,所以很多细节内容都不是很了解,尤其时VHDL语言的运用。我先上网找了一些资料和程序,一点点的看,慢慢摸索着学习写语句。最后在老师和同学的帮助下,终于完成了矩阵键盘控制接口电路的设计。

以后我会利用更多时间来学习EDA技术。

EDA技术有着非常好的发展前景,是进几年电子工业的发展趋向,中国的EDA行业发展十分迅速,有着很大的潜力。

20

东北石油大学本科生硬件课程设计

参考文献

[1] 李国洪,胡辉.可编程器件与EDA技术与实践[M]. 北京:机械工业出版社,2004. [2] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.

[3] 王行,李衍.EDA技术入门与提高[M].西安:西安电子科技大学出版社,2005. [4] 徐惠民,安德宁. 数字逻辑设计与VHDL描述[M]. 北京:机械工业出版社,2008. [5] 何宾.EDA 原理及应用[M]. 北京:清华大学出版社,2009.

[6] 赵曙光,郭万有.可编程逻辑器件原理、开发与应用[M]. 西安:西安电子科技大

学出版社,2008.

21

东北石油大学课程设计成绩评价表

课程名称 题目名称 学生姓名 序号 评价项目 学号 硬件课程设计 矩阵键盘控制接口电路设计 指导教师姓名 职称 满分 评分 指 标(优秀) 选题难度较高,或者对原题目进行了相当1 选题难度 工作量、工作程度的改进。 工作量饱满,工作努力,遵守纪律,出勤10 2 态度和出勤率 课程设计质按期的完成了规定的任务,方案设计率高,工作作风严谨,善于与他人合作。 10 3 量 报告质量 合理,思考问题全面,系统功能完善。 问题论述思路清晰,结构严谨,文理通顺,40 4 撰写规范,图表完备正确。 在进行课程设计程序系统检查时,能正确30 5 回答问题 回答指导教师所提出的问题。 工作中有创新意识,对前人工作有改进或10 创新(加分6 项) 性进行说明,并在报告中有相应的论述。 总分 评语: 指导教师: 年 月 日

有应用价值。在进行系统检查时能对创新+5

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务