实验十九 俄罗斯方块游戏的设计
一、 实验前准备
1. EXCD-1可编程片上系统开发板; 2. 下载线; 3. 5V电源;
由于实验中要使用VGA接口,确认DIP开关JP2拨至上方(VGAPORT);
二、 实验目的
1. 学习并掌握应用PS/2键盘以及VGA接口显示的使用。 2. 掌握综合使用不同接口的设计方法。
三、 实验内容
1. 总体设计
下图给出了该设计的模块结构图。该设计由下面模块组成:键盘输入模块,游戏控制模块,图像显示模块,文字显示模块,存储单元,复用单元和VGA控制模块组成。其中图像显示模块和文字显示模块复用VGA控制模块。游戏控制模块,图像显示模块和文字显示模块通过存储单元交换数据。
图19-1 俄罗斯方块系统结构组成图
图19-2给出了系统的模块连接关系,其各个模块的主要功能有: 1) 2) 3) 4) 5)
keyboardVhdl:键盘接收模块,读取键盘发送的扫描码; kbfilter:键盘识别模块,识别扫描码是否为指定按键;
gamecontrol:游戏控制模块,程序主控单元,通过状态机控制; score:得分统计模块,得分统计和速度控制;
RAMB4_S4_S4:双口RAM模块,包含游戏界面图像块的色彩和位置信息;
1
北京中教仪装备技术有限公司
6) 7) 8) 9)
RAMB4_S8_S8:双口RAM模块,包含游戏文字界面;
text_display:文字显示模块,读双口RAM只能显示的文本信息信息生成像素; mux:复用选择单元,选择平面图像显示还是文本显示; VGA:VGA模块,生成VGA接口显示控制信号;
2
北京中教仪装备技术有限公司
图19-2 系统结构详细模块图
3
北京中教仪装备技术有限公司
2. 系统各个模块的设计 1) 键盘接口模块的设计
这个模块读取键盘发送的扫描码. 该模块实现键盘到主设备的单向通信,并由启动位和停止位控制。图给出了键盘接口符号描述。表给出键盘接口模块的信号定义。
表19-1键盘接口信号定义
信号 clk kc kd rst sseg(7:0) an
模式 输入
功能描述 主时钟输入
kdclksseg(7:0) 输入 PS/2键盘时钟 输入 PS/2键盘数据 输入 输出 输出
异步复位 扫描码 报警
kcrstan 图19-3 键盘接口符号
2) 键盘识别模块的设计
如果扫描码送给下一个模块时,ssegout将得到”segin”的值,”send”输出将该改变其值,从‘0’到‘1’,或者从‘1’到‘0’。
表19-2键盘识别模块接口信号定义
mclk an ssegin(7:0) ssegout(7:0)
send
输入 输入 输入 输出 输出
主时钟输入
报警输入
扫描码
扫描码过滤
报警输出
mclk图19-4 键盘识别模块符号 send ssegin(7:0) ssegout(7:0) an 信号 模式 功能描述
3) VGA接口模块的设计
该模块为VGA显示模块,该模块提供VGA接口控制信号。将文字和图像信息显示在VGA显示器上。图给出了VGA接口模块符号。表给出了VGA接口模块信号定义。
4
北京中教仪装备技术有限公司
表19-3 VGA接口模块信号定义
信号 mclk pix(2:0) clkd blu grn hs red vs vid text
模式 输入 输入 输出
功能描述 主时钟输入 像素颜色 时钟– 25MHz
pix(2:0) bluclkdgrnhs redtext输出 VGA蓝色信号 输出 VGA绿色信号 输出 VGA行同步信号 输出 VGA红色信号 输出 VGA同步信号 输出 输出
激活tetrix显示元件 激活文本显示元件
mclk vidvs图19-5 VGA接口模块符号
4) 图像显示模块的设计
该模块是显示控制模块。表给出了图像显示模块的信号定义,图给出了图像显示模块的符号。
表19-4 图像显示模块信号定义
信号 clkdiv rect(3:0) mclk Vid pixel(2:0) crx(4:0) cry(4:0)
模式输入输入输入输入输出输出输出
功能描述 主时钟输入 BRAM数据输出
时钟– 50MHz, 用于绘制更多颜色
使能输出 –使能元件
像素颜色 BRAM地址输入 BlockRAM地址输入
rect(3:0) crx(4:0)clkdivcry(4:0)mclkpixel(2:0)vid图19-6 图像显示模块符号
5) 文本显示模块的设计
该模块生成文本像素信息。表给出了文本显示模块设计,图给出了文本显示模块的符号。
5
北京中教仪装备技术有限公司
表19-5 文本显示模块信号定义 信号 clkd car(7:0) text pix(2:0) crx(4:0) cry(3:0)
模式 输入
功能描述 主时钟输入 (25MHz)
car (7:0)
textclkd crx(4:0) cry(3:0) 输入 BRAM数据输出 输入 输出
使能输入- 使能元件
像素颜色
pix(2:0) 图19-7 文本显示模块符号 输出 BRAM地址输入 输出 BRAM地址输入
6) 得分统计模块的设计
该模块为得分统计模块,生成的文本信息存入双口的SRAM,交由后端显示模块调用。 表给出了得分统计模块的信号定义。图给出了得分统计模块的符号。
表19-6 得分统计模块信号定义
信号 mclk cl ng car(7:0) crx(4:0) cry(3:0) speed(1:0) wen
模式 输入 输入 输入
功能描述 主时钟输入 计数线 新游戏
cl car(7:0) crx(4:0)
ng mclk cry(3:0) speed(1:0) wen 输出 BRAM数据输入 输出 BRAM地址输入 输出 BRAM地址输入 输出
游戏速度
图19-8 得分统计模块符输出 BRAM写使能
7) 游戏控制模块的设计
该模块是整个程序的核心模块,通过状态机的形式对程序的运行状态进行切换和控制。表给出游戏控制模块信号定义。图给出游戏控制模块符号。
6
北京中教仪装备技术有限公司
表19-7 游戏控制模块信号定义 信号 mclk an sseg(7:0) speed(1:0) rectin(3:0) crx(4:0) cry(3:0) rectout (3:0)
cl ng Wen
模式 输入 输入 输入 输入
功能描述 主时钟输入 报警 键盘扫描码 游戏速度
speed(1:0)rectin(3:0)crx(4:0) cry(4:0) rectout(1:0) sseg (7:0) cl anmclk ng wen
输入 BRAM数据输入 输出 BRAM地址输入 输出 BRAM地址输入 输出 BRAM数据输入 输出 输出
计数线 新游戏
图19-9 游戏控制模块符
输出 BRAM写使能
通过与kbfilter模块连接的”sseg”和”an”输入,该模块使用”sseg”控制游戏的所有步骤。使用”cl”和”ng”输出信号和”speed”输入信号和得分统计模块通信。其它信号用来和俄罗斯方块BRAM通信。该模块使用了一个庞大的状态机来控制,几乎每个状态都有子状态。图给出了状态图的描述。表给出了各个状态的功能。
每一片由4块组成,这些块保存在8寄存器中。 1)- x 坐标 : p1x, p2x, p3x, p4x 2)- y 坐标 : p1y, p2y, p3y, p4y
该设计使用寄存器来存储片颜色,其它寄存器存储片的配置信息。需要这些寄存器来指导如何旋转这些片,当片被旋转后,寄存器将得到新的代码。
7
北京中教仪装备技术有限公司
图19-10 状态图的描述 表 19-8 各状态功能
代码
状态
Description
当F1键按下时,状态机将跳转到当前状态。这个状态没有任何逻辑行为;
0000 stop 当F2按键按下时,状态机将转移到下一个状态。 0011 reset 使用两个计数器来访问俄罗斯方块的BRAM,写”0000”代码(表示目前
8
北京中教仪装备技术有限公司
BRAM没有任何东西)
“makex”将从0-9计数,”makey”将从0-19计数。每当”makex”到达9后,将返回0,同时”makey”递增1。
0010 initiate 读”random”和”color”信号来选择随机的俄罗斯方块片和它的颜色。
等待”cntClk”信号到达所选择的值,然后跳转到”test_down”状态或从键
0111 wait 盘读取命令。
测试俄罗斯方块是否到达底部或者在该片下是否有其它模块,在那种情
0110 test_down 况下,下个状态将是”test_stop”,否则将跳转到”step_down”状态。 0001 test_stop 如果一个片的y坐标为”0001”,则游戏停止,将跳转到”stop”状态。
使用和”reset”状态下一样的步骤,它将访问几乎所有的块来寻找填充行。1111
del_rows
当找到一个填充行时,将跳转到”copy”子状态,该状态将移动上面的行,其位置下降。对于这种状态,重睹下面的步骤,读一个块的包含,并且复制它到底下的块。
1000
step_down
将删除片,并且缩减一个位置
测试是否俄罗斯方块达到最左边的位置,或者附近有其它片;在那种情
1110 test_left 况下,下一个状态将是”wait”,否则将跳转到”step_left”状态。 1010 step_left 当删除片,并且向左缩减重画。
测试是否俄罗斯方块达到最右边的位置,或者附近有其它片;在那种
1101 Test_right 情况下,下一个状态将是”wait”,否则将跳转到”step_right”状态。 1001 step_right 1011 test_rotate 1100 rotate 当删除片,并且向右缩减重画。 测试俄罗斯方块能否旋转。 当删除片,并且在旋转的位置重画。
四、 引脚分配及操作说明
表19-9 俄罗斯方块引脚分配
信号名及对应板上资源 时钟输入 VGA颜色输出 VGA颜色输出 VGA颜色输出 VGA同步信号
信号名 FPGA引脚分配
mclk red grn blu hs
9
P80 P151
p146 p140 p139
北京中教仪装备技术有限公司
VGA同步信号 PS/2键盘信号 PS/2键盘信号
vs kc
p138
P22
kd P19 游戏操作说明
PS\\2键盘上的按键主要用到F1、F2、A、D、S、Space F1 停止游戏或暂停游戏; F2 开始游戏; A 左移按键; D 游戏按键; S 下加速按键; Space 模块旋转按键;
五、 程序代码
源程序代码详见光盘。
联系我们
地址:北京市西城区德外大街4号 C座 邮编:100120 客户服务热线:4006061700 传真 : 010- 58582440
销售Email : ECsales@pub.hep.cn
技术支持Email:Ecservice@pub.hep.cn 网址 :http://ecc.hep.com.cn
10
因篇幅问题不能全部显示,请点此查看更多更全内容