首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 低成本人机交互设计:基于FPGA的体感游戏
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
低成本人机交互设计:基于FPGA的体感游戏
发短消息
加为好友
Bazinga
当前离线
UID
1023230
帖子
5213
精华
0
积分
2607
阅读权限
70
在线时间
158 小时
注册时间
2013-12-20
最后登录
2015-10-22
金牌会员
UID
1023230
1
#
打印
字体大小:
t
T
Bazinga
发表于 2014-10-29 19:33
|
只看该作者
低成本人机交互设计:基于FPGA的体感游戏
显示器
,
成本
,
游戏
体感游戏是视觉与本体感觉和动作控制的集合,伴随着虚拟现实技术的迅猛发展,正逐步走入市场。为了达到视觉、运动相结合的目的,采用
加速度
传感器
与VGA显示器相结合的方法,通过戴有速度手套的手的运动来完成对游戏界面中的滑块控制,接住随机下落的方块而获得分数。最后进行了板级测试,实现了开机界面、模式切换、难度调节、计分、游戏暂停与重新开始等功能。通过验证,游戏获得了较好的互动性、参与感与沉浸感。
计算机游戏领域已经到了一个同质化相当严重的时代。机械性的重复相同的动作致使玩家的兴趣越来越低。而现在游戏产业迎来了一个转折点,开始向交互性、置入感等方向发展。而良好的沉浸感要求游戏必须在互动性上有创新。过去,游戏大部分是通过键盘与鼠标来完成控制的,但随着传感器技术、微机视觉的进步,使得利用自己的行动来对机器发出指令的愿望得以实现。这种人机互动模式以更为自然性、直观性的运动、语音等摸式代替电脑的键盘和鼠标等外设。
现在已经有了很多创新成果,如三维摄像机、传感器球拍、数据手套等。一些公司也推出了各种平台,如日本任天堂公司的Wii、微软的Kinect、华硕的Xtion等。这些设备一般较为昂贵,本文设计目的是低成本来完成人机交互,利用FPGA作为主控制器,借助现代家庭较为普及的电脑的显示器,实现体感游戏的设计,提高游戏的沉浸感与趣味性,同时保持了对于键盘操作的兼容性。
1 系统设计方案
该系统主要由两个部分组成,分别是数据采集单元、显示控制单元。数据采集单元主要实现对运动控制信息的采集、数据的修正与处理、上传到显示控制单元等功能。显示控制单元主要实现游戏的开始、难度设定、模式切换、显示等功能。整体框图如图1所示。
图1 系统整体框图
1.1 数据采集单元
数据采集单元主要包括从控制器、加速度传感器、LED显示、按键、串口四个硬件部分。各部分的选择和功能如下:
从控制器选用STC89C51单片机,此系列单片机是宏晶科技推出的新一代超强抗干扰、低功耗、高性价比的单片机,指令代码完全兼容传统8051单片机,并且有LQFP封装,使得速度手套可以做到小型化。
加速度传感器选用的是ADXL345。它是一款完整的3 轴加速度测量系统。既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。本设计中利用了其测静止加速度的功能,得到倾斜角度,从而产生控制指令。
采集单元中用了两个LED灯,用于显示当前速度手套的输出状态:当左侧灯亮说明发出的控制信号为向左运动。两个按键输入用于游戏的控制信号暂停和分数清零的信号的产生。
采集单元利用串口将控制信号上传到显示控制单元。RS232是由电子工业协会(Electronic Industries Association,EIA)所制定的异步传输标准接口。在低通信速率下,直接连接的最大物理距离为15 m,可以使得人能远离屏幕来操作游戏,防止眼睛疲劳。后期会考虑采用315模块来实现无线的操作。
1.2 显示控制单元
此单元是整个系统的核心,完成了游戏的大部分功能设计,主要包括主控制器、VGA接口、PS/2接口、独立按键、数码管、串口等硬件部分。
主控制器采用Altera于2004年推出的CycloneⅡ的FPGA,型号为EPC2C8208。其功耗较低,核电压只有1.2 V,片上RAM 有162 Kb,可以用于配置为RAM,ROM,FIFO等,时钟利用50 MHz的有源晶体产生。总控制单元负责接收数据采集单元的信号、两种游戏模式的切换和控制指令的产生、VGA显示控制、游戏初始化界面存储等。
2 系统软件实现
游戏主要实现的功能有:欢迎界面与游戏界面的切换以及VGA显示;速度手套模式与键盘模式的切换;计分系统,包含分数的显示、清零等;游戏的难度等级设置、游戏的开始界面设计、暂停、结束、重新开始等功能。软件设计包括单片机、FPGA的程序设计以及两者通信指令编码准则设定三个方面。
2.1 单片机程序设计
单片机部分主要功能为通过采集加速度传感器和按键的信号,根据两个单元间的编码准则产生相应的控制指令,通过串口上传到显示控制中心。程序设计流程图如图2所示。
图2 单片机程序流程图
2.2 FPGA程序设计
FPGA是游戏的主控制器,完成了游戏的大部分功能,顶层设计文件中主要包括输入显示类模块、VGA核心模块、存储模块三类模块。其中输入显示类模块主要有分频模块、PS/2接收模块、串口接收模块、指令处理模块、数码管显示模块;存储模块包括基于FPGA 片上RAM的RAM和ROM模块。顶层设计框图如图3所示。
图3 FPGA顶层设计框图
2.2.1 输入显示类模块
独立按键用于模式的选择、游戏难度的调节、由欢迎界面到游戏界面的切换;串口部分用于接收来自数据采集单元的控制指令,经过译码模块后送入模式选择模块;PS/2模块用于接收键盘信号输入并产生指令送入模式选择模块;数码管用于显示当前的游戏模式、难度等级和获得分数。
显示器采用的分辨率为640×480 的,刷新频率为60 Hz,根据VGA常见刷新频率时序表可知,需要时钟为25 MHz左右,板子输入时钟为50 MHz,经过分频模块后可以提供25 MHz的时钟。
2.2.2 存储模块
设计中,由于采用的是FPGA的片上RAM作为存储介质,受到其162 Kb的约束,只能设计大小为256×256的单色界面。存储的数据位宽为32位,共2 048个,地址线为11位。
游戏界面因为要不断修改,故存放在基于FPGA片上RAM的RAM模块中。其可同时有读写使能,因此可以同时读写,即使同时读写同一个地址也不会出错,而且还可以设置成读写地址线各自独立,不用考虑时分复用使用地址线的问题。这样在实际代码中就可以将RAM的读和写完全独立考虑,分别由扫描输出模块和数据处理模块完成,两者互不干扰。图4是RAM的读写时序图。
图4 配置RAM中读写数据时序图
开始界面由于是固定的,放入ROM 中,初始化ROM文件中的数据可通过Matlab处理得到。现在有一些字模软件虽然可以读取要显示的图片,但给出的数据格式并不能初始化ROM的,因此,利用Matlab编写了一段图片处理程序,可以读取图片,然后经过处理,生成一个可以直接复制到ROM初始化文件中的数组形式。这样,使得图片显示操作简单,图片替换更容易。
2.2.3 VGA控制模块
在游戏界面设计中,存在主要的难点:小方块随机间隔下落、难度等级设置等。
在游戏中,为了增加游戏的难度,在设计中,小方块的降落为两个,而且是有一定的间隔、在随机位置下落。小方块的动态显示是通过不断修改RAM中要显示图像的数据来实现的。游戏中方块的长为32 个像素(对应RAM中存储的数据位宽,方便修改),则界面中有8条下落路线,小方块的下落是从界面顶端开始的,也就意味着RAM中的数据修改是从前8位的某一位开始的,因此实现随机下落只需要产生一个1~8范围的随机数。在设计中,通过设计了一个伪随机数产生器,生成一个9以内的随机数作为RAM修改数据的起始位。
第二个小方块的下落是通过设定一个标志位Num2,当第一个方块下落到游戏界面的中间位置时,置位Num2,从而触发了第二个小方块的下落进程,第二个方块开始下落。其中,两个小方块下落修改数据的操作都是在VGA扫描的消隐阶段完成的,因此每进行一次帧扫描,小方块下落1个像素。VGA刷新频率为60 Hz,因此小方块每秒会下落60个像素。
当游戏操作者漏接的方块数据到达一定数目m,游戏结束。难度等级是通过设置被控制方块左右移动灵敏度和漏接方块数目m 来实现的。灵敏度越高,m 越小,游戏等级越高。
2.3 通信编码准则
单片机从加速度传感器获得的数据中提取出y 轴的加速度值,由此可以判断出速度手套的此时的状态。它送往串口的数据不是加速度值,而是编码后的指令。具体的编码译码原则设定如表1所示。
表1 串口通信编码准则
表1 中FPGA 译码是FPGA 的串口接收模块获得后,解码之后送给VGA显示模块的指令。游戏中保持了传统键盘的兼容性,具体实现是通过PS/2模块根据键盘输入信号产生与表格1中FPGA译码相同的指令,送给VGA显示模块,完成对游戏的控制。
3 结语
本文设计了一款基于FGPA的体感游戏,通过利用人体的动作完成对游戏的操作,利用VGA显示技术来到达更好的类似虚拟现实的效果,同时系统也保持了对传统游戏键盘操作的兼容性。
游戏通过加入人体的互动,使得游戏者可以对游戏有一种身临其境的感觉,增加游戏趣味性、交互性、构想性,同时也使得参与者身体得到运动与锻炼。
游戏最后实现了常规游戏的基本功能,主要有欢迎界面与游戏界面的切换以及VGA显示;速度手套模式与键盘模式的切换;计分系统,包含分数的显示、清零等;游戏的难度等级设置、显示以及游戏的结束;游戏的暂停、重新开始等功能等。最后在硬件平台实现,表明游戏具有可玩性、趣味性,并能使游戏者获得较好的游戏体验。
收藏
分享
评分
the king of nerds
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议