键盘控制器设计

合集下载

基于FPGA的PS2键盘控制器设计

基于FPGA的PS2键盘控制器设计

P/ S2键盘 间的通讯 , P 则 c机必须做 主机 , 也就是说 ,c机可 以 P 抑制 P / S 2键盘发送 数据 , P / 而 S2键盘则不会抑制 P C机发送数 据 。数据传 输的最大 时钟频率是 3 K z大 多数 P I 3H , S2设备工作 在 1 —0 H , 0 2 K z一般采 用 1 K zCok高 、 电平 的持 续时 间 5 H ,lc 低 都为 4 1 。每一数据帧包含 1— 2 0s x 1位 1 。
另 外 一 方通 讯 时 , 需 要 把 Cok 到低 电平 。如 果 是 P 只 lc 拉 C机 和
a as p sd e e — u / l y@(oe g l ot/ w k )采样十一位数据
be i gn
ia= "l) a4d ; f = 4d 0 = "0 (
e s a + 1 le =a 4 :
F GA独特器件 架构 , 用 F G P 利 P A设计键盘控制器, 不仅硬件 电路 简单, 而且编程过程 比通用 MC 比, U 简单易行 。
关键 词 : 制 器 ; 盘 ; P A; 控 键 F G 电路 中 图分 类 号 : P 7 + 8 T 21. 2 文 献 标 识码 : A
ed n
as n c ( = )1 11 O/ 动解 码 模 块 和 验 证模 块 si =a 9? , : d ;启 g = d /
as n a 1 ( = ,1 dt : ;数据采样结束 , 出数据 si dt =c 1d) a 28 , g a = ? a 0 / 输 aw y@ psd e c i) ̄: las (oe g l n 样数据端 k /

计算技术与 自动化 ・
基 于 F GA的 P 2键 盘 控 制 器设 计 P S

电子围栏键盘控制器说明书

电子围栏键盘控制器说明书

个人资料整理,仅限个人学习使用,请勿商用电子围栏键盘控制器说明书型号:电子围栏键盘控制器本型号的电子围栏键盘控制系统使用的电子围栏主机有:四线制LCD电子围栏主机、四线制LED电子围栏主机、六线制LCD电子围栏主机、六线制LED电子围栏主机。

目录电子围栏键盘控制器简介- 1 -一、按键定义说明- 2 -1.1、F1按键- 2 -1.2、F2按键- 2 -1.3、F3按键- 2 -1.4、F4按键- 2 -1.5、* 按键- 2 -1.6、# 按键- 2 -1.7、0~9 数字按键- 2 -二、常用操作说明- 3 -2.1、密码操作- 3 -2.2、打开或关闭防区操作- 3 -2.3、防区编号修改操作- 3 -2.4、防区的布防和撤防操作- 3 -2.5、防区实时状态查看操作- 4 -2.6、报警信息的查看操作- 4 -2.7、报警复位操作- 4 -2.8、报警灵敏度操作- 4 -2.9、报警输出时间设置操作- 4 -三、其他几个特别的说明- 5 -3.1、报警声音及报警提示音说明- 5 -3.2、无线控制功能说明- 5 -3.3、多点控制功能说明- 5 -3.4、自动布撤防功能说明- 6 -3.5、脉冲幅值及脉冲周期设置功能说明- 6 -3.6、液晶背光说明- 6 -四、电子围栏键盘控制器的10孔接头说明- 6 -五、电子围栏键盘控制器的常见问题解决方法- 7 -5.1、键盘控制器屏幕不亮- 7 -5.2、布撤防控制时脉冲主机没有响应- 7 -5.3、报警恢复后还是会有提示音- 7 -电子围栏键盘控制器简介本键盘控制器具有以下的优点:◆具有自动定时布撤防功能,自动布撤防的时间以及防区状态可以自由设定,能够智能自动的对防区进行布撤防控制;◆具有市电断电和恢复提示功能,能够及时的提醒用户各个主机的电源状态;◆具有通信失败报警功能,能够及时的提示用户各个脉冲主机与控制室之间的通信线路故障;◆具有无线控制功能(本功可选配),可以多个无线遥控器一起控制;◆可以2个控制点同时进行控制;◆可以通过RS485总线对多达32个电子围栏防区进行全面控制;◆可以对全部或部分防区进行关闭、布防、撤防,各个防区高低压转换功能;◆对电压可调的脉冲主机,可以设置该主机的脉冲输出电压值;◆对脉冲周期可调的脉冲主机,可以设置该主机的脉冲周期值;◆可以自动记录最新的128条报警信息,报警信息详细明了(包括报警防区号,类别(短路、断路、防拆),报警时间);◆有报警时,会自动的突出显示正在报警的信息;◆轮巡一周的时间短,可以快速的反映防区状态以及报警信息;◆可以对各个防区的围栏主机进行报警复位;◆可以任意设定围栏主机的防区号;◆可以设定围栏主机的报警灵敏度;◆可以设定围栏主机的报警输出的时间;◆可以设定整个系统的时间;◆可以循环显示已经打开的防区的状态信息(包括防区输出的实际电压值或者防区的报警状态);◆具有通用的开关量报警输出功能;◆智能关闭液晶背光,更节能省电;◆界面友好,人性化操作;◆具有密码登录功能,安全可靠,同时还可以对密码进行修改;一、按键定义说明1.1、F1按键此按键有两种功能:(1). 为“确认”按键。

键盘数字输入训练器设计任务书

键盘数字输入训练器设计任务书

《微机原理综合训练》设计任务书题目:键盘数字输入训练器程序设计学生姓名:学号:班级:题目类型:设计性指导教师:一、课程设计题目键盘数字输入训练器程序设计。

二、题目简介以键盘数字输入训练器为背景,对键盘数字输入、视频显示、键盘扫描程序进行分析和设计。

通过该题目的分析和设计,学习微机软、硬件系统设计开发过程,加深微机原理及应用课程基础知识的理解和综合运用能力,熟悉集成电路芯片的使用方法,熟悉微机编程及接口电路,学习体会工程实际设计的过程,培养学生独立解决实际工程问题的综合能力。

学生初步得到用汇编语言书写程序的训练,全面培养程序设计过程中的分析、设计、编码、测试及文档规范书写的能力,得到运用汇编语言的综合训练,提高解决实际问题的能力。

三、设计任务学生通过该题目的设计过程,可以初步掌握汇编语言的运用、软件开发方法并提高解决实际问题的能力。

利用汇编语言对键盘数字输入训练器进行编写的主要思路如下:在PC机中,对键盘的管理是通过中断机构和8255芯片来实现的,在8255中有两个端口PA和PB,在这个硬件接口的基础上,系统在BIOS中配备了键盘服务功能,可以调用键盘的DOS和BIOS功能编程,也可以直接在硬件接口的基础上编程。

视频显示程序设计:一般由DOS 或BIOS调用来完成。

有关显示输出的DOS 功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。

键盘扫描程序设计:检测键盘状态,有无输入,并检测输入各值。

设计任务包括:1.在缓冲区中预放了一些字符,当有键盘输入,则从缓冲区中取出字符并进行显示。

2.对取出的字符进行队列管理。

3.增加left_shift和right_shift键的功能,即在按下left_shift或right_shift键的同时,又按下0~9或a~z等键,则CPU取得并显示键得上档符号或大写字母。

附加要求:必要的辅助功能(设置、修改等)。

06 12864LCD显示计算器键盘按键实验

06 12864LCD显示计算器键盘按键实验

目录1 课程设计概述和要求 (1)1.1 课程设计要求与任务 (2)1.2 课程设计思路 (2)1.3 课程设计需要配置的环境 (3)2 系统设计 (3)2.1 设计框图 (3)2.2 元件解析 (3)2.2.1 LCD12864芯片……………………………………………………………42.2.2 AT89C51芯片 (5)2.2.3 其他部件 (6)2.2.4 电路分析 (7)3 软件设计 (12)3.1 程序流程图 (12)3.2 程序代码 (12)4 系统的仿真与调试 (13)4.1 硬件调试 (13)4.2 软件调试 (14)4.3 软硬件调试 (14)5 总结 (14)附录1:程序代码附录2:12864LCD显示计算器键盘按键实验Proteus仿真图1 课程设计概述和要求1.1 课程设计任务与要求设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。

设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器设计计算器键盘按键,系统主要包括硬件和软件两部分。

重点就是各部分硬件的连接设计以及程序的编写。

本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。

将计算器按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上。

1.2 课程设计目的思路1、先把与题目有关的芯片资料找到,熟悉一下芯片资料2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。

3、分析一下此程序的各部分的功能,各零件的工作原理。

4、对程序进行调试,分析调试结果,观察并得出结论。

1.3 课程设计需要配置的环境1、一台主机,一台显示器2、Keil uVision3/Keil uVision4 应用程序软件3、ISIS 7 Professional 仿真软件4、老师交给的仿真电路图,及案例5、纸张,以及一些参考资料2 系统设计2.1.设计框图框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘摘要:本设计选择STM32为核心控制元件,设计了用4个IO 口实现4*4矩阵键盘,使用C 语言进行编程。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

关键词:STM32 矩阵键盘 ARM 显示电路1 引言随着21世纪的到来,以前的单个端口连接的按键已经不能满足人们在大型或公共场合的需求。

电子信息行业将是人类社会的高科技行业之一,4*4矩阵键盘设计师当今社会中使用的最广的技术之一。

4*4矩阵式键盘采用STM32为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C 语言编程。

STM32将检测到的按键信号转换成数字量,显示于数码管上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

2 总体设计方案该智能键盘电路由ARM 最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO 口完成4*4矩阵键盘。

2.1 总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM 最小系统电路、按键显示电路。

其中ATM 最小系统主要由复位电路和时钟电路组成。

电路复位后数码管显示字符“—” 表示没有按键,显示电路由STM32的PD0—PD7来控制数码管显示是哪个按键按下。

总体设计方框图,如图1所示。

图1总体设计方框图STM32矩阵键盘电路时钟电路复位电路按键显示电路3 智能键盘设计原理分析3.1 STM32复位和时钟电路设计此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。

时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。

图2STM复位和时钟电路设计3.2 矩阵键盘电路的设计该电路的四个端子分别接STM32的PB12—PB15,电路如图3所示。

stm32矩阵键盘原理

stm32矩阵键盘原理

STM32矩阵键盘原理详解引言矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。

在STM32微控制器中,利用GPIO引脚实现矩阵键盘控制相对简单,本文将详细介绍STM32矩阵键盘的基本原理。

基本原理矩阵键盘由多个按键组成,通常采用行列式排列。

每个按键都由一个触点和一个按键外壳组成,触点一般为弹簧式结构,按下按键时触点接通,释放按键时触点断开。

矩阵键盘的连接方式矩阵键盘的每个按键都被分配一个行号和列号,通过行线和列线来连接按键和控制芯片。

STM32通过GPIO来控制行线和列线的电平,实现按键的扫描和检测。

在STM32中,行线和列线可以连接到不同的GPIO引脚上。

行线连接到输出引脚,列线连接到输入引脚。

这样,通过对行线的输出和对列线的输入,可以实现对矩阵键盘的扫描和检测。

矩阵键盘的扫描原理矩阵键盘的扫描原理可以简单描述为以下几个步骤:1.将所有行线设置为高电平,所有列线设置为输入模式。

2.逐个将行线设置为低电平,并同时检测列线引脚的电平状态。

3.如果某一列的输入引脚检测到低电平,表示该列对应的按键被按下。

4.通过行线和列线的对应关系,确定被按下的按键的行号和列号。

矩阵键盘的按键映射通过扫描后,可以得到被按下的按键的行号和列号,STM32可以根据行列号的映射关系将按键信息转化为相应的按键值。

通常,矩阵键盘的按键映射是通过二维数组来实现的。

数组的行号对应行线,列号对应列线。

数组中的元素对应按键的键值。

例如,要实现一个4x4的矩阵键盘,可以通过以下数组表示按键的映射关系:uint8_t keyMap[4][4] = {{ '1', '2', '3', 'A' },{ '4', '5', '6', 'B' },{ '7', '8', '9', 'C' },{ '*', '0', '#', 'D' }};通过行列号可以确定数组中的元素,从而得到按键的键值。

操作系统课程设计键盘驱动

操作系统课程设计键盘驱动

操作系统课程设计键盘驱动一、实验选题 (1)二、模块整体功能介绍及主要目标 (1)三、头文件的分析 (2)四、数据结构的分析 (2)1、数组tty_table[] (2)2、tty_struct 数据结构 (2)3、tty 等待队列数据结构 (3)4、各个数据结构间的关系图 (3)五、函数的分析 (4)1、采用中断驱动的I / O设备键盘的循环周期 (4)2、键盘中断处理程序 (5)3、ctrl和alt键的处理 (7)4、caps、scroll、num键的处理 (8)5、数字小键盘的处理 (11)6、减号键的处理 (13)7、功能键的处理 (14)8、do_self的处理 (15)9、左,右shift键的处理 (16)六、分析体会及亮点说明 (16)七、参考文献 (20)一、实验选题实验题目是:Linux0.11字符设备驱动中的键盘驱动程序源代码分析,这部分涉及到操作系统的中断、I/O应用接口、I/O子系统等相关知识,程序源代码参考Linux0.11中kernel目录下的keyboard.s文件。

二、模块整体功能介绍及主要目标该模块键盘中断处理程序 keyboard.s 主要用于读入用户键入的字符并放入read_q 缓冲队列中。

其具体实现机制是:当用户在键盘上键入了一个字符时,会引起键盘中断响应(中断请求信号IRQ1,对应中断号INT 33),此时键盘中断处理程序就会从键盘控制器读入对应的键盘扫描码,然后根据使用的键盘扫描码映射表译成相应字符,放入tty 读队列read_q 中。

然后调用中断处理程序的C函数do_tty_interrupt(),它又直接调用行规则函数copy_to_cooked()对该字符进行过滤处理,并放入tty 辅助队列secondary 中,同时把该字符放入tty 写队列write_q 中,并调用写控制台函数con_write()。

此时如果该终端的回显(echo)属性是设置的,则该字符会显示到屏幕上。

[知识]按键控制数码管和流水灯设计报告实验报告

[知识]按键控制数码管和流水灯设计报告实验报告

摘要000单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

000关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the000 Keywords: SCM, water lights, digital tubes, control system000键盘控制流水灯和数码管实验报告00目录000一设计的目的 (200)二任务描述及方案设计 (300)1. 任务描述 (300)2. 方案设计 (300)三硬件设计方案 (30)001. Msp430f149单片机的功能说明 (30)2. 显示器功能 (40)3. 复位电路 (40)4. 按键的部分 (40)5. 74HC573的特点 (4)0006. 流水灯和数码管电路原理图 (40)007. 元器件清单 (40)四程序设计方案 (50)001. 用IAR Embedded W orkbench软件编程序 (5)002. 仿真电路图 (60)五实物实验 (70)001. 实物图 (7)002. 测试结果与分析 (700)六结论 (11)000八参考文献 (16)000一、设计目的0001、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;0002、培养学生实践动手能力及独立分析和解决工程实践问题能力;003、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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=000D4、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;endinitial begin#1 key_clk = 1'b0;forever #2 key_clk = ~key_clk;endinitial begin#0 RESET = 1'b0;#10 RESET = 1'b1;endinitial begin#0 key_data = 1'b1;forever #4 key_data = ~key_data;endendmodule键盘控制器的设计代码如下:module key(clk, reset,row, col, key_value );input clk,reset;input [3:0] row;output [3:0] col;output [3:0] key_value;reg [3:0] col;reg [3:0] key_value;reg [5:0] count;//delay_20msreg [2:0] state; //状态标志reg key_flag; //按键标志位reg clk_500khz; //500KHZ时钟信号reg [3:0] col_reg; //寄存扫描列值reg [3:0] row_reg; //寄存扫描行值always @(posedge clk or negedge reset)if(!reset) begin clk_500khz<=0; count<=0; endelsebeginif(count>=50) begin clk_500khz<=~clk_500khz;count<=0;endelse count<=count+1;endalways @(posedge clk_500khz or negedge reset)if(!reset) begin col<=4'b0000;state<=0;endelsebegincase (state)0:begincol[3:0]<=4'b0000;key_flag<=1'b0;if(row[3:0]!=4'b1111) begin state<=1;col[3:0]<=4'b1110;end //有键按下,扫描第一行else state<=0;end1:beginif(row[3:0]!=4'b1111) begin state<=5;end //判断是否是第一行else begin state<=2;col[3:0]<=4'b1101;end //扫描第二行end2:beginif(row[3:0]!=4'b1111) begin state<=5;end //判断是否是第二行else begin state<=3;col[3:0]<=4'b1011;end //扫描第三行end3:beginif(row[3:0]!=4'b1111) begin state<=5;end //判断是否是第三一行else begin state<=4;col[3:0]<=4'b0111;end //扫描第四行end4:beginif(row[3:0]!=4'b1111) begin state<=5;end //判断是否是第一行else state<=0;end5:beginif(row[3:0]!=4'b1111)begincol_reg<=col; //保存扫描列值row_reg<=row; //保存扫描行值state<=5;key_flag<=1'b1; //有键按下endelsebegin state<=0;endendendcaseendalways @(clk_500khz or col_reg or row_reg)beginif(key_flag==1'b1)begincase ({col_reg,row_reg})8'b1110_1110:key_value<=0;8'b1110_1101:key_value<=1;8'b1110_1011:key_value<=2;8'b1110_0111:key_value<=3;8'b1101_1110:key_value<=4;8'b1101_1101:key_value<=5;8'b1101_1011:key_value<=6;8'b1101_0111:key_value<=7;8'b1011_1110:key_value<=8;8'b1011_1101:key_value<=9;8'b1011_1011:key_value<=10;8'b1011_0111:key_value<=11;8'b0111_1110:key_value<=12;8'b0111_1101:key_value<=13;8'b0111_1011:key_value<=14;8'b0111_0111:key_value<=15;endcaseendendendmodule四、综合报告1 概述综合工具:Synopsys的逻辑综合工具Design Compiler,即DC综合环境:Linux服务器2 综合约束(1)时钟定义:create_clock -name clkin -period 20(2)I/O端口时序:set_input_delay 0 -clock clkin -add_delay $in_portsset_output_delay 0 -clock clkin -add_delay [all_outputs](3)时序例外:set_false_path -from [get_clocks CLK] -to [get_clocks clkin] set_false_path -from [get_clocks clkin] -to [get_clocks CLK]3 综合结果综合结果如图4.1所示。

相关文档
最新文档