软件设计相关论文范文数据库,与数控文前言江苏相关毕业论文致谢
本论文是一篇软件设计相关毕业论文致谢,关于数控文前言江苏相关毕业论文的格式范文。免费优秀的关于软件设计及模块及系统方面论文范文资料,适合软件设计论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
HZ,ENABLE等于>,PLAY,ToneIndex等于>,ToneIndex),u2:ToneTabaPORTMAP(Index等于>,ToneIndex,Tone等于>,Tone,CODE等于>,CODE1,HIGH等于>,HIGH1),
u3:SpeakeraPORTMAP(clk等于>,CLK12MHZ,Tone等于>,Tone,ENABLE等于>,PLAY,SpkS等于>,SPKOUT),
END,
2.4.2NoteTabs模块
音符的频率从该模块获得,这是一个数控分频器.内设一个8位二进制计数器,作为音符数据ROM的地址发生器.这个计数器频率选4Hz,即每个计数值停留时间为0.25秒,恰为全音符设为1秒时,四四拍的4分音符持续时间.随着NoteTabs的计数器按4Hz的速率作加法计数时,即随地址增加时,"梁祝"乐曲自然演奏起来了[10].
NoteTabs模块的VHDL源程序为:
LIBRARYIEEE,
USEIEEE.STD_LOGIC_1164.ALL,
USEIEEE.STD_LOGIC_UNSIGNED.ALL,
ENTITYNoteTabsIS
PORT(clk:INSTD_LOGIC,
enable:INSTD_LOGIC,--08521
ToneIndex:OUTSTD_LOGIC_VECTOR(3DOWNTO0)),
END,
ARCHITECTUREoneOFNoteTabsIS
COMPONENTMUSIC--音符数据ROM
PORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0),
clock:INSTD_LOGIC,
clken:INSTD_LOGIC,--2016,MAY21
q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)),
ENDCOMPONENT,
SIGNALCounter:STD_LOGIC_VECTOR(7DOWNTO0),
BEGIN
CNT8:PROCESS(clk,Counter)
BEGIN
IFCounter等于138THENCounter<,等于"00000000",
ELSIF(clk'EVENTANDclk等于'1')THENCounter<,等于Counter+1,ENDIF,
ENDPROCESS,
u1:MUSICPORTMAP(address等于>,Counter,clken等于>,enable,q等于>,ToneIndex,clock等于>,clk),
END,
2.4.3模块ToneTaba
该模块的功能是为Speakera提供决定所发音符的分频预置数,此数在Speakera输入口停留的时间即为此音符的节拍值[5].模块ToneTaba是乐曲简谱码对应的分频预置数查表电路,其中设置了"梁祝"乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由ToneTaba的clk决定.这13个值输出由Index[3..0]表示.
有关论文范文主题研究: | 软件设计类论文范文 | 大学生适用: | 学院学士论文、学士学位论文 |
---|---|---|---|
相关参考文献下载数量: | 77 | 写作解决问题: | 如何怎么撰写 |
毕业论文开题报告: | 标准论文格式、论文设计 | 职称论文适用: | 核心期刊、职称评副高 |
所属大学生专业类别: | 如何怎么撰写 | 论文题目推荐度: | 优秀选题 |
ToneTaba的VHDL源代码为:
LIBRARYIEEE,
USEIEEE.STD_LOGIC_1164.ALL,
ENTITYToneTabaIS
PORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0),
CODE:OUTSTD_LOGIC_VECTOR(3DOWNTO0),
HIGH:OUTSTD_LOGIC,
Tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0)),
END,
ARCHITECTUREoneOFToneTabaIS
BEGIN
Search:PROCESS(Index)
BEGIN
CASEIndexIS--译码电路,查表方式,控制音调的预置数
WHEN"0000"等于>,Tone<,等于"11111111111",CODE<,等于"0000",HIGH<,等于'0',--2047
WHEN"0001"等于>,Tone<,等于"01100000101",CODE<,等于"0001",HIGH<,等于'0',--773,
WHEN"0010"等于>,Tone<,等于"01110010000",CODE<,等于"0010",HIGH<,等于'0',--912,
WHEN"0011"等于>,Tone<,等于"10000001100",CODE<,等于"0011",HIGH<,等于'0',--1036,
WHEN"0101"等于>,Tone<,等于"10010101101",CODE<,等于"0101",HIGH<,等于'0',--1197,
WHEN"0110"等于>,Tone<,等于"10100001010",CODE<,等于"0110",HIGH<,等于'0',--1290,
WHEN"0111"等于>,Tone<,等于"10101011100",CODE<,等于"0111",HIGH<,等于'0',--1372,
WHEN"1000"等于>,Tone<,等于"10110000010",CODE<,等于"0001",HIGH<,等于'1',--1410,
WHEN"1001"等于>,Tone<,等于"10111001000",CODE<,等于"0010",HIGH<,等于'1',--1480,
WHEN"1010"等于>,Tone<,等于"11000000110",CODE<,等于"0011",HIGH<,等于'1',--1542,
WHEN"1100"等于>,Tone<,等于"11001010110",CODE<,等于"0101",HIGH<,等于'1',--1622,
WHEN"1101"等于>,Tone<,等于"11010000100",CODE<,等于"0110",HIGH<,等于'1',--1668,
WHEN"1111"等于>,Tone<,等于"11011000000",CODE<,等于"0001",HIGH<,等于'1',--1728,
WHENOTHERS等于>,NULL,
ENDCASE,
ENDPROCESS,
END,
2.4.4Speakera模块
音符的频率可由Speakera获得,这是一个数控分频器.有其clk端输入一具有较高频率的信号,通过Speakera分频后,由SPKOUT输出,由于直接从数控分频器的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,另加一个D触发器以均衡其占空比,这时频率为原来的一半.
SPKOUT的输出频率将决定每个音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT的输出频率有了对应关系.
其VHDL源代码如下:
LIBRARYIEEE,
USEIEEE.STD_LOGIC_1164.ALL,
USEIEEE.STD_LOGIC_UNSIGNED.ALL,
ENTITYSpeakeraIS
PORT(clk:INSTD_LOGIC,
Tone:INSTD_LOGIC_VECTOR(10DOWNTO0),
ENABLE:INSTD_LOGIC,--2016,5,21,选通信号,高电平时,音乐播
--低电平时,暂停.
SpkS:OUTSTD_LOGIC),
END,
ARCHITECTUREoneOFSpeakeraIS
SIGNALPreCLK,FullSpkS:STD_LOGIC,
BEGIN
DivideCLK:PROCESS(clk)
VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0),
BEGIN
PreCLK<,等于'0',--将CLK进行16分频,PreCLK为CLK的16分频
IFCount4>,11THENPreCLK<,等于'1',Count4:等于"0000",
ELSIFclk'EVENTANDclk等于'1'THENCount4:等于Count4+1,
ENDIF,
ENDPROCESS,
GenSpkS:PROCESS(PreCLK,Tone)--11位可预置计数器
VARIABLECount11:STD_LOGIC_VECTOR(10DOWNTO0),
BEGIN
IFPreCLK'EVENTANDPreCLK等于'1'THEN
IFCount11等于16#7FF#THENCo
软件设计相关论文范文数据库,与数控文前言江苏相关毕业论文致谢参考文献资料: