欢迎来到天天文库
浏览记录
ID:62000072
大小:934.97 KB
页数:21页
时间:2021-04-10
《简易钢琴游戏实验报告---副本.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、北京邮电大学实验报告实验名称:简易钢琴游戏学院:信息与通信工程学院班级:2011211118姓名:____####学号:_2011210###日期:2013.11.9一、实验名称:简易钢琴游戏二、实验任务要求:基本要求:1、用8×8点阵进行游戏显示。2、BTN1~BTN7七个按键模拟钢琴演奏时的“1234567”七个音符。点阵的第一列对应音符“1”,第二列对应音符“2”,依此类推,低中高音自定。3、光点在点阵第一行随机出现,逐点下落,下落速度为0.2秒/行,如图1所示。4、在光点下落到点阵最后一行之前的过程中,如果按下与该列点阵相应的音符键,该光点消失,蜂
2、鸣器演奏相应的音符声音,计分器加1。如果在光点下落到最后一行依然没有进行相应的按键操作,该光点消失,计分器不加分。计分器由数码管显示。5、每隔1秒在点阵的不同列的第一行出现一个光点,如图2所示。6、游戏时间为30秒,数码管倒计时显示。提高要求:1、光点在点阵某行随机出现,然后逐点下落。2、下落速度随机变化。3、光点按照存储的乐曲顺序和速度的出现。4、自拟其它功能。三、系统设计:1、设计思路:分频器把50MHZ的时钟频率分别分成12MHz和1MHZ两个时钟,用于分频产生声音、以及数码管和点阵的扫描。主进程进行按键(address)的判断,分别产生相应的ton
3、eindex(音调)和grade(分数)为发声和分数显示做准备,同时countdown(倒计时)每一秒进行递减。将输出的grade和countdown分别进行除10和对10取模操作,进入数码管显示模块得到分数和倒计时显示;输出的toneindex进入生成音节的分频预置数的tonetaba。Tonetaba把分频预置数的码tone输入speaker来控制12MHZ的脉冲分频,得到所需要的音符频率。音调分频模块GradeCol0~col7Toneindex输入按键检测模块倒计时模块分数模块点阵赋值模块数码管cat选通显示点阵逐行扫描显示蜂鸣器Countdown
4、2、系统模块3、分块设计:l主模块:当reset=‘1’时,进行复位。然后检测按键是否按下,不按下则不发声不加分;若是停止按键,则是停止发声。若有按键(address),则依次从点阵的最下一行开始检测按键是否正确(检测到第六行后应同时检测当前检测行的前五行为全0,以保证点阵上同时有两点时上面的一点不会被错误的消掉),按键正确则grade(得分)加分。每隔0.2秒点阵个各行赋值依次下移一行。Countdown(倒计时)每一秒减一,同时给点阵光点出现的初始位置赋一次值。将输出的grade和countdown分别进行除10和对10取模操作,分别对应其十位和个位。
5、l数码管显示模块:建立0-9十个数字相应的表,使用1M的时钟对输入的分数和倒计时分别扫描显示(show)。l点阵显示模块:使用1M时钟一次扫描点阵每一行的值,然后赋给col进行显示。l蜂鸣器模块:将传入的toneindex建表(tonetable)依次转化为相应的分频预置数,然后把12M的时钟按分频预置数进行分频,再进行二分频以使声音更清晰。三、仿真波形及波形分析1、1M分频:图示为一个50分频器,本实验中使用的是50M的输入时钟,则可以分成一个1M的时钟,同时还分了一个12M的时钟,这里未给出。2、按键转换按键转换模块,从图中我们可以看出,根据输入的按键
6、(address)分别转化为相应的toneindex,为后续用12M的时钟分成相应的音调做准备。比如,address=”0001000”时代表的是按btn4,则转换成”100”;当无按键的时候,即address=”0000000”时,toneindex=”000”蜂鸣器不发声。3、转换成音调分频预置数将输入的toneindex转化为相应的预置分频数,我们可以看到,当toneindex为111时,对应的预置分频数为17174、按预置数分频(1717)我们可以通过这个波形图检测当分频预置数为1717时,分频比为12*(2047-1717)*2=7920,则对应
7、的音调为12M/7920等于1975HZ。对应高音7.5、数码管显示从图中我们可以看到数字0,对应的show为”1111110”,其他的1-9的数字都是依次对应show的值。同时,通过一个1M的时钟进行扫描,使数码管无闪烁现象。6、点阵显示从图中我们可以看到,以1M的时钟逐行扫描点阵,使点阵看起来不会闪烁。用row来控制各行的选通。比如。Row=”11111011”时,只有第三行有显示。五、源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;EntityPinao
8、Masterisport(clk:instd_logic;--输入
此文档下载收益归作者所有