游戏界面因为要不断修改,故存放在基于FPGA片上RAM的RAM模块中。其可同时有读写使能,因此可以同时读写,即使同时读写同一个地址也不会出错,而且还可以设置成读写地址线各自独立,不用考虑时分复用使用地址线的问题。这样在实际代码中就可以将RAM的读和写完全独立考虑,分别由扫描输出模块和数据处理模块完成,两者互不干扰[7?8]。图4是RAM的读写时序图。
开始界面由于是固定的,放入ROM中,初始化ROM文件中的数据可通过Matlab处理得到。现在有一些字模软件虽然可以读取要显示的图片,但给出的数据格式并不能初始化ROM的,因此,利用Matlab编写了一段图片处理程序,可以读取图片,然后经过处理,生成一个可以直接复制到ROM初始化文件中的数组形式。这样,使得图片显示操作简单,图片替换更容易。
2.2.3 VGA控制模块
在游戏界面设计中,存在主要的难点:小方块随机间隔下落、难度等级设置等。
在游戏中,为了增加游戏的难度,在设计中,小方块的降落为两个,而且是有一定的间隔、在随机位置下落。小方块的动态显示是通过不断修改RAM中要显示图像的数据来实现的。游戏中方块的长为32个像素(对应RAM中存储的数据位宽,方便修改)[9],则界面中有8条下落路线,小方块的下落是从界面顶端开始的,也就意味着RAM中的数据修改是从前8位的某一位开始的,因此实现随机下落只需要产生一个1~8范围的随机数。在设计中,通过设计了一个伪随机数产生器,生成一个9以内的随机数作为RAM修改数据的起始位[10]。
第二个小方块的下落是通过设定一个标志位Num2,当第一个方块下落到游戏界面的中间位置时,置位Num2,从而触发了第二个小方块的下落进程,第二个方块开始下落。其中,两个小方块下落修改数据的操作都是在VGA扫描的消隐阶段完成的,因此每进行一次帧扫描,小方块下落1个像素。VGA刷新频率为60 Hz,因此小方块每秒会下落60个像素。
当游戏操作者漏接的方块数据到达一定数目m,游戏结束。难度等级是通过设置被控制方块左右移动灵敏度和漏接方块数目m来实现的。灵敏度越高,m越小,游戏等级越高。图5,图6分别是实物中,初始化界面和游戏界面。
2.3 通信编码准则
单片机从加速度传感器获得的数据中提取出y轴的加速度值,由此可以判断出速度手套的此时的状态。它送往串口的数据不是加速度值,而是编码后的指令。具体的编码译码原则设定如表1所示。
表1 串口通信编码准则
表1中FPGA译码是FPGA的串口接收模块获得后,解码之后送给VGA显示模块的指令。游戏中保持了传统键盘的兼容性,具体实现是通过PS/2模块根据键盘输入信号产生与表格1中FPGA译码相同的指令,送给VGA显示模块,完成对游戏的控制。
3 结 语
本文设计了一款基于FGPA的体感游戏,通过利用人体的动作完成对游戏的操作,利用VGA显示技术来到达更好的类似虚拟现实的效果,同时系统也保持了对传统游戏键盘操作的兼容性。
游戏通过加入人体的互动,使得游戏者可以对游戏有一种身临其境的感觉,增加游戏趣味性、交互性、构想性,同时也使得参与者身体得到运动与锻炼。
游戏最后实现了常规游戏的基本功能,主要有欢迎界面与游戏界面的切换以及VGA显示;速度手套模式与键盘模式的切换;计分系统,包含分数的显示、清零等;游戏的难度等级设置、显示以及游戏的结束;游戏的暂停、重新开始等功能等。最后在硬件平台实现,表明游戏具有可玩性、趣味性,并能使游戏者获得较好的游戏体验。
参考文献
[1] 薛凯.新型人机互动技术在游戏中的应用探索[J].宁夏师范学院学报,2011,32(6):55?58.
[2] 董士海.人机交互的进展及面临的挑战[J].计算机辅助设计与图形学学报,2004(1):1?12.
[3] 魏军辉.基于FPGA的PS/2键盘接口的设计[J].微计算机信息,2008,24(9):139?140.
[4] 刘韬,楼兴华.FPGA数字电子系统设计与开发实例导航[M].北京:人民邮电出版社,2005.
[5] 姚远,李辰.FPGA 应用开发入门与典型实例[M].北京:人民邮电出版社,2010.
[6] 张亚平,贺占庄.基于FPGA的VGA显示模块设计[J].计算机技术与发展,2007,17(6):242?245.
[7] 段磊.基于FPGA的VGA显示系统[J].世界电子元器件,2007, (9):38?42.
[8] 陈姚节,卢建华.基于FPGA的VGA显示接口的研究与设计[J].交通与计算机,2005,23(2):47?49.
[9] 陈彬.基于FPGA的视频图像处理系统设计[D].重庆:重庆大学,2006.
[10] 潘松.EDA技术与VHDL[M].3版.北京:清华大学出版社,2009.
[11] 陈志生,陈景贤.基于FPGA的多分辨率VGA图像控制器设计[J].现代电子技术,2008,31(13):187?189.
[12] 吴子贤,孙昊,庞少龙.基于ADSP-BF533的VGA显示控制器设计[J].电子科技,2013(9):189?191.