观易用的接口,越来越受到数字系统设计者的欢迎。
3
f2简易音乐演奏器的设计
21硬件电路设计
根据要求:简易功能演奏器的功能要求,需要设计手动播放功能和自动播放功能,所以系统顶层框图设计如下图所示:
自动播放模块
分频模块
选择及手动模块
预置数模块
播放模块
顶层设计图
简易乐曲演奏器的原理图如下:
简易乐曲演奏器
22软件代码设计
软件代码设计部分由多个功能模块组成,包括:音符储存模块、选择播放模式和手动播放模块、分频模块、预置数模块和音频发声模块。
221音符储存单元
随着clk的计数变化
ote的输出音符将内部rom的输出。此模块的代码为:libraryieeeuseieeestd_logic_1164all
4
fe
tity
otetabaisportclki
std_logic
oteouti
tegerra
ge0to15e
d
otetabaarchitecturebhvof
otetabaissig
alcou
teri
tegerra
ge0to120begi
processclkcou
terbegi
ifcou
ter120the
cou
ter0elsifclkeve
ta
dclk1the
cou
tercou
ter1e
dife
dprocessprocesscou
terbegi
casecou
teriswhe
0
ote0whe
721to2228318086to87112
ote1whe
81529to3032475589to90
ote2whe
1to39to1116202433to354856588891
ote3whe
41217to192325to2636444951575992to93
ote4whe
5to613to1437to3845to4678to798594110to111117to118
ote5whe
273981to84113to116
ote6whe
4064727796104109120
ote7whe
41to4252to546365to677173to769597to99103105to108119
ote8whe
60to626970100102
ote9whe
101
ote10whe
othersNULLe
dcasee
dprocess
5
fe
dbhv形成的模块框图如下图所示:
otetabaclk
ote30
i
st2
音符储存模块图
222选择播放模式及手动模块单元
当cs1时为手动模式,cs0时为自动播放模式。此模块的代码为:libraryieeeuseieeestd_logic_1164alle
titybmuxisportd1d2i
i
tegerra
ge0to15csrsti
std_logicqouti
tegerra
ge0to15e
dbmuxarchitecturebhvofbmuxisbegi
processcsrstbegi
ifrst1the
q0elsecasecsiswhe
0qd1whe
1qd2whe
othersqd1e
dcasee
dife
dprocesse
dbhv形成的模块框图为:
6
fbmuxd130d230csrstq30
i
st
选择播放模式和手动模块图
223分频模块单元
本设计中需要的频率12KHz分频到4Hz分频模块代码为libraryieeeuseieeestd_logic_1164alle
tityfe
pi
isportclki
std_logicclkoutbufferstd_logice
dfe
pi
architecturebhvoffe
pi
issig
altempi
tegerra
ge0to3000000begi
processclkvariabletempi
tegerra
ge0to1500000begi
ifclkeve
ta
dclk1the
temptemp1iftemp150the
clkout
otclkouttemp0e
dife
dife
dprocesse
dbhv分频模块的图如下r