欢迎来到天天文库
浏览记录
ID:35627196
大小:158.50 KB
页数:10页
时间:2019-04-03
《EDA课程设计--梁祝乐曲演奏电路设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、EDA课程设计班级:通信工程四班姓名:学号:时间:设计一:梁祝乐曲演奏电路设计一.设计任务1)了解乐曲演奏电路的实验原理。2)掌握利用可编程器件实现乐曲演奏的设计方法。二.设计分析根据声学知识,组成乐曲的每个音符的发声频率值及其持续的时间是乐曲能连续弹奏所需的两个基本要素,获取这两个要素所对应的数值和通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是该实验的关键。实验原理图原理电路如上图所示,实验由三个模块组成:1)数控分频与演奏发生器模块,即SPEAKERA。2)乐曲简谱码对应的分频预置数查表电路模块,即TONETA
2、BA。3)音乐节拍和音调发生器模块,即NOTETABS。模块一(SPEAKERA):产生音符的频率。这是一个数控分频器,由其clk端输入一个12MHz的信号,通过SPEAKERA分频后由SPKOUT输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,须另加一个D触发器以均衡其占空比,但这时的频率将是原来的一半。SPEAKERA对clk输入信号的分频比由11位预置数TONE[10..0]决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值TONE[10..0]与SPKO
3、UT的输出频率就有了对应关系。模块二(TONETABA):音符的持续时间须根据乐曲的速度即每个音符的节拍数来确定,原理图中TONETABA的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKERA输入口的停留时间即为音符的节拍值。模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置了梁祝乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块NOTETABS的clk的输入频率决定,在此为4Hz.这13个数值的输出由对应于NOTETABA1的4位输入值Ind
4、ex[3..0]的输出值与持续时间由模块NOTETABS决定。模块三(NOTETABS):在NOTETABS中设置了一个8位二进制计数器(计数最大值为138,因为共有138个音符),这个计数器的频率选为4Hz,即每一个计数值得停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,NOTETABS在以下的VHDL逻辑描述中,梁祝乐曲的第一个音符为3,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的3音符分频预置值为1036,在SPEAKERA的输入端停留了1秒。随着NOTETABS中的计数器
5、按4Hz的时钟速率做加法计数时,梁祝乐曲就开始连续自然地演奏起来了。三.实验程序:模块一(speakera):libraryieee;useieee.std_logic_1164.all;entityspeakeraisport(clk:instd_logic;tone:inintegerrange0to16#7FF#;spks:outstd_logic);end;architectureoneofspeakeraissignalpreclk:std_logic;signalfullspks:std_logic;begind
6、ivideclk:process(clk)variablecount4:integerrange0to15;beginpreclk<='0';ifcount4>11thenpreclk<='1';count4:=0;elsifclk'eventandclk='1'thencount4:=count4+1;endif;endprocess;genspks:process(preclk,tone)variablecount11:integerrange0to16#7FF#;beginifpreclk'eventandpreclk
7、='1'thenifcount11=16#7FF#thencount11:=tone;fullspks<='1';elsecount11:=count11+1;fullspks<='0';endif;endif;endprocess;delayspks:process(fullspks)variablecount2:std_logic;beginiffullspks'eventandfullspks='1'thencount2:=notcount2;ifcount2='1'thenspks<='1';elsespks<='0
8、';endif;endif;endprocess;end;模块二(tonetaba):libraryieee;useieee.std_logic_1164.all;entitytonetabaisport(index:inintegerrange0to15;code:outintegerr
此文档下载收益归作者所有