您的当前位置:首页正文

excd-1 Lab19 俄罗斯方块

2022-03-08 来源:易榕旅网
北京中教仪装备技术有限公司

实验十九 俄罗斯方块游戏的设计

一、 实验前准备

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

因篇幅问题不能全部显示,请点此查看更多更全内容