ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:215.14KB ,
资源ID:22227875      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22227875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(音乐硬件演奏器Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

音乐硬件演奏器Word格式.docx

1、c)掌握EDA的使用工具QuartusII,通过VHDL语言的编辑得出各个模块的电路内容;d)组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需要的两个基本要素,运用这两个基本要素所对应的数值,通过纯硬件的手段实现乐曲的演奏效果; e)本设计是通过内部固定的音乐内容来实现音乐的自动播放,通过本次 内容分析其优缺点。 二、总体框图 该主系统由三个模块:tonetaba.vhd、notetabs.vhd、speakera.vhd、div.vhd、dispa.vhd组成。首先定制notetabs.vhd、模块中的音符数据ROM”music”。根据给出的乘法器逻辑原理图及其模块的VHDL

2、描述在Quartus上完成设计。完成编译,综合,仿真,管教分配,编程下载。1对于模块NoteTabs的功能描述:该模块的功能就是定义音符数据ROM“music”随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据ROM中的音符数据。将从ROM中通过ToneIndex3.0端口输向ToneTaba模块,演奏梁祝。在该模块中设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。这个计数器的计数频率为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。2对于模块ToneTaba,是乐曲简谱码对应的分频预置数查

3、找表电路,其中设置了乐曲的全部音符所对应的分频置数,其中设置了“梁祝”乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs的CLK的输入频率决定,在此为4Hz。这13个值的输入由对应于ToneTaba的4位输入值Index3.0确定,而Index3.0的输入最多有16种可选值。输向ToneTaba中Index3.0的值ToneIndex3.0的输出值与持续的时间由模块NoteTabs决定。3模块Speakera是一个数控分频器,音符的频率可由此模块获得。由其CLK端输入一具有较高频率(这里是12MHz)的信号,通过Speakera分频后由SPK

4、OUT输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号。为了利用驱动扬声器,需加一个D触发器以均衡其占空比,频率将是原来的1/2。Speakera对CLK输入信号的分频比由11位预置数Tone10.0决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值Tone10.0与SPKOUT的输出频率就有了对应关系。例如在ToneTaba模块中若取出Tone10.0=1036,将发音符为“3”音的信号频率 4模块div是一个分频器,用于将50MHz分成12MHz和8Hz 5. 模块dispa是一个七段译码器,用于显示乐曲的简谱码。三、选择器件EPF10K10LC84

5、-4芯片,模块NoteTabs,模块ToneTaba,模块Speakera四、功能模块1对于模块NoteTabs 定义音符数据ROM“music”。 Music模块存放乐曲中的音符数据,它是利用LPM-ROM来实现的,将乐谱中相应的音符放在一个连续的地址上。它首先是编写音符数据文件,将乐谱中相应的音符存放在一个连续的地址上。因为1拍的时间定为1秒,提供的是8Hz的时钟频率(即1/4拍的整数倍),则需将这个音符存储在相应次数的连续几个地址上。然后对音符数据进行ROM定制。随着NoteTabs中的计数器按时钟频率速度作加法计数时,音符数据将从ROM中通过ToneIndex端口输向ToneTaba模

6、块。ROM中的音符数据模块(music)程序为:WIDTH=4;DEPTH=256;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN00:3;01:02:03:04:5;05:06:07:6;08:8;09:10:11:9;12:13:14:15:16:12;17:18:19:15;20:13;21:22:10;23:24:25:26:27:28:29:30:31:0;32:33:34:35:36:7;37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:

7、62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:END;其中WIDTH=4,表示数据输出为宽为4;DEPTH=256

8、,表示共有256个5位数据点;ADDRESS-RADIX=DEC,表示地址信号用十进制;DATA-RADIX=DEC,表示输出数据是十进制数。NoteTabs模块的程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT(clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC PORT(

9、address:IN STD_LOGIC_VECTOR(7 DOWNTO 0); clock:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT; SIGNAL Counter:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN CNT8:PROCESS(clk,Counter) BEGIN IF Counter=138 THEN Counter=00000000; ELSIF(clkEVENT AND clk=1)THEN CounterCounter,q=ToneIndex,clock=clk);该

10、模块的波形仿真图如下2对于模块ToneTabaToneTaba是乐曲简谱码对应的分频预置数查表电路。以下为ToneTaba的模块程序:LIBRARY IEEE;ENTITY ToneTaba IS PORT(Index:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CODE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HIGH:OUT STD_LOGIC; Tone:OUT STD_LOGIC_VECTOR(10 DOWNTO 0);ARCHITECTURE one OF ToneTaba ISSearch:PROCESS(Index) CASE I

11、ndex ISWHEN 0000=Tone11111111111CODEHIGHNULL;END CASE;END PROCESS;3对于Speakera模块Speakera的模块程序ENTITY Speaker IS PORT ( clk : Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC );ARCHITECTURE one OF Speaker IS SIGNAL PreCLK,FullSpks : STD_LOGIC; DivideCLK : PROCESS(clk) VARIABLE Count4 : ST

12、D_LOGIC_VECTOR (3 DOWNTO 0); PreCLK 11 THEN PreCLK Count4 : ELSIF clk EVENT AND clk = THEN Count4 :=Count4+1; END IF; GenSpkS : PROCESS(PreCLK,Tone) VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0); IF PreCLKEVENT AND PreCLK = THEN IF Count11 = 16#7FF# THEN Count11 :=Tone ;FullSpkS ELSE Count11 :=C

13、ount11+1 ;FullSpksDelaySpkS : PROCESS(FullSpks) VARIABLE Count2 : IF FullSpksEVENT AND FullSpks= THEN Count2 :=NOT Count2; IF Count2= THEN SpkS ELSE SpkS=2 then cnt:=0; tmp:=not tmp; else=cnt+1; end if; CLK12MHz=tmp; end process u1; u2:integer range 0 to 6250000;=6249999 then CLK8Hz end process u2;e

14、nd one;该模块波形仿真图如下5、 dispa模块Diapa模块的程序library ieee;entity dispa is port(d:in std_logic_vector(3 downto 0);out std_logic_vector(6 downto 0);end dispa;architecture dispa_arc of dispa isbegin process(d) case d is whenq1101111 end case; end process;end dispa_arc;五总体设计电路图1顶层设计的电路原理图Songer模块就是顶层设计文件,所有的模块都

15、由它调用。该Songer模块的程序为:ENTITY SONGER IS PORT ( CLK12MHZ :CLK8HZ :CODE1 : OUT std_logic_vector(3 downto 0);HIGH1 : OUT STD_LOGIC;spkout : out std_logic);END songer;ARCHITECTURE one OF SONGER ISCOMPONENT notetabsPort ( clk :in std_logic;toneindex : out STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component

16、tonetabaPORT ( Index : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ;HIGH :Tone : OUT STD_LOGIC_VECTOR(10 DOWNTO 0);COMPONENT SpeakerPORT ( clk : IN STD_LOGIC_VECTOR(10 DOWNTO 0);SIGNAL Tone : std_logic_vector(10 downto 0);SIGNAL ToneIndex: std_logic_vector(3 downto 0);No

17、tetabs PORT MAP(clk=CLK8HZ,toneindex=toneindex);u2 :Tonetaba PORT MAP(Index=ToneIndex,Tone=Tone,CODE=CODE1,HIGH=HIGH1);u3 :Speaker PORT MAP (clk=CLK12MHZ,Tone=Tone, SpkS=SPKOUT );end;2顶层设计的仿真结果如下:由于本设计从仿真图上来判断设计是否成功不太直观。最好的方法是完成下载验证通过实际电路验证,所以这里给出仿真结果有误差不是很符合实际效果。将Songer模块设为当前文件,进行编译,编译成功:3电路的管脚图如下:

18、4、下载验证通过选择ALTER实验箱配置方案,按照前面所述的方法进行程序配置,然后进行验证演示仿真结果分析、总结与解释及改进方案1、 产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,过高,虽然误差变小,但会增加分频器的分频级数;2、 分频计数器的预置值Tone10.0与SPKOUT的输出频率就有了对应关系。在动态显示乐曲演奏器的设计中,采用音符编码输出的方式,即乐曲中

19、每一个高、中、低音音符对应着不同的编码,由编码确定对应音符的输出频率.3、 音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,TONETABA的功能首先是为SPEAKER提供决定所发音符的分频预置数,而此数在SPEAKER输入口停留的时间即为此音符的节拍值;优点及其改进方案:1、 VHDL类型众多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计,设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期2、 与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻

20、辑技术,即使最简单的演奏电路也难以实现;3、 利用EDA技术设计的电路,具有硬件电路简捷,集成度高。性能稳定的优点。这种设计方法效率高,风格灵活,体现了现代电子电路设计的先进思想;改进方案:本实验的音乐播放属于软件的方式内置音符,可以通过改变实现方式改变音乐的产生,用按键CS来选择不同功能,第一种功能是用手动即通过按键的形式输入不同音名,第二种功能是音乐发生器,可以自动重复播放“梁祝”音乐,当CS为高电平1时,选择功能二,当CS为低电平0时,选择功能一,其改进方案的电路如下:经验交流:1、 相对于其它计算机语言的学习,如C 或汇编语言,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。传统的软件编程语言只能根据CPU 的工作方式,以排队式指令的形式来对特定的事件

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1