ionicons-v5-f

基于国产FPGA的“打地鼠”游戏设计与实现

实验题目:基于国产FPGA的“打地鼠”游戏设计与实现

课程简要信息

课程名称:数字逻辑电路实验III

课程学时: 32

项目学时:4

适用专业:自动化专业

学生年级:三年级第一学期

实验内容与任务(限500字,可与“实验过程及要求”合并)

项目需要完成的任务(如需要观察的现象,分析某种现象的成因、需要解决的问题等);是否设计有不同层次的任务。

  1. 基础任务:在国产高云FPGA上,设计实现简易“打地鼠”游戏模块,要求:游戏开始后随机亮起一盏灯,按下与亮起的灯对应的按键后灯灭,同时测量出从灯亮到按键按下(即灯灭)所需的时间,并将该时间以十进制形式显示在七段数码管上;

  2. 扩展任务1:在第1)步的基础上,扩展“打地鼠”游戏模块,使游戏更加生动有趣,要求:游戏开始后随机亮起一盏灯,如果在规定时间内(2s)按下与亮起的灯对应的按键后灯灭,同时随机亮起另外一盏灯;如果在规定时间内(2s)内未按下对应按键,则随机亮起另外一盏灯;测量从游戏开始后的持续时间,并将持续时间以十进制形式显示在七段数码管上;如果在规定时间内(60s),能够打中10只“地鼠”(灯亮时能够按下对应按键使灯熄灭,表示打中了一个“地鼠”),则游戏通关,蜂鸣器发出声音。

  3. 扩展任务2:为系统中的按键添加对应音符和通关音乐,在游戏过程中,每次按下对应按键就发出相应的音符声,游戏通关后播放通关音乐。

实验过程及要求(限300字)

如对学生在实验过程中在需求分析、资料查询、自学预习、思考讨论、方法设计、进程规划、软件仿真、平台构建、器件选择、表格设计、现象观察、数据测试、问题分析、总结报告、验收答辩、演讲交流等各方面的要求。

实验过程包括需求分析、设计实现、归纳总结三大部分。

需求分析:

  1. 查阅资料, 理解“打地鼠”游戏的功能需求和显示设计需求;

设计实现:

  1. 完成基础任务:设计实现简易“打地鼠”游戏,并展示反应时间;

  2. 完成扩展任务1:完善“打地鼠”游戏,使其更加生动有趣,打中或者规定时间内未打中“地鼠”,则“地鼠”随机更换位置;若在游戏持续时间内,打中10次地鼠,则游戏通关,发出通关声音;若未通关,则发出失败提示音。

  3. 完成扩展任务2:在游戏过程中,“打地鼠”按键对应不同的音符,游戏通关播放通关音乐,失败则发出失败提示音。

总结归纳:

  1. 撰写总结报告,归纳总结实验过程中遇到的问题及解决方案,并分析不同解决方案的特点。

相关知识及背景(限150字)

项目涉及所需的知识方法、实践技能、应用背景、工程案例。

这是一个运用数字电子技术解决现实生活和工程实际问题的典型案例,需要用到计数器、分频器、译码器、状态机、多路选择器、数据显示、同步时序电路设计等相关知识。并涉及到时序电路设计、时序电路优化分析、数字电路仿真、数字电路故障排查等工程概念和方法。

实验环境条件

项目实施需要实验资源,包括实验装置功能、实验仪器设备、设计软件工具、主要电子元器件等。

实验环境包括:

实验开发板:国产高云Pocket Lab-F0开发套件

设计软件工具:云源软件Gowin_V1.9.9

教学目标与目的(限150字)

如学习、运用知识、技术、方法等;培养、提升技能、能力、素质等。

在一个完整的工程项目实现中引导学生掌握数字系统设计的基本方法,引导学生理解数字系统设计的思想和方法。通过数字电路设计、实现、调试、分析、优化,让学生掌握由浅入深、循序渐进的设计方法,并通过数字电路的实测和分析,掌握评价数字系统的方法,提升学生的数字系统设计能力和工程实践能力。

教学设计与实施进程

课堂知识讲解、方法引导、背景解释;实验中的方法指导,问题设置、思路引导等。教学模式、实验渠道、研讨主题、观察节点、验收重点、质询问题等方面设计等。实验实施进程的各个环节(如任务安排、预习自学、现场教学、分组研讨、现场操作、结果验收、总结演讲、报告批改等)中教学设计的思路、目的,教师、学生各自需要完成的工作任务,需要关注的重点与细节。

本实验的过程是一个完整的数字系统设计内容,需要经历学习研究、方案论证、系统设计、系统实现、程序仿真、下载实测、设计总结等过程。在实验教学中,应在以下几个方面加强对学生的引导:

学习研究:

  1. 在课前预习时,要求学生查阅资料熟悉“打地鼠”游戏的游戏规则;

  2. 对照“打地鼠”游戏规则与高云Pocket Lab-F0开发套件,设计“地鼠”、“鼓槌”与硬件开发套件的对应关系;

  3. 复习时序逻辑电路设计相关内容,巩固时序逻辑电路设计方法;

  4. 复习巩固计数器设计和分频器的实现方法;

  5. 熟悉硬件开发套件上的电路布局,确定硬件外设(如数码管、开关、按键、时钟)等与FPGA的电路连接关系,确定管脚约束条件;

方案论证及系统实现:

  1. 引导学生画出数字电路系统的设计框图,确定实验方案;

  2. 引导学生思考系统各模块的实现方法;

  3. 引导学生思考如何分别完成各功能模块的功能验证,如“打地鼠”游戏的核心模块如何实现“地鼠”、“棒槌”的对应关系,如何设定“地鼠”的出现规则,如何控制“地鼠”的消失等;

  4. 引导学生思考如何完成系统的显示功能,如何使用动态扫描数码管展示游戏时间,如何显示游戏通关与游戏失败等;

  5. 引导学生思考如何将各功能模块有机连接成为一个完整的功能系统,使得“打地鼠”游戏丰富有趣。

设计总结:

  1. 实验结束后,引导学生总结实验中遇到的问题,并设计出不同的解决方案,变实验报告为实验的延伸拓展。

实验原理及方案

实验的基本原理、设计依据、完成任务的思路方法,可能采用的方法、技术、电路、器件。

  1. 基于FPGA的“打地鼠”游戏设计原理及设计框图

调研实际生活中常见的“打地鼠”游戏,可知其功能主要包括“地鼠”随机出现、“打地鼠”操作控制、游戏计分判断。在游戏过程中为了方便用户操作,可以展示出游戏所用时间及“打中地鼠”的数量。

考虑“打地鼠”游戏中输入、约束、输出的对应关系,该“打地鼠”游戏的数字系统框图如图1所示。

图 1 基于FPGA的“打地鼠”游戏设计框图

考虑“打地鼠”游戏的主要功能及系统展示,在时间控制器的统一协调下,“地鼠”随机出现模块、“打地鼠”操作控制模块、游戏评分模块形成了一个有机协同的整体,系统设计框图如图2所示。

图 2 基于FPGA的简易“打地鼠”游戏设计框图

  1. 基础任务:基于FPGA的简易“打地鼠”游戏各功能模块设计与实现

在该部分基础任务中,要求设计一个基于FPGA的简易“打地鼠”游戏,游戏部分要求:游戏开始后,随机出现一只“地鼠”(即随机亮起一盏LED灯),且“地鼠”不会随意更换位置,若按下与该“地鼠”对应“鼓槌”(与亮起的LED灯对应位置的按键开关),则表示“打中地鼠”,“地鼠”消失(即LED灯灭)。显示部分要求:展示从“地鼠出现”到“打中地鼠”所用的时间,要求使用十进制形式将该时间展示的数码管上,以10ms为单位。

根据游戏功能,将其对应到图2中的各功能模块。具体实现如下:

时间控制器模块:

时间控制器将作为系统设计的统一时间节拍器,在系统中用于游戏设计和游戏计时。

开发板自带50MHz的晶振,将该50MHz时钟分频到1KHz,产生频率为1KHz的方波,用于按键消抖、游戏计时、“地鼠”随机出现的随机数产生等。

图 3 时间控制器模块的verilog实现

“地鼠”随机出现模块:

在“打地鼠”游戏模块中,用8盏LED灯表示对应“地鼠”出没的位置,灯亮表示“地鼠出现”,灯灭表示“地鼠未出现”。实现“地鼠”随机的方式有很多,比如可以用按键中断一个频率计数器实现,也可以使用一个计数器观察另一个计数器实现,再复杂一些,可以考虑使用CDMA系统里应用的m序列实现。在实验指导书中分别介绍了这几种实现方法,实验中学生可以自行选择。

结合游戏设计,最简单的伪随机方式为在系统上电、游戏复位后开始计数,使用游戏开始开关中断计数器得到一个伪随机数,将该伪随机数作为地鼠随机出现的位置。

图 4 简易“打地鼠”游戏中地鼠随机出现模块的verilog实现

“打地鼠”操作控制模块:

“打地鼠”游戏过程中,使用8个按键开关表示8个用于敲击地鼠的“鼓槌”。“地鼠”出现的过程中敲击对应“鼓槌”表示“打中地鼠”,“打中地鼠”后灯灭,“地鼠”消失。

图 4 简易“打地鼠”操作控制的verilog实现

游戏计分模块:

“打地鼠”游戏计分以单次“打中地鼠”的游戏时间来衡量,从“地鼠”出现到“打中地鼠”所用时间越短,得分越高。故在游戏过程中,游戏开始时,“地鼠”随机出现,同时开始计时,“打中地鼠”后,计时结束。计时结果以十进制形式实时显示在动态扫描数码管上,计时最小单位为10ms。所以显示部分包括秒计时模块和动态扫描显示模块。秒计时模块的verilog实现如图 5所示,所实现的计时器共4位,该计时器最高可计时99.99秒。

动态扫描显示模块如图 6所示,使用6位动态扫描数码管的高4位作为秒表,显示“打地鼠”所用时间。

图 5 秒计时模块的verilog实现

图 6 动态扫描显示模块的verilog实现

  1. 扩展任务1:基于FPGA的限时、多次重复“打地鼠”游戏设计与实现

基础任务中,“打地鼠”游戏模块只随机出现1只“地鼠”,且“地鼠”位置不变,在游戏中测量了从“地鼠出现”到“打中地鼠”的时间。在扩展任务中,要求丰富游戏模块,提升游戏难度,提高用户体验。游戏规则如下:

a. 游戏开始后,“地鼠”随机出现;

b. “打中地鼠”后,该“地鼠”消失,另一只“地鼠”随机出现;

c. 若“地鼠”在2s时间内未被打中,则“地鼠”随机更换位置;

d. 若在规定的时间60s内,打中10只地鼠,则游戏胜利,否则游戏失败。

图 7 丰富游戏规则后“打地鼠”游戏模块的verilog实现(部分代码)

  1. 扩展任务2:具有动画、音响等人机交互效果的“打地鼠”游戏设计与实现

在扩展任务1的基础上,为了使用户的游戏体验更加立体化,可以在游戏中添加动画、音响等人机交互元素。如为按键添加对应音符,按下不同的按键发出不同的音符声音,游戏胜利后演奏游戏胜利乐曲,游戏失败后发出游戏失败提示。

实现该任务需通过控制按键产生不同频率的矩形波,并通过蜂鸣器输出。在该任务中学生可以体会不同频率的波形所产生的声音效果。同理,通过控制输入到蜂鸣器的波形频率可以演奏出不同的音乐,从而实现演奏游戏胜利乐曲的效果。

实验报告要求

需要学生在实验报告中反映的工作(如:实验需求分析、实现方案论证、理论推导计算、设计仿真分析、电路参数选择、实验过程设计、数据测量记录、数据处理分析、实验结果总结等等),如:

本次实验报告应包括:

  1. 实验任务与要求

  2. “打地鼠”游戏需求分析

  3. 基于FPGA的“打地鼠”游戏方案设计及方案论证

  4. 在国产高云FPGA上,“打地鼠”游戏的具体实现及仿真效果

  5. 在国产高云FPGA上,“打地鼠”游戏的实际运行情况及优化分析

  6. 以“打地鼠”游戏设计为例总结数字系统设计方法

  7. 总结实验中遇到的问题和解决方案

  8. 回答思考题

考核要求与方法(限300字)

考核的节点、时间、标准及考核方法。

  1. 实验验收:占总成绩的的60%。实验验收指基础部分的验收,如果基础任务完成并且顺利通过验收,可以获得该部分成绩;

  2. 实验质量和效率:占总成绩的15%。如果实验方案设计完善,且能够完成扩展任务1的验收,可以获得10%的成绩;如果率先通过基础任务和扩展任务1的验收给予5%的效率成绩奖励;

  3. 自主创新:占总成绩的10%。在扩展任务2中,能够自主创新,为游戏提供更加丰富的游戏体验,可以该部分自主创新成绩;

  4. 实验报告:占总成绩的15%。要求按规定认真书写实验报告,并能正确回答思考题,按时提交实验报告将获得该部分成绩。

项目特色或创新(可空缺,限150字)

项目的特色在于:项目背景的工程性,知识应用的综合性,实现方法的多样性。

项目特色在于背景的工程性,知识应用的综合性,实验的可区分度。通过设计有趣的“打地鼠”游戏,锻炼了学生的数字系统设计能力和FPGA应用开发能力。项目涵盖了分频器、计数器、时序控制等数字系统设计的关键知识点,具有高度的知识应用综合性。此外,以基础任务为核心,可扩展出多种不同任务,易于激发学生的积极性和探索欲。

获奖信息

获奖等级 一等奖(最佳创意奖)
年份 2024

作品信息

学时分类 1-6学时
课程分类 课内:数字电路及数字系统、

作者信息

作者
张世娇,张翠翠,张育
学校
西安交通大学
院系
电信学部

电工电子实验教学资源平台 苏ICP备09069895号-19