音乐发生器课的程设计

上传人:re****.1 文档编号:508891543 上传时间:2023-08-26 格式:DOC 页数:27 大小:554.10KB
返回 下载 相关 举报
音乐发生器课的程设计_第1页
第1页 / 共27页
音乐发生器课的程设计_第2页
第2页 / 共27页
音乐发生器课的程设计_第3页
第3页 / 共27页
音乐发生器课的程设计_第4页
第4页 / 共27页
音乐发生器课的程设计_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《音乐发生器课的程设计》由会员分享,可在线阅读,更多相关《音乐发生器课的程设计(27页珍藏版)》请在金锄头文库上搜索。

1、1.软件硬件1 EP3C40Q240C8芯片2 实验箱底板电路(包括 蜂鸣器、7段数码管、Led灯1个、拨码开关3个、Key按键7个) 3 Quartus9.04 计算2. 总体模块功能1 使用两个时钟分别为12MHz和8Hz的时钟,分别供分频驱动器(数控分频器)与计数器使用。2 计数器完成计数功能,分为两个计数器counter1和counter2,counter1计数到269,counter2计数到163,都是在上升沿来临时计数。3 四个音乐模块分别记录了2首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。4 选择器完成选择歌曲的功能。5 数据翻译模块将选择器所选择的

2、歌曲里的地址的数据翻译成分频驱动器(数控分频器)分频所需的控制数据、1个led灯数据(中低音)、以及译码器所需的数据。6 分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。7 译码器将乐谱数据在led数码管上显示。图3-2 小糊涂神曲谱3.各个模块图形及程序3.1 计数器及歌曲存储模块(notetabs)计数器完成计数功能,分为两个计数器,分别计到269和163,因为两首歌曲的最大字符分别为269和163,存储的两首歌是采蘑菇的小姑娘、小糊涂神,曲谱如下:图3-1 采蘑菇的小姑娘曲谱1 模块图形模块如图3-3所示:图3-3 notetabs模块图形2 程序 由于此程序较多,在附录中

3、给出,见附录3 仿真波形图仿真图如图3-4所示:图3-4 notetabs仿真波形图通过仿真图可以清楚的看到,每计一次数输出toneindex的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中,自第8个时钟上升沿来临到第15个时钟上升沿,输出toneindex2均选取音符“5”。然后把输出toneindex2输入到音调编码器模块,进行下一步编码工作。3.2 手动模块(tone) 可通过7个按键手动的进行演奏,7个按键分别代表7个音。1 模块图形模块如图3-5所示:图3-5 tone 模块图形4.程序library ieee;use ieee.std_logic

4、_1164.all;entity tone isport(key:in std_logic_vector(6 downto 0);toneindex1:out std_logic_vector(3 downto 0);end;architecture one of tone isbeginsearch:process(key)begin case key iswhen0000001=toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1=0000;end case;end process;

5、end;3 仿真波形图仿真图如图3-6所示:图3-6 tone 仿真波形在此仿真图中不同的key相当于对应不同的琴键,当按下不同的琴键时输出相对应的toneindex1,toneindex1在输入音调编码器中进行下一步编码。3.3.3 手动、自动选择模块(mux)根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于是,可通过一个按键cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏,其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与cs相连的按键除外)来控制不同的音符。与此同时,还需要一个复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。

6、以上提到的手动与自动的选择只能在rst为0时有效。1 模块图形模块图形如图3-7所示:图3-7 mux 模块图形2 程序library ieee;use ieee.std_logic_1164.all;entity mux is port(rst:in std_logic;index1:in std_logic_vector(3 downto 0);index2:in std_logic_vector(3 downto 0);cs :in std_logic;toneindex:out std_logic_vector(3 downto 0);end;architecture arc_mux

7、of mux isbeginprocess(cs)beginif rst=1then toneindextoneindextoneindextoneindex=null;end case;end if;end process;end arc_mux;3 仿真波形图仿真波形图如图3-8所示:图3-8 mux仿真波形图此仿真图中输入cs代表手动自动演奏的选择端,输入rst代表整体复位端,输入index1、index2分别代表手动和自动要演奏的音符,输出q代表经过选择后,要演奏的或是手动输入或是自动输入的音符。由此仿真图可清楚的看到当rst=1时,不论选择的是手动还是自动,输出都为零,达到了整体复位

8、的功能;当rst=0且cs=1时,自动演奏乐曲,因为q与index2的值相同;当rst=0且cs=0时,手动演奏乐曲,因为这时的q与index1的值相同,从而也达到了演奏方式选择的功能。3.3.4 音调编码器(tonetaba)1 模块图形模块图形如图3-9所示:图3-9 tonetaba模块图形2 程序 见附录3 仿真波形图仿真图形如图3-10所示:图3-10 tonetaba 仿真波形图在此仿真图中从上到下依次代表输出code、high、输入index和输出tone。通过此仿真图能清楚的看到当音符分别为4、10、8、15时,它们所对应的分频预置数tone分别是1116、1542、1410、

9、1728;所对应的音谱code分别是4、3、1、1。其中code、high1能分别在数码管和led上显示,而tone则输入到数控分频模块作为分频的依据。于是,由仿真图印证了音调编码模块传送预置数及显示功能。3.3.5 数控分频器(speakera)将芯片上提供的50MHz的时钟分频为12MHz和8Hz的时钟,分别供计数器与分频驱动器(数控分频器)使用。1 模块图形:模块图形如图3-11所示:图3-11 speakera模块图形2 程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY

10、Speakera IS PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK 11 THEN PreCLK = 1; Count4 :=

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

12、= 0; END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS) VARIABLE Count2 : STD_LOGIC;BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN SpkS = 1; ELSE SpkS = 0; END IF; END IF; END PROCESS;END;3 仿真波形图仿真图如图3-12所示:图3-12 speakera 仿真波形图在此仿真图中,输入clk是一个频率较大的时钟信号,输

13、入tone代表着某个音符的分频预置数,输出spks则代表将输入clk先经过12次分频,再经过(预置数终值2048-tone)次分频,最终在进行二分频处理后的信号,而这个信号的频率就是我们需要演奏的音谱的频率,根据频率的不同,从而能通过喇叭听到不同的声音,这就是我们一直想要演奏的乐曲了。3.4 硬件设计及仿真分析3.4.1 顶层音乐演奏器原理图经过了各个子模块的分析与验证后,我们只需将各个子模块之间的输入输出端、子模块与整体电路之间的输入输出端进行正确的硬件连接就得到了顶层音乐演奏器的原理图,如图3-13图3-13 自行连接的音乐演奏器原理图3.4.2 顶层文件仿真波形分析首先,介绍一下总体程序中各个引脚的作用及硬件连

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号