没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论











E D A
课 程 设 计 报 告
题 目: 贪吃蛇小游戏
时间: 2019.1.7

贪吃蛇实验报告
摘要
EDA 是电子设计自动化(Electronics Design Automation)的缩写,在
20 世纪 60 年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、
计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA
技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言
VerilogHDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割 、
综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映
射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操
作性,减轻了设计者的劳动强度。
在本学期的实验中,为了培养学生的电子设计实践能力,同时也为了将理
论课程中的数字电路、模拟电路、c 语言等知识整整意义上的理解与灵活使用,
通信 16 级大三课程中开设了面向实验的 EDA 设计课程。从最基本的组合逻辑
电路到时序逻辑电路,再到较为复杂的功能实现模块,(如数字钟、抢答器等
设计实现),对 VHDL 语言有了更深层次的理解,同单片机不同,EDA 设计是
并行执行,在很多方面优势性很强。我选的课题是贪吃蛇游戏,因为实验板上

有 16*16 的点阵,同时有 16 位的数码管显示设备,按键和开关,在电路实现
方面完全没有问题,小游戏的制作在锻炼个人的实际应用能力和创新能力的基
础上不乏趣味性。
一、课程设计目的:
1)巩固和加深所学电子技术课程的基本知识, 提高综合运用所学知识的能力。
2)培养查阅文献和独立调试的能力,提高解决实际问题的能力。
3)通过功能性描述和思路梳理,绘制模块实现方框图,能对不同的模块有不同
的认识和解题思路。
4)熟悉电路板的使用及调试,能够用仿真软件对欲将实现的功能进行仿真分析。
5)熟练掌握 VHDL 程序设计语言,总结优化代码。
二、预期功能详述:
1. 使用数码管和 16*16 的点阵作为显示设备,拨码开关作为输入设备。
2. 初始化蛇身长为 4,点阵最边缘处为墙,设定蛇吃老鼠的个数为 3,(当然,
还可以设定更多的值)每吃一个老鼠后蛇身加 1,当吃完三个以后,游戏复位。
蛇撞墙或者游戏时间 60 秒到,游戏结束。
3. 老鼠出现的位置是随机的,如果被蛇吃掉或者出现时间满 45 秒,老鼠消失,
从另一个位置出现(老鼠不会出现在蛇身上,也不应该与墙所在的位置重叠)。
4. 设定数码管显示游戏倒计时和蛇吃老鼠的得分。
三、电路实验板特性:
1)数码管:
数码管共计 16 位,通过位选信号的输入来实现,0000 使得第一位亮,1111
控制最后一位亮。段选信号是 8 位,数码管为公阴型数码管。

2)点阵:
16*16 点阵硬件电路上是由 4 块 8*8 的点阵组合而成,在实际控制中,是统一
控制的,位选信号同样为 16 位,0000 输入时最右边一列选中,1111 输入时
是最左边一列,位选为 16 位,最底层的是 16 位的最低位。
3)点阵段选的低 8 位与数码管的 8 位段选物理地址相同,可以通过 VGA 的设
置实现时分复用,同时显示。
四、具体功能模块及设计思路:
1)坐标系的构建:
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ●
● ○ ○ ○ ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
定义的变量类型为 integer range 0 to 15
因为老鼠和蛇的位置不能与墙重叠,因此二者的坐标为 1-14。也可以使用四位
二进制数来表示,但是在后续的过程中发现,还是 10 进制数表示更加的方便。
最外围作为“墙”来显示,
框定限制蛇的运动范围
蛇的初始化状态
及位置
坐标原点(0 , 0)向左为 X 轴
正方向,向右为 Y 轴正方向
定义 integer 类型数据 0-15 来
定位
X
y
老鼠的位置,设置随机出现

流程图
是
2)“墙”身的动态显示:
扫描计数值用一个比较高的频率 2khz 来控制,在程序中用的 cnt 表示,当
cnt 在 0-15 之间时,将要点亮的位置固定的送给显示端:
代码如下:
constant w_x:location(0 to 59):=(0 ,0,0 ,0, 0 ,0,0 ,0, 0, 0, 0, 0,
0 ,0, 0 ,0, 1, 1, 2, 2, 3 ,3, 4, 4, 5 ,5, 6, 6 ,7, 7, 8 ,8 ,9 ,9 ,10, 10,
11 ,11, 12,12 ,13,13,14,14 ,15 ,15,15 ,15 ,15, 15,
上 下 左 右
撞
蛇
撞
边
撞
墙
吃
鼠
否否否否
是是是
开始
计时、计分开始,墙初始化
是
60 秒到
蛇初始化位置并显示
鼠初始化位置并显示
45 秒到
否
否 蛇身移动
鼠位置重置
分数增加
是
剩余31页未读,继续阅读
资源评论


通信小飞侠
- 粉丝: 4
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
