乐曲演奏电路ppt课件.ppt

上传人:本田雅阁 文档编号:2578165 上传时间:2019-04-11 格式:PPT 页数:10 大小:376.51KB
返回 下载 相关 举报
乐曲演奏电路ppt课件.ppt_第1页
第1页 / 共10页
乐曲演奏电路ppt课件.ppt_第2页
第2页 / 共10页
乐曲演奏电路ppt课件.ppt_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《乐曲演奏电路ppt课件.ppt》由会员分享,可在线阅读,更多相关《乐曲演奏电路ppt课件.ppt(10页珍藏版)》请在三一文库上搜索。

1、乐曲演奏电路,乐曲演奏电路结构,NoteTabs Clk ToneIndex,ToneTaba HIGH Index CODE Tone,Speakera Tone SpkS Clk,12MHz,4Hz,U1,U2,U3,LIBRARY IEEE; USE IEEE.STD_LODIC_1164.ALL; ENTITY Songer IS PORT (clk12MHz,clk4Hz :IN STD_LOGIC; CODE1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) HIGH1,SPKOUT : OUT STD_LOGIC); END; ARCHITECTURE on

2、e OF Songer IS COMPONENT NoteTabs PORT(clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT; COMPONENT ToneTaba PORT(Index : IN STD_LOGIC _VECTOR(3 DOWNTO 0); CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR(10 DOWNTO 0); END COMPO

3、NENT; COMPONENT Speakera PORT(clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR(10 DOWNTO 0); Spks :OUT STD_LOGIC); END COMPONENT; SIGNAL Tone:STD_LOGIC_VECTOR(10 DOWNTO 0); SIGNAL ToneIndex :STD_LOGIC_VECTOR(3 DOWNTO 0);,顶层结构描述,BEGIN u1: NoteTabs PORT MAP(clk=clk4Hz,ToneIndex = ToneIndex); u2: ToneTab

4、a PORT MAP(Index= ToneIndex,Tone = Tone, CODE = CODE1, HIGH = HIGH1 ); u3: Speakera PORT MAP(clk=clk12MHz,Tone = Tone ,Spks = SPKOUT); END;,NoteTabs,CNT8 CLK Counter,MUSIC address q inclock,ToneIndex,clk,LPM_ROM,计数器,0 138计数。产生ROM地址。,0.25秒为四四拍的4分音符持续时间,确定为乐曲的基本节奏单元。,4Hz,用LPM_ROM定制MUSIC。,乐谱,LIBRARY IE

5、EE; USE IEEE.STD_LODIC_1164.ALL; USE IEEE.STD_LODIC_UNSIGNED.ALL; ENTITY NoteTabs IS PORT (clk:IN STD_LOGIC; ToneIndex:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END; ARCHITECTURE one OF NoteTabs IS COMPONENT MUSIC -音符数据ROM PORT(address:IN STD_LOGIC_VECTOE(7 DOWNTO 0); inclock:IN STD_LOGIC; q:OUT STD_LOGIC_V

6、ECTOR(3 DOWNTO 0); END COMPONENT; SIGNAL Counter:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN CNT8:PROCESS(clk) BEGIN IF Counter=138 THEN CounterCounter,q=ToneIndex,inclock=clk); END;,- MUSIC.MIF文件 WIDTH=4; -乐曲演奏数据 DEPTH=256; ADDRESS_RADIX=DEC; DATA_RADIX=DEC; CONTENT BEGIN -注意实用文件中要展开一下数据,每一组占一行 00:3; 01:3;

7、 02:3; 03:3; 04:5; 05:5; 06:5; 07:6; 08:8; 09:8; 10:8; 11:9; 12:6; 13:8; 14:5; 15:5; 16:12; 17:12; 18:12; 19:15; 20:13; 21:12; 22:10; 23:12; 24:9; 25:9; 26:9; 27:9; 28:9; 29:9; 30:9; 31:0; 32:9 ; 33:9; 34:9; 35:10; 36:7; 37:7; 38:6; 39:6; 40:5; 41:5; 42:5; 43:6; 44:8; 45:8; 46:9; 47:9; 48:3; 49:3; 5

8、0:8; 51:8; 52:6; 53:5; 54:6; 55:8; 56:5; 57:5; 58:5; 59:5; 60:5; 61:5; 62:5; 63:5; 64:10; 65:10; 66:10; 67:12; 68:7; 69:7; 70:9; 71:9; 72:6; 73:8; 74:5; 75:5; 76:5; 77:5; 78:5; 79:5; 80:3; 81:5; 82:3; 83:3; 84:5; 85:6; 86:7; 87:9; 88:6; 89:6; 90:6; 91:6; 92:6; 93:6; 94:5; 95:6; 96:8; 97:8; 98:8; 99:

9、9; 100:12;101:12;102:12;103:10;104:9; 105:9; 106:10;107:9; 108:8; 109:8; 110:6; 111:5; 112:3; 113:3; 114:3; 115:3; 116:8; 117:8; 118:8; 119:8; 120:6; 121:8; 122:6; 123:5; 124:3; 125:5; 126:6; 127:8; 128:5; 129:5; 130:5; 131:5; 132:5; 133:5; 134:5; 135:5; 136:0; 137:0; 138:0; END;,NoteTabs模块设计,ToneTa

10、ba,HIGH Index CODE Tone,乐谱译码输出,音调显示,高低音指示,乐谱输入,LIBRARY IEEE; USE IEEE.STD_LODIC_1164.ALL; ENTITY ToneTaba IS PORT(Index:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CODE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HIGH:OUT STD_LOGIC; Tone:OUT STD_LOGIC_VECTOR(10 DOWNTO 0); END; ARCHITECTURE one OF ToneTaba IS BEGIN Searc

11、h:PROCESS(Index) BEGIN CASE Index IS -译码电路,查表方式,控制音调的预置数 WHEN“0000“=ToneToneToneToneToneToneToneToneToneToneToneToneToneNULL; END CASE; END PROCESS; END;,ToneTaba模块设计,低音“1”: 785Hz,对1MHz时钟需1274分频。 中音“1”: 1570Hz,对1MHz时钟需637分频。 高音“1”: 3135Hz,对1MHz时钟需319分频。,Speakera,DivideCLK CLK PreCLK,GenSpkS PreCLK F

12、ullSpkS Tone,DelaySpkS SpkS FullSpkS,12MHz,Tone,SpkS,11位可预置计数器,Tone为预置数据输入端口。,12分频器。,1MHz。,Speakera模块设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Speakera IS PORT(clk: IN STD_LOGIC; Tone:IN STD_LOGIC_VECTOR(10 DOWNTO 0); SpkS:OUT STD_LOGIC); END; ARCHITECTURE

13、 one OF Speakera IS SIGNAL PreCLK,FullSpkS:STD_LOGIC; BEGIN DivideCLK:PROCESS(clk) VARIABLE Count4:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PreCLK11 THEN PreCLK=1;Count4:=“0000“; ELSIF clkEVENT AND clk=1 THEN Count4:=Count4+1; END IF; END PROCESS;,GenSpkS:PROCESS(PreCLK,Tone) -11位可预置计数器 VARIABLE Count11:

14、STD_LOGIC_VECTOR(10 DOWNTO 0); BEGIN IF PreCLKENVENT AND PreCLK=1 THEN IF Count11=16#7FF# THEN Count11:=Tone;FullSpkS=1; ELSE Count11:=Count11+1;FullSpkS=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;,一个音调要放出多少节拍,这取决于Tone端口的音调预置数持续的时间。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1