键盘控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集成电路课程设计(报告)题目:键盘控制器设计
一、技术规范
1 概述
本文主要研究参考8279来进行键盘控制器的设计,实现利用键盘控制器对4*4矩阵键盘的自动扫描,并识别键盘上闭合键的键号,这样可以大大节省CPU 对键盘的操作时间,从而减轻CPU的负担,程序简单,不会出现错误操作。使用它可简化系统的软件设计,提高CPU的工作效率,在工程设计中将有很大的好处。本次课程设计使用EDA工具完成,包括NC-Verilog、DC、PT等。
2 接口定义
接口定义与说明见下表。
表1.1 接口定义与说明
引脚名称宽度方向引脚描述clk 1 输入上升沿有效
reset 1 输入低电平复位
row 4 输入键盘扫描行
col 4 输出键盘扫描列key_value 4 输出键盘的键值
3 功能说明
本次设计的主要思想是:当有按键按下时进行键盘行(row)和键盘列(col)扫描,其中键盘的行和列则对应键盘本身,当行列键盘值为一下数据时则对应的键盘值如下:
4 关键接口时序
电路时序如图1.1所示。
5 环境、工具、单元库说明
本设计使用Verilog HDL语言进行描述,在Linux下的vim文本编辑器中进行编写。
二、总体设计方案
1 概述
本设计采用键盘工作方式参照8279,在键盘工作方式时,可设置为双键互锁方式和N键循回方式。
键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFO RAM中。
N键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入FIFO RAM中。
2 总体结构图及其说明
键盘控制器的各种工作方式都要通过对命令寄存器的设置来实现。其中共有8种命令,通过这些命令设置工作寄存器,来选择各种工作方式。命令寄存器共8位,格式为:
D7 D6 D5 D4 D3 D2 D1 D0
命令类型命令内容
命令寄存器图
如上图,键盘控制器的一条命令由两大部分组成,一部分表征命令类型,为命令特征位,由命令寄存器高3位D7---D5决定。D7---D5三位的状态可组合出8种形式,对应8类命令。另一部分为命令的具体内容,由D4---D0决定。每种特征所代表的命令如表2-1所示
表2-1 键盘控制器命令特征表
下面详细说明各种命令中,D4---D0各位的设置方法,以便确定各种命令字。
特征位D7 D6 D5=000
D4、D3两位用来设定4种显示方式,D2---D0三位用以设定8种键盘/显示扫描方式,如表2.2所示。
表2-2 键盘/显示扫描方式
3子模块1-微控制器模块规范
数据缓冲器是双向缓冲器,连接内、外总线,用于传送CPU和键盘控制器之间的命令或数据;
I/O控制线是CPU对键盘控制器进行控制的引线。CS是键盘控制器的片选信号,CS=0时,控制器才被允许读出或写入信息。WR、RD为来自CPU的控制信号。A0用于区别信息特性:A0=1时,表示数据缓冲器输入为指令、输出为状态字;A=0时,输入、输出皆为数据。
4子模块2-键盘功能模块规范
回复缓冲器、键盘去抖及控制来自RL0~RL3的8根回复线的回复信号,由回复缓冲器缓冲并锁存。
在键盘工作方式中,回复线作为行列式键盘的行列输入线。在逐行列输入时,在逐行列扫描时,回复线用来搜索每一行列中闭合的键。当某一键闭合时,去抖电路被置位,延时等待10ms后,再检验该键是否继续闭和,并将该键的地址和附加的移位、控制状态一起形成键盘数据被送入键盘控制器内部FIFO(先进先出)存储器。键盘数据格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
控制移位扫描回复
控制和移位(D6、D7)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。D5、D4、D3来自动扫描计数器,是按下键的行列编码,而(D7D7D7)则来自行/列计数器,它们是根据回复信号而确定的行/列编码。在传感器开关状态矩阵方式中,回复线的内容直接被送往和相应的传感器RAM(即FIFO存储器)。在选通输入方式中,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。
5 子模块3-键盘控制器的译码和编码模块规范
键盘控制器的译码和编码参考8297,内、外译码由键盘/显示命令字的最低位D0选择决定。
D0=1选择内部译码,也称为译码方式,SL0—SL3每时刻只能有一位为低电平。此时键盘控制器只能接4×4矩阵式键盘。
D0=0选择内部编码,也称为编码方式,SL0—SL3为计数分频式波形输出,键盘方式可接2—4译码器,构成4×4矩阵式键盘。
8297命令功能如下:
三、验证方案
1 概述
主要对键盘控制器模块进行验证,通过编写激励,观察键盘控制器模块的输出。
2 验证结构
采用门级结构进行验证。
3 验证项目说明
以键盘控制为例,编写激励,控制时钟和控制信号,期望每1个时间单位观察键盘输出值。激励如下:
module test;
reg clk, rst_n,RESET,key_clk,key_data;
wire FLGA0;
wire key_pressed;
wire[7:0] DATA;
top_eda s1(.clk(clk), .key_clk(key_clk),.RESET(RESET),
.key_data(key_data),.DATA(DATA),.FLGA0(FLGA0),
.key_pressed(key_pressed));
initial begin
#1 clk = 1'b0;
forever #2 clk = ~clk;
end
initial begin
#1 key_clk = 1'b0;
forever #2 key_clk = ~key_clk;
end
initial begin
#0 RESET = 1'b0;
#10 RESET = 1'b1;
end
initial begin
#0 key_data = 1'b1;
forever #4 key_data = ~key_data;
end