一、题目设计
由于时间和精力有限,通过实践进一步熟悉课堂所讲知识,根据已有的工程,尝试移植到新的硬件系统上。
二、游戏设计及面临的问题
游戏为简单的典型的弹珠台类游戏,游戏区域为96×64(point,每点为4×4象素),方块的边长可以自定义,在源文件中修改,现在方块为5×5点,弹板为9×2点;由键盘的左ctrl和左alt键控制,其中ctrl为弹板左移,alt为弹板右移。下载后需要按reset键开始游戏;当没有接住方块后,方块会自动在中间重新发射,无需进行Reset。
由于新的硬件系统和以往的系统相比,有着显著的不同,采用的FPGA芯片、晶振也不一样,面临的问题有:
⑴ram的重新选择
⑵RamControl逻辑图重新绘制
⑶晶振分频的重新处理:之前的硬件采用的是32M晶振,为了实现VGA的输出,进行了分频处理。但是现在采用的试验板上自带有25M晶振。相关的内容需要重新处理。
三、具体实现
工程结构图:

顶层设计的结构如下:

设计主要包括下面几个部分:
1、游戏逻辑控制(gamectr),负责游戏逻辑及每帧的象素的位置输出
2、内存(显存)逻辑控制(RamControl),负责显存写入及输出
3、VGA接口控制(vgasig, vgacore),负责实现VGA的时序
4、象素绘制逻辑控制(pixel),负责按输入坐标值往显存的对应位置写入象素信息
5、PS/2接口控制(keyboard),负责键盘的控制逻辑与游戏控制信号的生成
存在的问题
目前经过修改,已经可以综合通过,但是下载到实验板上却没有VGA信号输出……
个人分析最有可能出问题的地方是晶振的处理,使用25M晶振却依然采用32M晶振的分频方式很有可能导致VGA显示不正常;另外可能有问题的地方是片上资源不足。我还在进一步调试。有问题会及时请教老师^_^


