首页 音响技术-电子琴设计

音响技术-电子琴设计

举报
开通vip

音响技术-电子琴设计null8.18 电子琴设计8.18 电子琴设计设计要求设计要求设计一个八音电子琴。 由键盘输入控制音响,同时可自动演奏乐曲。 用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。系统组成系统组成系统由数控分频器和乐曲存储模块组成。 数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。 乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。模块设计 模块设计 1.顶...

音响技术-电子琴设计
null8.18 电子琴 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 8.18 电子琴设计设计要求设计要求设计一个八音电子琴。 由键盘输入控制音响,同时可自动演奏乐曲。 用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。系统组成系统组成系统由数控分频器和乐曲存储模块组成。 数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。 乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。模块设计 模块设计 1.顶层模块的设计 2.自动演奏模块(automusic)的设计 3.音调发生器(tone)模块的设计 4.数控分频模块(speaker)的设计 1.顶层模块的设计1.顶层模块的设计顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。 其中乐曲演奏部分又包括了键盘编码。 设置一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择键盘输入的信号。顶层设计原理图 顶层设计原理图 2.自动演奏模块(automusic)的设计2.自动演奏模块(automusic)的设计音乐存储模块的作用是产生8位发声控制输入index。 当 auto为“0”时,由存储在此模块中的8位二进制数作为发声控制输入,可自动演奏乐曲。 此模块的VHDL程序中包括两个进程,首先是对时基脉冲进行分频得到4Hz的脉冲,作为第二个进程的时钟信号,它用来控制每个音阶之间的停顿时间, 1/4=0.25s;第二个进程是音乐的存储,可根据需要编写不同的乐曲。3.音调发生器(tone)模块的设计3.音调发生器(tone)模块的设计音调发生器的作用是产生获得音阶的分频预置值。 当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将在端口tone输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频器来对4MHz的脉冲进行分频,由此可得到每个音阶对应的频率。 例如输入index=“00000010”,即对应的按键是2,产生的分频系数便是6809;code输出对应该音阶简谱的显示数码;high输出指示音阶高8度,低电平有效。4.数控分频模块(speaker)的设计4.数控分频模块(speaker)的设计数控分频模块对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符对应频率。 该模块的VHDL程序中包含了三个进程。 首先对FPGA的32MHz的时基脉冲进行分频得到8MHz的脉冲, 然后按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率。 第三个进程的作用是在音调输出时再进行二分频,将脉冲展宽,使扬声器有足够发声功率。电子琴程序设计与仿真电子琴程序设计与仿真电子琴程序设计与仿真电子琴程序设计与仿真1.顶层程序与仿真 2.音阶发生器程序与仿真 3.数控分频模块程序与仿真 4.自动演奏模块程序与仿真 1.顶层程序与仿真1.顶层程序与仿真--文件名:top.vhd --功能:顶层文件 --最后修改日期:2004.3.20 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity top is Port ( clk32MHz :in std_logic; --32MHz系统时钟 handTOauto : in std_logic; --键盘输入/自动演奏 code1 :out std_logic_vector(6 downto 0); --音符显示信号 index1 :in std_logic_vector(7 downto 0); --键盘输入信号 high1 :out std_logic; --高低音节信号 spkout :out std_logic); --音频信号 end top; architecture Behavioral of top isnullcomponent automusic Port ( clk :in std_logic; Auto: in std_logic; index2:in std_logic_vector(7 downto 0); index0 : out std_logic_vector(7 downto 0)); end component; component tone Port ( index : in std_logic_vector(7 downto 0); code : out std_logic_vector(6 downto 0); high : out std_logic; tone0 : out integer range 0 to 2047); end component; nullcomponent speaker Port ( clk1 : in std_logic; tone1 : in integer range 0 to 2047; spks : out std_logic); end component; signal tone2: integer range 0 to 2047; signal indx:std_logic_vector(7 downto 0); begin u0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1); u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout); end Behavioral; null(顶层文件仿真图)2.音阶发生器程序与仿真2.音阶发生器程序与仿真--文件名:tone.vhd。 --功能:音阶发生器程序。 --最后修改日期:2004.4.13。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity tone is Port ( index : in std_logic_vector(7 downto 0); --音符输入信号 code : out std_logic_vector(6 downto 0); --音符显示信号 high : out std_logic; --高低音显示信号 tone0 : out integer range 0 to 2047); --音符的分频系数 end tone; architecture Behavioral of tone is beginnullsearch :process(index) --此进程完成音符到音符的分频系数译码,音符的显示,高低音阶 begin case index is when "00000001" => tone0<=773;code<="1001111";high<='1'; when "00000010"=> tone0<=912;code<="0010010";high<='1'; when "00000100" => tone0<=1036;code<="0000110";high<='1'; when "00001000" => tone0<=1116;code<="1001100";high<='1'; when "00010000" => tone0<=1197;code<="0100100";high<='1'; when "00100000" => tone0<=1290;code<="0100000";high<='0'; when "01000000" => tone0<=1372;code<="0001111";high<='0'; when "10000000" => tone0<=1410;code<="0000000";high<='0'; when others => tone0<=2047;code<="0000001";high<='0'; end case; end process; end Behavioral; null(音阶发生器仿真图)3.数控分频模块程序与仿真3.数控分频模块程序与仿真--文件名:speaker.vhd。 --功 能:实现数控分频。 --最后修改日期:20004.3.19。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity speaker is Port ( clk1 : in std_logic; --系统时钟 tone1 : in integer range 0 to 30624; --音符分频系数 spks : out std_logic); --驱动扬声器的音频信号 end speaker; architecture Behavioral of speaker is signal preclk,fullspks:std_logic; beginnullpulse1:process(clk1) --此进程对系统时钟进行4分频 variable count:integer range 0 to 8; begin if clk1'event and clk1='1' then count:=count+1; if count=2 then preclk<='1'; elsif count=4 then preclk<='0';count:=0; end if; end if; end process pulse1; nullgenspks:process(preclk,tone1) --此进程按照tone1输入的 --分频系数对8MHz的脉冲再次分频,得到所需要的音符频率 variable count11:integer range 0 to 30624; Begin if preclk'event and preclk='1' then if count11 index0<="00000100"; --3 when 1 => index0<="00000100"; --3 when 2 => index0<="00000100"; --3 when 3 => index0<="00000100"; --3 when 4 => index0<="00010000"; --5 when 5 => index0<="00010000"; --5 when 6 => index0<="00010000"; --5 when 7 => index0<="00100000"; --6 when 8 => index0<="10000000"; --8 when 9 => index0<="10000000"; --8 when 10 =>index0<="10000000"; --8 when 11=> index0<="00000100"; --3 when 12=> index0<="00000010"; --2 when 13=> index0<="00000010"; --2 when 14=> index0<="00000001"; --1 when 15=> index0<="00000001"; --1 when 16=> index0<="00010000"; --5 when 17=> index0<="00010000"; --5 when 18=> index0<="00001000"; --4 when 19=> index0<="00001000"; --4null when 20=> index0<="00001000"; --4 when 21=> index0<="00000100"; --3 when 22=> index0<="00000010"; --2 when 23=> index0<="00000010"; --2 when 24=> index0<="00010000"; --5 when 25=> index0<="00010000"; --5 when 26=> index0<="00001000"; --4 when 27=> index0<="00001000"; --4 when 28=> index0<="00000100"; --3 when 29=> index0<="00000100"; --3 when 30=> index0<="00000010"; --2 when 31=> index0<="00000010"; --2 when others => null; end case; else index0<=index2; --键盘输入音符信号输出 end if; end process; end Behavioral; null注:由于输入频率太高,实验条件所限,如按源程序仿真将 看不到输出波形,因此将原脉冲的分频点4000000和 8000000改为4和8,得到如图的仿真结果,在实际烧制 芯片中不作此处理。(自动演奏模块仿真图)
本文档为【音响技术-电子琴设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_519965
暂无简介~
格式:ppt
大小:134KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-02-11
浏览量:18