基于FPGA的PS/2鼠标控制器设计摘要:本文主要介绍基于FPGA的PS/2鼠标接口设计原理和工作流程,然后用鼠标操作并用七段数码管和LED等显示作为实例,把鼠标接口和七段数码管显示部分的各个应用模块体现出来,最后对各个模块进行程序分析和调试。本次实验使用的是AlteraDE2-115开发板,并用Verilog语言在QuartusⅡ10.0软件环境下实现所要求的功能。当用鼠标操作并在相关外设显示实现我们想要的功能的时候,就充分说明了大规模可编程逻辑器件的重要作用。本次实验先分别介绍FPGA的内部结构、PS/2的接口协议、相关外设工作原理,然后再它们的基础上分析示例程序,最后给出实物演示图。在实验过程中,对FPGA的正确编程是有关本实验成败的关键,也是本实验的难点。关键词:FPGAPS/2VerilogQuartusⅡ0前言随着电子技术的发展,现代电子产品已经深入到社会的各个领域,有利的促进了社会的发展,但同时人们对电子产品的性能和要求也越来越高,产品的换代速度也越来越快。然而微电子技术是电子技术发展的根基,尤其在半导体工艺技术的发展上更能体现出微电子技术。所以现在在单片硅片上集成了更多的晶体管,集成电路也在向低成本、低功耗和高速的方向发展,各种专用集成电路的成本不断降低,最终实现了片上系统。现代电子技术的核心是EDA技术,它结合了物理层在硬件电路实现的发展,也体现了现代电子技术与计算机软件技术有效的融合和升华。EDA技术的发展有效的结合了这两者,是这两个技术的共同产物,所以电子技术全方位技术EDA时代。工程师们用EDA工具,开发专用集成电路及其复杂的IP核模块。特别是硬件描述语言的出现,使更加复杂的电子系统的设计和调试更加的简单。所以为了实现电子技术的发展,EDA技术对于我们而言及其重要。本文介绍了基于FPGA控制的PS/2鼠标接口电路设计的基本结构、性能特点、及其设计理念。本设计使用Altera公司DE2-115开发板,(CycloneIVEP4CE115F29FPGA芯片),采用EDA技术,并使用Verilog语言设计各个模块,在QuartusⅡ10.0下进行软件编程实现正确的工作时序后,将编译结果下载到FPGA芯片上,最终实现本次设计的要求。1FPGA介绍1.1FPGA的简介随着EDA技术的发展,在电子领域里的模电与数电、硬件和软件、器件与系统的集成等更加良好的融入到一起。所以更大规模的FPGA器件不断更新。FPGA(FieldProgrammableGateArray)是一款大规模可编程逻辑器件,它和CPLD、GAL等可编程逻辑器件不一样,后者都是基于乘积项的可编程结构,而前者是用的查找表结构,LUT是可编程的最小逻辑单元。FPGA的出现使开发数字电路的技术进一步提高。它的特点是直接面向用户,具有极大的通用性和灵活性,使用简单方便,硬件检测和实现快捷,开发周期短,成本低,便于维护等。FPGA应用EDA技术,以硬件描述语言,原理图等形式作为输入设计逻辑,经过一系列的变换,最后转换成FPGA器件所识别的编程文件,最终实现电子线路系统功能。1.2FPGA的结构和工作原理对于大多数FPGA而言都是采用的基于静态随机存储器的查找表逻辑形成机构,简单的说就是用静态随机存储器来够成逻辑函数发生器,其4输入LUT的内部结构如图1.2-1所示。图1.2-1FPGA查找表单元1.2.1FPGA的芯片结构目前的FPGA芯片已经远远的超过了以前版本的基本性能,并且整合了常用功能(如:RAM)的硬核模块。FPGA主要由七部分构成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。其芯片内部结构如图1.2.1-1所示。图1.2.1-1FPGA内部结构1.2.2FPGA各部分的作用与工作原理可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA内的I/O按组分类,查找表LUT输入1输入2输入3输入4输出每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。大多数FPGA都具有内嵌的RAM,这大大拓展了FPGA的应用范围和灵活性。RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。单片块RAM的容量为18kbit,即位宽为18bit、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽深度)不能大于18kbit;其次,位宽最大不能超过36bit。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(HardCore),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSPCore模块,其相应的系统级设计工具是EDK和PlatformStudio,并依此提出了片上系统(SystemonChip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOPC的开发目的。1.3DE2-115开发板介绍图1.3-1给出了DE2-115开发板的全貌。它描述了开发板的布局,并标注出连接器和关键部件的位置。图1.3-1DE2-115开发板图1.3-2展示了DE2-115的系统框图。为了给用户提供最大的便利性,所有的连接器都是通过CycloneIVEFPGA器件来完成的。因此,使用者可以通过调试FPGA来实现任何系统设计。图1.3-2DE2-115系统框图2PS/2介绍PS/2接口作为传统的鼠标键盘接口已经被大部分人所熟知,虽然随着USB接口键鼠的普及,绝大多数PC用户均选择了USB的键鼠,但目前主流PC中依旧保留了PS/2键鼠的接口,由于PS/2接口实现简单,使用方便的特点,在许多领域如工控机等仍旧采用PS/2接口来完成基本的人机交互。2.1PS/2的接口特性PS/2接口多用于鼠标和键盘,IBM是开发和使用最早的。PS/2接口从物理上有两种类型的连接器,它们分别是5脚的DIN和6脚的MINI-DIN,如图2.1-1和2.1-2所示。图2.1-1PS/2接口连接器引脚定义2.2PS/2的接口协议PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号。如果主机要发送数据,它必须控制鼠标产生时钟信号。方法如下:主机首先下拉时钟线至少100μs抑制通信,然后再下拉数据线,最后释放时钟线。通过这一时序控制鼠标产生时钟信号。PS/2接口分为两种通讯模式:设备到主机的通讯、主机到设备的通讯。时序如图2.2-1。当时钟为高时,设备驱动数据线改变状态,在时钟信号的下降沿数据被控制器锁存。图2.2-2为主机到设备的通讯时序。图2.2-1鼠标到主机的通信时序图2.2-2主机到鼠标的通信时序2.3PS/2的鼠标工作模式PS/2鼠标有四种工作模式,它们分别为:Reset模式:当鼠标上电或主机发复位命令给它时,进入Reset模式;Stream模式:这是鼠标的默认模式,当鼠标上电或复位完成后,鼠标自动进Stream模式,鼠标大部分就是用此模式工作;Remote模式:只有当主机发送了设置命令后,鼠标才进入Remote模式;Wrap模式:Wrap模式只用于测试鼠标与主机连接是否正确。2.4PS/2的数据帧格式鼠标在实际工作中,会把及时收到的数据状态发送给主机,让主机做出相应的动作。鼠标发送数据的具体方式如下:Byte1中的Bit0、Bit1、Bit2分别表示左、右、中键的状态,状态值0表示释放,1表示按下;Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值;Byte4的低四位表示滚轮的移动二进制补码值,高四位作为扩展符号位。这种数据包由带滚轮的三键三维鼠标产生,若是不带滚轮的三键鼠标,产生的数据包没有Byte4,其余的相同。数据帧格式如图2.4-1所示。图2.4-1数据帧格式3硬件相关介绍3.1PS/2接口DE2-115包含一个标准的PS/2接口,可以用来外接PS/2鼠标或键盘。图3.1-1给出了PS/2接口相关的原理图。图3.1-1PS/2接口原理图PS/2接口相关的引脚配置信息可以在图3.1-2中找到。图3.1-2PS/2接口引脚配置3.2七段数码管接口DE2-115配有八个七段数码管。它们被分成两组,每组四个,用来作为数字显示用。正如图3.2-1所示,七段数码管的每个引脚(共阳模式)均连接到CycloneIVEFPGA。FPGA输出低电压的时候,对应的字码段点亮,反之则熄灭。图3.2-1七段数码管原理图每个数码管的字段都从0到6依次编号,图3.2-2给出了它们的编号次序。与FPGA的引脚连接信息这里省略,具体参DE2-115考开发板资料。图3.2-2七段数码管编号次序3.3按键接口DE2-115提供了四个按钮开关,如图3.3-1所示。每个按钮开关都通过一个施密特触发器进行了去抖动处理,如图3.3-2所示。四个施密特触发器的输出信号,分别为KEY0,KEY1,KEY2,KEY3,直接连接到了CycloneIVEFPGA。当按钮没有被按下的时