版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、乐曲硬件电路演奏设计、设计要求了解元件例化语句的调用;掌握自顶向下的数字系统设计方法;了解乐器硬件演奏电路的工作原理;能够播放“梁祝乐曲.、设计过程2.1 设计原理2.1.1 乐曲的发声原理组成乐曲的2个根本要素是:每个音符的发音频率值及其持续的时间 节奏.一般人能听到声音的频率范围约在几十到几千赫兹,可以利用 程序限制 FPGA某个引脚输出一定频率的矩形波,接上扬声器后就能发出 相应频率的声音,演奏某个音符的音调.同时,假设能限制每个音符的持续 时间,也就限制了乐曲的节奏,因此只要限制输出到扬声器的信号频率的 上下以及每个信号持续的时间长短,即可实现乐曲的演奏.2.1.2 音符与频率的关系乐
2、曲的12平均率规定;每 2个八度如简谱中的中音1与高音1之间的频率相差1倍.在2个八度音之间,又可分为12个半音,每2个半音的频率比为12/2.另外,音符 A的频率为440HZ,音符B至U C之间,E 到F之间为半音,其余为全音.由此可以计算出简谱中低音l至高音1之间每个音符的频率.设计音符查找表电路模块,时钟模块,数控分频器模 块,音乐节拍产生模块电路.2.1.3 音符的获得方法所有不同频率的信号都可以从同一个系统基准频率分频而来,可以采用GENERIC类属语句,预置不同频率音符信号根据系统基准频率值计算分 频系数分频系数=系统基准频率/音符频率由于个音符对应的频率为非 整数,而分频系数必须
3、为整数型,故要四舍五入取整,得到不同频率的音2.1.4 乐曲节奏的限制每个音符持续的 时间是乐曲连续播 放的另一个 根本要 素,如果采 用 1MHz的频率作为系统基准频率,那么需要对1MHz的信号进行 250000分频得到4Hz信号作为一个四分音符的频率.对于其他占用时间较长的节拍(必 须是四分之一拍的整数倍)那么只需要将该音符连续输出相应遍数即可.2.2 设计方案2.2.1 简谱码对应的分频预置数查表电路音符的持续时间根据乐曲的速度及每个音符的节拍来确定,模块 ToneTaba的功能首先是为 Spearkera提供决定所发音符的分频预置数,而 此数在Spearkera输入口停留的时间即为音符
4、的节拍值,然后模块 ToneTaba是乐曲简谱码对应的分频预置数查表电路,其中设置了 “梁祝 乐曲全部音符所对应的分频预置数共13个.每个音符的停留时间由音乐节拍和音调发生器模块NoteTabs的clk的输入频率决定,在此为 4Hz,这13个值的 输出由对应的ToneTaba的4位输入值Index3.0确定,而 Index3.0最多有16 种可选值,输向 ToneTaba 中Index3.0的值 ToneIndex3.0的输出值与持续的时间由模块NoteTabs决定.对应的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY ToneTab
5、a ISPORT (Index : IN INTEGER RANGE 0 TO 15;Tone : OUT INTEGER RANGE 0 TO 16#7FF#); END; ARCHITECTURE one OF ToneTaba IS BEGINSearch : PROCESS(Index) BEGINCASE Index ISWHEN 0 => Tone<=2047;- 16383;WHEN 1 => Tone<=773;- 8738;WHEN 2 => Tone<=912;- 9572;WHEN 3 => Tone<=1036;-1031
6、6;WHEN 5 => Tone<=1197 ;-11281;WHEN 6 => Tone<=1290;-11838;WHEN 7 => Tone<=1372;-12333;WHEN 8 => Tone<=1410;-12562;WHEN 9 => Tone<=1480;-12979;WHEN 10 => Tone<=1542;-13350; WHEN 12 => Tone<=1622;-13832; WHEN 13 => Tone<=1668;-14111; WHEN 15 => Tone&
7、lt;=1728;-14473; WHEN OTHERS => Tone<=0; END CASE;END PROCESS; END;2.2.2 音乐节拍和音调发生器在NoteTabs中设置一个八位二进制计数器(计数最大值位138),计数器的计数频率宣威4Hz,即为每一个计数值的停留时间为0.25秒,恰为当全音符设为一秒时,四四拍的四分音符持续时间.例如在NoteTabs里VHDL逻辑描述中“梁祝乐曲的第一个音符位“3,此音停留 4个时钟节拍即为一秒时间,相应的所对应的“ 3音符分频预置值为1036,在Speakera的输入端停留一秒,随着NoteTabs中的而计数器按 4Hz的时
8、钟速率做加法计数即音符数据通过ToneIndex3.0端口输向Tonetaba , “梁祝乐曲就开始连续自然演奏起来了.程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY NoteTabs ISPORT ( clk : IN STD_LOGIC;ToneIndex : OUT INTEGER RANGE 0 TO 15); END;ARCHITECTURE one OF NoteTabs ISSIGNAL Counter:INTEGER RANGE 0 TO 138; BE
9、GINCNT8:PROCESS(CLK,Counter) BEGINIF Counter=138 then Counter<=0;ELSIF (clk'EVENT AND clk='1') THEN Counter<=Counter+1;END IF;END PROCESS;Search:PROCESS(Counter) begincase Counter ISWHEN 00=>ToneIndex<=3;WHEN 01=>ToneIndex<=3;WHEN 02=>ToneIndex<=3;WHEN 03=>Tone
10、Index<=3;WHEN 04=>ToneIndex<=5;WHEN 05=>ToneIndex<=5;WHEN 06=>ToneIndex<=5;WHEN 07=>ToneIndex<=6;WHEN 08=>ToneIndex<=8;WHEN 09=>ToneIndex<=8;WHEN 10=>ToneIndex<=8;WHEN 11=>ToneIndex<=9;WHEN 12=>ToneIndex<=6;WHEN 13=>ToneIndex<=8;WHEN 14=
11、>ToneIndex<=5;WHEN 15=>ToneIndex<=5;WHEN 16=>ToneIndex<=12;WHEN 17=>ToneIndex<=12;WHEN 18=>ToneIndex<=12;WHEN 19=>ToneIndex<=15;WHEN 20=>ToneIndex<=13;WHEN 21=>ToneIndex<=12;WHEN 22=>ToneIndex<=10;WHEN 23=>ToneIndex<=12;WHEN 24=>ToneInde
12、x<=9;WHEN 25=>ToneIndex<=9;WHEN 26=>ToneIndex<=9;WHEN 27=>ToneIndex<=9;WHEN 28=>ToneIndex<=9;WHEN 29=>ToneIndex<=9;WHEN 30=>ToneIndex<=9;WHEN 31=>ToneIndex<=0;WHEN 32=>ToneIndex<=9;WHEN 33=>ToneIndex<=9;WHEN 34=>ToneIndex<=9;WHEN 35=>
13、ToneIndex<=10;WHEN 36=>ToneIndex<=7;WHEN 37=>ToneIndex<=7;WHEN 38=>ToneIndex<=6;WHEN 39=>ToneIndex<=6;WHEN 40=>ToneIndex<=5;WHEN 41=>ToneIndex<=5;WHEN 42=>ToneIndex<=5;WHEN 43=>ToneIndex<=6;WHEN 44=>ToneIndex<=8;WHEN 45=>ToneIndex<=8;WHE
14、N 46=>ToneIndex<=9;WHEN 47=>ToneIndex<=9;WHEN 48=>ToneIndex<=3;WHEN 49=>ToneIndex<=3;WHEN 50=>ToneIndex<=8;WHEN 51=>ToneIndex<=8;WHEN 52=>ToneIndex<=6;WHEN 53=>ToneIndex<=5;WHEN 54=>ToneIndex<=6;WHEN 55=>ToneIndex<=8;WHEN 56=>ToneIndex&l
15、t;=5;WHEN 57=>ToneIndex<=5;WHEN 58=>ToneIndex<=5;WHEN 59=>ToneIndex<=5;WHEN 60=>ToneIndex<=5;WHEN 61=>ToneIndex<=5;WHEN 62=>ToneIndeX<=5;WHEN 63=>ToneIndeX<=5;WHEN 64=>ToneIndeX<=10;WHEN 65=>ToneIndeX<=10;WHEN 66=>ToneIndeX<=10;WHEN 67=>
16、ToneIndeX<=12;WHEN 68=>ToneIndeX<=7;WHEN 69=>ToneIndeX<=7;WHEN 70=>ToneIndeX<=9;WHEN 71=>ToneIndeX<=9;WHEN 72=>ToneIndeX<=6;WHEN 73=>ToneIndeX<=8;WHEN 74=>ToneIndeX<=5;WHEN 75=>ToneIndeX<=5;WHEN 76=>ToneIndeX<=5;WHEN 77=>ToneIndeX<=5;WHE
17、N 78=>ToneIndeX<=5;WHEN 79=>ToneIndeX<=5;WHEN 80=>ToneIndeX<=3;WHEN 81=>ToneIndeX<=5;WHEN 82=>ToneIndex<=3;WHEN 83=>ToneIndex<=3;WHEN 84=>ToneIndex<=5;WHEN 85=>ToneIndex<=6;WHEN 86=>ToneIndex<=7;WHEN 87=>ToneIndex<=9;WHEN 88=>ToneIndex&l
18、t;=6;WHEN 89=>ToneIndex<=6;WHEN 90=>ToneIndex<=6;WHEN 91=>ToneIndex<=6;WHEN 92=>ToneIndex<=6;WHEN 93=>ToneIndex<=6;WHEN 94=>ToneIndex<=5;WHEN 95=>ToneIndex<=6;WHEN 96=>ToneIndex<=8;WHEN 97=>ToneIndex<=8;WHEN 98=>ToneIndex<=8;WHEN 99=>Ton
19、eIndex<=9;WHEN 100=>ToneIndex<=12;WHEN 101=>ToneIndex<=12;WHEN 102=>ToneIndex<=12;WHEN 103=>ToneIndex<=10;WHEN 104=>ToneIndex<=9;WHEN 105=>ToneIndex<=9;WHEN 106=>ToneIndex<=10;WHEN 107=>ToneIndex<=9;WHEN 108=>ToneIndex<=8;WHEN 109=>ToneInde
20、x<=8;WHEN 110=>ToneIndex<=6;WHEN 111=>ToneIndex<=5;WHEN 112=>ToneIndex<=3;WHEN 113=>ToneIndex<=3;WHEN 114=>ToneIndex<=3;WHEN 115=>ToneIndex<=3;WHEN 116=>ToneIndex<=8;WHEN 117=>ToneIndex<=8;WHEN 118=>ToneIndex<=8;WHEN 119=>ToneIndex<=8;WH
21、EN 120=>ToneIndex<=6;WHEN 121=>ToneIndex<=8;WHEN 122=>ToneIndex<=6;WHEN 123=>ToneIndex<=5;WHEN 124=>ToneIndex<=3;WHEN 125=>ToneIndex<=5;WHEN 126=>ToneIndex<=6;WHEN 127=>ToneIndex<=8;WHEN 128=>ToneIndex<=5;WHEN 129=>ToneIndex<=5;WHEN 130=>
22、;ToneIndex<=5;WHEN 131=>ToneIndex<=5;WHEN 132=>ToneIndex<=5;WHEN 133=>ToneIndex<=5;WHEN 134=>ToneIndex<=5;WHEN 135=>ToneIndex<=5;WHEN 136=>ToneIndex<=0;WHEN 137=>ToneIndex<=0;WHEN 138=>ToneIndex<=0;WHEN OTHERS=>ToneIndex<=0; END CASE;END PROCE
23、SS; END;2.2.3 数控分频与演奏发生器其时钟Clk端输入的是 12MHz的信号,从数控分频器中出来的输出信是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,这时的频率就变为原来的1/2 ,刚好就是相应音符的频率.数控分频模块中对 Clk输入信号的分频比由11位预置数tone10.0决定.Fout的输出频率将决定每一个音符的音调,这样,分频计数器的预 置值tone10.0与Fout的输出频率就有了对应关系.例如在分频预置数模 块中假设取tone10.0=1036 ,将发出音符为“ 3音的信号频率.程序如下:LIBRARY IEEE;USE IEEE.STD
24、_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera ISPORT clk: IN STD_LOGIC;Tone : IN INTEGER RANGE 0 TO 16#7FF#;SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speakera ISSIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk)VARIABLE Count4 :INTEGER RANGE 0 TO 15;BEGINPreCLK
25、<= '0'-将 CLK 进行 16 分频,PreCLK 为 CLK 的 16 分频 IF Count4>11 THEN PreCLK <= '1' Count4 := "0000"IF Count4>11 thenPreCLK <= '1'Count4:=0;ELSIF clk'EVENT AND clk = '1' THEN Count4 := Count4 + 1; END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)-
26、 11 位可预置计数器VARIABLE Count11 :INTEGER RANGE 0 TO 16#7FF#;BEGINIF PreCLK'EVENT AND PreCLK = '1' THENIF Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS <= '1'ELSE Count11 := Count11 + 1; FullSpkS <= '0' END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)-将输出再 2分频
27、,展宽脉冲,使扬声器 有足够功率发音VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkS'EVENT AND FullSpkS = '1' THEN Count2 := NOT Count2; IF Count2 = '1' THEN SpkS <= '1'ELSE SpkS <= '0' END IF;END IF;END PROCESS;END;2.2.4 硬件演奏电路顶层设计程序如下:LIBRARY IEEE;-硬件演奏电路顶层设计USE IEEE.STD_LOGIC_
28、1164.ALL;ENTITY Songer ISPORT ( CLK1: IN STD_LOGIC;-音调频率信号CLK2: IN STD_LOGIC;-节拍频率信号SPKOUT : OUT STD_LOGIC );-声音输出END;ARCHITECTURE one OF Songer ISCOMPONENT NoteTabsPORT ( clk : IN STD_LOGIC;ToneIndex : OUT INTEGER RANGE 0 TO 15);END COMPONENT;COMPONENT ToneTabaPORT ( Index : IN INTEGER RANGE 0 TO 1
29、5;Tone : OUT INTEGER RANGE 0 TO 16#7FF# );END COMPONENT;COMPONENT SpeakeraPORT (clk : IN STD_LOGIC;Tone : IN INTEGER RANGE 0 TO 16#7FF#;SpkS : OUT STD_LOGIC );END COMPONENT;SIGNAL Tone : INTEGER RANGE 0 TO 16#7FF#;SIGNAL ToneIndex : INTEGER RANGE 0 TO 15; BEGINu1 :NoteTabs PORT MAP (clk=>CLK2,Ton
30、eIndex=>ToneIndex);u2 :ToneTaba PORT MAP (Index=>ToneIndex,Tone=>Tone);u3 :Speakera PORT MAP(clk=>CLK1,Tone=>Tone, SpkS=>SPKOUT ); END;三、设计结果3.1 仿真结果及分析3.1.1 NoteTabs 仿真Nams蛇SO.O m面.pn工1吗口, 之00.ps0,0 HEj-Lr-Lr-Lrn-j-Lr-L_r_L_rn_r_L_r-L_r-L_rNoteTabs的仿真波形如以下图:elkH 1事4电工nd中瑞结果分析:我们从仿真图可以看出第一个clk上升沿时ToneTndex输出为3,并且连续四个 clk上升沿输出都为 3,第五个clk上升沿输出为 5, 且连续三个上升沿输出都为5,第八个clk上升沿输出为 6,第九、十
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屋面防水课件教学课件
- 2024年度大数据中心建设与运维合同
- 2024年度供应链管理与融资合同
- 2024年度CRM系统升级合同:增强销售合同管理功能
- 2024年度5G基站建设施工合同
- 2024年建筑工程环保分包合同
- 2024上海市室内装修合同协议书范本
- 2024年度企业合规性检查与咨询服务合同
- 2024年夫妻财产清算协议
- 2024天然气管网运营管理合同
- 三年级数学上册苏教版《认识长方形正方形》教学设计及活动单(市级公开课)
- 老年友善医疗机构建设项目报价函
- 针织学试题库
- 天大物化第六版答案pdf
- 破窗效应(课堂PPT)课件
- 质量通病(107页)ppt课件
- 《颈椎病病人的护理》PPT课件(完整版)
- 两票三制培训.
- 医院药品储备定期评价分析报告及改进措施
- 教练技术一阶段讲义
- 广州供电局输电部高压电缆运行工作介绍
评论
0/150
提交评论