FPGA的PS2键盘控制设计和仿真实现_第1页
FPGA的PS2键盘控制设计和仿真实现_第2页
FPGA的PS2键盘控制设计和仿真实现_第3页
FPGA的PS2键盘控制设计和仿真实现_第4页
FPGA的PS2键盘控制设计和仿真实现_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...本科毕业论文〔设计〕论文题:基于FPGA的PS2键盘控制设计及仿真实现作者声明本毕业论文〔设计〕是在导师的指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术标准和其他侵权行为。对本论文〔设计〕的研究做出重要奉献的个人和集体,均已在文中以明确方式标明。因本毕业论文〔设计〕引起的法律结果完全由本人承当。特此声明作者专业:通信工程作者学号:作者签名:年月日基于FPGA的PS2键盘控制设计及仿真实现TheDesignandSimulationImplementationofthePS2KeyboardControlbasedonFPGA201摘要本文简述了PS2键盘的特点和工作原理,重点介绍了在FPGA上实现PS2键盘的构造设计和VHDL代码设计。PS2键盘具有价格低、通用可靠,且连接线少(仅使用2根信号线〕的特点。并可满足多种系统的要求。FPGA〔FieldProgrammableGateArray〕是一类高集成度的可编程逻辑器件,它结合EDA技术以硬件描述语言、电路原理图、状机等形式输入设计逻辑;并提供功能模拟、时序仿真等模拟手段,再经过一系列的变换,将输入逻辑转换成FPGA器件所需的编程文件,以实现专用集成电路ASIC。应用FPGA设计PS2键盘控制器,不仅有硬件电路简单,更具灵活性,集成度高更容易移植等特点,更重要的是现代EDA(电子设计自动化)技术提供了一种很好的途径,利用VHDL硬件描述语言和FPGA器件可以很方便地构建键盘扫描模块。设计使得使用VHDL语言基于FPGA芯片实现PS2键盘成为研究的方向。本文对基于VHDL的PS2键盘实现进展了研究,并设计了PS2键盘。所做的主要工作为:〔1〕以PS2键盘控制的根本理论为依据,对其进展了详细的讨论。〔2〕本设计中采用了自上而下的层次化、模块化的设计思想,将整个接口划分为多个模块,同时利用VHDL语言的描述方法对各个功能模块进展了设计,最终完成了PS2键盘的系统设计。〔3〕运用ISE软件进展仿真。关键词:VHDL;PS2键盘;ISEAbstractThispaperdescribesthecharacteristicsandworkingprincipleofPS2keyboard,introducedinthestructureofFPGAtorealizethePS2keyboarddesignandVHDLcodedesign.PS2keyboardhaslowpriceandreliableingeneralandlesscables(USESonly2signallines).Andcanmeettherequirementsofavarietyofsystems.FPGA(FieldProgrammableGateArray)isakindofhighlevelofintegrationofProgrammablelogicdevices,itcombinedthetechnologyofEDAwithhardwaredescriptionlanguage(suchasforminput,circuitprinciplediagram,machinedesignlogic;Andprovidethefunctionsimulationandtimingsimulationmodelingtechnology,thenafteraseriesoftransformation,whichconvertstheinputlogicprogrammingfilesneededfortheFPGAdevice,inordertorealizethespecialintegratedcircuitASIC.PS2keyboardcontrollerusingFPGAdesign,notonlythehardwarecircuitissimple,flexibility,highlevelofintegrationismoreeasytotransplant,moreimportantisthemodernEDA(electronicdesignautomation)technologyprovidesagoodway,usingtheVHDLhardwaredescriptionlanguageandFPGAdevicecanbeeasilyconstructthekeyboardscanmodule.DesignmakesuseofVHDLlanguagebasedontheFPGAchiptorealizethePS2keyboardbecomethedirectionofresearch.Inthispaper,thePS2keyboardimplementationbasedonVHDLarestudied,anddesignthePS2keyboard.Themainworkdoneasfollows:(1)tothePS2keyboardcontrolonthebasisofthebasictheory,andcarriesonthedetaileddiscussion.(2)thedesignadoptsthetop-downhierarchical,modulardesignthought,willthewholeinterfaceisdividedintoseveralmodules,atthesametime,useofVHDLlanguagedescriptionmethodofeachfunctionmoduledesign,finallycompletedaPS2keyboardsystemdesign.(3)usingISEsoftwaresimulation.Keywords:VHDL;PS2keyboard;ISE目录TOC\o"1-2"\h\z\u1概述11.1本选题研究的目的及意义11.2本选题国内外研究状况综述11.3本选题研究的主要内容22PS2键盘的理论研究32.1PS2键盘的构造特点32.2PS2键盘的工作原理32.3PS2协议43ISE工具概述73.1硬件描述语言73.2ISE使用方法124PS2接口的设计164.1模块构造设计164.2VHDL代码设计164.3仿真验证17结语18主要参考文献19附录20附录1PS2键盘接口程序设计201概述1.1本选题研究的目的及意义现今生活中,随着社会的开展,各式各样的生活用品慢慢地走上了“智能〞的道路,越来越令人感觉到方便。这与一个优秀的人机交流界面密不可分。与此同时作为计算机最常用的输入设备的键盘也日新月异。1981年IBM推出了IBMPC/XT键盘及其接口标准。该标准定义了83键,具5脚DIN连接器和简单的串行协议。采用我们现在提及的作为第一套扫描码集然则它并没有主机到键盘的命令。为此,1984年IBM推出了IBMAT键盘接口标准。该标准定义了84~101键,与PC键盘不同的是它采用双向串行通讯协议,此协议采用第二套键盘扫描码集并设有8个主机到键盘的命令。到了1987年,IBM又推出了PS2键盘接口标准。该标准仍旧定义了84~101键的根基上采用6脚mini-DIN连接器,此连接器在封装上比5脚DIN连接器更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。现在,市面上的键盘都和PS2及AT键盘兼容,只是功能不同而已。在工业电子设备“智能化〞和升级换代迅速的电路设计中,常常需要使用键盘,而使用标准PS2键盘则可简化设计。由于FPGA不仅可以用编写代码的方法实现复杂逻辑电路,而且其内部是由规则的逻辑阵列所组成的。因此利用FPGA设计键盘控制器,不仅使硬件电路简单,设计周期短而且编码过程比通用MCU比,更加简单易行。1.2本选题国内外研究状况综述如果将CPU比作电脑的心脏,显示器比作电脑的脸,那么键盘就是电脑的嘴,是它实现了人和电脑的沟通。它作为嵌入式系统的常用人机接口设备,在嵌入式系统中有着广泛的应用。目前,无论是国外还是国内,各键盘制造厂商针对使用者对于键盘的功能性及使用舒适度等需求,在设计上作了相当大的调整,就市场角度来看,键盘技术在可预期的几年内将朝着以下几个趋势开展:〔1〕USB介面设计:USB〔UniversalSerialBus〕即为一种可联结127个装置的万用序列流排,同时支持PC97的一种外接标准,并成为目前电脑界最新的介面标准,因USB介面能够提供更简单,更直接的联结方式,即插即用,可高速存取。据市场趋势显示,USB已经开展为便于利用,增强功能及降低本钱的标准。在WinHEC大会上,Microsoft总裁BillGates大力倡导USB的标准下,不仅Intel全部新型的主机板均支持USB而且几乎所有PC供给商都致力于开展USB的系统,因此它被预测成为整个新型PC周边设备产品爆炸性创新的"催化剂"。〔2〕多媒体功能:键盘的设计已开场走向多媒体世界的舞台,它拥有操控多媒体周边设备的功能同时,使用者还可依自己的需求,自行设定所需的应用功能于功能键上。多媒体的市场正在快速开展中,键盘技术的开展也必将顺应着它的潮流而不断改良,面对这种改良,有人说是把简单的键盘复杂化〔因"热键"必须和软件的驱动程式相配合〕。也有人认为:聪明的键盘就该如此。〔3〕人体工学设计:随着人们对于电脑的日趋依赖,逐渐衍生出了电脑症候群。针对此非必要性的伤害,市场上已逐渐出现并流行起号称符合人体工学原理的键盘。PS2键盘是IBM于1987年正式推出的,在整体设计上与AT键盘相差不大,更改的最多的可能是主机到键盘命令的增加。此外,PS2键盘出人意料的使用一种乖僻的扫描码。这使得它的兼容性大打折扣。正如大家所熟知的那样,PS2系统并不流行,后来几乎没人再用了。到了20世纪中期,电子键盘代替了机械键盘,1936年美国人Dvorak在QWERT式键盘的根基上创造Dvorak键盘。在20世纪70年代,一位名为LilianMalt的创造家又对DVORAK键盘作了进一步改良创造了Malt键盘。键盘的接口有AT接口、PS/2接口和最新的USB接口,高档的品牌机多采用PS/2接口,最早也是IBM公司的专利俗称“小口〞,不过越来越多新型主板都开场提供PS/2键盘接口。虽然目前USB作为新兴的构造,一些公司迅速推出了USB接口的键盘,但USB接口只是一个卖点,对性能的提高收效甚微,可以说现在主流的还是PS2接口,因为它价格低、通用可靠,且连接线少(仅使用2根信号线〕并可满足多种系统的要求。1.3本选题研究的主要内容PS/2是较早电脑上常见的接口之一,用于鼠标,键盘等设备。虽然IBM的PS/2电脑在市场中失败了,但是PS/2接口一直沿用至今,键盘是嵌入式系统的重要输入设备,实现人机交互的重要途径,随着标准PS/2键盘技术的不断成熟,在嵌入式系统中,用标准PS/2键盘会越来与广泛。由于VHDL所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进展测试,因此它成为IC设计验证的技术主流。利用VHDL通过模块组合可以实现特定的功能,所以对于标准PS/2键盘,用VHDL设计基于FPGA的标准PS/2键盘接口,实现了标准PS/2键盘到NiosII嵌入式CPU的数据单向通信。本文主要分为5章,章节安排如下:〔1〕绪论。主要介绍了开题的背景和研究意义,以及PS2键盘的国内外研究现状以及课题的研究内容和具体工作等。〔2〕PS2键盘的理论研究。主要介绍PS2键盘的根本知识以及其设计的根本方法。〔3〕ISE工具概述。介绍了VHDL硬件语言及其设计方法、ISE软件的运用等。〔4〕PS2键盘控制的设计。介绍了PS2键盘控制的设计的模块划分和PS2键盘控制的各模块的实现,并对PS2键盘控制设计进展了系统仿真和验证。〔5〕结语。主要介绍本论文中的优点和缺乏之处。2PS2键盘控制的理论研究键盘是嵌入式系统的重要输入工具,是实现人机交互的重要手段之一。随着标准PS2键盘技术的成熟和价格的不断下降,使得在嵌入式系统的设计中用标准的PS2键盘取代自制简易的扫描式矩阵式键盘成为可能。现在主流的是PS/2接口,键盘和鼠标都可以使用PS/2接口,它内嵌自动去除按键抖动的设计自动地识别键的按下与释放,软硬件可发简便,价格廉价、稳定可靠,将PS2键盘作为嵌入式系统的输入设备已经成为可行的方案。2.1PS2键盘的构造特点现在主流的是PS/2接口,即具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。PS/2最初由IBM开发,它的连接端口只有四个脚有意义。分别是第1脚DATA(数据脚)、第3脚Ground(电源地)、第4脚+5V(电源脚)和第5脚Clock(时钟脚)。PS2引脚构造和外形如图2.1所示:各引脚定义为:1:Data线4:+5V电源线2:未用5:Clock线各引脚定义为:1:Data线4:+5V电源线2:未用5:Clock线3:Ground线6:未用图2.1PS/2硬件接口外形图2.2PS2键盘工作原理PS2键盘靠PC的PS2端口提供+5V电源,由于Clock(时钟脚)和DATA(数据脚)两个脚都是集电极开路的,则必须接大阻值的上拉电阻。一般上拉电阻设置在主设备中,主从设备之间的数据通信采用双向同步方式传输,时钟信号一般由从设备产生。它们平时一般保持高电平,并很容易下拉到地〔逻辑0〕任何连接到PS2键盘上的设备在时钟和数据线上都必须接大阻值的上拉电阻,有输出时才会被拉到低电平,之后会自动上浮到高电平。〔即置“0〞就把线拉低,置“1〞就把线上浮成高电平〕。数据和时钟的一般接口构造如图2.2所示:图2.2集电极开路PS2键盘通信协议履行一种双向同步串行协议。也就是说每次数据线上发送一位数据并且每在时钟线上发生一个脉冲就被读人,PS2键盘可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,因此它只需把时钟拉低就可抑制在任何时候来自于键盘的通讯。从键盘发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取;从主机发送到键盘的数据在上升沿当时钟从低变到高的时候被读取;不管通讯的方向怎样键盘总是产生时钟信号,如果主机要发送数据它必须首先告诉设备开场产生时钟信号,这个过程最大的时钟频率是33kHz而且大多数设备工作在10~20kHz。2.3PS2协议PS/2协议是键盘与其他硬件通信时的一种双向半双工通信协议,键盘通过Data线向外发送数据,数据时钟由键盘产生,在协议中数据的传送格式为短帧格式,一般为11位,各位的含义如以下列图2.3所示:图2.3数据帧的含义Start:起始位,总为‘0’〔低电平〕D0~D7:8位数据位〔低位在前,高位在后〕Parity:奇偶校验位〔为奇校验〕Stop:停顿位,总为‘1’〔高电平〕〔1〕设备到主机的通讯:图2.4键盘发送时序键盘发送时序如图2.4所示。键盘首先会检查Clock线和Data线是否同时为高电平,如果不是,那么是主机抑制了通讯设备必须缓冲任何要发送的数据直到重新获得总线的控制权键盘有16字节的缓冲区。如果是,那么键盘则产生Clock信号,并将待发的数据按照数据帧的格式逐位放在数据线上,数据线在时钟的高电平期间改变状态,时钟的下降沿将数据锁定到数据线上,此时外界就可以到数据线上读取数据。键盘同步时钟的最大频率为33KHZ,一般情况下使用10~20KHZ的频率。推荐值在15kHz左右,也就是说,Clock(时钟脚)高、低电平的持续时间都为40μs。每一数据帧包含11~12个位,具体含义如表2.2所示:表2.2数据帧格式说明1个起始位总是逻辑08个数据位〔LSB〕低位在前1个奇偶校验位奇校验1个停顿位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,如果数据位中1的个数加上校验位中1的个数总为奇数,那么总进展奇校验。〔2〕主机到设备的通讯:图2.5键盘接收时序键盘接收时序如图2.5所示。首先PS/2设备总是产生时钟信号如果主机要发送数据,它必须先下拉时钟线〔至少100us〕抑制通信,表示“请求发送〞,然后释放时钟。在时钟信号的上升沿,数据被锁存读取;在时钟信号的低电平,数据线改变状态。并且设备应该在不超过10ms的间隔内检查这个状态。当设备检测到这个状态它将开场产生时钟信号并且时钟脉冲标记下输入八个数据位和一个停顿位主机仅当时钟线为低的时候,改变数据线而数据在时钟脉冲的上升沿被锁存这在发生在设备到主机通讯的过程中正好相反。在停顿位发送后设备要应答接收到的字节就把数据线拉低并产生最后一个时钟脉冲如果主机在第11个时钟脉冲后不释放数据线设备将继续产生时钟脉冲直到数据线被释放然后设备将产生一个错误。主机可以在第11个时钟脉冲应答位前中止一次传送只要下拉时钟线至少100us即可。其中主机到设备通讯的详细过程图如图2.6所示:图2.6主机到设备的过程图中描述了两个重要的定时条件:〔a〕设备开场产生时钟脉冲的时间必须步大于15ms;〔b〕数据包被发送的时间必须不大于2ms。3ISE工具概述随着计算机软件、硬件和集成电路制造技术的飞速开展,数字电路硬件设计复杂程度的快速增长,以及产生的设计成果可继承性的需要,对数字电子系统的设计方法产生了极大的影响,传统的以中小规模集成电路为根基模块、以电路图为表达方式的数字电子系统的设计方法正逐步被EDA技术的设计方法所取代。3.1硬件描述语言硬件描述语言〔HDL,HardwareDescriptionLanguage〕是EDA技术的重要组成局部,常用的硬件描述语言有VHDL、Verilog、ABEL等,VHDL是EDA技术的主流硬件描述语言之一,也是本文设计所采用的硬件描述语言。3.1.1VHDL的特点VHDL主要用于描述数字系统的构造,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序构造特点是将一项工程设计,或称设计实体〔可以是一个元件,一个电路模块或一个系统〕分成外部〔或称可视局部,及端口)和内部〔或称不可视局部〕,既涉及实体的内部功能和算法完成局部。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内、外两局部的概念是VHDL系统设计的根本点。相对于其他硬件语言的优势如下:〔1〕VHDL语言功能强大,设计灵活VHDL语言具有强大的语言构造,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比较的。VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。〔2〕VHDL语言覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、存放器传输描述或者构造描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建设硬件电路的模型。VHDL语言的强大描述能力还表达在它具有丰富的数据类型。VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。〔3〕VHDL语言具有很强的移植能力VHDL语言很强的移植能力主要表达在:对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。〔4〕VHDL语言具有良好的可读性,且易于修改VHDL语言既可以被计算机承受,也容易被人们所理解;同时在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因VHDL语言易读和构造化的特点,所以易于修改设计。〔5〕VHDL语言的设计描述与器件无关采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进展设计的器件。这样做的好处是可以使设计人员集中精力进展电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件构造来实现。〔6〕VHDL语言程序易于共享和复用VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建设各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开场一步步地进展设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进展复用。3.1.2VHDL的根本程序构造一个相对较完整的VHDL设计由实体〔Entity〕、构造体〔Architecture〕、配置〔Configuration〕、程序包和程序包体〔Package〕以及库〔Library〕5个局部组成。其各自作用分别为下表3.1所示:表3.1各局部作用实体〔Entity〕描述所设计的系统的外部接口信号,定义电路设计中所有的输入和输出端口构造体(Architecture)描述系统内部的构造和行为包集合(Package)存放各设计模块能共享的数据类型、常数和子程序等配置(Configuration)指定实体所对应的构造体库(Library)存放已经编译的实体、构造体、包集合和配置每一个VHDL程序并不是都具备以上四个局部的,只有一个实体和一个与之对应的构造体是必须具备的。VHDL的根本设计单元构造:程序包说明、实体说明和构造体说明三局部.3.1.3VHDL语言的使用〔1〕实体实体描述了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。它也是设计的根本模块和设计的初级单元,在分层次设计中,顶层有顶级实体,含在顶级实体中的较低层次的描述为低级实体,通过配置可把顶层实体和底层实体连接起来。实体语句用关键词ENTITY开头,实体名rsff是描述的符号名,在完毕实体语句的ENDrsff之间,实体语句可以用关键词BEGIN把实体语句分成两局部:即BEGIN之前是实体说明,BEGIN之后是实体语句。在ENTITY语句的实体说明局部,常用PORT付语描述实体对外界连接的端口〔数目、方向和数据类型〕。实体rsff有4个端口,Set/Reset是输入IN模式,Q/QB是输出BUFFER〔缓冲〕模式,都为BIT类型。实体的语法格式如下:ENTITY实体名IS[GENERIC〔常数名:数据类型[:设定值];{常数名:数据类型[:设定值]}〕;][PORT〔端口名:端口模式数据类型;{端口名:端口模式数据类型}〕;]ENDENTITY实体名;实体名由设计者自由命名,用来表示被设计电路芯片的名称,但是必须与VHDL程序的文件名称一样。要与文件名一致;其中,GENERIC是用于说明设计实体和其外部环境通信的对象,规定端口的大小、实体中子元件的数目、实体的延时特性等。只能用整数类型表示,如整型、时间型等,其他类型的数据不能逻辑综合。格式如下:GENERIC([CONSTANT]属性名称:[IN]子类型标识[:=静态表达式],……);PORT关键字用于定义模块的端口,它的格式如下:PORT([SIGNAL]端口名称:[方向]类型标识[BUS][:=静态表达式],[SIGNAL]端口名称:[方向]类型标识[BUS][:=静态表达式],…[SIGNAL]端口名称:[方向]类型标识[BUS][:=静态表达式]);①SIGNAL:SIGNAL是关键字,但是由于PORT之后必须是信号类,所以一般可以将SIGNAL关键字省略。②端口方向:IN,OUT,INOUT,BUFFER说明端口方向的关键字如表3.2所示:表3.2关键字的含义说明符含义IN〔输入〕信号进入实体内部,内部的信号不能从该端口输出。OUT〔输出〕信号从实体内部输出,不能通过该端口在实体内部反响使用INOUT〔双向〕信号不但可以输入到实体内部,还可以从实体内部输出,也允许用于内部反响。BUFFER〔缓冲〕信号输出到实体外部,同时也可以通过该端口在实体内部反响使用。“OUT〞和“BUFFER〞都可定义输出端口如图3.1所示;图3.1输出端口引脚图假设实体内部需要反响输出信号,则输出端口必须被设置为“BUFFER〞,而不能为“OUT〞。〔2〕构造体构造体描述实体的行为功能,一个实体可以有多个构造体。构造体是一个根本设计单元,它具体地指明了所设计模块的行为、元件及内部的连接关系,也就是定义了设计单元具体的功能。构造体对其根本设计单元的输入/输出关系可以用3种方式进展描述,即行为描述〔根本设计单元的数学模型描述〕、存放器传输描述〔数据流描述〕和构造描述〔逻辑元件连接描述〕。不同的描述方式只表达在描述语句上,而构造体的构造是完全一样的。由于构造体是对实体功能的具体描述,因此它一定要跟在实体的后面。构造体的语法格式如下:ARCHITECTURE构造名OF实体名IS{说明语句}BEGIN功能描述语句;END构造体名;其中说明语句用于声明该构造体将用到的信号、数据类型、常数、子程序和元件等。声明的内容是局部的。而功能描述语句则是具体描述构造体的功能和行为。VHDL构造体描述常常用到3种语句构造:①PROCESS语句构造进程语句是一种并发处理语句,在一个构造体中多个PROCESS语句可以同时并行运行〔相当于多个CPU同时运作〕。PROCESS语句是VHDL语言中描述硬件系统并发行为的最根本语句。PROCESS语句的格式如下:[进程名]:PROCESS(信号1,信号2,…)BEGIN…ENDPROCESS;②BLOCK语句构造BLOCK语句的格式如下:块名:BLOCK(条件)[参数GENERIC说明;[参数映射;]][端口说明;[端口映射;]][块说明语句]BEGIN并发语句组;ENDBLOCK块名;BLOCK放在构造体的并行语句组中。和PROCESS语句不同,BLOCK内的语句是并发执行的。只要BLOCK右边的条件满足,BLOCK内的语句就被执行。如果省略条件,表示本BLOCK被无条件执行。③子程序构造所谓子程序构造就是将一局部实现代码放到公用的程序〔即程序包Package〕文件中实现。子程序在调用时首先要进展初始化,执行完毕后子程序就终止,再调用时要再进展初始化。因此子程序内部的值不能保持,子程序返回以后才能被再调用,它是一个非重入的程序。VHDL中有两种类型的子程序—过程〔Procedure〕和函数〔Function〕。(a)过程过程的格式如下:PROCEDURE过程名(参数1;参数2;……)IS定义语句;BEGIN顺序语句组;END过程名;每个参数的说明格式如下:参数名:方向类型方向一般为3种:IN、OUT、INOUT。如果方向为IN则可省略方向说明。(b)函数函数的格式如下:FUNCTION函数名(参数1;参数2;……)RETURN数据类型IS定义语句;BEGIN顺序语句组;RETURN[返回变量名];END函数名;3.2ISE使用方法3.2.1ISE的主要功能ISE的主要功能包括设计输入、仿真、综合、下载和实现,涵盖了可编程逻辑器件开发的整个过程,从功能上讲,完成CPLD/FPGA的设计流程且无需借助任何第三方EDA软件。下面简要说明各功能的作用:〔1〕设计输入:ISE提供的设计输入工具包括用于HDL代码输入和查看报告的ISE文本编辑器〔TheISETextEditor〕,用于原理图编辑的工具,用于生成IPCore的CoreGenerator,用于状态机设计的StateCAD以及用于约束文件编辑的ConstraintEditor等。〔2〕综合:ISE的综合工具不但包含了Xilinx自身提供的综合工具XST,同时还可以内嵌MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify,实现无缝链接。〔3〕仿真:ISE本身自带了一个具有图形化波形编辑功能的仿真工具HDLBencher,同时又提供了使用ModelTech公司的Modelsim进展仿真的接口。〔4〕实现:此功能包括了翻译、映射、布局布线等,还具备时序分析、管脚指定以及增量设计等高级功能。〔5〕下载:下载功能包括了BitGen,用于将布局布线后的设计文件转换为位流文件,还包括了IMPACT,功能是进展芯片配置和通信,控制将程序烧写到FPGA芯片中去。3.2.2ISE的使用方法〔1〕创立工程用ISE完成一个HDL设计的仿真,必须建设一个ISE工程。ISE的向导功能,能帮助开发者迅速创立仿真工程。①启动ISE,单击菜单【File】/【NewProject】,就会出现对应的“CreateNewProject〞窗口。窗口中包含工程名、工程路径、“Top-levelsourcetype〞等。②单击“CreateNewProject〞窗口上的【Next】按钮,弹出“DeviceProperties〞的窗口。直接单击【Next】进入下一步,一直点击【Next】直到【Finish】完成。③完成后在Sources窗口中显示工程文件夹以及工程所用芯片。右击可以新建文件,添加已经写好的文件,添加文件并复制该文件到工程文件夹中。新建文件的类型,不同的类型有着不同的功能和意义。我们选择“VHDLModule〞类型,输入一个名字点击【Next】,进入下一级的添加实体端口,输入端口名和端口的类型及位数点击【Next】,就进入了最后的Summary窗口,上面给出了该文件的概要。④输入要运行的程序,这样一个工程就建设完成了。〔2〕编译代码编写好后,点击保存,然后检查看编写代码是否有错误,如图3.2所示,CheckSyntax点击检查后是绿色的勾,则代码没有语法错误,可以进展下一步功能仿真。图3.2代码的编译〔3〕行为(功能)仿真①同样在Sources区域右键添加NewSource如图3.3所示,添加图形仿真文件:图3.3添加图形仿真文件②选择测试程序,点【Next】,【Finish】,双击测试文件,到如图3.4所示界面:图3.4测试程序界面删除此段程序,添加如图3.5所示程序:图3.5修改程序界面③点Finish进入波形编辑界面,如图3.6所示〔rst是要编辑的波形〕:图3.6波形编辑界面4PS2接口的设计4.1模块构造设计本设计则采用自顶向下的方法。考虑需要设计以下几局部模块:串并转换模块,分拣接收模块,控制模块,封装发送模块等。这几局部的逻辑关系如图4.1所示:图4.1模块逻辑间关系其中串并转换模块的主要作用是接收和发送传输数据,并能够将串行数据转变成所需要的并行数据。而分拣接收模块的功能则是把串并转换模块传过来的数据包按照一定的要求进展分拣提取,从而获得有用的信息。控制模块是整个设计模块中的核心,由于PS/2接口是半双工串行总线,因此其发送和接收是不能够同时进展的,整个设计中控制模块不仅要对其时序进展严格的控制而且负责协调整其全过程。同时在本设计中也采用了状态机的设计思路。封装发送模块和分拣接收模块相似,只是要把要传送的命令数据转变成PS/2协议要求的发送数据包的格式。4.2VHDL代码设计整个设计的流程图如图4.2所示:图4.2设计流程图当系统上电或复位的时候,主设备会首先向键盘发送初始化信号,在得到键盘的应答信号后,系统则进入到了总线空闲状态,此时可以进展数据的发送和接收,但由于主设备拥有更高的优先级,因此正处在接收状态时如果得到发送请求,会中断数据接收,直接进入数据发送状态。使用ISE14.4对设计进展了软件仿真,按照模块化的设计思路分别对每个模块独立进展了仿真。图4.3是接收数据模块的仿真时序图。4.3仿真验证本文在ISE14.4环境下对PS2键盘接口时序进展仿真。仿真图如图4.3所示:图4.3仿真图结语近年来,随着社会的开展,电子产品越来越多的走上了“智能〞的道路,成为了我们生活中必不可少的一局部。随着计算机的普及,以及电子设备之间相互沟通的更加频繁,如今键盘是嵌入式系统的重要输入工具,是实现人机交互的重要手段之一。本论文为实现PS2键盘接口完成了以下研究:首先,以PS2协议接口的根本理论为依据,论述了PS2键盘接口的构造及设计,先介绍VHDL和FPGA的相关知识,PS2键盘的根本原理及其电路模块的划分,并详细表达了键盘扫描电路、键盘译码电路、按键标志产生电路、时钟模块以及键盘顶层电路等四个模块的原理及实现过程。在设计中,利用VHDL硬件描述语言在FPGA芯片上实现键盘接口设计并利用仿真FPGA软件进展仿真。为了更好的验证仿真结果的正确性,文中应用了ISE软件对设计的电路进展仿真测试,由于某些参数的设置不成功,没有能正确仿真出预先设计的波形指标。从以上对PS2键盘接口模拟仿真结果可以看出,整个时序不完全满足PS2键盘的时序要求,但是由于个人水平有限,在短时间内没有设置成功。导致在设计中有很多缺乏之处没有解决,同时在实际中运用,一些理论完美化的设计需通过实际验证来判断接口的顺利传输。本人认真进展了课题的研究并完成了本论文,由于作者水平有限,论文中可能仍有错误和缺乏之处,敬请大家批评指正。最后,感谢指导教师的关心和细心的指导,感谢同学们的帮助。谢谢!主要参考文献[1]夏宇闻主编.Verilog数字系统设计教程.北京:北京航空航天大学出版社,2003.[2]田耕,徐文波编著.FPGA数字电子系统设计与开发实例导航.北京:电子工业出版社,2005.[3]刘韬,楼兴华主编.FPGA数字电子系统设计与开发实例导航.北京:人民邮电出版社,2005.[4]刘福奇主编.FPGA嵌入式工程开发实战.北京:电子工业出版社,2009.[5]潘松,黄继业,潘明主编.EDA技术实用教程—VerilogHDL版.北京:科学出版社,2010.[6]王开军,姜宇柏主编.面向CPLD/FPGA的VHDL设计机械工业出版社,2007.[7]孙航.Xilinx可编程逻辑器件的高级应用与设计技巧.北京:电子工业出版社,2004.[8]徐欣,于红旗,易凡,等.基于FPGA的嵌入式系统设计.北京:机械工业出版社,2005.[9]纪志成,高春能主编.FPGA数字信号处理设计教程—SystemGenerater入门与提高.西安:西安电子科技大学出版,2008.[10]刘勇,王玉晶,曲斌,于洋.一种嵌入式PC非标准键盘的设.微计算机信息,2007.[11]AdamChapweske.PS2技术参考.2002.[12]张海劲刘强蔡桂玲.用VHDL语言开发可编程逻辑器件.光电技术应用,2003.[13]田源.基于VHDL语言实现FPGA设计.火控雷达技术2004.[14]://61eda[15]://21ic[16]Xilinx公司主页.Spartan-3EFPGAFamily:CompleteDataSheet[EB/OL].(2007-5-29).附录附录1PS2键盘接口程序设计(1)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisport(clr:instd_logic;clk:instd_logic;ps2clk:instd_logic;ps2data:instd_logic;a_to_g:outSTD_LOGIC_VECTOR(6downto0);sel:outSTD_LOGIC_VECTOR(3downto0);dp:outSTD_LOGIC);endtop;architectureBehavioraloftopissignalclk4,sclk:std_logic;signaldat:std_logic_vector(15downto0);componentdivclkisport(clk:instd_logic;------50MHZclk400:outstd_logic;-------400KHZscanclk:outstd_Logic);endcomponent;componentkey_boardisport(clr:instd_logic;clk400:instd_logic;--400KHZps2clk:instd_logic;ps2data:instd_logic;dataout:outstd_logic_vector(15downto0));endcomponent;componentdispisport(clr:instd_logic;scanclk:instd_logic;datain:instd_logic_vector(15downto0);a_to_g:outSTD_LOGIC_VECTOR(6downto0);sel:outSTD_LOGIC_VECTOR(3downto0);dp:outSTD_LOGIC );endcomponent;begininst1:divclkportmap(clk,clk4,sclk);inst2:key_boardportmap(clr,clk4,ps2clk,ps2data,dat);inst3:dispportmap(clr,sclk,dat,a_to_g,sel,dp);endBehavioral;(2)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydivclkisport(clk:instd_logic;------50MHZclk400:outstd_logic;-------400KHZscanclk:outstd_Logic);enddivclk;architectureBehavioralofdivclkisbeginprocess(clk)variablecount:std_logic_vector(19downto0):=X"00000";beginif(rising_edge(clk))thencount:=count+1;endif;clk400<=count(2);scanclk<=count(12);endprocess;endBehavioral;(3)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitykey_boardisport(clr:instd_logic;clk400:instd_logic;--400KHZps2clk:instd_logic;ps2data:instd_logic;dataout:outstd_logic_vector(15downto0));endkey_board;architectureBehavioralofkey_boardissignalclk:std_logic:='0';signaldata:std_logic:='0';signalshift1,shift2:std_logic_vector(10downto0);signalps2c,ps2d:std_logic;beginps2c<=ps2clk;ps2d<=ps2data;dataout<=shift1(8downto1)&shift2(8downto1);process(clk400,clr)variabletempclk:std_logic_vector(7downto0):=X"00";variabletempdata:std_logic_vector(7downto0):=X"00";beginif(clr='0')thentempclk:=X"00";tempdata:=X"00";clk<='0';data<='0';elseif(clk400'eventandclk400='1')thentempclk(0):=ps2c;tempclk(7downto1):=tempclk(6downto0);tempdata(0):=ps2d;tempdata(7downto1):=tempdata(6downto0);endif;endif;if(tempclk="11111111")thenclk<='1';elseif(tempclk="00000000")thenclk<='0';endif;endif;if(tempdata="11111111")thendata<='1';elseif(tempdata="00000000")thendata<='0';endif;endif;endprocess;process(clk,clr)beginif(clr='0')thenshift1<=(others=>'0');shift2<=(others=>'0');elseif(clk'eventandclk='0')thenshift1(10)<=data;shift1(9downto0)<=shift1(10downto1);shift2(10)<=shift1(0);shift2(9downto0)<=shift2(10downto1);shift1(0)<=data;shift1(10downto1)<=shift1(9downto0);shift2(0)<=shift1(10);shift2(10downto1)<=shift2(9downto0);endif;endif;endprocess;endBehavioral;(4)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGN

温馨提示

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

评论

0/150

提交评论