毕业论文-基于FPGA的键盘译码电路设计与实现_第1页
毕业论文-基于FPGA的键盘译码电路设计与实现_第2页
毕业论文-基于FPGA的键盘译码电路设计与实现_第3页
毕业论文-基于FPGA的键盘译码电路设计与实现_第4页
毕业论文-基于FPGA的键盘译码电路设计与实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大连东软信息学院本科毕业设计(论文)论文题目论文题目:基于FPGA的键盘译码电路设计与实现系 所: 电子工程系 专 业:电子信息工程(集成电路设计与系统方向) 学生姓名: 学生学号: 指导教师: 导师职称: 讲师 完成日期: 2014年 4月 28日 大连东软信息学院Dalian 大连东软信息学院毕业设计(论文) 摘要 IV基于FPGA的键盘译码电路设计与实现摘 要随着计算机产业的发展,作为计算机最普遍的输入设备的键盘时刻发生着变化。1981年IBM推出了IBM PC/XT键盘和其接口的标准。这个标准讲键盘接口定义了83键,采用简单的串行协议和5脚DIN连接器。其实,主机到键盘的命令在最初套键

2、盘扫描码集是不存在的。为了解决这问题,IBM在1984年推出了IBM AT键盘接口的标准。这个标准将键盘接口定义了84101键,采取5脚DIN连接器与双向串行通讯协议,根据第二套键盘扫描码集这个协议设定了8个主机至键盘的操作命令。,IBM于1987年再次推出了PS/2键盘的接口标准。该标准依然定义了84101键,但是采用6脚mini-DIN连接器,这个连接器在封装上更加小巧,依然采用双向串行通讯协议而且提供有可选择性的第三套键盘扫描码集,同时支持17个主机至键盘的操作命令。如今,市场上的键盘都与PS/2及AT键盘兼容,仅是功能不相同而已。关键词:PS/2接口,键盘译码,接口协议,FPGA大连东

3、软信息学院毕业设计(论文) AbstractFPGA-based Design and Implementation of Keyboard Decoding CircuitAbstractWith the development of the computer industry, as the most common computer input devices keyboard and with each passing day. In 1981, IBM introduced the IBM PC/XT Keyboard and interface standards. This sta

4、ndard defines the 83-key, using 5-pin DIN connector and the simple serial Protocol. In fact, the first set of keyboard scan code set is not host to keyboard commands. In 1984, IBM introduced the IBM AT keyboard interface standard. This standard defines the 84101 key, using 5-pin DIN connector and bi

5、-directional serial communications protocol, this Protocol in accordance with the second set of keyboard scan code set includes 8 host to keyboard commands. By the year 1987, IBM has introduced PS/keyboard interface standard. This standard defines a 84101 key, but with 6 pin mini-DIN connector, the

6、connector is in a more compact package, still with a bidirectional serial communication protocol and provides the option of a third set of keyboard scan code set, while supporting 17 host to keyboard commands. Now, the keyboard on the market are compatible and PS/2 and AT the keyboard, but the funct

7、ionality is different.Key words: PS/2 interface, keyboard coding, interface protocol, FPGA大连东软信息学院毕业设计(论文) 目录目录 TOC o 1-3 u 摘 要 PAGEREF _Toc386397417 h IAbstract PAGEREF _Toc386397418 h II第1章绪 论 PAGEREF _Toc386397419 h 11.1 课题研究背景与意义 PAGEREF _Toc386397420 h 11.2 课题研究现状 PAGEREF _Toc386397421 h 1第2章关键

8、技术介绍 PAGEREF _Toc386397422 h 22.1 PS/2接口协议 PAGEREF _Toc386397423 h 22.2 串口通信协议与原理 PAGEREF _Toc386397424 h 42.3 VERILOG语言 PAGEREF _Toc386397425 h 5第3章系统需求分析 PAGEREF _Toc386397426 h 83.1 系统设计目标 PAGEREF _Toc386397427 h 83.2 系统功能需求 PAGEREF _Toc386397428 h 83.3 系统可行性分析 PAGEREF _Toc386397429 h 9第4章系统设计 PA

9、GEREF _Toc386397430 h 114.1 系统设计指导原则 PAGEREF _Toc386397431 h 114.2 体系结构设计 PAGEREF _Toc386397432 h 114.3 硬件设计 PAGEREF _Toc386397433 h 124.4 软件设计 PAGEREF _Toc386397434 h 124.4.1 控制流程设计 PAGEREF _Toc386397435 h 124.4.2 软件使用流程 PAGEREF _Toc386397436 h 134.4.3 功能模块设计 PAGEREF _Toc386397437 h 15第5章系统实现 PAGER

10、EF _Toc386397438 h 165.1功能模块实现 PAGEREF _Toc386397439 h 165.2 测试概述 PAGEREF _Toc386397440 h 17第6章结论 PAGEREF _Toc386397441 h 18参考文献 PAGEREF _Toc386397442 h 19致 谢 PAGEREF _Toc386397443 h 20大连东软信息学院毕业设计(论文)- 第1章绪论1.1 课题研究背景与意义随着多媒体技术的发展,对外设与主机之间的数据传输率有了更高的需求,因此,USB总线技术应用而生。1996年1月,7大工业巨头Compaq,DEC,IBM,In

11、tel,Microsoft,NEC和Northern Telecom联合推出通用串行总线Universal Serial Bus(USB)标准版本USB1.0。它的出现使计算机外设连接技术出现了重大变革。USB接口是当前生产的计算机必备接口。目前,国内外采用USB1.1和USB2.0这两种规范。USB1.1主要用于低速传输要求的场合,支持1.5Mbps和12Mbps两种传输速率,而USB2.0规范则提供高达480Mbs的传输速率。尽管如此,某些系统对数据的传输速率要求非常苛刻, USB接口与外围设备之间在传输速率上仍然有着不可忽视的传输障碍。USB系统的开发和应用对于数字系统,尤其是在嵌入式系

12、统中是十分必要的。首先,USB作为一种新时代的通信技术,随着协议的飞速发展与更新,接口传输速度从以前的1.5Mbps的低速转变成如今的480Mbps高速,这种发展速度已经基本上满足了数字系统对串口通信的需求。其次,USB接口技术不再是以往的接口通信技术,在实际应用中,可以根据需要把数字系统开发成相应的USB主机及USB设备,在实现不同系统之间的数据交互方面起到了至关重要的作用。1.2 课题研究现状近年来,USB接口以其快速、即插即用、使用安装方便等优点逐渐成为现在数据传输的发展趋势。与老式的计算机接口相比。USB总线具有非常大的优势,正是由于USB具有这些显著地优点,因此,自1994年USB0

13、.7规范问世以来,特别是在2000年4月USB2.0给饭推出以后,在短短的十几年时间里,这种拘束便迅速得到推广。从国外的发展情况来看,人们对USB技术极为关注,这从USB规范的改进速度和国际市场上基于USB产品普及程度可以看出。从1994年的USB1.0公布之后,在短短一年时间内USB版本增订了五次。另外,由于USB接口的易用、端口扩充型号和兼容性好等诸多优点,这样,对于目前较为流行的嵌入式系统的开发和设计提供了支持,并且也使得基于USB接口的固件设计开发周期缩短了,同时也提高了性能。大连东软信息学院毕业设计(论文)第2章关键技术介绍2.1 PS/2接口协议PS/2通讯协议为一种双向同步串行的

14、通讯协议。通讯端口主要通过Clock(时钟脚)同步,并通过Data(数据脚)进行数据交换。当任何一方如果想抑制其他一方通讯时,只需要将Clock(时钟脚)拉到低电平。如果是PC机和PS/2接口键盘间进行通讯,则PC机必须做为主机,也就是说,PC机是可以抑制PS/2接口键盘发送数据,而PS/2键盘则不可能抑制PC机发送数据。一般两个设备间互相传输数据的最大时钟的频率是33kHz,大多数PS/2接口设备工作都是在1020kHz。推荐值大概也就是在15kHz左右,换句话说,Clock(时钟脚)高电平与低电平的存在时间基本上都是40s。每一个数据帧所包含1112个位,具体的含义如下表。表2.1 数据帧

15、的格式起始位1个总是逻辑0数据位8个(LSB)低位在前奇偶校验位1个奇校验停止位1个总是逻辑1应答位1个仅用在主机对设备的通讯中如果在数据位中有偶数个1,那么校验位就为1;如果数据位中的有奇数个1,那么校验位就为0;总之,数据位中的1的个数与校验位中的1的个数的和总为奇数,因此一直是奇校验。PS/2接口设备中的Clock(时钟脚)和Data(数据脚)都为集电极开路,因此平时都是高电平。当PS/2接口设备在等待发送数据的时候,它总是首先检查Clock(时钟脚)来确认是不是高电平。如果不是高电平,则认为是PC对通讯进行了抑制,这是它就要缓冲那些待发送的数据直至重新控制总线(一般PS/2接口键盘有1

16、6个字节的缓冲区,而PS/2接口鼠标则仅有一个缓冲区是用来存储最后一个将要被发送的数据)。如果Clock(时钟脚)不是低电平,PS/2接口设备将开始把数据发送到PC机上。普遍的都是由PS/2接口设备产生时钟信号。发送信号的时候基本上都是按照数据帧格式进行顺序发送。当中数据位将在Clock(时钟脚)为高电平时准备就绪,而在Clock(时钟脚)的下降沿将被PC机读入。图2.1 PS/2设备到PC机的通信时序当时钟频率变化成15kHz时,从Clock(时钟脚)的上升沿至数据位的转化时间最少要经过5s。而数据转化到Clock(时钟脚)下降沿的所经过的时间最少也是需要5 s的,但是不能大于25 s,这是

17、由于PS/2通讯协议的时序所规定的。当时钟频率为其它值,那么参数的内容应当稍微改动。上述所讨论的传输数据是指对特定键盘的编码,或者是传输数据对特定命令的编码,基本上都是使用第二套扫描码也就是所确定的码值来进行编码。当中键盘码则分为通码(Make)和断码(Break)。通码指的是按键被按下时时所发送的数据,用两个十六进制的数来表示,断码通常一般指的是键位被释放时所发送的信息,一般表示方式是采用四个十六进制数。PS/2接口设备器大部分用于读写数据。PC机从PS/2接口设备向接收一个字节可以遵循以下几个步骤:(1)检查时钟线的电平,如果时钟线的电平为低,则延时为50s;(2)判断检查时钟信号是不是为

18、低,不为高,那么就向下执行,为低,便回到(1);(3)检查数据线是不是为高,倘若不为低那么继续执行,倘若为低,那么就不发送此字节;(4)延时20s(倘若这时候发送起始位,那么应延时40s);(5)输出起始位0至数据线上。但每当送出一位时都是要检查时钟线,来确认PC机是否抑制PS/2接口设备,倘若发现那么就停止发送;(6)输出8个数据位到数据线上;(7)输出校验位;(8)输出停止位1;(9)延时30s(倘若发送停止位时所释放的时钟信号则应当为延时50s)。发送单个位可通过以下的步骤:(1)准备数据位(将数据位放至数据线上);(2)延时为20s;(3)将时钟线拉低;(4)延时为40s;(5)释放时

19、钟线;(6)延时为20s。由于PS/2接口设备可以满足串行的同步时钟,所以,倘若PC机发送数据,则PC机需要先把数据线与时钟线的状态改成为请求发送。PC机通过时钟线的下拉使其大于100s来对通讯进行抑制,而且通过数据线的下拉来发出所需发送的数据的信号,其次释放时钟。当PS/2接口设备检查到数据需要接收的时时候,这会导致时钟信号的产生并且将记录下面一个停止位与8个数据位。在时钟线变为低时主机则需要准备数据到数据线,并且在时钟的上升沿锁存数据。而PS/2接口设备则是需要配合PC机才能够读到精确的数据,步骤可以遵循以下:(1)时钟线变成高电平。(2)根据数据线的高低,如果是高那么就错误退出,为低则继

20、续执行。(3)读取地址线上的数据内容,共8个bit,每当一位数据被读完,都应当检测PC机是否将其时钟线拉低,假如PC机拉低则必须中止接收。(4)读取地址线上的校验位的内容,1个bit。(5)读停止位。(6)如果数据线为低,PS/2接口设备则仍然产生时钟,并直到产生出错信号且接收到1为止(因为停止位是1,如果PS/2接口设备未能够读到停止位,则是显示此这次输出现错误)。(7) 输出应答位。(8) 检测其奇偶校验位,倘若进行校验失败,那么就会产生错误的信号来显示这次的传输出现了错误。(9)延时45 s,使PC机进行以后的传输更加方便。读取数据线可以遵循以下步骤:(1)延时20s;(2)把时钟线拉低

21、;(3)延时40s;(4)释放其时钟线;(5)延时20s;(6)读取其数据线。下面的步骤可以用来发出应答位;(1)延时15s;(2)把数据线拉低;(3)延时5s;(4)把时钟线拉低;(5)延时40s;(6)释放时钟线;(7)延时5s;(8)释放数据线。2.2 串口通信协议与原理串口通信协议是计算机上的一种非常普遍的设备通信协议(不要和通用的串行总线Universal SerialBus或者是USB混淆)。大多数的计算机都包含两个基于RS232的串口。串口同时也是仪器仪表等设备普遍的通信接口;很多GPIB兼容的设备甚至也带有RS-232口。同时,串口通信协议也是可以用来获取远程采集设备的数据。串

22、口通信协议的概念是非常简单的,串口按位(bit)所发送和接收的字节。尽管比按字节(byte)的并行通信的速度慢,但是串口还是可以在使用一根线在发送数据的同时用其它线进行接收数据。它非常简单并且能够实现超远距离的通信。例如IEEE488定义的并行通行状态时,设备线有不超过20米的规定,且两个设备之间的长度是不得超过2米的;反观串口通信,设备线的长度则可达到1200米。典型地,串口是用来ASCII码字符的传送。通信是使用3根线来完成:(1)地线;(2)发送;(3)接收。异步的串口通信使得端口是在一根线上发送数据的同时能够在其他线上接收所收到的数据。别的线则是用做握手,但并不是必要的。数据传输最关键

23、的参数是比特率、数据位、停止位及奇偶校验。对于两个进行信息传输的端口,这些参数必须匹配:比特率:这是一个测量通信速率的参数。它表明每秒钟传输的bit的个数。比如300波特表明每秒钟发送300个字节。当我们提到时钟周期时,就是指比特率,例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的比特率为14400,28800和36600。比特率可以远远大于这些值,但是距离与波特率成反比。高比特率的通信基本上是用于放置的非常近的仪器之间的,例如GPIB设备的通信。数据位:这是用来测量通信中最有用的参数。当信息从计算机发送时,所发送的实际数据

24、并不可能是8位,而是5位、7位或是8位。但如何设置则是取决于自己想要发送的信息。例如, ASCII码基本上都是0127。ASCII扩展码是0255。假如使用标准ASCII码,则每一个数据包都将会使用7位的数据。包括开始停止位,奇偶校验和数据位。由于通信协议的选取决定了实际的数据位。 停止位:用于表答单个包的最后一位。典型的值为1,1.5和2位。由于在传输线上数据是定时的,而且每个设备都有自己相对应的时钟,这导致通信中的设备有可能会出现一些误差,舍得两台设备无法同步。所以停止位并不仅限于表达传输的终止,还能够为计算机提供检测时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是

25、数据传输率同时也越慢。奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。2.3 VERILOG语言Verilog的设计初衷是成为一种基本语法与C语言相近的硬

26、件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。为了使设计人员方便地使用寄存器传输级描述,Verilog提供了多种流程控制结构,包括if、if.else、if.else if.else等形式的条件结构,case分

27、支结构,for、while循环结构。这些流程控制结构与C语言有着相似的用法。不同的循环结构可能造成不同的逻辑综合结果。Verilog也提供了一些C语言中没有的流程控制结构以适应硬件描述语言的需要,例如casex、casez两种选择结构,前者可以条件数值中的x、z均作为无关值,后者仅将z作为无关值;此外还提供了forever、repeat两种循环结构,分别用于无限循环和指定次数循环。数字电路的逻辑功能描述常常使用到这些流程控制结构,例如,case结构可以清晰地描述一个数据选择器。系统任务可以被用来执行一些系统设计所需的输入、输出、时序检查、仿真控制操作。所有的系统任务名称前都带有美元符号$使之与

28、用户定义的任务和函数相区分。例如,$display用于显示指定的字符串,然后自动换行(用法类似C语言中的printf函数);$monitor用于监视变量,一旦被监视的变量发生变化,会显示指定的字符串;而$time可以提取当前的仿真时间。完整的列表请查阅参考工具、Verilog手册或标准文档。Verilog采用的具有八种信号强度的四值逻辑(four-valued logic),数字电路中的信号可以用逻辑值、信号强度加以描述。当系统遇到信号之间的竞争时,需要考虑各组信号的状态和强度。如果驱动统一线网的信号强度不同,则输出结果是信号强度高的值;如果两个强度相同的信号之间连接到同一个线网,将会发生竞争

29、,结果为不确定值x。Verilog所用到的所有变量都属于两个基本的类型:线网类型和寄存器类型。线网与我们实际使用的电线类似,它的数值一般只能通过连续赋值(continuous assignment),由赋值符右侧连接的驱动源决定。线网在初始化之前的值为x(trireg类型的线网是一个例外,它相当于能够储存电荷的电容器)。如果未连接驱动源,则该线网变量的当前数值为z,即高阻态。线网类型的变量有以下几种:wire、tri、wor、trior、wand、triand、tri0、tri1、supply0、supply1、trireg,其中wire作为一般的电路连线使用最为普遍,而其他几种用于构建总线,

30、即多个驱动源连接到一条线网的情况,或搭建电源、接地等。当进行模块的端口声明时,如果没有明确指出其类型,那么这个端口会被隐含地声明为wire类型。因此,在声明输出端口时应该注意是否有必要加上reg关键字。以下面的代码片段为例:module my_moule (out1, out2, in1, in2); /该模块具有两个输出端口 output reg out1; /out1端口被声明为为reg类型,它可以保存当前值 output out2; /out2端口隐含地被声明为wire类型,它的数值必须依赖连续赋值语句维持endmodule寄存器与之不同,它可以保存当前的数值,直到另一个数值被赋值给它。

31、在保持当前数值的过程中,不需要驱动源对它进行作用。如果未对寄存器变量赋值,它的初始值则为x。Verilog中所说的寄存器类型变量与真实的硬件寄存器是不同的,它是指一个储存数值的变量。如果要在一个过程(initial过程或always过程)里对变量赋值,这个变量必须是寄存器类型的。寄存器类型的变量有以下几种:reg(普通寄存器)、integer(整数)、time(时间)、real(实数),其中reg作为一般的寄存器使用最为普遍。利用寄存器变量的数组,还可以对ROM进行建模。关于选择线网类型还是寄存器类型,需要符合一定的规定。模块的输入端口可以与外界的线网或寄存器类型的变量连接,但是这个模块输出端

32、口只能连接到外界的线网。再简单点,就是在两个模块的信号连接点,提供信号的一方可以是寄存器或者线网,但是接受信号的一方只能是线网。此外,在initial、always过程代码块中赋值的变量必须是寄存器类型的,而连续赋值的对象只能是线网类型的变量。第3章系统需求分析3.1 系统设计目标该设计主要是实现FPGA通过PS/2接收键盘的数据,然后把收到的大写字母A-Z的键值转换成相应的ASCII码,再通过串口传送给PC机。只要字母按键被按下,就能在串口调试助手里显示相应的字母。3.2 系统功能需求根据需求调研结果确定本系统主要包括串口传输模块(图3.1)、PS/2传输模块(3.2)、波特率选择模块(表3

33、.1)。先简要的介绍下串口传输,图3-1为RS232标准,该接口电路的电平转化芯片为MAX3232CSE,典型的RS232信号在正负电平之间摆动,当其在发送数据信号时,发送端驱动器输出正电平大约在+5V+15V,负电平大约在-5V-15V。接收器常用的工作电平在+3V+12V与-3V-13V之间。由于发送电平与接收电平之间的差距也只有2V到3V左右,所以其共模抑制能力差,其传送距离大概是15米,最高的传输速率为20Kb/s。RS232是为点对点通讯设计的。图3.1 串口通信接口PS/2传输模块如图3.2所示,PS/2接口的PIN1和PIN5连接到CPLD的I/O口。CPLD只要根据这两个接口的

34、一定时序关系进行解码即可。图3.2 PS/2传输处理模块串口通信中每秒能够发送的位数就是波特率。MSC51串行端口在不同的工作模式下有着不同的波特率计算方式。其中,波特率在模式0和模式2中的计算方法很简单,模式1和模式3的波特率是相同的选择,故此在仅以工作模式1为例来解释串口通信波特率的选择。与工作模式1下的串行端口,数据传输率由计时/计数器1来生产,经常在模式2下设置定时工作。该模式下的波特率计算方法为:波特率=(1+SMOD)*晶振频率/(385*(256-TH1)其中,波特率倍增位指的是SMOD为寄存器PCON的第7位;TH1为定时器重新载入的数值。在波特率的选择的时候主要涉及两个因素:

35、第一,系统工作时所必需的通信速率。这主要取决于系统的工作特征,确定系统通信的频率所在范围。而后考虑系统通信时时钟之间的误差。通信时钟对于不同的通信速率的选择会使同一晶振频率产生很大的差别。为了稳定通信的稳定,应该尽量选择时钟最小的频率来进行通信。为了控制串口通信模块的数据传输速度,增加波特率控制模块,如表3.1。表3.1 波特率选择模块波特率计数器重载值TH1波特率误差12002040.16%24002300.16%48002430.16%96002496.99%192002538.51%3.3 系统可行性分析该项目所用的硬件环境为FPGA开发板,其软件环境有quartus及modelsim。

36、本项目使用quartus的设计环境,采用verilog作为开发语言。对于完成完整功能的进程,采用同多个模块实现的方式。配置文件采用标准格式文本文件进行配置,采用普通的标准格式文本文件简单,清楚,容易维护。设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师可以使用廉价的工具来进行对FPGA进行原型设计以及功能检测,甚至还可以设计HardCopy Stratix器件来满足市场的需求。工程师可以用Quartus软件来评估ARDCOPY STARATIX器件的功耗及其性能,来达到大规模的生产设计。Quartus II属于第四代PLD可编程逻辑软件。其开发平台可以

37、满足一个工作组环境下所有的的设计规定,例如支持基于Internet的协作设计。Quartus平台的兼容性也是相当的好,例如与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具。使得软件的LogicLock模块设计功能更加强大,增添 了FastFit编译选项,提高了网络编辑性能,使调试能力也得到了大幅度的提升。随着USB接口规模的不断扩大,客户对其的需求能力也日益增长。基于准确把握市场需求的目的,推出PS/2接口转换器,使广大客户可以满足USB接口的需求,同时听取广大客户对PS/2接口转换器的意见和建议,极大

38、的提高了客户参与PS/2接口转换器的市场推广的可行性,有利于PS/2接口更好的开发满足市场的需求,同时廉价的成本,也是PS/2接口在市场竞争的重要优势之一。大连东软信息学院毕业设计(论文)第4章系统设计4.1 系统设计指导原则(1)先进性利用Verilog语言进行描述,既能用于模拟仿真,又可用于电路设计的综合,且能够在非常多的层次上对所需要设计的系统加以描述,从门级、开关级、寄存器传输级甚至到行为级等,Verilog语言不对设计的规模施加任何的限制电路描述风格的多样性也是其先进性体现之一,用户定义的基本语言既可以是时序逻辑,也可以是组合逻辑;可采取结构描述、行为描述或是数据流描述;可通过编程语

39、言接口机智进一步扩展该语言的描述能力;能够满足混合建模在相同的设计中所有模块可以在不同的设计层次上建模和描述。(2)方便性及可靠性主要设备键盘解码器采用quartus软件,所需软件设计流程简洁明了,支持MAX7000/MAX3000等乘积项器件,软件体积缩小,运行速度加快,采用快速适配选项缩短编译时间,而PS/2键盘的键值传输是通过串口通信工具实现的,系统可靠性相当高;该设计也是非常的灵活多样,只需通过FPGA开发板即可实现键盘的解码功能。4.2 体系结构设计键盘解码器主要是将PS/2键盘的键值输入通过串口调试工具转化为USB可识别的信号,同时通过波特率的选择来达到控制串口调试部分的传输速率,

40、为了实现键盘解码的功能,该设计主要的结构体系如图4.1所示。图4.1 系统体系结构4.3 硬件设计PS/2数据帧格式如图4.2所示,起始位为低电平,停止位为高电平,应答位置仅在设备与主机的通信中使用。如果数据位中有偶数个1,那么校验位就为1;如果数据位中有奇数个,那么校验位就为0;总而言之,校验位中1的个数加上数据位中1的个数总为奇数,故此一直是奇校验。图4.2 PS/2数据帧格式PC通过PS/2接口与从设备通信时,当时钟处于下降沿时才读取数据。下面介绍键盘编码返回值,键盘的返回值并不是和一般ASCII码相对应。PS/2接口键盘如果发现有键被按下或者是有键被释放甚至有键被按住,将会往计算机发送

41、扫描码的信息。扫描码一般分为通码和断码,当有键位被按下或者是被按住,那么就往计算机发送一个通码;当键盘键位被释放时,就往计算机发送一个断码。每个键位的状态都有自己唯一的断码与通码,这样主机通过扫描码的信息知道是哪个键位的断码或是通码。下面举个例子来进行介绍。通码和断码是以什么方式发送到计算机的。那g字符说明,如果计算机想要接收g,那么首先当g键位被按下时,计算机会收到g键的通码8h34,当g键被释放的时候,则计算机将会收到一个断码8hf0,即计算机收到的数据为:8h34,8hf0。4.4 软件设计该模块主要介绍是用软件quartus来完成键盘解码各部分模块的流程,通过实验项目的设计控制流程并对

42、quartus软件的使用,从而展现出键盘解码器的各部分模块的主要内容及操作方法。4.4.1 控制流程设计该项目流程主要是PS/2接口键盘键值输入转成可USB接口识别的数据,每当有键盘被按下或是松开时就发送给串口部分,图4.3为本设计的详细控制流程。图4.3 流程图4.4.2 软件使用流程任何一项项目设计都是一项工程,都必须为这个工程建立一个可以存放与这个工程相关的所有设计文件的文件夹,这个文件夹一般默认为工作库。首先建立工作库的目录,以便存储键盘解码项目的设计文件,打开新建工程管理窗口。选择FileNew Preject Wizad 命令,如下图:图4.4 建立新工程在单击图4.4后,出现了设

43、置工程的基本信息,如图4.5所示图4.5 设置工程将设计文件加入所建立好的工程中,然后选择目标芯片及第三方工具,当其上都完成时就可以看见所新建的工程名称PS/2_key。当工程建立完毕以后,就开始建立设计文件,选择FileNew,选择Verilog HDL File选项,然后建立新文件,如图4.6。图4.6 完成工程配置在完成工程配置之后,输入各部分模块的代码,保存完各部分代码后,开始编译工程,单机工具条上的编译符号,并伴随着进度条的不断地变化,最终如图4.7所示。图4.7编译完成后的窗口4.4.3 功能模块设计为实现键盘解码的功能,主要模块有三部分,分为PS/2传输模块、串口传输模块以及波特

44、率选择模块,RTL视图如下。图4.8 RTL视图PS/传输模块通过接受data与clk两个信号线传送来的数据,了解键盘键入的键值,知道键盘的哪个键位被按下,将被按下的键位所对应的键值译码,然后发给串口传输模块,而波特率控制模块则是控制串口模块的模特率,使其将相应的数据发送出来。第5章系统实现5.1功能模块实现(1)PS/2传输处理模块实现reg7:0 ps2_byte_r;/pc接收来自ps2的一个字节数据存储器reg7:0 temp_data;/当前接收数据 寄存器reg7:0 num;/计数寄存器always (posedge clk or negedge rst_n) begin if(

45、!rst_n) begin num = 4d0; temp_data = 8d0; end else if(neg_ps2k_clk) begin/检测到ps2k_clk的下降沿 case(num) 4d0: num = num+1b1; 4d1: begin num = num+1b1; temp_data0 = ps2k_data;/bit0 end 4d8: begin num = num+1b1; temp_data7 = ps2k_data; /bit7 end 4d9: begin num = num+1b1;/奇偶校验位,不做处理 end 4d10: begin num = 4d

46、0;/num清零 end default; endcase endend(2)串口传输模块实现always (posedge clk or negedge rst_n) begin if(!rst_n) begin bps_start_r = 1bz; tx_en = 1b0; tx_data = 8d0; end else if(neg_rx_int) begin/接收数据完毕 bps_start_r = 1b1; tx_data = rx_data;/把接收到的数据存入发送数据寄存器 tx_en = 1b1;/进入发送数据状态 end else if(num=4d11) begin/数据发

47、送完成,复位 bps_start_r = 1b0; tx_en = 1b0; endend5.2 测试概述利用FPGA开发板下载代码后,接上PS/2键盘,随后打开串口调试工具,按下键盘A至Z任意一个键位,然后看是否能够在串口调试助手上显示相应的字母。图5.1 测试用例将串口调试工具设置为数据位为8位,波特率选择9600,取消十六进制显示,通过PS/2接口键盘的键入,能够直接在串口调试助手上显示相应的字母,如图5.1。第6章结论随着计算机的广泛应用,键盘接口也在不断更新。键盘接口负责计算机的信息输入。由于接口的多样性,在选择计算机键盘时,就必须根据计算机的种类,尽可能的满足客户的需求。各计算机厂

48、商推出了自己的接口规范以减少成本而产生了接口种类的概念,为了提高各种计算机接口的兼容性,同时实现接口的识别和配置,接口转换器的必定拥有广阔的发展前景。USB接口作为一种流行的PC机互连协议,使键盘到计算机的链接更加高效、便利,是键盘外设接口的必然发展趋势,也注定将取代PS/2接口协议,因此传统的PS/2接口都将面临着向USB接口的转变问题。在实验中所完成的键盘接口转换器能够将USB接口与PS/2接口转换的问题简洁有效的解决,随着USB接口数量的急剧增加,也使得接口转换器的应用层面得到广泛的推广。参考文献1 Betz,V & Rose,JDirectional Bias and Non-Unif

49、ormity in FPGA Global Routing ArchitecturesJ,ICCAD,1996,5(3):6526592 Romeo,FAn Efficient General Cooling Schedule for Simulated AnnealingJ,ICCAD,1986,6(1):1371453 Ebleing,CPlacement and Routing Tools for the Triptych FPGAM,DAC,19954 何绪兰,林财兴PS/2鼠标驱动关键问题的研究及程序实现J,现代器械,2011,7(6):7679 5 高亚军基于FPGA的数字信号处理M,电子工业出版社,20036 杨将新,李华军,刘东骏单片机与FPGA逻辑接口的Verilog实现M,西安科技大学出版社,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论