基于NiosII贪吃蛇的游戏设计电子综合设计

上传人:桔**** 文档编号:507580323 上传时间:2023-01-24 格式:DOC 页数:19 大小:2.54MB
返回 下载 相关 举报
基于NiosII贪吃蛇的游戏设计电子综合设计_第1页
第1页 / 共19页
基于NiosII贪吃蛇的游戏设计电子综合设计_第2页
第2页 / 共19页
基于NiosII贪吃蛇的游戏设计电子综合设计_第3页
第3页 / 共19页
基于NiosII贪吃蛇的游戏设计电子综合设计_第4页
第4页 / 共19页
基于NiosII贪吃蛇的游戏设计电子综合设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《基于NiosII贪吃蛇的游戏设计电子综合设计》由会员分享,可在线阅读,更多相关《基于NiosII贪吃蛇的游戏设计电子综合设计(19页珍藏版)》请在金锄头文库上搜索。

1、基于NiosII和LED点阵的贪吃蛇游戏设计目录一、摘要 2二、设计目的 2三、贪吃蛇设计预期目标 2四、方案整体设计 2五、硬件系统的设计及实现 3六、软件系统的设计及实现 11七、心得体会 14八、参考文献 15九、附录 15一 、摘要基于NiosII软核处理器和LED点阵显示屏的贪吃蛇游戏内容是:一条蛇在封闭的围墙里,围墙里随机出现一个食物。玩家通过4个按键控制蛇上下左右移动,且蛇只能沿着头运动的轨迹移动。蛇头撞到食物,则食物被吃掉,蛇身体增长一节,同时记1分,又出现食物,等待蛇来吃,如果蛇头在移动中出界或咬到自己的身体则游戏结束。关键字: 贪吃蛇Nios II LED点阵SOPC二、设

2、计目的1、掌握按键扫描电路的设计2、掌握用VHDL语言设计按键扫描电路的方法3、掌握16*16 LED点阵的控制原理和用VHDL语言设计LED点阵扫描电路的方法;4、掌握SOPC Builder的设计流程;5、掌握在Nios II中进行编程的方法;三、贪吃蛇设计预期目标1、 基本功能(1)、完成按键扫描电路的设计;(2)、完成 16*16 LED 点阵的扫描电路设计;(3)、完成SOPC Builder 中的系统设计;(4)、完成单色贪吃蛇游戏的基本设计(蛇移动方向的改变,吃到果子后蛇身变长,咬到自己或者出界时的失败处理等);(5)、完成游戏图形信息提示(游戏目前所处的等级等)。2、 提高功能

3、(1)、能进行汉字动态显示(显示内容自动更新,形式自定,如百叶窗等);(2)、蛇头颜色与蛇身区别显示,并与果实颜色区别显示;(3)、游戏过程中加入声音提示和表情提示;(4)、所得分数在数码管上显示;(5)、能进行游戏难度的切换(不同难度下,蛇吃到相应数量的果子后升级)。四、方案整体设计 为了实现游戏的控制、显示、设置等功能,系统需要具有控制模块,动态扫描显示模块,按键识别模块。本设计中采用Nios II软核CPU作为游戏的主控制单元,按键识别模块中的每个按键通过产生中断的方式,在中断处理函数中完成按键的标识,并在在软件程序的主体部分完成按键的识别。动态扫描显示模块又分为LED点阵屏动态扫描显示

4、和LED数码管显示扫描两部分,两部分均采用VHDL语言设计相应的硬件扫描模块来实现。五、硬件系统的设计及实现整个硬件系统的设计包括Nios II片上系统的设计和外设驱动电路的设计。1、 硬件整体框架2、Nios II片上系统的设计片上系统的设计核心是Nios II嵌入式CPU软核的定制。根据游戏的功能要求和实现的方案,片上系统应当包括:Nios II嵌入式CPU软核、一组PIO输入输出口、定时器、SRAM、JTAG UART、EPCS_FLASH_CONTROLLER。Nios II系统的结构如下:(1)、Nios II嵌入式CPU软核Nios II嵌入式CPU软核作为整个系统的主控制单元,完

5、成对按键信息的接收、识别、处理;此外还要输出相关的控制信息,实现对外设的控制。(2)、PIO输入输出口在定制的一组PIO输入输出口中,PIO输入口用于接收按键信号,PIO输出口用于输出对DPRAM写数据操作的控制和数据信号以及LED数码管的数据信号;(3)、定时器在系统中定制定时器,主要是为了通过定时器的计数产生周期性的中断,通过中断处理函数实现贪吃蛇的移动显示效果。由于定时器中具有几个软件可操作的寄存器,通过对这些寄存器的操作可以很方便地实现定时器的启停、定时时间设置、中断产生控制等操作。只要更改定时器产生中断的周期就可以实现贪吃蛇运动速度的控制,从而进行游戏等级的控制。(4)、SRAM和E

6、PCS_FLASH_CONTROLLERSRAM在系统中起到了相当于计算机中内存的作用,主要用于存放正在运行的软件程序。它的特点主要是速度快。 EPCS_FLASH_CONTROLLER 作为EPCS_FLASH的控制器。整个系统的硬件设计都下载固化在EPCS_FLASH上,当程序烧写到了EPCS_FLASH上的时候,就可以实现脱机运行了。3、 外设驱动电路的设计外设驱动电路的设计包括:双口DPRAM的定制、DPRAM读数据控制电路的设计、LED点阵屏扫描电路的设计、七段数码管动态扫描电路的设计、整个系统中所用到的时钟信号产生电路以及按键去抖电路。(1)、双口DPRAM定制双口DPRAM在系统

7、中作为LED点阵显示屏的显示数据缓存,其中存储了256个LED灯的颜色控制数据。存放在其中的数据只有四个值有效,分别为0、1、2、3。送这四个数去控制一个LED灯,分别对应LED灯的颜色为:黄色、绿色、红色、黑色。双口DPRAM可以定制成一个输入口和一个输出口的形式。其中,输入口用于接收Nios II嵌入式软核CPU的数据,输出口在DPRAM读数据控制电路的控制下输出数据用于驱动LED点阵屏扫描显示电路。 该模块的仿真波形如下图:(2)、DPRAM读数据控制电路DPRAM读数据控制电路在外部时钟信号的作用下,产生0 到255共256个数作为DPRAM的地址,在DPRAM读数据时钟到来的时候使得

8、DPRAM输出对应地址的数据。此外,DPRAM读数据控制电路还要产生像素同步信号和行同步信号,实现LED点阵屏扫描电路的时序。产生的时序要求是:在外部时钟的作用下产生DPRAMD的地址,接着像素同步时钟出现一个上升沿,16个像素同步时钟后,产生一个行同步信号,在该行同步信号作用下行扫描信号从第一行顺序扫到最后一行,这样就完成了一个周期的扫描。该模块的仿真波形如下图:(3)、七段数码管七段数码管动态扫描电路,接收外部送来的显示数据,通过动态扫描的方式在两个数码管上显示出来。该模块的仿真波形如下图:(4)、按键去抖电路按键去抖电路用于消除按键动作中产生的高频抖动,防止产生误动作,提高按键的稳定性,

9、和可靠性。该模块的仿真波形如下图:(5)、时钟信号产生电路整个系统中使用到了几个不同频率的时钟信号,通过时钟信号产生电路进行不同频率的分频产生所需的时钟信号。该模块的仿真波形如下图:(6)、LED点阵屏扫描电路的设计LED显示系统有两种基本的显示控制方式,即静态显示和动态显示。对于静态显示方式,每一个像素都需要一套驱动电路,因而这种方式没有扫描过程,显示控制简单,亮度很好。但是,采用静态显示方式将大大增加驱动电路的复杂程度,这不仅使系统成本很高,而且增加了生产、安装、调试以及日常维护工作的难度,故障率也较高。对于动态扫描显示,由于采用多路复用显示方式,每路显示的时间大为减少,这不仅使LED显示

10、亮度受到一定程度的影响,而且增加了显示控制的复杂性和现实的稳定性。本系统采用动态扫描控制显示方式。a、显示屏的列驱动列驱动采用带输出锁存的8 Bit 移位寄存器 74LS595。本系统采的LED点阵是RG 双色的,所以送入点阵的列驱动信号是 RG两组。 以红灯为例,两片74LS595 级联用作红灯列驱动。每16 个时钟控制器传送的两个字节的数据移位到两片 595 中,16个列驱动信号都移位到两片 595 中后,控制器给出一个STB 信号的上升沿,使一行数据锁存输出到LED屏。LED对应的列驱动数据为1时,被其驱动的LED不能被点亮;对应的列驱动数据为0时,被其驱动的点被点亮。绿灯的点亮控制和红

11、灯一样,需要用到另外一套相同的595级联电路。但具体点亮哪一个点,则由行驱动来指定。因此行驱动用来进行扫描控制,任一瞬时16行中只有1行被选通,换句话说一行中每一个点被点亮的时间只有不到1/16的时间,因为传送数据和控制也需要时间。本系统采用的LED点阵是RG双色灯,具体哪个灯则由FPGA传递的参数决定。需要注意的是,红灯数据在送入LED点阵前要加电阻限流。b、 显示屏的行驱动为方便控制,行信号采用四位控制16行,行扫描信号的最高位用于选择要译码的三八译码器。行扫描信号最高位为0时,三八译码器U7工作,译码后的信号作为前八行的行选择信号;行扫描信号的最高位为1时,三八译码器U14工作,译码后的

12、信号作为后八行的行选择信号。行选择信号在送入LED点阵前,要先送入专用的电源控制芯片APM4953,APM4953的输出作为点阵的行驱动信号。更大的屏由多套这样的电路拼接而成,每一部分的工作原理是一致的。这里仅以此电路来讨论其工作的原理。c、具体扫描过程扫描过程:首先是FPGA通过接口送来第一行要显示的2个字节的红色灯信号R和2个字节的绿灯信号G,两个字节的红灯数据分别锁存于U1和U6中,两个字节的绿灯数据分别锁存于U10和U15中。随后送出行扫描信号,行扫描信号经三八译码器译码后为IH0-IH15,IH0-IH15经过专用的电源控制芯片APM4953,成为LED点阵的行驱动信号TH0-TH1

13、5。第一次送来的扫描信号应使TH0为1,其余为0。这意味着只有第1行被选通,第1行的16个点,32个LED灯按4片595的输出数据点亮或熄灭相应的LED灯,而其余15列由于不被选通将全部不发光。为防止数据串显,经过一段时间的延时后,要再送出一组绿灯均为1的数据,即熄灭所有的灯,至此第1行扫描显示完毕。随后依次进行第2行的扫描显示。同样,先送第2行的16个红色LED灯的显示数据分别锁存于595(1)和595(2)中,第2行的16个绿色LED灯的显示数据分别锁存于595(3)和595(4)中,再送扫描信号SEL,且只使TH1为1,并延时显示,最后熄灭所有的灯。这样逐列进行扫描显示,当最后一列扫描完

14、后,FPGA可进行适当的数据加工处理,接着又进行下一扫描周期的工作。必须指出,扫描周期应小于或等于20ms以克服图像的闪烁现象,但也不能太高,要考虑595工作的频率范围。电路如下图:六、软件系统的设计及实现1、系统的主程序设计(1)、算法描述运动:根据用户输入按键进行柔体传动。吃到食物:置没有食物的标志,蛇长大一个点阵。放新食物:判断食物标志,如果没有食物,就要放食物,判断 放的食物是否和蛇身重叠,重叠了要重放。死亡处理:判断是否撞中自己或撞墙。 游戏具体的流程是:蛇向一个固定方向进行柔体传动,每个运动时钟到达要做的工作有a、判断食物标志,没有食物了就放一个,放的时候判断,不能和蛇身重叠。b、

15、得到用户按键值,根据键值设置方向标识,并判断是否撞死了,没撞死和是否吃到自己,再判断是否吃到东西了,没有吃到,就等下一个运动时钟;吃了,就增长一点。置一个没有食物的标志。然后等待下一个时刻的来临。(2)、流程图 2、源程序 (见附录)七、心得体会 本次电子综合设计从9月6日开始,到9月30日结束,为 将近一个月。整个设计工作的安排是:前期,接受电子综合设计任务,阅读、收集相关资料,学习Nios II嵌入式设计方法。进行简单的包含Nios II嵌入式CPU的SOPC系统验证性试验,熟悉定时器的使用,PIO口的操作,以及中断的实现操作。学习LED点阵显示屏的动态扫描显示原理,并据此确定所需的元件,做好准备工作。中期,研究贪吃蛇游戏的实现方法,根据要求的功能,和现有的资源确定总体设

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号