




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VHDL实验报告一、实验目的1、 掌握蜂鸣器的使用;2、 通过复杂实验,进一步加深对VHDL语言的掌握程度。二、实验原理乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的, 还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐 曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。乐曲的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音6)的频率为440Hz,
2、 音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音I至高音1之间每个音符的频率,如表2.1所示。音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6中音1523.3咼音11045.5低音2293.7中音2587.3咼音21174.7低音3329.6中音3659.3咼音31318.5低音4349.2中音4698.5咼音41391.1低音5392中音5784咼音51568低音6440中音6880咼音61760低音7493.9中音7987.8高音71975.5表2.1简谱音名与频率的对应关系产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数
3、又不能为小数, 故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的时钟频率。实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数,本例所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四
4、分音符的时长。本例设计的音乐电子琴选取40MHZ的系统时钟频率。在数控分频器模块,首先对时钟频率进行40分频,得到1MHZ的输入频率,然后再次分频得到各音符的频率。由于数控 分频器输出的波形是脉宽极窄的脉冲波,为了更好的驱动蜂鸣器发声,在到达蜂鸣器之前需要均衡占空比,从而生成各音符对应频率的对称方波输出。这个过程实际上进行了一次二分频,频率变为原来的二分之一即0.5MHZ。因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为523.3Hz,它的分频系数应该为:60.375MHZ0.375 10716523.3523.3至于其他音符,同样可由上式求出对应的分频系数,这样利用程
5、序可以很轻松地得到相 应的乐声。音名频率/Hz分频系数音名频率/Hz分频系数低音1261.61911咼音11045.5478低音2293.71702咼音21174.7425低音3329.61517咼音31318.5379低音4349.21431咼音41391.1359低音53921276咼音51568319低音64401136咼音61760284低音7493.91014咼音71975.5253中音1523.3956中音2587.3851中音3659.3758中音4698.5716中音5784638中音6880568中音7987.8506表22各音名对应的分频系数至于音长的控制,在自动演奏模块,
6、每个乐曲的音符是按地址存放的,播放乐曲时按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。如果乐谱中某个音符为三拍音长,那又该如何控制呢?其实只要在3个连续地址存放该音符,这时就会发三个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。三、实验步骤1)输入端口CLK:40MHZ系统时钟输入端口。2)输出端口device:乐曲的声音输出端口,输出的是对应各音符频率的方波信号2、设置模块1)自动演奏模块自动演奏模块可以自动播放电子琴内置乐曲,按节拍读取内置乐谱。将键盘输入的音符信号输出。因此,本模块是向Tone模块提供音符信息。首先,对40MHz系统时钟进行
7、10M的分频,得到4Hz的信号,这样一秒中就可以按 照四拍进行。然后依照此频率进行地址累计。Iaohu:u0elktone_ke/_015 02)音频发生器模块根据自动演奏模块的信号输出,不同的信号被翻译为不同的频率。1、设置端口ton eO: out in teger range 0 to 2047-音符的分频系数tone:u13)蜂鸣器驱动模块根据音频发生器发出音频的不同,蜂鸣器得到的驱动也不同。首先,对系统时钟进行40分频,再对1mhz的脉冲再次分频,得到所需要的音符频率,然后再进行2分频。speaker: u2四、实验代码library ieee;use ieee.std_logic_
8、1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all; entity tone isport(in dex: in stdo gic_vector(15 dow nto 0););device-音符输入信号ton eO: out in teger range 0 to 2047-音符的分频系数end tone;when 0100000000000000 = ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton
9、e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0 ton e0=0;end case;end process;end behavioral;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all;en tity speaker isport(clk1: in stdo gic;ton e1: in in teger range 0 to 2047; spks: out std_logic);end sp
10、eaker;architecture behavioral of speaker issig nal preclk, fullspks:std_logic;beginp1:process(clk1)-此进程对系统时钟进行16分频variable count: in teger range 0 to 16;-系统时钟12mhz-音符分频系数-驱动扬声器的音频信号fullspks=0;beginif clkleve nt and elk仁1 the n coun t:=co un t+1;if coun t=8 the npreclk=1;elsif coun t=16 the npreclk=0
11、;coun t:=0;end if;end if;end process p1;p2:process(preclk,tone1)-对0.75mhz的脉冲再次分频,得到所需要的音符频率variable count11:integerrange 0 to 2047;beginif preclkeve nt and preclk=1 the nif coun t11t one1 the ncou nt11:=cou nt11+1;fullspks=1;elsecou nt11:=O;end if;end if;end process p2;p3:process(fullspks)-此进程对fulls
12、pks进行2分频variable coun t2: std_logic:=0:beginif fullspkseve nt and fullspks=1 the ncoun t2:=not coun t2;if cou nt2=1 thenspks=1;elsespks=0;end if;end if;end process p3;end behavioral;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all;en tity laohu
13、 isport(elk: in std_logic;-系统时钟;键盘输入/自动演奏ton e_key_0: buffer std_logic_vector(15 dow nto 0)-);end laohu;architecture behavioral of laohu issig nal coun t0:i nteger range 0 to 31;-cha ngesig nal clk2:std_logic;beginp1:process(clk) -对12mhz系统时钟进行3m的分频,得到variable coun t:i nteger range 0 to 3000000;begin
14、if clkeve nt and clk=1 the ncoun t:=co un t+1;if cou nt=1500000 thenclk2=1:elsif cou nt=3000000 thenclk2=0;coun t:=0;end if;end if;end process p1;p2:process(clk2)-此进程完成自动演奏部分乐曲的地址累加beginif clk2event and clk2=1 thenif cou nt0=29 thencoun t0=0;elsecoun t0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_
15、0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_0 ton e_key_
16、0 n ull;end case;end process p3;end behavioral;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all; en tity beep0 isport(clk:in std_logic;);end beepO;architecture behavioral of beep0 iscomp onent laohu isport(clk: in std_logic;-系统时钟;键盘输入/自动演奏ton e
17、_key_0: out std_logic_vector(15 dow nto 0)-);end comp onent;音符信号输出comp onent tone isport(in dex: in std_logic_vector(15 dow nto 0);-音符输入信号ton e0: out in teger range 0 to 2047-音符的分频系数);end comp onent;comp onent speaker isport(clk1: in std_logic;-系统时钟12mhzton e1: in in teger range 0 to 2047;-音符分频系数spks: out std_logic-驱动扬声器的音频信号);end comp onent;sig nal mid:std_logi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加入组织部的目的与收获心得体会
- 六年级班级社会实践活动计划
- 含节点缺陷的装配式剪力墙抗震性能分析
- 辉钼精矿全湿法提钼新工艺研究
- 人教版高一下学期数学(必修二)《6.1平面向量的概念》同步测试题及答案
- 法治教育对青少年的心得体会
- 灌溉水矿化度对春小麦种子萌发、植株生长及养分吸收利用的影响
- 红枣醋发酵过程中生物活性成分及风味物质的变化研究
- 布朗斯特酸催化下2-芳基吡咯类轴手性化合物的构建及反应研究
- 公共数据开放安全风险的法律规制研究
- 生命伦理学期末测试习题与答案
- 奢侈品买卖协议书范本
- 欧洲文化智慧树知到课后章节答案2023年下宁波大学
- 《新大学英语·跨文化交际阅读》Values Behind Sayings
- 风电项目开发前期工作流程
- 劳动保障部《关于劳动合同制职工工龄计算问题的复函》
- 国开2023春计算机组网技术形考任务二参考答案
- 200条健康小常识
- 【玫瑰花的药理作用和研究进展4200字(论文)】
- 国家开放大学《西方经济学》章节测试(1-17)参考答案
- 油漆用量计算公式表
评论
0/150
提交评论