乐曲演奏电路ppt课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BCEOGDINE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
HTuoI1nG:eHN:o:tOeTUOaTbUsTSPTSODTR_DTL_OLMGOAIGPCI(_CcVl;kE=C>cTlOk4RH(1z,0 DTOonWeINnTdeOx 0=)>);ToneIndex);
SVIGARNIAALBPLrEeCCLoKun,Ft2u:lSlSTpDk_SL:SOTGDI_CL;OGIC; BEBGEIGNIN DividIFeCFLuKllS:PpRkSO'ECVEESSN(TclkA)ND FullSpkS='1'
一个音调要放出多 THE少N节拍,这取决于
VARICAoBuLnEt2:C=oNuOnTt4:CSoTuDn_t2L;OGIC_VECTOR(T3oDnOeW端N口TO的0音); 调预
DivideCLK 12MHz CLK PreCLK
Tone
12分频器。 1MHz。
GenSpkS PreCLK FullSpkS Tone
DelaySpkS SpkS FullSpkS
SpkS
GenSpkS:PROCESS(PreCLK,Tone) --11位可预置计数器
Speakera模块设计 LVIBARRAIARBYLIEECEo;unt11:STD_LOGIC_VECTOR(10 DOWNTO 0);
66:10;
76:54;
67:12;
77:55;
68:7;
78:65;
69:7;
79:75;
低
80:3; 81IF:5C; ou8n2te:r3=;符TH83E:N3;C8ou8n4t:e5r;<9="8050:0610;0000806":;71;1 87:192; 881:63; 891:64; 中 90:6; 91E:L6S; IF9(c2l:k6';E编NV93E:N6T; A9N4D:5c;lk=9'15'):6T;HE9N6:C8o;unt9e7r:<8=;Cou9n8t:e8r;+1;9E9N:9D; IF;
50:8;BE5G1I:N8; 52:6; 53:5; 54:6; 55:8; 56:5; 57:5; 58:5; 59:5;
60:5; 70:9;
CB76NE11TG::958I:;;NPR76O22C::56E;;S音S(67c33lk::)58;; 1
64:10;
74:5;2
65:10;
75:5;3
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);
UBSEEGIEINEE.STD_LOGIC_1164.ALL; USEIIFEPErEe.CSLTKD'_ELNOVGEINCT_UANNSDIGPNreECDL.AKL='L1;' THEN ENTITYIFSCpeoauknetr1a1=IS16#7FF# THEN Count11:=Tone;FullSpkS<='1';
1274 WHEN"1111"=>Tone<="11011000000";CODE<="0001";HIGH<='1';--1728;
3HWHzE,N O对TH1EMRS=H>NzU时LL;钟需319分频。
END CASE;
END PROCESS;
END;
11位可预置计数
Speakera 器,Tone为预置 数据输入端口。
ENTITY Songer IS
PORT (clk12MHz,clk4Hz :IN STD_LOGIC;
CODE1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
HIGH1,SPKOUT : OUT STD_LOGIC);
END;
ARCHITECTURE one OF Songer IS
PORT(clk: IN STD_LOGIC; TonEe:LISNESCToDu_nLtO11G:=ICCo_uVnEt1C1T+O1;RF(u1l0lSDpkOSW<=N'0T'O; E0N);D IF; ESpNkDS:IOF;UT STD_LOGIC);
EENNDD;PROCESS;
DAeRlaCySHpIkTSE:PCRTOUCRESoSn(eFOulFlSSppkeSa)kera IS
乐曲演奏电路
乐曲演奏电路构造
U1
NoteTabs
4Hz Clk ToneIndex
U2
ToneTaba HIGH
Index CODE Tone
12MHz
U3
Speakera Tone SpkS Clk
顶层构造描画 LIBRARY IEEE;
USE IEEE.STD_LODIC_1164.ALL;
NoteTabs 为乐曲的根本节拍单元。
CNT8 4Hz clk
CLK Counter
LPM_ROM
MUSIC ToneIndex
address q
inclock
计数器,0 ~ 计数。产生 ROM地址。
用LPM_ROM 定制MUSIC。
乐 谱
LIBRARY IEEE;
-- MUUSSEICI.EMEIEF.S文TD件_LODIC_1164.ALL;
END COMuP2:OTNoEneNTTa;ba PORT MAP(Index=> ToneIndex,Tone => Tone,
COMPONENT Speakera
CODE => CODE1, HIGH => HIGH1 );
PORT(Tcluok3n::eSI:NpIeNSaTkSeDTr_DaL_POLOOGRGITCI;CM_AVPE(CclTk=O>Rc(lk1012DMOHWz,NTTOon0e);=> Tone ,Spks => SPKOUT);
10:8; 1P1O:9R;T(a1d2d:r6e;ss:I1N3:S8T;D_1L4O:G5;IC_1V5E:5C;TO1E6(:71D2;OW17N:1T2O; 01)8; :12; 19:15;
20:13; 21:12; 2in2c:l1o0c;k:I2N3:S1T2D; _2L4O:9G;IC;25:9; 26:9; 27:9; 28:9; 29:9;
ToneTaba
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
2047 773 1274 1570Hz,对1MHz时钟需637分频。 WHEN"1000"=>Tone<="10110000010";CODE<="0001";HIGH<='1';--1410; WHEN"1001"=>Tone<="10111001000";CODE<="0010";HIGH<='1';--1480;
BEPIEGFrLeIIEECSCNFNLIoLFCuSDKnEocIltu<k4FSn='>p;Et‘12kV1:S0=ET<’'N1=H';'TE0T'NAH-;-N将EPDNrCeCcLSlpLkKk=K进S'1<<展'==T''111H2'';;分ECNo频uCn,ot4uP:置nr=te"4C数0:=L0C0继K0o为"u续;nCt的L4+K时1的; 间12分。频
111110320000::::6156E;2;;NEu;11111DN1:203;DM1111::::UP5815R;S2;;IO;1C1111C203P2E222O::::S3615RS;码音符2;;;T;1111M10233333A::::3P1551;(10;;a5;1d1111d0234r444:e:::3s953s;2=;;; >111:C15205o;55:u3:::n953;0t;;e;1r11,1:q0206=;66:>8::4T:16;0o0;;n1;111eI027n77:d85::e98;x;;,1in111c820l:88o68c::;85k;;=1>111c920lk:9978)::;;85;;
高
END;
ToneTaba
Index
HIGH CODE
Tone
乐谱输入
高低音指示
音调显示 乐谱译码输出
LIBRARY IEEE; USE IEEE.STD_LODIC_1164.ALL; ENTITY ToneTaba IS
PORT(Index:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
30:9; 31:0; 32:9 ; q:3O3U:9T; ST3D4_:L9;OG3IC5:_1V0E; C3T6O:7R;(3 D37O:W7;NT3O8:06);); 39:6; 40:5; ESI4NG1D:N5CA;OLMC42oPu:O5nN;teErN:4S3TT:;D6;_LO4G4:I8C;_V4E5C:T8;OR4(76:D9O; W4N7T:O9;0);48:3; 49:3;
Search:PROCESS(Index)
BEGIN
CASE Index IS --译码电路,查表方式,控制音调的预置数
低音“1〞: WHEN"0000"=>Tone<="11111111111";CODE<="0000";HIGH<='0';--2047; WHEN"0001"=>Tone<="01100000101";CODE<="0001";HIGH<='0';--773;
NoteTabs
模块设计 W DEIPDUETTNSHPHEOT==IRI24TET5;YE6(E;Nc-l-.okS乐t:TeINT曲Da_Sb演LTsODI奏SD_I数LCO_据GUINCS;IGNED.ALL;
ADDRESTSo_nReIAnDdeIxX:O=UDTECST;D_LOGIC_VECTOR(3 DOWNTO 0));
WHEN"1010"=>Tone<="11000000110";CODE<="0011";HIGH<='1';--1542;
1000000 Hz WHEN"1100"=>Tone<="11001010110";CODE<="0101";HIGH<='1';--1622; 高音“1〞: 785Hz WHEN"1101"=>Tone<="11010000100";CODE<="0110";HIGH<='1';--1668;
DATAEN_RD;ADIX=DEC;
CONATRECNHTITBEECGTIUNRE -o-n留e O意F适No用te文Ta件bs中IS要展开一下数据,每一组占一行
00:3; C0O1M:3P;ON0E2N:3T; M0U3S:I3C; -0-4音:5符; 数0据5R:5O;M06:5; 07:6; 08:8; 09:8;
ห้องสมุดไป่ตู้
音 符 预 置 数 计 算 方 法 : 785Hz,对1MHz时钟需1274分频。 WHEN"0010"=>Tone<="01110010000";CODE<="0010";HIGH<='0';--912; WHEN"0011"=>Tone<="10000001100";CODE<="0011";HIGH<='0';--1036;
ESNpDk;s :OUT STD_LOGIC);
END COMPONENT;
SIGNAL Tone:STD_LOGIC_VECTOR(10 DOWNTO 0);
SIGNAL ToneIndex :STD_LOGIC_VECTOR(3 DOWNTO 0);
0.25秒为四四拍的4
分音符继续时间,确定
WHEN"0101"=>Tone<="10010101101";CODE<="0101";HIGH<='0';--1197;
中音“1〞: (305 ) 773; WHEN"0110"=>Tone<="10100001010";CODE<="0110";HIGH<='0';--1290; WHEN"0111"=>Tone<="10101011100";CODE<="0111";HIGH1<6='0';--2;