乐曲硬件演奏电路设计(21页).doc
《乐曲硬件演奏电路设计(21页).doc》由会员分享,可在线阅读,更多相关《乐曲硬件演奏电路设计(21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-江西理工大学应用科学学院SOPC/EDA综合课程设计报告设计题目: 硬件音乐演奏电路设 计 者: 徐达健 学 号: 08040108131班 级: 测控081指导老师: 王忠锋完成时间: 2011年01月07日设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)目录一:设计原理3二:总体框图5三:选择器件7四:功能模块:8 1:NoteTabs模块(程序 仿真图)8 2:ToneTaba模块(程序 仿真图)11 3:Speakera模块(程序 仿真图)12五:总体设计电路图16 1顶层设计的电路原理图(Songer模块)16 2Songer模块的程序16 3Son
2、ger顶层文件的仿真图形174、锁定引脚175、下载验证18六:结束语19七:心得体会20八:参考文献21一、设计原理1.音乐演奏电路原理这种频率的振荡可以用不同音符的代码所控制,从而分出不同频率的振荡,它采用编程方式将各种音符的代码预先存的计算机的内存中,利用软件和一定硬件电路配合将存放的乐曲代码有节地进行演奏,产生电子音乐。乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。图1.1 音乐演奏电路原理图2.音符频率的获得多本文中选取750KHz的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。对基准频率分频后
3、的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。表1中各音符的分频系数就是从750KHz的基准频率二分频得到的375KHz频率基础上计算得到的。由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=2048-1=2047,此时扬声器不会发声。3.乐曲节奏的控制本文中的梁祝乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可
4、产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。4.乐谱发生器本文将乐谱中的音符数据存储在NoteTABS中,如“梁祝”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在NoteTABS中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地存入NoteTABS中一个音符数据。二、总体框图 图2.1总体框图该主系统由三个模块:tonetaba
5、.vhd、notetabs.vhd、speakera.vhd组成。首先定制notetabs.vhd、模块中的音符数据。根据给出的乘法器逻辑原理图及其模块的VHDL描述在Quartus II完成设计。完成编译,综合,仿真,管教分配,编程下载。1对于模块NoteTabs的功能描述:该模块的功能就是定义音符数据随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据中的音符数据。将从中通过ToneIndex4.0端口输向ToneTaba模块,演奏梁祝。在该模块中设置了一个8位二进制计数器(计数最大值为256)。这个计数器的计数频率为4Hz,即每一计数值的停留时间为0.25秒,恰为当
6、全音符设为1秒时,四四拍的4分音符持续时间。2对于模块ToneTaba,是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs的CLK的输入频率决定,这些值由对应于ToneTaba的5位输入值Index4.0确定,最多有32种可选值。输向ToneTaba中Index4.0的值ToneIndex4.0的输出值与持续的时间由模块NoteTabs决定。3模块Speakera是一个数控分频器,音符的频率可由此模块获得。由CLK端输入一个具有较高频率的信号,通过Speakera分频后由SPKOUT输出。由于直接从数控
7、分频器中出来的输出信号是脉宽极窄的脉冲式信号。为了利用驱动扬声器,需加一个D触发器以均衡其占空比,频率将是原来的1/2。Speakera对CLK输入信号的分频比由预置数Tone决定。SPKOUT的输出频率将决定每一音符的音调。三、选择器件模块NoteTabs,模块ToneTaba,模块Speakera,装有Quartus II软件的电脑。四、功能模块1对于模块NoteTabs 图4 .1模块NoteTabs我们可以直接将音符数据输送到NoteTabs模块中,它首先是编写音符数据文件,将乐谱中相应的音符存放在一个连续的地址上。因为1拍的时间定为1秒,提供的是4Hz的时钟频率(即1/4拍的整数倍)
8、,则需将这个音符存储在相应次数的连续几个地址上。随着NoteTabs中的计数器按时钟频率速度作加法计数时,音符数据将从中通过ToneIndex端口输向ToneTaba模块。NoteTabs中的音符数据模块程序为LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTabs IS PORT(clk1 : IN STD_LOGIC;-4HZ;ToneIndex : OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF NoteTabs ISSIGNAL CounTer : INTEGER RANGE
9、0 TO 138; BEGIN CNT8 : PROCESS(clk1, Counter)BEGINIF Counter = 138 THEN Counter=0;elsif (clk1EVENT AND clk1 =1) THEN CounterToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneI
10、ndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneInde
11、xToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乐曲 硬件 演奏 电路设计 21
限制150内