VHDL实验:乐曲演奏.ppt_第1页
VHDL实验:乐曲演奏.ppt_第2页
VHDL实验:乐曲演奏.ppt_第3页
VHDL实验:乐曲演奏.ppt_第4页
VHDL实验:乐曲演奏.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/7/10,1,实验乐曲演奏电路,2020/7/10,2,内容概要,实验目的 实验要求 实验原理 实验内容 实验报告,2020/7/10,3,实验目的,掌握乐曲演奏电路的工作原理。 了解怎样控制音调的高低变化。 了解音长的控制。,2020/7/10,4,实验原理,乐曲演奏电路的原理 乐曲的每个音符的频率值(音调) 持续的时间(音长) 音调的控制 频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可以分为十二个半音,每两个半音的频率比为21/12 1.12246 。 音名A(简谱中的低音6)的频率为440Hz

2、,音名B到C之间,E到F之间为半音,其余为全音。,2020/7/10,5,简谱中的音名与频率的关系,2020/7/10,6,本实验中选取4MHz为基准频率。 本实验演奏的是梁祝乐曲,该乐曲各音阶频率及相应的分频系数如下图所示。,例如:低音3的6067由4MHz除以329.6, 再除以2得到(后面又进行2分频)。,2020/7/10,7,为减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,在到达扬声器之前,有一个二分频的分频器。上表中的分频系数就是在从4MHz频率二分频得到的2MHz频率基础上计算得出的。 分频的方法 反馈复0法 加载预置数法 (本实验采用这种方法) 预置数 = 计数器

3、最大值分频系数 = (213 1) 分频系数 = 8191 分频系数。,由于最大的分频系数为6067,故采用13位二进制计数器已能满足分频要求。,2020/7/10,8,音长的控制 本例演奏的“梁祝”片段,最小的节拍为1/4拍。将1拍的时长定为1秒,则只需要再提供一个4 Hz的时钟频率即可产生1/4拍的时长。演奏的时间控制通过记谱来完成,对于占用时间较长的节拍(一定是1/4拍的整数 倍),如2/4拍,只需将该音名连续记录两次即可。,2020/7/10,9,乐曲演奏电路原理图,反馈预置计数器对基准频率4MHz进行分频,产生分频后的输出时钟信号。再经过2分频器,成为方波信号,以驱动扬声器发声。 音

4、名显示电路显示乐曲演奏时对应的音符。 乐谱产生电路用来根据高音、中音和低音的值决定分频计数器的预置数的值 。,4,2020/7/10,10,程序流程图,4,2020/7/10,11,乐曲演奏电路子模块,程序分为4个部分: 反馈预置计数器 2分频器,产生驱动扬声器的方波信号 音名显示,根据时长计数器的值决定高音、中音和低音的值 乐谱产生电路,根据高音、中音和低音的值决定分频计数器的预置数origin的值,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY song IS PORT(

5、clk_4MHz, clk_4Hz: IN STD_LOGIC; -预置计数器和乐谱产生器的时钟 digit: BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0); -低三位表示低音,中间三位表示中音,最高位表示高音;本曲仅仅有高音1,故此用1位表示。 speaker: out STD_LOGIC -扬声器 ); END song; ARCHITECTURE song_arch OF song IS,SIGNALdivider,origin:STD_LOGIC_VECTOR(12 DOWNTO 0); -13位计数值和预置值 SIGNAL counter:integer r

6、ange 0 to 140; -记录1/4拍曲谱的内容 SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL carrier:STD_LOGIC; BEGIN PROCESS(clk_4MHz),BEGIN IF(clk_4MHzevent AND clk_4MHz=1) THEN IF(divider=1111111111111) THEN carrier=1; divider=origin; ELSE divider=divider+1; carrier=0; END IF; END IF; END PROCESS;,PROCESS(carri

7、er) BEGIN IF(carrierevent AND carrier=1) THEN count=count+1; -输出时钟四分频 IF count=00 THEN speaker=1; ELSE speaker=0; END IF; END IF; END PROCESS;,PROCESS(clk_4Hz) -1/4节拍 BEGIN IF(clk_4Hzevent AND clk_4Hz=1) THEN IF(counter=140) THEN counter=0; ELSE counter=counter+1; END IF; END IF; CASE counter IS - 音

8、调digit的赋值,WHEN 0=digitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0101000;,WHEN 22=digitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0000110;,WHEN 44=digitdigitdigitdigitdigitdi

9、gitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0001000;,WHEN 74=digitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0010000;,WHEN 100=digitdigit

10、digitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0000101;,WHEN 126=digitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit=0000000; END CASE;,CASE digit IS -预置数origin的赋值 WHEN 0000011=originoriginoriginorigino

11、riginoriginoriginoriginoriginoriginorigin=1111111111111; -8191 END CASE; END PROCESS; END song_arch;,2020/7/10,24,3. 时序仿真 乐曲演奏电路子模块,注1:为仿真counter信号,在波形编辑器的“Node Finder”窗口中的“Filter”域下拉列表中选择“Pins:all & Registers:post-fitting”,然后单击“List”;则在“Nodes Found”窗口将出现所有的引脚和适配后的寄存器;在其中选择counter信号,将其送入右边的窗口。 注2:为仿真carry、divider和origin信号,可在程序中将它们声明为输出信号。,2020/7/10,25,4. 编程下载,信号定义及下载板资源分配 输入信号 clkock:系统时钟信号,22.1184MHz , 接80脚,2020/7/10,26,红字部分不做要求,输出信号 high3.0:驱动数码3,显示高音的音名,分别连FPGA的Pin132、128、41、21引脚; mid3.0:驱动数码2,显示中音的音名,分别连FPGA的Pin20、19、1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论