




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数电综合实验报告 -简易乐曲播放器学号 05006531班级 05102姓名 王静摘要随着EDA技术的进展,基于可编程的数字电子系统设计的完整方案越来越受到人们的重视。我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个根本要素,通过EDA工具和VHDL语言来控制这两个根本要素便可以实现一个简易的乐曲播放器了。关键字: 乐曲播放器、VHDL、音频、节拍AbstractWith the progress of EDA technology, based on programmable digital electronic system design integrity
2、 programs are attracting increasing attention. We know that every note of music sounds frequency and duration of the value of music is able to perform the required two basic elements, through the EDA tools and VHDL language to control these two basic elements will be able to achieve a simple music p
3、layer has.Key word: Music Player、VHDL、Audio frequency、metre一、设计任务要求设计制作一个简易乐曲播放器:1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键那么暂停播放,再按那么继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;6. 选做:用户可以自
4、行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;7. 选做:自拟其它功能。二、设计思路对于音调,乐曲的12平均率规定:每2个八度音之间的频率相差1倍。在2个八度音之间,又可分为12个半音,每2个半音的频率比为122。另外,音符A的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1到高音1之间每个音符的频率。而对于节拍,如果将一拍的长度定为1秒,那么1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。假设需要半拍,只需将该音符记录两次就可以了。对于以上设计,实际上本次实验使用的是MAX7000S的实验板,最大时钟频率
5、为1MHz,故用1M除以每个音调对应的频率便得到其分频比率。三、总体结构框图1MHz音调分频器节拍分频器顺序播放随机播放状态判断暂停或播放下一首本首重放音乐播放上一首图1简易乐曲播放器总体结构框图四、流程图开始顺序播放是否随机播放?YesNoYes随机播放shangyishou是否本首重来?本首重放No是否上一首?播放上一首shangyishou是否下一首?播放下一首shangyishouYesYes播放/暂停键是否为0?YesNo暂停播放shangyishouNoNo图2简易音乐播放器流程图五、分块电路设计1MHz三分频1Tone2345679101112138014二分频输出图3分块电路音
6、调分频器设计图六、所实现功能说明1、已完成的根本功能和扩展功能根本功能: 播放器内预存了3首乐曲:小星星、雪绒花、童话; 播放模式:当第一个拨段开关为0时为顺序播放,相应的彩灯熄灭;当其为1时为随机播放,相应的彩灯点亮; 在任何时间第一个数码管都将显示当前播放乐曲的顺序号; 第八个拨段开关为开始/暂停键,乐曲播放过程中该键置1那么暂停播放,置0那么继续播放; BTN2键为Next键,BTN3键为Previous键,按Next键可以听下一首,按Previous键回到本首开始; 扩展功能: 剩余的七个彩灯将随着相应音调的变化而闪烁; BTN4键为Last键,按Last键可以听上一首。2、器件的资源
7、占用情况3、所用元器件 EPM7128SLC84-15实验板一块4、仿真波形图 七、实验总结及心得1、 刚开始做分频器时,设计为需要某个音调的时候做其相应的分频,但后来发现这样做太占用资源。参考一些资料后,改进为直接使用一个底层,定义一个变量Tone来控制分频,当Tone为某个值时,输出为其相应的分频分1MHz。这样使得资源占用情况得到了大大的改善。2、 实验前对整体的把握不够完善,做了一局部后,做另一局部时,发现又要在之前的程序里面做修改,这样使得程序有了些不完善的地方。在以后的学习中要重视在实验前对实验整体的思考与把握。3、 在做暂停/播放、上一首、下一首、本首重放、顺序播放、随机播放这些
8、功能时,开始一直想着将某些功能嵌套在其他功能中,始终不得其法。后来想到在实现这些功能时板子上的相应的按键的状态是各不相同的,所以可以根据这个状态的不同来实现这些功能。4、 原本将三首歌写入三个底层,在顶层用if语句调用各个底层,可是发现在顶层不能用if语句下实现元件例化。可是又找不到好的解决方法,最后只能将三首歌的播放程序写到一个底层文件下,通过其状态计数器来实现各个功能。5、 程序编完后,发现资源占用过多,无法通过编译,这是因为歌曲编得过长了,删减一些后,编译通过,占用为90%。再参加彩灯闪烁功能,最终占用为97%。6、刚开始根据课件上给的音符与频率的关系,确定相应的频率,后来发现下载后的旋
9、律不对,后把顺序修改,音符越高,频率越低,这样播发的音乐才正确。八、完整源程序*顶层文件Songer*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT (CLK1MHZ :IN STD_LOGIC; -主频1M CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -彩灯功能 PP : IN STD_LOGIC; -暂停或播放 SHOW : OUT STD_LOGIC; -播放模式显示 NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGI
10、C; -上一首 PREVIOUS : IN STD_LOGIC; -本首重来 SPKOUT: OUT STD_LOGIC; -音频输出 MODE : IN STD_LOGIC; -播放模式 SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -歌曲序号显示 CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); STOP: IN STD_LOGIC );END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT ( clk: IN STD_LOGIC; ToneIndex: OUT INTEGE
11、R RANGE 0 TO 15; PP : IN STD_LOGIC; NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGIC; -上一首 PREVIOUS : IN STD_LOGIC; -本首重来 MODE : IN STD_LOGIC; RANDOM: IN STD_LOGIC; SHOW : OUT STD_LOGIC; SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba PORT ( Index: IN INTEGER RANGE 0 TO
12、15; CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); END COMPONENT; COMPONENT Speakera PORT(clk:IN STD_LOGIC;Tone:IN INTEGER RANGE 0 TO 16#7FF#;SpkS:OUT STD_LOGIC);END COMPONENT;SIGNAL Tone : INTEGER RANGE 0 TO 16#7FF#;SIGNAL ToneIndex :INTEGER RANGE 0 TO 15;SIGNA
13、L T:STD_LOGIC; -分频信号CONSTANT LENGTH:POSITIVE:=8; CONSTANT TAP1:POSITIVE:=8;CONSTANT TAP2:POSITIVE:=4;SIGNAL PRBS:STD_LOGIC;SIGNAL PRREG:STD_LOGIC_VECTOR(LENGTH DOWNTO 0);BEGINPROCESS(CLK1MHZ) -T分1M频为4Hz VARIABLE C:INTEGER RANGE 0 TO 124999;BEGIN IF(CLK1MHZEVENT AND CLK1MHZ=1)THEN IF(C=124999)THEN C:
14、=0; T=NOT T; ELSE C:=C+1; END IF; END IF;END PROCESS;process(T,STOP) -产生一个伪随机信号 begin if STOP=1 then prreg0); prreg(0)=1; elsif Tevent and T=1 then prreg=(prreg(length-1)downto 0)& (prreg(tap1)xor prreg(tap2); end if; end process; prbs=prreg(length); -prbs随机为0或1CATT,MODE=MODE,SHOW=SHOW, ToneIndex =
15、ToneIndex, RANDOM=PRBS,SEG=SEG,PP=PP,NEXTONE=NEXTONE,LASTONE=LASTONE,PREVIOUS=PREVIOUS);u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone,CAIDENG=CAIDENG);u3: Speakera PORT MAP(clk=CLK1MHZ,Tone=Tone ,SpkS=SPKOUT);END;*底层文件NoteTabs*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTabs IS PORT ( clk
16、 :IN STD_LOGIC; -4Hz ToneIndex : OUT INTEGER RANGE 0 TO 15; -音调 PP : IN STD_LOGIC; -播放或暂停 NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGIC; -上一首 PREVIOUS : IN STD_LOGIC ; -本首重来 MODE : IN STD_LOGIC; -播放模式 SHOW :OUT STD_LOGIC; -播放模式显示 SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-7段数码管输出 RANDOM: IN STD_LOG
17、IC );END;ARCHITECTURE one OF NoteTabs IS SIGNAL Counter : INTEGER RANGE 0 TO 152; BEGIN CNT8: PROCESS(clk,PP,MODE, RANDOM,NEXTONE,LASTONE,PREVIOUS) BEGIN IF(clkEVENT AND clk=1) THEN IF( NEXTONE=0 AND LASTONE=0 AND PREVIOUS=0 AND MODE=0 AND PP=0 ) THEN -顺序播放模式下 SHOW=0; -灯灭 IF Counter=152 THEN Counter
18、 =0; ELSE Counter=Counter+1; END IF; ELSIF (NEXTONE=0 AND LASTONE=0 AND PREVIOUS=0 AND MODE=1 AND PP=0 )THEN -随机播放模式下 SHOW=1; -灯亮 IF Counter=47 THEN -每首歌完后,如果随机信号为0那么播放下一首歌 IF RANDOM=0 THEN Counter=48; -如果为1,那么播放前一首歌。这一切都可由改变状态 ELSIF RANDOM=1 THEN Counter=97; -计数器Counter来实现 END IF; ELSIF Counter=96
19、THEN IF RANDOM=0 THEN Counter=97; ELSIF RANDOM=1 THEN Counter=00; END IF; ELSIF Counter=152 THEN IF RANDOM=0 THEN Counter=00; ELSIF RANDOM=1 THEN Counter=48; END IF; ELSE Counter=Counter+1; END IF; ELSIF PP=1 THEN -如果暂停了,计数器暂停计数 Counter=Counter; ELSIF (NEXTONE=1 AND LASTONE=0 AND PREVIOUS=0) THEN -选
20、择下一首,将计数器改为下首歌曲开始的一个数 IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=00; END IF; ELSIF(NEXTONE=0 AND LASTONE=1 AND PREVIOUS=0) THEN -选择上一首,将计数器直改为上首歌曲开始的一个数 IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=48; END IF; ELSIF(NEXTONE=0 AND LAST
21、ONE=0 AND PREVIOUS=1) THEN -选择本首重放,将计数器改为本首开始的状态数 IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=97; END IF; END IF; END IF; END PROCESS;PROCESS(clk) -歌曲序号显示,通过状态数的大小判断BEGIN IF Counter=47 THEN SEG=48 AND Counter=96 THEN SEG=97 THEN SEGToneIndex ToneIndex ToneIndex ToneI
22、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI
23、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI
24、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI
25、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI
26、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex NULL;
27、 END CASE; END PROCESS;END;*底层文件ToneTaba*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index: IN INTEGER RANGE 0 TO 15; CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); Tone: OUT INTEGER RANGE 0 TO 16#7FF#);END;ARCHITECTURE one OF ToneTaba ISBEGIN Search : PROCESS(Index) BEGIN CASE I
28、ndex IS -音调分频比 WHEN 0=ToneTone= 1274; CAIDENGTone= 1135; CAIDENGTone= 1011; CAIDENGTone= 954; CAIDENGTone= 850; CAIDENGTone= 757; CAIDENGTone= 675; CAIDENGTone= 637; CAIDENGTone= 567; CAIDENGTone=505; CAIDENGTone=477; CAIDENGTone=425; CAIDENGTone=379; CAIDENGTone=337; CAIDENGTone=319; CAIDENGNULL; END CASE;END PROCESS;END;*底层文件Speakera*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speakera IS PORT ( clk :IN STD_LOGIC; -1MHz Tone : IN INTEGER RA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国粉墙机数据监测研究报告
- 2025至2030年中国涤纶单丝印刷筛网数据监测研究报告
- 2025至2030年中国泡棉产品数据监测研究报告
- 2025至2030年中国有光腈纶纱数据监测研究报告
- 2025至2030年中国影音转换插头数据监测研究报告
- 2025至2030年中国半自动拉伸膜缠绕机数据监测研究报告
- 安徽连栋温室工程施工方案
- 2025至2030年中国CO2加热减压流量计数据监测研究报告
- 铜川电缆防火涂料施工方案
- 2025年中国橡根织绳市场调查研究报告
- 2025年度光伏电站光伏组件回收处理合同示范文本
- 2025年春季少先队工作计划及安排表(附:少先队每月工作安排表)
- 《教育强国建设规划纲要(2024-2035年)》全文
- 中国服装零售行业发展环境、市场运行格局及前景研究报告-智研咨询(2025版)
- 临床提高脓毒性休克患者1h集束化措施落实率PDCA品管圈
- DB53∕T 1269-2024 改性磷石膏用于矿山废弃地生态修复回填技术规范
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- JBT 14727-2023 滚动轴承 零件黑色氧化处理 技术规范 (正式版)
- 小学科学湘科版六年级下册全册同步练习含答案
- 思维第一:全面提升学习力
- 与领导班子谈心谈话
评论
0/150
提交评论