基于FPGA的PS2鼠标接口设计与应用_第1页
基于FPGA的PS2鼠标接口设计与应用_第2页
基于FPGA的PS2鼠标接口设计与应用_第3页
基于FPGA的PS2鼠标接口设计与应用_第4页
基于FPGA的PS2鼠标接口设计与应用_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、基于fpga的ps2鼠标接口设计与应用摘 要现今生活中,各式各样的生活用品慢慢地走上“智能”的道路,越来越令人感觉到方便。这与一个优秀的人机交流界面密不可分。ps/2鼠标、键盘是一种常用的计算机输入设备,只需稍加改动,便可很方便的应用在各种嵌入式设备中。利用现场可编程门阵列fpga芯片,应用硬件描述语言verilog设计,采用层次化模块编程思想,接收处理ps/2接口鼠标输入信息,并用vga接口作为输出设备,显示当前鼠标状态及位置。此方法有容易实现模块化和移植性强的特点。关键词: fpga;ps/2鼠标;vga;状态机;嵌入式系统the design and application of ps/

2、2 mouse interface based on fpgaabstract: a wide range of life products increasingly walk up “brainpower” road, and then it is more and more convenient to use them. this is an excellent man-machine intercommunication interface closely. ps/2 mouse or keyboard is a general input device of compute syste

3、m. it can be easily equipped with various embedded systems. field-programmable gate array(fpga) chip is used, verilog hdl is applied, and programming of modularization is adopted. it can receive and process the input information of the ps/2 interface mouse. and then vga is used as output device, to

4、show the current status and location of the mouse. this method is achieved the features of easy modularity and powerful transplantable capability.key words: fpga; ps/2 mouse; vga; state machine; embedded system目 录1 绪论11.1 设计的来源及意义11.2设计的内容与要求11.3设计的总体思想12 硬件介绍22.1 fpga概述22.1.1 fpga的发展历程22.1.2 什么是可编程

5、器件32.2 fpga的结构和特性32.2.1 fpga基本结构32.2.2 主流fpga产品及开发工具52.2.3 fpga与cpld及asic的比较62.3 fpga的开发流程83 vga介绍93.1 vga发展及定义93.2 vga显示原理103.2.1 vga的电气特性103.2.2 vga的驱动概念113.2.3 vga的时序分析124 ps/2鼠标通信协议144.1 ps/2接口硬件144.2 ps/2通信协议144.2.1 ps/2协议概述144.2.2 ps/2设备到主机的通信154.2.3主机到ps/2设备的通信154.3 ps/2协议鼠标164.3.1 ps/2鼠标介绍16

6、4.3.2 ps/2鼠标的工作模式174.3.3 ps/2鼠标的数据包结构175软件设计185.1 总体设计185.2 pll模块195.3 vga模块195.4 ps/2模块205.4.1 ps/2鼠标接口模块205.4.2 ps/2坐标位置计算模块225.4.3 ps/2鼠标按键测试模块225.5 设计实现效果236 总结23致 谢25参 考 文 献26 1 绪论 1.1 设计的来源及意义lcd液晶显示屏作为一种通用型显示设备,如今已广泛应用于我们的工作和生活中。与嵌入式系统中常用的显示器相比,它具有显示面积大、色彩丰富、承载信息量大、接口简单等优点,如果将其应用到嵌入式系统中,可以显著提

7、升产品的视觉效果。而基于vga标准的显示器仍是普及率最高的显示器1。若驱动此类显示器,需要很高的扫面频率,以及极短的处理时间。正是由于这些特点,所以本设计用fpga来实现对vga显示器的驱动。与此同时,当前嵌入式系统技术已经得到了广泛应用,但传统的嵌入式系统的人机接口多采用小键盘操作的文本菜单方式,使用户操作较为不便。利用已驱动vga显示的fpga同时实现对ps/2接口鼠标的控制,大大方便了人机接口界面的操作。具有成本低、效果好,模块化、移植性高等特点。1.2设计的内容与要求采用altera公司的cyclone ii系列ep2c8q208c8型号的fpga芯片,控制vga显示器显示可移动的鼠标

8、指针(同windows系统的鼠标操作差不多)。通过单击鼠标左键,可改变鼠标的颜色;单击鼠标右键,可亮灭目标板的发光二极管。利用quartus ii与modelsim联合完成设计、编译、仿真等工作,最后通过jtag下载到目标板上进行在线硬件测试。1.3设计的总体思想针对fpga做时序控制不方便的缺点,本设计简化了通信过程,编译了稍微简单的有限状态机程序,对ps/2鼠标的操作只用了一条指令,使能数据报告(0xf4)。利用鼠标上电自动复位进入stream模式后,送使能数据报告指令(0xf4),便完成了对鼠标的初始化,之后便可以接收ps/2鼠标发送过来的数据包。总体结构如图1所示。图1 总体结构通过板

9、载50mhz时钟电路的fpga内含的pll锁相环进行输出时钟50mhz或100mhz,分别作为vga显示模块的和ps/2接口鼠标模块的时钟输入。vga显示模块用于产生800*600*72hz的显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号hsync和垂直同步时序信号vsync,并把r、g、b的数据通过vga接口传到显示器。而ps/2接口鼠标模块分为三个模块,包括ps/2协议鼠标模块、鼠标位移计算模块和鼠标按键测试模块。它能完成ps/2鼠标的一些基本操作(移动、按键等)。2 硬件介绍2.1 fpga概述2.1.1 fpga的发展历程fpga(field programmable ga

10、te array)现场可编程逻辑门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物,如图2所示。图2 fpga的发展它是作为专用集成电路(asic) 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变pcb 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本。2.1.2 什么是可编程器件在数字电子系统

11、领域,存在三种基本的器件类型:存储器、微处理器和逻辑器件。存储器用来存储随机信息,如数据表或数据库的内容。微处理器执行软件指令来完成范围广泛的任务,如运行字处理程序或视频游戏。逻辑器件提供特定的功能,包括器件与器件间的接口、数据通信、信号处理、数据显示、定时和控制操作、以及系统运行所需要的所有其它功能。逻辑器件又分为固定逻辑和可编程逻辑,固定逻辑是器件复杂性不同,从设计、原型到最终生产,当应用发生变化时就要从头设计,可编程逻辑器件较固定的优点就在于当应用发生变化和器件工作不合适时不用从头设计,直接从新编写逻辑器件后就可以了,这样就节省了前期的开发费用和周期。2.2 fpga的结构和特性2.2.

12、1 fpga基本结构fpga发展非常迅速,形成了各种不同的结构。按逻辑功能块的大小,fpga可分为细粒度fpga和粗粒度fpga。细粒度fpga的逻辑功能块小,资源可以充分利用,但连线和开关多,速度慢;粗粒度fpga的逻辑功能块规模大,功能强,但资源不能充分利用。从逻辑功能块的结构上分类,可分为查找表的结构、多路开关结构和多级与非门结构。根据fpga内部连线的结构不同,可以分为分段互联型和连续互联型。根据编程方式,fpga可分为一次编程和可重复编程两种1231。基于sram查找表lut结构的fpga本质上就是一个ram。目前fpga中多使用4输入lut,所以每一个lut可以看成一个有4位地址线

13、的16xl的ram。当用户通过原理图或hdl语言描述了一个逻辑电路以后,fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram,这样,每一个信号进行逻辑运算时就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可,其原理如表1所示2。表1 lut原理altera公司的产品flex/acex等芯片的结构如图3所示。主要包括lab(logic array block,逻辑阵列块),ioe(input/output element,输入输出单元),ram块(未表示出)和可编程行/列连线。在flex/acex中,一个lab包括8个le(logic element,逻辑单元)。

14、每个le包括一个lut,一个触发器和相关的相关逻辑。图3 altera fpga内部结构le是flex/acex芯片实现逻辑的最基本结构,其内部结构如图4所示。触发器的时钟 (oockseleet)、清除/置位等控制信号可由全局信号、fo引出端或任何内部逻辑驱动。对于组合逻辑,可将该触发器旁路,由lut的输出直接驱动le的输出。图4 逻辑单元(le)内部结构2.2.2 主流fpga产品及开发工具经过十几年的发展,许多公司都开发出了多种可编程逻辑器件。目前市面上较常见的fpga为altera和xilinx公司的产品系列。通常来说,在欧洲用xilinx的人多,在日本和亚太地区则用altera的多,

15、在美国则平分秋色。altera公司是最大的可编程逻辑器件供应商之一。altera的主流fpga分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如cyclone。,cyclone ii;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如stratix,stratix ii等。altera公司相应的集成开发软件为max-plus ii和 quartus ii。max-plus ii被认为曾经是最优秀的pld开发平台,适合开发早期的中小规模的pld/pga,目前已经由quartus ii替代,提供从设计输入、设计编译、功能仿真、设计处理、时序仿真到器件编程的全部功

16、能。quartus ii适合新器件和大规模的fpga器件开发,在高密度fpga设计中能够实现最佳性能。2010年已推出10.1最新版本。xilinx为fpga的发明者,是最大的可编程逻辑器件供应商之一。与altera相似,xilinx的主流fpga也分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如spartan系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如virtex系列3。xillnx公司相应的集成开发软件为foundation和ise。ise提供业界最完整的可编程逻辑设计解决方案,2010年己推出最新版本 ise10.1。2006年5月和10

17、月,xilinx公司相继推出65nm fpga virtex-5 lx和virtex-5 lxt,并于2007年5月实现量产。与 90nmfpga相比,virtcx一5速度平均提高30%,容量增加65%,同时动态功耗降低35%,静态功耗保持同样低,使用面积减小45%。virtex-5 lxt和sxt平台提供了内建的 pci express端点和千兆以太网模块,并具有在成本和易用性方面的领先的高速串行刀o设计方案支持。同时,sxt平台还提供了较高的dsp性能,以及强大的vinex一5串行fo解决方案。2007年altera发布了stratix iii系列fpga,该系列具有高密度、高性能与最低的

18、功耗,采用了tsmc的65nm工艺技术,其突破性创新包括硬件体系结构提升和quartus ii软件改进,与前一代stratix ii相比,这些新特性使功耗降低了50%,性能提高了25%,密度是其两倍。与业界其它fpga相比,stratix iii系列具有更大的存储器逻辑比,以及更好的dsp性能。2.2.3 fpga与cpld及asic的比较cpld主要是由可编程逻辑宏单元(lmc,logic macro cell)围绕中心的可编程互连矩阵单元组成,其中lmc逻辑结构较复杂,并具有复杂的刀o单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于cpld内部采用固定长度的金属线进行

19、各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。到90年代,cpld发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线可编程等高级特性。较常用的有为xilinx公司的cpld和altera公司的cpld。fpga与cpld都是可编程逻辑器件,是在pal、gal等逻辑器件的基础之上发展起来。同以往的pal、gal相比较,fpga/cpld的规模比较大,可以替代几十甚至几千块通用ic芯片。但由于fpga与cpld结构上的差异,具有各自的特点4:(1)cpld更适合完成各种算法和组合逻辑,fpga更适合于完成时序逻辑。换句话说,fpga更适合于触

20、发器丰富的结构,而cpld更适合于触发器有限而乘积项丰富的结构;(2)cpld的连续式布线结构决定了它的时序延迟是均匀的和可以预测的,而fpga的分段式布线结构决定了其延迟的不可预测性;(3)在编程上fpga比cpld具有更大的灵活性。cpld通过修改具有固定内连电路的逻辑功能来编程,fpga主要通过改变内部连线的布线来编程;fpga可在逻辑门下编程,而cpld是在逻辑块下编程;(4)fpga的集成度比cpld高,具有更复杂的布线结构和逻辑实现;(5)cpld比fpga使用起来更方便。cpld的编程采用ezprom或 fastflash技术,无需外部存储器芯片,而fpga的编程信息需存放在外部

21、存储器上,使用方法复杂;(6)cpld的速度比fpga快,并且具有较大的时间可预测性。这是由于fpga是门级编程,并且clb之间采用分布式互联,而cpld是逻辑块级编程,并且其逻辑块之间的互联是集总式的;(7)在编程方式上,cpld主要是基于eeprom或flash存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。cpld又可分为在编程器上编程和在系统编程两类。fpga大部分是基于sram编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入sram中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置;(8)cpld保密性好,fpg

22、a保密性差;(9)一般情况下,cpld的功耗要比fpga大,且集成度越高越明显。而 asic(application specific integrated circuit)为全定制专用集成电路,与fpga相比各也各自具有自己的优缺点,在此做一个定性比较5。表2 fpga与asic对比表2的比较是根据一般情况确定的。结论并不是绝对的,例如单片成本应该根据具体项目进行计算才能得到正确的结论。fpga最本质的特性是可编程性和设计周期短的优势,而这正是asic的弱点。两者在价格上的比较要考虑多种因素,但趋势也是向有利于fpga的方向发展。fpga厂商提供了很好的设计环境,例如altera提供的qua

23、rtus ii软件几乎包括了所有的eda工具。使用fpga,不用和ic厂家联系,没有流片费用,可以很快上市,没有库存问题,并可以现场升级产品。在下属场合一般采用asic:(l)门和存储位的数量超过1千万;(2)千兆位连接数量较多;(3)在最低功耗下,主时钟频率高于300mhz。对比可见,从成本、开发难易程度、功耗等常见因素考虑,基于纯硬件控制方式实现控制器(时序和运算均比较多),选择fpga作为开发元件是一个相对好的方案选择。2.3 fpga的开发流程fpga 是可编程芯片,因此fpga 的设计方法包括硬件设计和软件设计两部分。硬件包括fpga 芯片电路、存储器、输入输出接口电路以及其他设备,

24、软件即是相应的vhdl 程序和verilog hdl程序。fpga采用自顶而下的设计方法,开始从系统级设计,然后逐步分化到二级单元,三级单元知道可以直接操作基本逻辑单元或ip核为止,一般情况下设计流程有如下步骤:(1)功能定义/器件选型。在fpga 设计项目开始之前,必须有系统功能的定义和模块的划分,另外就是要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。(2)设计输入。设计输入有原理图输入和硬件描述语言输入,原理图输入比较直观但不易仿真,但效率很低,且不易维护,不利于模块构造和重用。更主要的缺点是可移

25、植性差,当芯片升级后,所有的原理图都需要作一定的改动。硬件语言包括vhdl和verilog hdl以及system c等,硬件描述语言输入其共同的突出特点:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。(3)功能仿真。功能仿真也称为前仿真是在编译之前对用户所设计的电路进行逻辑功能验证,此时没有延迟信息,仅是对功能的初步检测。(4)综合优化。所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供fpga 布局布线软件进行实现。就目前的层次来看,综合优化(sy

26、nthesis) 是指将设计输入编译成由与门、或门、非门、ram、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。(5)综合后仿真。综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。(6)实现与布局布线。布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件( 如配置文件与相关报告),实现是将综合生成的逻辑网表配置到具体的fpga 芯片上。(7

27、)时序仿真。时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规( 即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等) 现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。(8)板级仿真与验证。板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具仿真和验证。(9)芯片编程与调试。设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件( 位数据流文件,bitstreamgeneration),然后将编程数据下载到fpga 芯片中。逻辑分析仪(logic analyze

28、r,la) 是fpga 设计的主要调试工具,但需要引出大量的测试管脚,且la 价格昂贵。目前,主流的fpga 芯片生产商都提供了内嵌的在线逻辑分析仪。3 vga介绍3.1 vga发展及定义显卡所处理的信息最终都要输出到显示器上,显卡的输出接口就是电脑不显示器之间的桥梁,它负责向显示器输出相应的图像信号。crt显示器因为设计制造上的原因,只能接受模拟信号输入,这就需要显卡能输入模拟信号。vga接口就是显卡上输出模拟信号的接口,vga(视频图形矩阵,video graphics array)接口,也叫d-sub接口。虽然液晶显示器可以直接接收数字信号,但为了兼容性,大多数液晶显示器也配备了vga接

29、口。vga是ibm在1987年随ps2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。目前vga技术的应用还主要基亍vga显示卡的计算机、笔记本等设备。 根据分辨率丌同,vga分为vga(640x480)、svga(800x600)、xga(1024x768)、sxga(1280x1024)等。虽然说vga的标准对于现在的个人计算机市场十分过时,但是vga仍然是所有制造商所支持的最低标准,例如不管所有厂商的显卡,在不安装自己驱动的情况下,都是支持 vga 标准显示的6。3.2 vga显示原理3.2.1 vga的电气特性vga接口是一种d

30、型接口(d-sub),上面共有15针空,分成三排,每排五个。如图5所示。而与之配套的底座则为孔型接口。图5 vga接口及底座虽然标准vga一共15个接口,但真正用到的信号接口不多,就5个。详细vga引脚定义如表3所示。表3 vga引脚定义3.2.2 vga的驱动概念显示器采用光栅扫描方式,即轰击荧光屏的电子束在crt(阴极射线管)屏幕上从左到右(受水平同步信号hsync控制)、从上到下(受垂直同步信号vsync控制)做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。隔行扫描指电子束在扫描时每隔一行扫一线,完成一屏后再返回来扫描剩下的线。与电视机的原理一样。隔行扫描的显示器扫描闪烁的比较厉害,会让

31、使用者的眼睛疲劳。目前微机所用显示器几乎都是逐行扫描。逐行扫描是指扫描从屏幕左上角一点开始,从左向右逐点进行扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,crt对电子束进行消隐,每行结束时,用行同步信号进行行同步;当扫描完所有行,形成一帧时,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行行场消隐,开始下一帧的扫描。一帧的屏幕是由“m 行扫描”和“n 列填充”组成。假设以800x 600 x 60hz 为例的显示标准( 800 宽x 600 高x 60hz ), 那么宏观上它有600 行和800 列为一行,如图6所示。图6 vga显示器宏观上,一帧屏幕的显示是由

32、600行从上至下扫描,800列从左至右填充(这也是为什么每当电脑几乎要当机的时候,视屏显示从上之下的延迟扫描)然而微观上,一行的行扫描是由超过800个列填充完成,一帧图像超过600行扫描。完成一行扫描所需时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描所需的时问称为垂直扫描时间,其倒数为垂直扫描频率,又称刷新频率,即刷新一屏的频率。常见的有60hz、75hz等。3.2.3 vga的时序分析vga显示器要正确显示图像关键还是如何实现vga时序。视频电子标准协会(vesa,video electronics standards as- sociation)对显示器时序进行了规范。vga

33、的标准参考显示时序如图7、图8所示。行时序和场时序都需要产生同步脉冲(synca)、显示后沿(back porch b)、显示时序段(display interval c)和显示前沿(front porch d)四个部分。vga工业标准显示模式要求:行同步、场同步都为负极性,即同步头脉冲要求是负脉冲。图7 vga的行时序图8 vga的场时序vga的行时序如图3.3所示:每一行都有一个负极性行同步脉冲(sync a),是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(back porch b),在显示时序段(display interval c)显示器为亮的过程,rbg数据

34、驱动一行上的每一个像素点,从而显示一行。在一行的最后为显示后沿(back porch b)。在显示时序段(display interval c)之外没有图像投射到屏幕时插入消隐信号。同步脉冲(sync a)、显示后沿(back porch b)和显示前沿(front porch d)都是在行消隐间隔内(horizontal blanking interval),当行消隐有效时,rgb信号无效,屏幕不显示数据。vga的场时序与vga的行时序基本一样,如图3所示,每一帧的负极性帧同步脉冲(sync a)是一帧的结束标志,同时也是下一帧的开始标志。而显示数据是一帧的所有行数据。几种常用的时序参数如表

35、l和表2所示,首先,根据显示器的性能选择一种合适的vga模式,然后由象素时钟频率和图像分辨率计算出行总周期数,再把表1和表2中给出的a、b、c、d各时序段的时间按照象素计数脉冲源频率折算成时钟周期数。在fpgmcpld中用计数器和触发器,以计算出的各时序段时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑组合构成图2和图3中的a、b、c、d各时序段以及adv7125的空自信号blank和同步信号sync。一个示例就是60hz时1280x1024分辨率显示的vesa标准,在60hz时,屏幕每1667毫秒更新一次。这个标准制定了帧大小,用它来定义分辨率和同扫次数之间的关系。对于分辨率

36、大小为1280x1024来说,帧的大小为1688x1066,这个大小与像素时钟(pixel clock)有关,所谓像素时钟就是对像素的刷新频率。像素时钟为1688x1066x60hz或者108兆hz(mhz)时,每个像素的刷新频率也就是大约926纳秒,那么行频就为60x1066=63960行缈,也就是用显示器的帧率乘以扫描线数量。可以用帧大小得到纵向回扫次数,为了得到纵向同步长度(sync length),可以从纵向帧大小减去纵向分辨率,也就是1066-1024-42。这样,纵向回扫花费的时间和在屏幕上绘出42条线的时间相同,对于纵向回扫来说需要的时间为42x1688x926纳秒(656微秒)

37、。在显示时序段(displav interval c),数据读写控制器从数据缓存区读取像素颜色,用这些颜色来控制输出设备(显示器)的亮度。一帧图像就准确的显示到vga显示器上7。列出下列常见刷新率时序如表4所示。表4 vga常见刷新率时序表4 ps/2鼠标通信协议4.1 ps/2接口硬件ps/2接口用于许多现代的鼠标和键盘,由ibm最初开发和使用。实物图如图9所示。图9 ps/2鼠标实物图物理上的ps/2 端口是两类连接器中的一种5 脚的din 或6 脚的mini-din 这两种连接器在电气特性上是十分类似的实际上两者只有一点不同那就是管脚的排列这就意味着这两类连接器可以很容易用一种简单的硬件

38、连线的适配器来转换。图10就是两种连接器的引脚定义,使用中,主机提供+5v电源给鼠标,鼠标的地连接到主机电源地上。图10 ps/2接口连接器引脚定义4.2 ps/2通信协议4.2.1 ps/2协议概述ps/2通信协议是一种双向同步串行通信协议。通信的两端通过clock(时钟脚)同步,并通过国data(数据脚)交换数据。任何一方如果想抑制另外一方通信,只需要把clock拉到低电平。如果是pc机和ps/2设备间的通信,则pcji机必须做主机,也就是说,pc机可以抑制ps/2设备发送数据,而ps/2设备则不会抑制pc机发送数据,也即主机总是在总线上有优先权。一般两设备间传输数据的最大时钟频率是33k

39、hz,大多数ps/2设备工作在10-20khz。推荐值在15khz左右,也就是说,clock高、低电平的持续时间都为40us。每一数据帧包含1112位,具体含义如表5所示。表5 ps/2通信数据帧格式数据含义1个起始位总是逻辑08个数据位(lsb)地位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通信中4.2.2 ps/2设备到主机的通信ps/2到主机的通信时序如图11所示。数据在ps/2时钟的下降沿读取,ps/2的时钟频率为1016.7khz。对于ps/2设备,一般来说从时钟脉冲的上升沿到一个数据转变的时间至少要有5us;数据变化到下降沿的时间至少要有5us,并且不

40、大于25us,这个时序非常重要应该严格遵循。主机可以再第11个时钟脉冲停止位之前把时钟线拉低,使设备放弃发送当前字节,当然这种情况比较少见。在停止位发送后设备在发送下个包前应该至少等待50us,给主机时间做相应的处理。不过主机处理接收到的字节时一般会抑制发送(主机在收到每个包时通常自动做这个)。在主机释放抑制后,设备至少应该在发送任何数据前等50us。图11 设备到主机的通信4.2.3主机到ps/2设备的通信首先ps/2 设备总是产生,时钟信号如果主机要发送数据它必须首先把时钟和数据线设置为请求。发送状态如下示:(1)通过下拉时钟线至少100 微秒来抑制通讯;(2)通过下拉数据线来应用请求发送

41、然后释放时钟。设备应该在不超过10 毫秒的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存,这在发生在设备到主机通讯的过程中正好相反。在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲,如果主机在第11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放,然后设备将产生一个错误。通信时序图如图12,图13所示。主机也可以再第11个时钟脉冲应答位前中止一次传送,只要下拉时钟线至少100us8。图12 主机到设备的通信图13 主

42、机到设备通信的详细过程4.3 ps/2协议鼠标4.3.1 ps/2鼠标介绍电脑鼠标的设计主要是为了检测表面上的二维运动。其内部电路测量相对距离的运动,并检查按钮的状态。对于具有了ps2接口鼠标,这些信息是装在三个数据包发送到通过ps2端口的主机。在stream模式下,源源不断地在预先设定的报文送给了ps2鼠标的信息9。标准的ps/2鼠标支持下面的输入x(左负、右正)位移、y(上负、下正)位移、左键中键和右键鼠标,以一个固定的频率读取这些输入,并更新不同的计数器然后标记出反映的移动和按键状态。标准的鼠标有两个计数器,以保持位移的跟踪x位移计数器和y位移计数器。可存放9位的二进制补码,并且每个计数

43、器都有相关的溢出标志,它们的内容连同三个鼠标按钮的状态一起以3字节移动数据包的形式发送给主机。位移计数器表示从最后一次位移数据包被送往主机后有位移量发生。4.3.2 ps/2鼠标的工作模式ps/2鼠标的四种工作模式是:reset模式,当鼠标上电或主机发复位命令(0xff)给它时进入这种模式;stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;remote模式,只有在主机发送了模式设置命令(0xf0)后,鼠标才进入这种模式;wrap模式,这种模式只用于测试鼠标与主机连接是否正确。此外,还有一个受欢迎的扩充石microsoft和intellimouse,

44、它既支持标准输入也支持滚轮和两个附加的按键。4.3.3 ps/2鼠标的数据包结构标准的ps/2鼠标采用如表6所列的3字节数据包格式发送位移和按键信息给主机。表6 三字节数据包格式字节d7d6d5d4d3d2d1d0byte1y溢出位x溢出位y符号位x符号位always1中间键右按键左按键byte2x位移增量byte3y位移增量byte4always0always0第4键第5键z位移增量byte1中的bit0、bit1、bit2分别表示左、右、中键的状态,状态值0表示释放,1表示按下。byte2和byte3分别表示x轴和y轴方向的位移计数器,是一个9位二进制的补码整数。其中,最高位作为符号位出现

45、,当鼠标读取输入发现有位移时被计数器更新。这些值是自从上一次发送位移数据包给主机后位移的累计值(即最后一次数据包发给主机后位移计数器被复位)。位移计数器可表示的值的范围是-256+255。如果超过了范围,响应的溢出位就被设置,并且在复位前计数器不会增减。byte4的低四位表示滚轮的位移计数器,也是二进制的补码证书,可表示的值的范围是-8+7;而byte4中的d5、d4表示第5、4键是否按下。一旦位移数据包成功地发送给主机,位移计数器就会复位。同样鼠标在收到主机不是resend(0xfe)命令外的其他命令计数器也会复位。因此,这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三键鼠标,产生的数

46、据包没有byte4其余的相同。5软件设计5.1 总体设计通过fpga芯片实现ps/2鼠标接口协议的设计,并且通过vga显示器来输出当前鼠标的位置。当鼠标左键按下时鼠标图像能改变颜色。按reset键盘实现总复位。顶层模块原理图如图14所示。图14 顶层模块原理图图15 程序流程从设计流程上如图15所示。主机复位后,首先向鼠标发送初始化命令(0xf4)。当鼠标收到命令字后会给出一个应答字节(0xfa)。主机根据应答字节来判断鼠标是否正确应答。应答正确则进行接收鼠标数据包,然后从接收到的数据包中获得鼠标位置及状态数据,并输出给显示模块。显示模块在vga显示器上显示出当前鼠标的状态和位置。否则,停止处

47、理。5.2 pll模块锁相环路是一种反馈控制电路,简称锁相环(pll,phase-locked loop)。锁相环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。锁相环通常由鉴相器(pd, phase detector)、环路滤波器(lf, loop filter)和压控振荡器(vco, voltage controlled oscil

48、lator)三部分组成10。实现了时钟电路的输入到fpga芯片,通过pll模块输出两个时钟信号(50mhz和100mhz),原理图如图16所示。图16 pll原理图5.3 vga模块本模块实现了vga图像控制器,原理图如图17所示。从设计流程上,严格按照vga行场的时序进行计数。计数到某一时刻,信号就置1或置0。背景显示蓝色,鼠标图案粉红色,还显示一个绿色框,硬件效果如图18所示。由于三原色信号线只有0或1,没有用da芯片,只能输出8种颜色。其中,在modelsim软件下的仿真波形图19所示。图17 vga模块原理图图18 vga硬件效果图19 vga模块仿真波形5.4 ps/2模块5.4.1

49、 ps/2鼠标接口模块本模块是ps/2鼠标接口模块,通过ps/2协议与ps/2鼠标通信。可以接收ps/2鼠标发送过来的按键及位移信息,并转换成并行信号输出。原理图如图20所示。图20 鼠标接口模块原理图其中,此模块采用两个有限状态机。m1状态机的功能为同步ps2时钟,在ps2的时钟边沿产生边沿标志。如图21所示。图21 m1状态机图22 m2状态机m2状态机的功能为初始化ps2鼠标,接收ps2鼠标数据包。如图22所示。完成后进入m2_data_high_1状态,发送d2(d2=1)并进入m2_data_low_2状态,此时向鼠标发送d3位(d3=0),完成发送进入m2_data_high_2状

50、态,向鼠标发送d4,d5,d6,d7(d4=d5=d6=d7=1),完成发送进入m2_data_low_3状态,向鼠标发送奇偶校验位,然后进入m2_data_high_3状态,将数据线拉高,等待鼠标返回应答信号。若ps/2时钟信号下降沿来临时,数据线仍未高电平,则进入m2_error_no_ack状态,此时握手失败,系统将保持m2_error_no_ack状态直道下一次复位。否则进入m2_await_response状态接收应答字,接收完成进入m2_verify数据校验,然后进入m2_use状态,锁存输出数据,并进入m2_wait状态,等待接收数据,当检测到时钟下降沿后进入m2_gather状态,进行接收鼠标数据包,接收完成进入m2_verify状态,这便形成了数据接收循环。5.4.2 ps/2坐标位置计算模块该模块实现鼠标位移的计算,当有数据更新时,就读取鼠标的x,y轴位移增量,9位二进制补码,最高位符号位;输出鼠标的x,y轴坐标的累加值。原理图如图23所示。通过quartusii的仿真软件,成功实现这模块的功能。仿真波形如图24所示。图23 鼠标坐标位置计算模块原理图图24 鼠标坐标位置计算的仿真波形5.4.3 ps/2鼠标按键测试模块该模块的作用是根据ps/2鼠标接口模块送来的鼠标按键信息,通过vga模块控制显示器显示不同的颜色。从设计流程上,读取鼠标的按键,

温馨提示

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

评论

0/150

提交评论