sopc乐曲演奏大作业

上传人:小** 文档编号:91139385 上传时间:2019-06-26 格式:DOC 页数:27 大小:2.92MB
返回 下载 相关 举报
sopc乐曲演奏大作业_第1页
第1页 / 共27页
sopc乐曲演奏大作业_第2页
第2页 / 共27页
sopc乐曲演奏大作业_第3页
第3页 / 共27页
sopc乐曲演奏大作业_第4页
第4页 / 共27页
sopc乐曲演奏大作业_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《sopc乐曲演奏大作业》由会员分享,可在线阅读,更多相关《sopc乐曲演奏大作业(27页珍藏版)》请在金锄头文库上搜索。

1、综合实验 基于NiosII的乐曲演奏设计单 位:班 级:组 员: 指导老师:首 都 师 范 大 学2012年5月目录一.设计概述3二设计要求3三设计方案(总体设计原理、软件设计、硬件设计)33.1总体设计原理33.2 软件设计流程图43.3硬件设计8四实验环境9五软件实验步骤9六. 头文件116.1 music.h116.2 LCD.h19七实验结果及分析23八总结及遇到问题24九思考题:24一.设计概述 本设计基于SOPC builder和 Nios II 8.0的乐曲演奏,使用蜂鸣器进行播放歌曲,本设计编写多首歌曲可以循环播放,并在液晶屏上显示歌曲名称和切换名称。 实验前准备: 1、该实验

2、需要使用七个模块组中的第七个功能单元,所以三个拨码开关处于“处于“110”时,即MODEL_SEL2和MODEL_SEL3拨下处于“OFF”状态,MODEL_SEL1拨下处于“ON”时,选择该模块。 2、拨码开关MODEL_SEL5-8全置于“ON ”状态,即MODEL_SEL5-8拨下处于“ON ”状态时通过USB BLASTER接口下载。当全部拨下处于“OFF”时可使用开发平台上LAB_JTAG_PS_AS 接口下载或者核心开发板上JTAG接口下载。这里用户可根据自己所用的下载线来选择适当的下载方式和相应的MODEL_SEL5-8的状态。二设计要求 通过使用PWM对交流蜂鸣器进行控制,实现

3、多首乐曲(6首)的播放。实现如下功能:1. 歌曲播放2. 暂停功能3. 多首歌曲的切换(6首)其他扩展要求:在液晶屏上显示歌曲的名称,以及上下切换字符(before,after)三设计方案(总体设计原理、软件设计、硬件设计)3.1总体设计原理实验箱的蜂鸣器是交流蜂鸣器,在BZSP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。因此可以利用一个PWM来控制BZSP,通过改变PWM的频率来得到不同的声响,以此来播放音乐。PWM设计说明PWM输出一个占空比可调的方波。当一个周期11个时钟,高电平输出7个时钟时的PWM输出波形如下图所示。图1 PWM输出波形图表一 内部寄存器:寄存

4、器名地址偏移量访问属性 描 述clock_divide00读/写用来设定PWM输出周期的时钟数duty_cycle01读/写用来设定一个周期内PWM输出低电平的时钟个数enable10读/写使能和关闭PWM输出,为1时使能PWM输出保留11播放歌曲Stop=1暂停Play=1否是是否3.2 软件设计流程图图2 程序流程框图 首先,判断暂停键是否按下,如果没有,则播放歌曲,如果按下来了暂停键,就执行暂停功能。暂停后判断播放键有没有按下,如果按下了播放键,则在断点的地方接着播放歌曲,如果没有,则一直暂停到播放按键按下。主程序代码:6首歌曲播放,暂停,及切换上一首、切换下一首同时显示歌名和play、

5、stop、next、before:延时程序,延时1ms如果暂停键没有按下,则播放六首歌如果暂停键按下了,显示“stop”。如果播放按键没按下,把0写进蜂鸣器,即暂停,如果播放按键按下了,在断点处继续播放歌曲上下首歌切换:第三个按键切换上一首第二个按键执行暂停功能第一个按键执行播放功能判断按键函数第四个切换下一首如果选择第一首歌,则LCD清屏,显示第一首歌歌名,同时显示“play”。余下5首同理图3 程序3.3硬件设计乐曲演奏需添加的IP核图4 硬件图四实验环境硬件: PC机 GX-SOC/SOPC-DEV-LAB PLATFORM创新开发实验平台 GX-SOPC-EP2C35-M672核心板软

6、件: Quartus II 8.0 Nios II 8.0五软件实验步骤1、.把 altera_avalon_pwm (IP核)拷贝到自己的工程文件夹目录下,2. 在主菜单打开Tools-SOPC Builer 图5 生成PWM核3.重新命名为 bzsp,点击鼠标右键,进行自动分配 Addressess 和IRQ,点击Generate图5 对PWM核重命名4.生成成功以后回到Quartus II界面软件中必须替换更新:在.bdf鼠标右键单击空白处,单击Update Symbol or Block,即可。5.在NIOS II IDE软件环境中点击New-Nios II C/C+ Applicat

7、ion,建立一个工程 6.在SOPC Builder System PTF File 选择NIOS2.ptf,C/C+的应用工程名Name重命名,点击Next7.选中Create a new system library named,点击Finish. 8.建立music.h文件和LCD.h头文件9. 编译工程10. build 成功后下载硬件11. 运行RUN28六. 头文件6.1 music.h#ifndef _MUSIC_H#define _MUSIC_H#include system.h/ rhythm: quarter note as a meter/持续时间的长短#define R

8、HYTHM 36#define _1 RHYTHM*4 /note#define _1d RHYTHM*6 /dotted note #define _2 RHYTHM*2 /halfnote#define _2d RHYTHM*3 /dotted halfnote #define _4 RHYTHM*1 /quarter note#define _4d RHYTHM*3/2 /dotted quarter note #define _8 RHYTHM*1/2 /eighth note#define _8d RHYTHM*3/4 /dotted eighth note #define _16

9、RHYTHM*1/4 /sixteenth note#define _16d RHYTHM*3/8 /dotted sixteenth note#define _32 RHYTHM*1/8 /thirty-second note/低音#define _1DO (ALT_CPU_FREQ/131)#define _1DOr (ALT_CPU_FREQ/139)#define _1RE (ALT_CPU_FREQ/147)#define _1REr (ALT_CPU_FREQ/155)#define _1MI (ALT_CPU_FREQ/165)#define _1FA (ALT_CPU_FREQ

10、/175)#define _1FAr (ALT_CPU_FREQ/185)#define _1SOL (ALT_CPU_FREQ/196)#define _1SOLr (ALT_CPU_FREQ/207)#define _1LA (ALT_CPU_FREQ/220)#define _1LAr (ALT_CPU_FREQ/233)#define _1SI (ALT_CPU_FREQ/247)/中音#define _DO (ALT_CPU_FREQ/262)#define _DOr (ALT_CPU_FREQ/277)#define _RE (ALT_CPU_FREQ/294)#define _R

11、Er (ALT_CPU_FREQ/311)#define _MI (ALT_CPU_FREQ/330)#define _FA (ALT_CPU_FREQ/349)#define _FAr (ALT_CPU_FREQ/370)#define _SOL (ALT_CPU_FREQ/392)#define _SOLr (ALT_CPU_FREQ/416)#define _LA (ALT_CPU_FREQ/440)#define _LAr (ALT_CPU_FREQ/466)#define _SI (ALT_CPU_FREQ/492)/高音#define _DO1 (ALT_CPU_FREQ/523)

12、#define _DO1r (ALT_CPU_FREQ/554)#define _RE1 (ALT_CPU_FREQ/579)#define _RE1r (ALT_CPU_FREQ/740)#define _MI1 (ALT_CPU_FREQ/651)#define _FA1 (ALT_CPU_FREQ/695)#define _FA1r (ALT_CPU_FREQ/740)#define _SOL1 (ALT_CPU_FREQ/784)#define _SOL1r (ALT_CPU_FREQ/830)#define _LA1 (ALT_CPU_FREQ/880)#define _LAR1r

13、(ALT_CPU_FREQ/932)#define _SI1 (ALT_CPU_FREQ/983)#define SONG_SIZE1 200#define SONG_SIZE2 200#define SONG_SIZE3 200#define SONG_SIZE4 200#define SONG_SIZE5 200#define SONG_SIZE6 200#define MUTE(TONE) (TONE)2 /低音为25占空比#define LOUD(TONE) (TONE)1 /高音为50占空比/1=G 3/4/乐曲为一个多行3列的2维数组/第1列为音调,第2列为节拍,第3列音高(高音、低音)int burroSONG_SIZE13 = _DO,_2, MUTE(_DO),/1 _MI, _32,0, _DO,_2, MUTE(_DO),/1 _MI, _32,0, _DO,_2, MUTE(_DO),/1 _MI, _32,0, _MI,_2, MUTE(_MI),/3_MI, _32,0, _SOL,_2, LOUD(_SOL),/5_MI, _32,0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号