基于nios-ii的游戏平台开发设计-毕业设计(论文)第三版_第1页
基于nios-ii的游戏平台开发设计-毕业设计(论文)第三版_第2页
基于nios-ii的游戏平台开发设计-毕业设计(论文)第三版_第3页
基于nios-ii的游戏平台开发设计-毕业设计(论文)第三版_第4页
基于nios-ii的游戏平台开发设计-毕业设计(论文)第三版_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

基于NIOSII的游戏平台开发设计摘要NIOSII作为软核处理器,固化在FPGA内部,NIOSII占用一定得片内资源实现强大的处理器功能。相对于常见的硬核处理器,NIOSII软核处理器的成本更低,灵活性更高,实现更简易,而且开发速度更快速。基于NIOSII嵌入式系统可应用领域很广,包括无线通讯、医疗器械、交通、消费电子、工业控制、军事和航空航天等。本设计为一个基于NIOSII的游戏平台,主要设计内容包含VGA控制模块、PS/2键盘控制模块及驱动程序的编写。所有模块都是以IP核形式开发、然后挂在AVALON总线上同其他设备通讯。VGAIP核包含了时序发生器模块、DMA模块、FIFO模块、AVALON接口模块;PS/2键盘控制器IP核包含时序状态机、ASCII译码模块。最后使用SOPCBUILDER将NIOSII、VGAIP、PS/2键盘控制器等集成起来,使用QUARTUSII编译工程,下载到实验板验证,本设计使用了俄罗斯方块游戏作为验证,游戏可流畅稳定运行,达到设计目的。关键词NIOSII,VGAIP,PS/2,软核,游戏,SOPCABSTRACTNIOSIIASSOFTCOREPROCESSORSINFPGATAKESMUSTPIECEINSIDERESOURCESTOACHIEVETHEPOWERFULPROCESSORFUNCTIONCOMPAREDWITHCOMMONHARDWARECOREPROCESSORS,NIOSIISOFTCOREPROCESSORSOFCHEAPER,SIMPLER,MOREFLEXIBLE,ANDMORERAPIDDEVELOPMENTSPEEDBASEDONNIOSIIEMBEDDEDSYSTEMCANBEUSEDWIDEAREAS,INCLUDINGWIRELESSCOMMUNICATION,MEDICALEQUIPMENT,TRANSPORTATION,CONSUMERELECTRONICS,INDUSTRIALCONTROL,MILITARYANDAEROSPACE,ETCTHISDESIGNISBASEDONANIOSIIGAMEPLATFORM,THEMAINDESIGNCONTENTINCLUDESVGACONTROLLORMODULE,PS/2KEYBOARDCONTROLLORMODULEANDDRIVERSALLMODULESAREDEVELOPEDWITHFORMSOFIPCOREAVALON,HANGINGONTHEBUSWITHOTHERDEVICECOMMUNICATIONSTHEVGAIPCORESCONTAININGVGATIMINGGENERATORMODULE,THEDMAMODULE,FIFOMODULE,AVALONINTERFACEMODULEPS/2KEYBOARDCONTROLLORIPCORECONTAINTIMINGSTATEMACHINE,ASCIIDECODINGMODULEFINALLYUSINGTHESOPCBUILDERWILLNIOSII,VGAIP,PS/2KEYBOARDCONTROLLORETC,USEQUARTUSIIINTEGRATE,DOWNLOADTOCOMPILEENGINEERINGDESIGN,THEEXPERIMENTALBOARDGAMETETRISUSEDASTEST,STABLEOPERATION,SMOOTHGAMECANREACHTHEDESIGNPURPOSEKEYWORDSNIOSII,VGAIP,PS/2,SOFTCORE,GAME,SOPC目录前言1第1章绪论211选题背景及研究意义2111基于FPGA嵌入IP硬核的SOPC系统2112基于FPGA嵌入IP软核的SOPC系统3113NIOSII处理器的的特点及优势412主要研究内容513论文结构6第2章VGA控制器IP核设计721VGA时序及显示原理722VGA控制器的模块划分8221系统工作原理8222VGACONTROLLER工作原理923时序发生器模块设计1024DMA控制器模块1225FIFO模块1326AVALON总线接口模块14261基本从端口读模式15262基本从端口写模式16263AVALON总线上的主端口读传输16264VGA控制器AVALON接口的设计17第3章PS/2键盘控制器IP核设计2031PS/2通讯协议简介20311PS/2设备到主机的通信20312主机到PS/2设备的通讯21313PS/2键盘简介2132PS/2键盘控制器设计22321设计思想22322模块的接口与控制23323AVALON接口设计24第4章游戏平台硬件设计2541SOPCBUILDER设计流程2542游戏平台SOPC的构建25421SOPCBUILDER中模块集成26422QUARTUSII中顶层原理图的绘制28第5章游戏平台软件设计3051驱动程序的编写30511VGA控制器驱动30512PS/2键盘控制器驱动3052俄罗斯方块游戏设计31521汉字和英文字符点阵库31522俄罗斯方块游戏功能设计32523俄罗斯方块游戏软件设计33结论35参考文献36致谢38附录39前言SOPC即可编程片上系统,是基于大规模FPGA的单片系统。SOPC技术的目标就是试图将尽可能大而完整的电子系统包括嵌入式处理器系统、接口系统、硬件协处理器或者加速系统、DSP系统、数字通信系统,存储电路以及普通数字系统等在单一FPGA中实现,使得所设计的电子系统在其规模、可靠性、体积、功耗、性能、上市周期,开发成本、硬件升级等多方面实现最优化。本设计用主要使用一下几个技术(1)NIOSII软核技术。NIOSII处理器系列由三个不同的内核组成,可以灵活地控制成本和性能,从而拥有广泛的应用空间。随着应用的ASIC开发日益受到成本的困扰,OEM日渐转向FPGA来构建自己的系统。这些系统中绝大多数需要一个处理器,而ALTERA正是为设计者提供了为FPGA优化的灵活的嵌入式处理器方案。(2)VGA显示技术。VGA是IBM于1987年提出的一个使用模拟信号的电脑显示标准,是最多PC制造商所共同支援的一个低标准。由于嵌入式处理器速度问题,所以一直在嵌入式领域大多采用LCD或LED显示屏,VGA标准显示要求带宽大约为25M/S,直接使用CPU处理较为吃力,若结合FPGA的使用可使分辨率达到1078768,这种高分辨率显示在嵌入式游戏机和工业控制领域有极大优势。(3)AVALON总线技术。AVALON总线是ALTERA公司SOPC技术的核心之一,所有设备都要连接到总线系统中,一般会包括一个或多个处理器。即使没有处理器也可以使用AVALON总线,这就是它灵活性的体现。所有外设只要遵照AVALON总线规范就可以很方便集成起来。有了AVALON总线规范就可以很方便地使用IP复用技术,这也是SOPC技术灵活快速开发的体现。SOPC技术的使用可大大提高嵌入式游戏机开发的灵活性,对加快产品的快发上市有很大意义。与现有的诸多电子系统设计理念和解决方案相比,SOPC技术更具代表性、主流性、规范性与普遍性,从未来的电子系统设计技术走势上看,SOPC技术更具发展性和前瞻性。第1章绪论11选题背景及研究意义微电子技术的近期发展成果,为SOC的实现提供了多重途径。对于经过验证而又具有批量的系统芯片,可以做成专用集成电路ASIC而大量生产。而对于一些仅为小批量而又具有应用或出于开发阶段的SOC,若马上投入流片,需要投入较多资金,承担较大的试制风险。再加上现代电子产品更新换代的速率很快、做专用集成芯片的SOC大大增加了成本,延长了开发周期。最近发展起来的SOPC技术提供了一种有效的解决方案,即用大规模的FPGA来实现SOC的功能。111基于FPGA嵌入IP硬核的SOPC系统目前最为常用的嵌入式系统处理器大多采用了含有ARM的32位知识产权处理器核的器件。尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系统更为灵活完备,功能更为强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置许多接口器件才能构成一个完整的应用系统。如除配置常规的SRAM、SDRAM、FLASH外,还必须配置网络通讯接口、USB接口、VGA接口、PS/2接口或其他专用接口。这样会增加整个系统的体积、功耗、而降低系统的可靠性。但是如果将ARM或其他知识产权核,以硬核方式植入FPGA中,利用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元来构成该嵌入式系统处理器的接口功能模块,就能很好的解决问题。ALTERA和XILINX公司相继推出了这方面的的FPGA,例如,ALERA的EXCALIBUR系列FPGA中就植入了ARM922T嵌入式处理器;XILINX的VIRTEXIIPRO系列中则植入了IBMPOWERPC405处理器。这样就能使得FPGA灵活的硬件设计和硬件实现与处理器的强大软件功能有机地相结合,更高效地实现SOPC系统。将IP硬核直接植入FPGA的解决方案存在如下几种不够完美之处(1)由于此类硬核多来自第三方公司,FPGA厂商通常无法直接控制其知识产权费用,从而导致FPGA器件价格相对偏高。(2)由于硬核是预先植入的,设计者无法根据实际需要改变处理器结构,如总线规模、接口方式、乃至指令形式,更不能将FPGA逻辑资源构成的硬件模块以指令形式形成内置嵌入式系统硬件加速模块(如DSP模块),以适应更多的电路功能要求。(3)无法根据实际需求在同一FPGA内使用多个处理器核。(4)无法裁剪处理器硬件资源以降低FPGA成本。(5)只能在特定的FPGA中使用硬核嵌入式系统。112基于FPGA嵌入IP软核的SOPC系统目前最具代表性的软核嵌入式系统处理器分别是ALTERA的NIOS和NIOSII核,及XILINX的MICROBLAZE核。ALTERA的NIOS核是用户可随意配置和构建的32位/16位总线(用户可选的)指令集和数据通道的嵌入式系统微处理器IP核,采用AVALON总线结构通信接口,带有增强的内存、调试和软件功能(C或汇编程序优化开发功能);含由FIRSTSILICONSOLUTIONS(FS2)开发的基于JTAG的片内设备(OCI)内核。此外,基于QUARTUSII平台的用户可编程的NIOS核含有许多可配置的接口模块核,包括可配置高速缓存模块、可配置RS232通信口、SDRAM控制器、标准以太接口协议接口、DMA、定时器、协处理器等。在植入FPGA前,用户可根据设计要求,利用QUASTUSII和SOPCBUILDER,对NIOS及其外围系统进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计要求。NIOS核在同一FPGA中被植入的数量几乎没有限制,只要FPGA的资源允许。2种SOC方案比较如表11所示。表112种SOC方案的比较项目基于ASIC的SOC基于FPGA的SOPC单片成本低较高开发周期长(超过50周)短(少于10周)开发成本设计工程成本高掩膜成本高软件工具成本高(超过30万美元)设计工程成本低无掩膜成本软件工具成本低(少于2000美元)一次投片情况一次投片成功率低、成本高、耗时长可现场配置集成技术025US32NM025US40NM可重构新不可重构可重构113NIOSII处理器的的特点及优势ALTERA公司开发的NIOSII处理器是基于SOPC技术的32位嵌入式处理器软核。32位NIOSII结合外部闪存以及大容量存储器,可构成一个功能强大的32位嵌入式处理器系统。NIOSII处理器是单指令流的RISC处理器,其大部分指令可以在一个时钟周期内完成。NIOSII具有5级流水线,以及分离的指令与数据控制器。NIOSII处理器具有16位指令系统,用户可选择1632位数据宽度。用户可以在NIOSII指令系统中增加用户自定义指令,通过单周期或多周期操作完成复杂的处理任务。NIOSII嵌入式处理器是可配置的,它含有很多可配置的接口模块核,在植入FPGA前,嵌入式设计者能根据实际需要,非常容易地使用QUARTUSII,SOPCBUILDER设计平台对NIOSII及其外围系统进行构建,并自动地产生AVALON总线结构。NIOSII处理器还可以很方便的与用户自定义的逻辑相结合并使用SOPCBUILDER编程到FPGA之内。NIOSII处理器含有基于JTAG的片内设备OCI内核,这为开发者提供了强大的软硬件调试实时代码,OCI调试功能可根据FPGA的JTAG端口接受的指令,直接监视和控制片内处理器的工作情况。NIOSII开发环境包含GNUPRO编译器和CYGNUS的调试器,这些都是开放的符合工业标准的C/C开发工具包。其中GNUPRO工具还包括了C/C编译器、宏汇编器、连接器、调试器、二进制工具及库等。使用NIOSII处理器的优势是明显的,只要FPGA的资源允许,NIOS1I在同一FPGA中被植入的数量没有限制,此外NIOSII可植入的ALTERAFPGA的系列几乎没有限制,在这方面,NIOSII显然优于同类产品,如XILINX的MIEROBLAZE。另外,在开发工具的完备性方面和常用的嵌入式操作系统支持方面,NIOSII都优于MICROBLAZE。就成本而言,NIOSII的使用费用仅仅是其占用的FPGA的逻辑资源费用。因此,选用的FPGA越便宜,则NIOSII的使用费用就越便宜。但是并不是所有AITERA公司的FPGA都支持NIOSII软核处理器,SOPC软件会针对相应的器件进行优化。另外,通过采用可编程芯片取代微处理器实现片上系统,可并行处理多项任务,改变了传统微处理器的基本工作方式,从而也为片上系统的设计领域开辟了全新的道路。尤其是NIOSII系统可重配置的特性,是这一领域的一个新的突破,使设计开发更具有灵活性。NIOSII作为一种新产品,在国外已经有了广泛的应用,在国内现实产品的生产与开发中也必将具有很好的发展前景。NIOSII处理器具有以下几点明显的优势(1)灵活性优势(2)高性能优势(3)NIOSII低成本优势(4)长生命周期优势12主要研究内容本设计主要工作是设计并实现基于NIOSII的游戏平台,主要研究内容和解决问题如下(1)研究基于口核技术的SOC的设计方法、流程和环境。着重介绍了口核的形式和特点、设计流程和所设计的设计方法,分析了IP模块在SOC设计中的重要性。(2)以VGA控制器IP核和PS/2键盘控制器IP核为实例,在嵌入式系统中进行了基于AVALON总线的VGA控制器IP核的设计与实现。设计完成了RTL代码的编写、设计综合、功能验证、波形仿真,以及最终在实验开发平台上的结果调试。(3)研究NIOSII软核处理器程序的编写,调试。13论文结构本论文首先从整体上叙述了相关部分工作的要点,然后对SOC技术中的IP复用技术进行了系统研究,并以VGA控制器IP核和PS/2键盘控制器IP核设计为实例详细介绍了设计方法以及实现方案,最后进行系统的集成,并编写了俄罗斯方块作为测试程序。论文具体安排如下第一章,阐述了设计的背景及意义,提出基于NIOSII设计的优势。第二章,详细介绍了VGA控制器IP核的设计方法。第三章,介绍了PS/2键盘控制器的设计方法。第四章,SOPC技术简介及游戏平台SOPC的构建。第五章,介绍各个模块的驱动编写及游戏平台中游戏软件的编写。最后总结在设计过程中所遇到的问题,以及和最初想象的是否有不同之处,走了哪些弯路,还需要有哪些不足和改进。第2章VGA控制器IP核设计21VGA时序及显示原理常见的彩色显示器,一般有CRT(阴极射线管)构成,彩色是由R、G、B三基色组成。显示是用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生RGB三基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行扫描结束时,用行同步信号进行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。对于普通的VGA显示器,其引出线共含5个信号R、G、B、HS、VS,HS为行同步信号,VS为场同步信号。5个信号的时钟驱动,对于VGA显示器要严格遵循“VGA工业标准”,即64048060HZ模式。通常我们用的显示器都满足工业标准,因此我们设计VGA控制器时要参考显示器的技术规格。图21是VGA行扫描、场扫描时序图。图21VGA行扫描、场扫描时序图VGA工业标准所要求的频率(1)时钟频率(CLOCKFREQUENCY)25175MHZ(2)行频(LINEFREQUENCY)31469HZ(3)场频(FIELDFREQUENCY)5994HZ表21行扫描时序要求(单位像素)行同步头行图像行周期对应位置TFTATBTCTDTETG时间(PIXELS)8964086408800表22场扫描时序要求场同步头场图像场周期对应位置TFTATBTCTDTETG时间(LINES)22258480852522VGA控制器的模块划分221系统工作原理图22VGA系统工作原理如图22所示,NIOSII处理器在SDRAM中开辟FRAMEBUFFER,可以是单缓冲也可以是双缓冲,以单缓冲为例。NIOSII处理器将一帧图象数据(6404802BYTES,RGB565,16BIT)存入FRAMEBUFFER,然后将FRAMEBUFFER的首地址写入到VGA控制器,并启动VGA控制器,该控制器自动从传来的首地址处开始读取图象数据,并按照VGA的格式输出。图22中各模块由AVALONBUS连接在一起。AVALONBUS是一种简单的总线结构,在SOPC中,NIOSII软核处理器和各种外设都通过AVALONBUS连接在一起。由图2可以看出,作为SLAVER的SDRAMCONTROLLER分别要受到PROCESSOR和VGACONTROLLER的控制,为了解决总线冲突,AVALONBUS自动在有冲突的接口上加入了ARBITRATOR这样一个仲裁模块,用于合理分配总线时间,用户通过改变每个模块的权值来改变对其分配总线时间的多少。在这个系统中,SDRAMCONTROLLER处的冲突是影响整个系统性能的关键。以SDRAM时钟频率为100MHZ计算,16BIT位宽的SDRAM其数据总带宽为200MBYTE/S,6404802BYTES60HZ的VGA要占用36MBYTE/S左右的带宽,这对于还要处理其他任务的处理器来说是很大的影响。解决的办法是另外增加一块SDRAM,专门用作FRAMEBUFFER,这样就可以有效减少对系统总线带宽的占用。222VGACONTROLLER工作原理图23VGA控制器工作原理如图23所示,VGACONTROLLER主要由AVALON总线接口、寄存器组、控制模块、DMA、FIFO以及时序生成模块组成。每个寄存器独立编址,处理器可以通过总线读写存储器的方式来访问。处理器通过AVALON总线接读写寄存器,从而完成对VGA控制器工作状态的设定与控制。控制器启动后,DMAMASTER通过AVALON总线读取SDRAM中的数据,然后存入FIFO中,时序生成模块按照VGA时序要求从FIFO中读取数据,然后送出去显示。整个数据读取过程不需要处理器干涉,实际上是一个DMA过程。考虑到DMA读取的速度与VGA时序发生器输出的速度不一致(前者大于后者),所以在DMA与TFT时序发生器之间加入了FIFO用来缓冲数据。DMA有控制模块控制其工作。控制模块不断检测FIFO状态,当FIFO快满时,暂停DMA,当FIFO快空时,重新启动DMA,如此循环,可保证FIFO不溢出,保证显示画面连续稳定。23时序发生器模块设计时序发生器用于产生VGA所需的时序,将图象数据按特定的时序输出。VGA时序发生器以DCLK为时钟基准,也就是像点时钟,每个象素点的数据以该时钟驱动进入显示器。本设计中,DATA为16位数据信号,最大可显示65536种色彩,达到了真色彩显示要求,DENA为数据有效信号,高电平使能,其有效宽度THA为640个DCLK;HD为水平同步信号,低电平有效,其有效宽度TWHL为96个DCLK。一行640个象素扫描完毕之后,控制器将驱动HD有效,在HD有效之前插入THFP(HORIZONTALFRONTPORCH)为16个DCLK,有效之后插入THBP(HORIZONTALBACKPORCH)为144个DCLK,然后再开始下一行的扫描。如此一来,行扫描信号的频率FH典型值为315KHZ。而读FIFO信号要提前DENA信号一个时钟节拍到来,提前一个时钟节拍结束,因为该FIFO有一个时钟节拍的延迟。VGA的垂直扫描时序与水平扫描时序类似,该时序以HD为时钟基准,其中,VD为垂直同步信号(帧同步)。每扫描完一帧(480行),控制器将驱动VD有效(低电平),有效宽度TWVL为2个HD。同样,在VD有效之前插入TVFP(VERTICALFRONTPORCH)为10个HD,有效之后插入TVBP(VERTICALBACKPORCH)为35个HD,如此一来,垂直扫描信号频率FV的典型值为60HZ。在本设计中,所有这些时序参数都用PARAMETER来表示,在以后更一般化的设计中,这些参数将由寄存器组来设置。PARAMETERLINES480/NUMBEROFLINESPARAMETERCOLUMNS640/PIXELNUMBERPERLINEPARAMETERTHFP16/HORIZONTALFRONTPORCHDCLKPARAMETERTHBP144/HORIZONTALBACKPORCHDCLKPARAMETERTWHL96/HORIZONTALLOWWIDTHDCLKPARAMETERTVFP10/VERTICALFRONTPORCHHDPARAMETERTVBP35/VERTICALBACKPORCHHDPARAMETERTWVL2/VERTICALLOWWIDTHHDCLK_25MRESET_NVGA_GOBITVGA_DATA150OHSYNCOVSYNCOPDATA150FIFO_RDREQVGA_TIMINGINSTLINES480COLUMNS640THFP16THBP144TWHL96TVFP10TVBP35TWVL2PARAMETERVALUE图24VGA时序发生器代码模块时序发生器用状态机实现,源码见附录。由于该控制器的参数比较大,为了便于观察仿真结果,本文对这些参数做了一些处理成倍减少。下图是仿真结果。图25VGA时序发生器模块功能仿真24DMA控制器模块DMA控制器是一个地址发生器,当启动DMA控制器时,地址会自增或自减。在本设计中,AVALON总线为32位读写的总线,一次读写4个BYTE。所以地址自增是按4为单位加。DMA代码模块图如图2所示,其中WAITREQUEST表示等待信号,当WAITREQUEST为高电平时表示数据不可用,需要等待;RESET_N为系统复位信号,低电平有效;FRAMELENGTH为DMA读写数据的数据大小,这里指显示缓存的大小;STARTADDRESS为DMA读写数据的起始地址,这里是显示缓存的首地址;CONTROLLER_GOBIT为是否启动DMA信号,高电平表示启动DMA;FIFO_ALMOSTFULL为FIFO快满的信号,如果FIFO快满,DMA控制器将停止工作,否则数据将溢出。FRAMELENGTH、STARTADDRESS、CONTROLLER_GOBIT数据来自寄存器组。CLKWAITREQUESTRESET_NFRAMELENGTH310STARTADDRESS310CONTROLLER_GOBITFIFO_ALMOSTFULLREAD_NADDRESS310VGA_DMAINST图26DMA控制器代码模块图27DMA控制器模块功能仿真25FIFO模块FIFO的作用是对DMA输出的图象数据进行缓存,以匹配时序控制模块的输出速度。FIFO大小暂定为409616BIT,在实际设计时,再根据系统需要以及资源状况作出适当调整,原则是,在系统资源允许的情况下,将FIFO大小尽量设置大点。FIFO由DMA控制器写入数据,写入时钟为100MHZ;由LCD控制器的时序发生模块读出数据,读出时钟为PCLK,即LCD的象素点扫描频率,通常取25MHZ。在独立的写时钟和读时钟作用下,FIFO可以提供RDUSEDW110信号,用于指示FIFO中已经使用掉的容量。系统可以设置一个上限和一个下限,当FIFO中的数据量高于上限或低于下限时,控制器暂停DMA传输或启动DMA传输,用以保证系统性能。在本设计中,将WRCLK接系统时钟(100MHZ),WRREQ接MASTER_READDATAVALID,DATA接WRITEDATA,即可完成DMA的数据写入操作;将RDCLK接125MHZ(因为TFT的时钟为25MHZ,数据宽度为16BIT,而FIFO的宽度为32BIT,所以用一半的时钟125MHZ去读取FIFO,然后依次输出32BIT的高16BIT和低16BIT),RDREQ由时序发生模块控制,即可在每个RDCLK的上升沿读出一个数据到Q。ACLR接RESET_N,可以完成复位操作。当然,所有信号都受CONTROLLER_GOBIT的控制。图28FIFO读写时序图26AVALON总线接口模块AVALON总线是ALTERA公司开发的用于NIOS嵌入式处理器的参数化接口总线,由一组预定义的信号组成,是一种相对简单的总线结构。其主要用于连接片内处理器与外设,它描述了主从构件间的端口连接关系,以及构件间通信的时序关系。AVALON接口规范定义了AVALON外设使用的信号,例如ADDRESS、DATA和CHIPSELEET等。这取决于外设逻辑对接口的需求,一个AVALON外设可以包含任意信号类型。AVALON接口规范还定义了AVALON信号的功能。在端口中每个信号只能对应一种信号类型,一个AVALON端口中每种信号类型只能使用一个。AVALON信号被分成主信号和从信号,取决于AVALON端口是主端口还是从端口。某些信号在主端口和从端口中都存在,但其功能不同。例如,考虑只有输出功能的16位通用I/O外设,如图所示,这个简单的AVALON外设只需响接收数据的请求,所以它只使用了写传输信号,不包含读信号。一个AVALON外设也能包含定制的、与应用相关的信号,这些信号与AVALON接口无关,例如图中的PIOOUT信号。和应用相关的信号与AVALON系统外部的逻辑连接,不直接与AVALONSWITCHFABRIC接口相连。本文设计的VGA控制器包含一个从端口和一个主端口。图29261基本从端口读模式基本从端口传输模式是所有AVALON从端口传输的基础。所有其他的从端口使用的信号都包含了基本从端口传输信号,并扩展了基本从端口操作时序。基本从端口操作时序。基本从端口传输由AVALON总线模块发起,然后从端口向AVALON总线模块传输一个单元的数据。基本从端口读传输没有延迟。图210显示了一个基本从端口读传输的例子。在AVALON基本读传输中,总线传输开始于一个时钟上升沿,并在下一个时钟上升沿结束,不插入等待周期。由于传输在一个时钟周期内完成,目标外设必须能够立即异步向AVALON总线模块输出相应地址的内容。在CLK的第一个上升沿,AVALON总线向目标外设传递ADDRESS、BYTEENABLE_N和READ_N信号。AVALON总线模块内部对ADDRESS进行译码,产生片选并驱动从端口的CHIPSELECT信号。一旦CHIPSELECT信号有效,从端口在数据有效是应立即驱动READDATA输出。最后,AVALON总线模块在下一个时钟上升沿捕获READDATA。图210基本从端口读传输图211基本从端口读传输时序时序说明A第一个总线周期开始于CLK上升沿;BADDRESS和READ_N信号有效;C;AVALON总线对ADDRESS译码,输出有效的CHIPSELECT;D片选有效后,从端口在第一个总线周期内必须返回有效数据;EAVALON总线在下一个CLK上升沿捕获READDATA,读传输到此结束。另一个总线传输可以在下一个总线周期开始。262基本从端口写模式和基本从端口读传输类似,基本从端口写传输是所有AVALON从端口写传输的基础。所有其他的从端口写传输使用的信号都包含了基本从端口写传输的信号,并扩展了基本从端口写时序。基本从端口写传输由AVALON总线模块发起,由AVALON总线模块向从端口传输一个单元的数据。基本从端口写传输没有延迟。图212基本从端口写传输时序263AVALON总线上的主端口读传输在基本主端口读传输中,主端口通过向AVALON总线模块提供有效的地址和读请求信号在时钟上升沿发起总线传输。在理想的情况下,读取的数据在下一个时钟上升沿之前从AVALON总线模块返回,总线传输在一个总线周期内结束。如果在下一个时钟上升沿读取的数据还未准备好,AVALON总线模块便设置一个等待请求并使主端口暂停,直至数据从目标从端口取回。基本主端口读传输没有延迟。264VGA控制器AVALON接口的设计1从端口设计VGA控制器从端口主要是VGA控制模块的寄存器的读写。本设计将VGA控制器的从端口设计为基本从端口。为了简化设计,本设计只设置四个32BIT的可读写寄存器,用于控制VGA控制器的工作和指示其工作状态,功能如表23所示。表23VGA控制器寄存器功能表CONTROLREG控制寄存器,用于控制VGA控制器的运行与停止STATUSREG状态寄存器,用于指示VGA控制器的工作状态(保留)STARTADDRESSDMA首地址,即缓冲区首地址FRAMELENGTH帧长度AVALON从总线接口负责处理器与VGA控制器的接口控制,VGA控制器在整个系统中作为从设备,通过该接口,接受CPU的控制。根据设计需要,该接口所需要的各信号为表24VGA控制器从端口所需信号INPUTCHIPSELECT片选,高电平有效WRITE_N写信号,低电平有效READ_N读信号,低电平有效RESET_N复位,低电平有效CLK系统时钟ADDRESS10地址信号WRITEDATA310写数据OUTPUTREADDATA310读数据IRQ_N中断请求,低电平有效2主端口设计AVALONBUSDMAMASTER负责按照控制模块的指令,读取SDRAM中的数据,并写入到FIFO中。其核心部分是DMA地址累加器,当条件满足时,地址累加器开始在100MHZ的时钟下以4为单位开始累加(为何以4为单位,是由AVALON总线的地址映射方式决定的。AVALON总线按字节进行编址,而SDRAM控制器一次读取32BIT即4BYTE的数据,所以地址要以4为单位累加),用于生成读取SDRAM的地址。读完一帧的数据后,自动复位到首地址,继续累加。主设备接口采用带延迟的主设备读传输模式,在这种传输模式下,即使没有接收到上一次的有效数据,主设备也可以发起下一次读命令。当WAITREQUEST信号无效(低电平)时,主设备可以连续的发起读命令,当WAITREQUEST信号有效(高电平)时,主设备开始等待,知道其变为低电平。当READDATAVALID信号有效(高电平)时,表示读数据有效,此时主设备可以锁存数据口上的有效数据。这里我们没有使用FLUSH信号,FLUSH信号会清楚前面一切未完成的读命令。AVALON总线保证数据的输出顺序与主设备要求的顺序一致(即与主设备地址输出顺序一致)。READDATAVALID信号可以作为FIFO的WRREQ信号,这样可以直接将读回来的数据写入到FIFO中。表25VGA控制器总端口所需信号INPUTMASTER_CLK主设备时钟100MHZMASTER_WAITREQUEST主设备等待信号MASTER_READDATAVALID主设备数据有效信号MASTER_READDATA310主设备数据OUTPUTMASTER_READ_N主设备读信号MASTER_ADDRESS310主设备地址信号3模块仿真图213VGA控制器AVALON接口仿真第3章PS/2键盘控制器IP核设计31PS/2通讯协议简介PS/2通讯协议是一种双向同步串行通信协议。通信的两端通过CLOCK(时钟脚)同步,并通过DATA(数据脚)交换数据。任何一方如果想抑制另一方通信,只需把CLOCK拉到低电平。如果是PC机和PS/2键盘的通信,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据,也即主机总是总线上有优先权。一般两个设备传输数据最大的时钟频率是33KHZ,大多数PS/2设备工作在1020KHZ,推荐值在15KHZ左右,也就是说,CLOCK高、低电平的持续时间都为40US。每一数据帧包含1112为,具体定义如表31。表31PS/2通信数据帧格式数位含义1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用于在主机对设备的通讯中表31中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0。总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总为奇校验。311PS/2设备到主机的通信PS/2到主机的通信时序如图所示,数据在PS/2时钟的下降沿读取,PS/2的时钟频率为10167KHZ。对于PS/2设备,一般来说从时钟脉冲的上升沿到一个数据转变的时间至少要有5US;数据变化到时钟脉冲的下降沿的时间至少要有5US,并且不大于25US,这个时序非常重要应该严格遵循。主机可以在第11个时钟脉冲停止位之前把时钟线拉低,使设备放弃发送当前字节,当然这种情况比较少见。在停止位发送后设备在发送下一个包之前应该至少等待50US,给主机做相应的处理。不过主机处理接收到的字节时一般会抑制发送。在主机释放抑制设备后,设备至少应该在发送任何数据前等待50US。312主机到PS/2设备的通讯由于时钟信号总是由PS/2设备产生,所以如果主机要发送数据就必须先把时钟和数据线设置为请求,发送状态如下(1)通过下拉时钟线至少100US来抑制通信;(2)通过下拉数据线来引用请求,发送然后释放时钟。设备应该在不超过10MS的间隔内就检查这个状态。当设备检测到这个状态时它将开始产生时钟信号,并且时钟信号脉冲标记下输入8个数据位和1个停止位。主机应该在时钟为低时改变数据位,而数据在时钟脉冲的上升沿被锁存,这与PS/2设备到主机的通信过程正好相反。在停止位发送后,设备应答接收到的字节,会把数据位拉低并产生最后一个时钟脉冲,如果主机在第11个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放,然后设备产生一个错误。主机也可以在第11个时钟脉冲应答位之前中止一次传送,只要下拉时钟线至少100US。313PS/2键盘简介键盘上包含了一个大型的按键矩阵,它们是由安装在电路板上的处理器(键盘编码器)来监视的。不同的键盘处理器可能不同,但是它们基本上都做同样的事情监视哪些按键被按下或释放了,如果它发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包发送到主机。扫描码分为“通码”和“断码”两种类型,当一个键按下或按住时就发送通码,当一个释放时就发送断码。每个按键都分配了一个唯一的通码和断码。每个键一整套的通断码组成了“扫描码集合”。有三套标准的扫描码集分别是第一套、第二套和第三套。所有现代键盘默认使用第二套扫描码。只要一个键按下,这个键的通码就会被发送到计算机。通码只表示键盘上的一个按键,它不表示印刷在按键上的那个字符。第二套通码多数只有一个字节宽,当也有少数扩展按键的通码是两个字节或四个字节宽。这类的通码第一个字节总是为E0H。只要键以释放断码就会被发送。每个键都有它唯一的通码,也都有唯一的断码。多数第二套断码有两个字长,它们的第一个字节是F0H,第二个字节是这个键的通码的最后一个字节。扩展按键的断码通常有3个字节,它们的前2个字节是E0H和F0H,最后一个字节是这个按键通码的最后一个字节。当按住按键不放,则这个键就变成了机打着,就意味着键盘将一直发送这个键的通码直到它被释放或其他键被按下。这里有两个重要参数机打延时,它是第一个和第二个通码之间的延迟;机打速率,则是指在机打延迟后每秒有多少通码被发送。机打延时范围可以从025100S,机打速率的范围可以为20300CPS(字符每秒)。32PS/2键盘控制器设计321设计思想因为键盘的通码和断码存在一定得联系,断码前总为0XF0或者0XE0、0XF0,而扩展键通码前总为0XE0,所以可设定两个标志位,即RX_RELEASED(断码标志)和RX_EXENDED(扩展码标志),当键盘输出为断码时RX_RELEASED置位,当键盘输出为扩展码时RX_EXENDED置位。同时再设一标志位(RX_SHIFT_KEY_ON)用于表示SHIFT键的状态,SHIFT键被按下则RX_SHIFT_KEY_ON被置位。这样就可以通过三个标志位的状态判断出按键的状态。此外还设置一标志位(RX_DATA_READY),当RX_DATA_READY为1时表示有新数据从键盘发送过来。当外部模块或控制器读出(输入引脚RX_READ置1)数据时,RX_DATA_READY清零,直到有新的数据到来再置位。从键盘发送过来的字符(字符按键)在本设计中也被转换成ASCII码输出。每个按键也直接输出扫描码,便于主机的处理。接收键盘发送过来的扫描码及发送指令到键盘主要由一个状态机完成,当外部要对键盘发送指令时,通过输入引脚TX_DATA(要发送的指令)、TX_WRITE发送使能、TX_WRITE_ACK发送状态、应答和TX_ERROR_NO_KEYBOARD_ACK发送出错指示,可对键盘进行控制。322模块的接口与控制RESET(INPUT)系统复位,高电平有效。复位时不会向PS/2键盘发送复位命令,只用于初始化键盘控制器。RX_READ(INPUT)读控制器数据标志,当有新的数据到来时RX_DATA_READY引脚将输出高电平。如果这时RX_READ输入高电平时则表示数据已经读出,同时RX_DATA_READY引脚清零。如果RX_READ一直为低电平,该控制器也会实时输出新的数据,只不过RX_DATA_READY引脚将一直为高电平。TX_DATA70(INPUT)写指令/数据输入口,当需要对键盘进行控制时通过该输入端口写入指令。TX_WRITE(INPUT)写指令/数据使能,高电平有效,当输入为高电平时,控制器转换到发送指令状态,将TX_DATA70指令/数据发送到PS/2键盘;当输入为低电平时,控制器在接收状态,时刻检测键盘发送过来的扫描码。PS2_CLK(BIDIR)PS/2时钟线,为双向端口,外围电路需加上拉电阻。PS2_DATA(BIDIR)PS/2数据线,为双向端口,外围电路需加上拉电阻。RX_EXTENDE(OUTPUT)扩展码标志位,当输出为扩展码时该位置位。RX_RELEASED(OUTPUT)断码标志位,当输出为断码时该位置位。RX_SHIFT_KEY_ON(OUTPUT)SHIFT键标志位,当SHIFT键按下时该位置位;松开时标志清零。RX_SCAN_CODE70(OUTPUT)扫描码输出端口。RX_ASCII70(OUTPUT)ASCII码输出端口。输出的ASCII码范围是0X200X7F共96个字符。RX_DATA_READY(OUTPUT)高电平表示有新数据输出,RX_READ为高电平时清零。RX_WRITE_ACK(OUTPUT)为高电平表示指令/数据开始传输。TX_ERROR_NO_KEYBOARD_ACK(OUTPUT)为高电平时表示发送指令给键盘应答出错。323AVALON接口设计PS/2键盘控制器被设计为一个AVALON从端口。可采用查询方式,也可采用中断方式。发送指令后等待中断产生,产生中断后需查询TX_ERROR_R位,为1说明键盘收到错误数据,需重新发送;为0则说明收到键盘发送过来的数据。采用查询方式,发送指令也需查询。寄存器分配如下(1)地址ADDRESS0X00该寄存器为只读寄存器。数据格式定义如表表32键盘控制器0X00寄存器位功能位置名称功能D7D0RX_ASCIIASCII码输出端口D15D8RX_SCAN_CODE扫描码输出端口D16RX_DATA_READY高电平表示有新数据输出,读数据时清零D17RX_SHIFT_KEY_ONSHIFT键状态标志位D18RX_RELEASED断码标志位,当输出为断码时该位置位D19RX_EXTENDED扩展码标志位,当输出为扩展码时该位置位D20TX_ERROR_R应答错误标志位(2)地址ADDRESS0X01该寄存器只可写,功能为键盘指令寄存器,写指令/数据输入口,当需要对键盘进行控制时通过该输入端口写入指令。其中D0D7为有效。第4章游戏平台硬件设计41SOPCBUILDER设计流程SOPCBUILDER可看作是一个以IP模块为输入,集成的系统为输出的工具。SOPCBUILDER设计过程有三个主要步骤。1构件开发SOPCBUILDER的IP模块是由IP开发人员提供的硬件RTL、原理图EDIF和软件C源代码、头文件等。高级IP模块可能还会包含一个相关的图形用户界面,一个GENERATORPROGRAM程序,和其他支持系统参数化生成的程序一般情况下,把一个普通的IP添加到SOPCBUILDER的IF模块库中,需要做的只是建立一个描述该IP的CLASSPTF文件。所有的,模块够都必须有一个CLASSPTF文件。2系统集成用户创建和编辑一个新的系统时,一般要从库中选择一些IF模块,逐个地配置这些IP模块,以及设置整个系统的配置如,指定地址映射和主/从端口连接等。在这个过程中,用户的设置都会保存在系统PTF文件中,一般不,会有其他文件的产生或修改。SOPCBUILDER内包括和安装了一些EP模块,其他一些IP模块可以从ALTERA或第三方如AMPPIF提供商处获得,可能需要另外安装。3系统生成当用户在完成了SOPCBUILDER中的设计活动之后,最后按下GENERATE按钮,或从命令行执行系统生成程序时,系统生成就开始了。系统生成的结果是一系列设计文件,如HDL文件,SDKSOFTWARESUPPORT目录和模拟工程文件等等。42游戏平台SOPC的构建在第二章和第三章已经介绍了基于AVALON总线的VGA控制器和PS/2键盘控制器。有了这些模块,再加上NIOSII软核处理器、定时器等就可构成一个SOPC系统。421SOPCBUILDER中模块集成本小节介绍使用SOPCBUILDER将各个模块集成在AVALON总线上。首先将VGA控制器IP,使用COMPONENTEDITOR编辑。如图41所示图41VGA控制器COMPONENTEDITOR下HDL的添加图42VGA控制器AVALON总线信号类型设定然后将PS/2键盘控制器以同样的方式添加进去。添加NIOSII处理器,由于VGA显示处理要求的速度较快,本设计选择了NIOSII标准版,并且使用了硬件乘法器以加快乘法运算。所有模块添加完后的

温馨提示

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

评论

0/150

提交评论