数电综合实验报告--简易乐曲播放器

合集下载

音乐播放器的实验报告

音乐播放器的实验报告

音乐播放器的实验报告音乐播放器的实验报告引言:音乐是人们生活中不可或缺的一部分,而音乐播放器作为传播音乐的工具,在现代社会中扮演着重要的角色。

本次实验的目的是研究音乐播放器的功能和性能,以及对音乐播放器的使用体验进行评估。

一、功能分析音乐播放器的功能主要包括音频播放、音频格式支持、播放列表管理、音量控制、音效调节等。

通过实验测试,我们发现该音乐播放器在这些方面表现出色。

首先,它支持多种音频格式,包括MP3、WAV、FLAC等,能够满足用户对不同音频格式的需求。

其次,播放器具备良好的播放列表管理功能,用户可以根据自己的喜好创建、编辑和删除播放列表,方便快捷地管理自己的音乐。

此外,音乐播放器还提供了音量控制和音效调节功能,用户可以根据自己的需求来调整音量大小和音频效果,提升音乐的听感。

二、性能测试为了评估音乐播放器的性能,我们进行了多项测试。

首先是音频播放质量测试,我们选择了不同类型的音频文件进行播放,并对比了不同音频播放器的音质表现。

结果显示,该音乐播放器在音频播放质量方面表现出众,音质清晰、细腻,能够还原音频本身的特点。

其次是播放稳定性测试,我们将大量音频文件添加到播放列表中,并进行循环播放测试。

结果显示,音乐播放器在长时间播放过程中没有出现卡顿、崩溃等问题,表现稳定可靠。

最后是资源占用测试,我们对音乐播放器的内存占用和CPU占用进行了测试。

结果显示,该音乐播放器在资源占用方面表现较好,占用资源较少,对设备性能的影响较小。

三、用户体验评估除了功能和性能,用户体验也是评价音乐播放器的重要指标之一。

为了评估用户体验,我们进行了用户调研和使用测试。

调研结果显示,用户对该音乐播放器的界面设计和操作方式较为满意,认为界面简洁、直观,操作便捷。

在使用测试中,用户对音乐播放器的播放速度、响应速度和界面切换速度进行了评估,结果显示,音乐播放器在这些方面表现良好,能够满足用户对流畅使用的需求。

此外,用户还对音乐播放器的搜索功能、歌词显示和背景音乐设置等进行了评价,认为这些功能丰富了用户体验,提升了音乐播放的乐趣。

简单音乐播放器数电实验

简单音乐播放器数电实验
数字电路与逻辑设计综合设计实验报告
实验名称:简易音乐播放器
姓名:
班级: 班
班内序号:27
一、设计任务要求
设计制作一个简易乐曲播放器。
1)播放器内预存3首乐曲;
2)播放模式:顺序播放、随机播放,并用数码管或LED显示当前播放模式;
3)顺序播放:按内部给定的顺序依次播放3首乐曲;
4)随机播放:随机产生一个顺序播放3首乐曲;
3)Keycontrol模块:(时钟用的是未经分频的)
顺序播放:
可以看出,在mode=0,即顺序播放模式下,在没有按任何键时,音符计数器counter随时钟自动加1从而进入下一个音。Sequential表示顺序播放,random表示随机播放,由图可见此时sequential为高电平,random为低电平,可知此时为顺序播放状态。
);
end component;
component speaker
port(
clk1mhz,ppsymbol:in std_logic;
tonefreq:in integer range 0 to 1516 ;
sound:out std_logic
);
end component;
component shownumber
counter由144自动变到145是第一首播完自动到第二首
下一首:
当按一下一首键时,即nextone变为高电平,音符计数器counter由第一首歌的14变到了第二首歌开始音符所对应的数145,实现了切换到下一首的功能。
本首重放:
当播放到第二首歌的152时,按下了本首重放键,即previous变为高电平,这时counter变为第二首歌起始音对应的数145,进而实现了本首重放的功能。

音乐播放器实验报告

音乐播放器实验报告
通过控制单片机定时器的定时时间产生不同频率的音频脉冲使 得蜂鸣器发出不同音节的声音,即声调。用软件延时来控制发音时 间的长短,控制节拍。把乐谱中的音符和相应的节拍变换为定时常 数和延时常数,作为数据表格存放在存储器中,由程序查表得到定 时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该 音频脉冲的持续时间。
b 功能结构图: Key1 负责切换播放歌曲,共两首。分别是祝你生日快乐和寂寞 沙洲冷;Key2 负责切换 LED 显示花样,共 3 种:顺序显示,由两 边向中间移动然后向两边移动,循环显示。
三、 实验器材 Windows7 操作系统 Proteus 仿真软件 keil4 软件 AT89C51 单片机 共阴极数码管 开关 电容 晶振 电阻 发光二极管 蜂鸣器
(2) 系统要求有选择上一首、下一曲功能; (3) 两个按键,可在播放和显示花样中进行切换; (4) 用一个键控制花样类型的显示功能; (5)用 LED 灯闪烁“伴奏”。 五、 实训基本原理(附原理图、源程序清单) 1 硬件设计 ①LED 显示电路设计与原理
LED 显示电路是由 8 个 LED 发光二极管组成,连接方式是共阳 极,LED 接到单片机的 P1 口,若是低电平,可使 LED 亮。发光二 极管的亮灭是由内部程序控制的,8 个 LED 发光二极管分别对应不 同的音阶,所以 LED 会随着音阶的变化按规律亮灭。
一定的物理实件(扬声器),就产生了一定频率的声音。若改变输出 方波的频率,产生的声音随之改变。通过控制输出方波的时间长短, 声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样 的节拍,单片机就可以产生电子音乐。音乐的播放模式及选择可以 通过按键的输入得以实现。在本次设计中将蜂鸣器连接到 AT89C52 的 P3^7 接口处。

简易乐曲播放器-数字电路与逻辑设计报告

简易乐曲播放器-数字电路与逻辑设计报告

数字电路与逻辑设计实验报告简易乐曲播放器一、设计课题的任务要求基本任务:设计制作一个简易乐曲播放器。

1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;提高要求:1.用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;2.自拟其它功能。

二、系统设计(设计思路、总体框图、分块设计)设计思路:由于一般乐曲最短音符为四分音符,则总体设计思路为每次播放一个四分音符,持续时间1/4秒(分频),并依次循环播放每个四分音符,每个四分音符对应音调利用1M分频器分频产生,播放功能则利用蜂鸣器播放当前音调对应频率值即可。

主题设计完成后,加入各控制功能,显示功能。

总体框图:结构框图:方框图:ASM图:暂停暂停MDS图:分块设计:1.分频模块(1)音调:在声乐中,每个音调对应一个频率,而本次实验即应用1M的时钟分频为各个音调所对应的频率,由于每次输出仅有一个频率,则可以在某个四分音符播放时选择分频为哪个音调对应的频率。

由于宏单元使用不够,改为先将1M时钟4分频,再利用4分频后的时钟分为各个音调对应的频率以减小计数器最大计数值。

(2)音长:由于一般乐曲中最短音长为四分音符,并设定全音符音长为1s,四分音符音长为4s,利用每次播放一个四分音符的思路依次播放每个音符(全音符播放4次,半分音符2次)直至有其他控制。

即需对1MHz分频为4Hz。

2.控制模块(1)模式控制A.顺序模式:依次播放每个四分音符,播完3首歌曲后循环B.随机模式:利用异或产生随机数并在播完歌曲后(或按下一首)利用所产生的随机数播放另两首歌曲中的一首C.用户自定义模式:a.顺序播放:依次按1、2、3的顺序播放歌曲并循环b.倒序播放:依次按3、2、1的顺序播放歌曲并循环(2)按键控制A.暂停:在任意播放时刻按下即暂停播放,并记下断点处,蜂鸣器消声,所有彩灯数码管熄灭,一切功能键失效,释放时即从断点处恢复B.下一首:在任意播放时刻按下即按当前模式播放下一首歌曲C.本首重放:在任意播放时刻按下即从播放当前播放乐曲的第一个四分音符处开始播放D.上一首:在任意播放时刻按下即按当前模式播放上一首歌曲3.显示模块(1)彩灯播放某个四个分音符时,根据当前播放音调按七个简谱显示在七个彩灯上(2)数码管第一个数码管显示播放模式:顺序显示0,随机显示8,用户自定义正序显示1,用户自定义倒序显示2第二个数码管显示当前播放曲目序号需要控制两个数码管显示时的时钟分配问题(利用视觉暂留控制1M时钟二分频依次点亮两个数码管)(3)蜂鸣器依次播放所需播放的四分音符三、仿真波形及波形分析本实验仿真着实不易。

专业综合实践实习报告_简易WAVE音乐播放器与制作

专业综合实践实习报告_简易WAVE音乐播放器与制作
7.成绩评定采用五级分制,即优、良、中、及格、不及格。
8.实习结束一周内,指导教师提交实习成绩和实习总结。
实习报告要求
实习报告内容、格式各专业根据实习类别(技能实习、认识实习、生产实习、毕业实习等)统一规范,经教研室主任审核、主管院长审批备案。
注意:
1.实习任务书和实习指导书在实习前发给学生,实习任务书放置在实习报告封面后和正文目录前。
核心部分电路原理图如2-4图所示:
图2-4核心部分原理图
图2-5三点式电容振荡电路图
这是核心部分电路中的并联晶体振荡器电路图,在这中晶体振荡器为单片机提供一个稳
定的准确的时钟信号,2个电容与晶体振荡器构成三点式电容振荡器电路,2个并联电容起到滤波,美化波形的作用。
图2-6复位电路
这是核心部分电路中的复位电路图。此电路是标准的上电自动复位电路。上电自动复位是在加电瞬间电容通过充电来实现的,在通电瞬间,电容C5通过电阻R19充电,节点处出现正脉冲,用以复位。只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。关于参数的选定,在振荡稳定后应保证复位高电平持续时间(即正脉冲宽度)大于2个机器周期。
3、按键电路原理
按键部分电路图如图2-3所示:
图2-3按键电路原理图
此按键电路的S1~S5开关分别接至单片机P1.0~P1.4口,由单片机内置程序控制。当按下S1~S4中任意一个开关,再按S1~S4中的开关就不起作用,按S5后音乐程序中断,再由操作者发出按键指令,控制电路的运行。
4、核心部分电路原理
实 习 报 告
实习名称:专业综合实践
学生姓名:
学院名称:电气与信息工程学院
专业班级:电子XX41
学 号:10位学号

电子技术试验之音乐播放器实验报告

电子技术试验之音乐播放器实验报告

电子技术试验之音乐播放器实验报告一、实验目的1、熟练使用MAX+PLUSII软件平台。

2、了解音阶发生原理,学会用硬件描述语言(AHDL)建立音阶发生器模块,并最终编成乐曲,使其可以播放乐曲。

3、下载到JDEE-10试验箱上进行调试和验证音乐播放器的功能。

二、预期功能1、播放一首乐曲。

2、用任意微动开关的按动来控制音乐的播放与停止。

3、数码管两位显示正在播放的音符简谱。

4、点阵模拟五线谱,用十字灯标出正在播放的音符在音阶中的位置。

三、方案设计顶层设计图:模块说明:FREQ**:不同的音高发生器FREQDIVIDER:将高音一分为二产生低音的分频器KEYFORSTOP+stopsign:控制音乐播放与停止的输入端,stopsign为计数器,输出停止与播放的信号counter1:作为音乐节奏的分频器NEW_WORLD:乐曲播放器,曲名为《来自新世界》ED27SEGMENT:数码管控制器,输出显示简谱与高低音counter_disp+DISP:点阵控制器及其输入的扫描时钟信号分频器下面将介绍以上模块的具体实现及功能。

1、分频①音频分频音名与频率的关系:音乐上的十二平均律规定:每两个八度音之间的频率相差一倍。

在这两个八度音之间,分成十二个半音,每两个相领半音的频率比为12√2。

另外还规定,音名A(简谱低音6)的频率为 440Hz。

音名 B 到 C 之间、E 到 F 之间为半音,其余为全音。

这样,可计算得从低音5到高音3之间的每个音名的频率为:(*l表示低音,*h表示高音)∶g:1567.98Hzgl783.99Hzal:880Hz a:1760Hzbl:987.76Hz b:1975.53Hz->2024.77c:1046.50Hz ch:2093Hz->1911.13d:1174.66Hz dh:2349.32Hz->1702.62e:1318.51Hz eh:2637.02Hz->1516.86f:1396.92Hz这些低频信号由高频信号经过分频而得,时钟频率4MHz,而音频ah为1760Hz,则4M/1760=2272,由此设计一个2272进制的计数器,其时钟信号为4MHz,进位信号就是1760Hz。

播放器实验报告(3篇)

播放器实验报告(3篇)

第1篇一、实验目的1. 熟悉播放器的基本原理和功能模块。

2. 掌握音频、视频文件的解码与播放技术。

3. 提高编程能力和项目实践能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 常用库:FFmpeg三、实验内容1. 播放器界面设计2. 音频、视频文件解码3. 音频、视频同步播放4. 控制功能实现四、实验步骤1. 播放器界面设计(1)创建项目,添加所需控件(2)设置控件属性,包括大小、位置、颜色等(3)添加播放按钮、暂停按钮、停止按钮等控制按钮2. 音频、视频文件解码(1)引入FFmpeg库(2)加载音频、视频文件(3)解码音频、视频数据3. 音频、视频同步播放(1)创建音频、视频播放线程(2)实现音频、视频数据同步(3)调整播放进度4. 控制功能实现(1)添加播放按钮、暂停按钮、停止按钮等事件处理函数(2)实现播放、暂停、停止等功能五、实验结果与分析1. 播放器界面设计本实验成功实现了播放器界面设计,包括播放区域、控制按钮、进度条等。

界面简洁美观,用户操作方便。

2. 音频、视频文件解码通过引入FFmpeg库,成功实现了音频、视频文件的解码。

在解码过程中,我们提取了音频、视频的采样率、码率、帧率等关键信息,为后续同步播放提供了依据。

3. 音频、视频同步播放在实现音频、视频同步播放时,我们采用了线程同步技术。

通过创建音频、视频播放线程,分别处理音频、视频数据的播放,确保了音频、视频播放的同步性。

同时,我们还实现了播放进度调整功能,方便用户实时查看和调整播放进度。

4. 控制功能实现本实验成功实现了播放、暂停、停止等功能。

用户可以通过控制按钮,轻松实现播放器的控制操作。

六、实验总结通过本次实验,我们掌握了播放器的基本原理和功能模块,熟悉了音频、视频文件的解码与播放技术。

同时,我们还提高了编程能力和项目实践能力。

以下为实验过程中总结的一些心得体会:1. 熟练掌握FFmpeg库的使用,能够实现音频、视频文件的解码与播放。

音乐播放器的实验报告

音乐播放器的实验报告

音乐播放器的实验报告音乐播放器的实验报告引言:音乐是人们生活中不可或缺的一部分,而音乐播放器是我们享受音乐的重要工具。

本次实验旨在研究音乐播放器的功能和性能,以及对用户体验的影响。

一、音乐播放器的功能音乐播放器作为一种多媒体设备,具备多种功能,包括音乐播放、音量调节、音乐列表管理、音效设置等。

在本次实验中,我们主要关注以下几个功能。

1. 音乐播放:音乐播放器应能够播放多种格式的音乐文件,如mp3、wav等,并提供播放控制按钮,如播放、暂停、上一曲、下一曲等。

2. 音量调节:音乐播放器应具备音量调节功能,用户可以通过按钮或滑动条来调节音量大小,以满足个人需求。

3. 音乐列表管理:音乐播放器应能够管理音乐文件,包括添加、删除、排序等操作。

用户可以根据自己的喜好创建不同的音乐列表,并随时切换。

4. 音效设置:音乐播放器应提供音效设置选项,如均衡器、重低音增强等。

用户可以根据自己的喜好来调整音效,以获得更好的音乐体验。

二、音乐播放器的性能音乐播放器的性能对于用户体验至关重要。

在本次实验中,我们主要关注以下几个性能指标。

1. 音质:音乐播放器应能够提供高质量的音乐播放效果。

我们通过对比不同音乐播放器的音质差异,评估其音质性能。

2. 响应速度:音乐播放器的响应速度应尽可能快,以提供流畅的用户体验。

我们通过测试不同音乐播放器的响应速度,评估其性能表现。

3. 耗电量:音乐播放器应尽可能降低耗电量,以延长电池寿命。

我们通过测试不同音乐播放器的耗电量,评估其节能性能。

4. 兼容性:音乐播放器应具备良好的兼容性,能够播放各种格式的音乐文件,并适配不同操作系统和设备。

我们通过测试不同音乐播放器的兼容性,评估其性能表现。

三、音乐播放器对用户体验的影响音乐播放器的功能和性能直接影响用户体验。

在本次实验中,我们通过用户调查和实际体验,评估不同音乐播放器对用户体验的影响。

1. 用户调查:我们设计了问卷调查,收集用户对不同音乐播放器的评价和意见。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数电综合实验报告 --简易乐曲播放器学号 050065(31)班级 05102姓名王静摘要随着EDA技术的进展,基于可编程的数字电子系统设计的完整方案越来越受到人们的重视。

我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,通过EDA工具和VHDL语言来控制这两个基本要素便可以实现一个简易的乐曲播放器了。

关键字: 乐曲播放器、VHDL、音频、节拍AbstractWith the progress of EDA technology, based on programmable digital electronic system design integrity 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 player has.Key word: Music Player、VHDL、Audio frequency、metre一、设计任务要求设计制作一个简易乐曲播放器:1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;6. 选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;7. 选做:自拟其它功能。

二、设计思路对于音调,乐曲的12平均率规定:每2个八度音之间的频率相差1倍。

在2个八度音之间,又可分为12个半音,每2个半音的频率比为12√2。

另外,音符A的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1到高音1之间每个音符的频率。

而对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。

若需要半拍,只需将该音符记录两次就可以了。

对于以上设计,实际上本次实验使用的是MAX7000S的实验板,最大时钟频率为1MHz,故用1M除以每个音调对应的频率便得到其分频比率。

三、总体结构框图图1—简易乐曲播放器总体结构框图四、流程图图2—简易音乐播放器流程图五、分块电路设计图3—分块电路(音调分频器)设计图六、所实现功能说明1、已完成的基本功能和扩展功能基本功能:①播放器内预存了3首乐曲:小星星、雪绒花、童话;②播放模式:当第一个拨段开关为0时为顺序播放,相应的彩灯熄灭;当其为1时为随机播放,相应的彩灯点亮;③在任何时间第一个数码管都将显示当前播放乐曲的顺序号;④第八个拨段开关为开始/暂停键,乐曲播放过程中该键置1则暂停播放,置0则继续播放;⑤BTN2键为Next键,BTN3键为Previous键,按Next键可以听下一首,按Previous键回到本首开始;扩展功能:①剩余的七个彩灯将随着相应音调的变化而闪烁;②BTN4键为Last键,按Last键可以听上一首。

2、器件的资源占用情况3、所用元器件EPM7128SLC84-15实验板一块4、仿真波形图七、实验总结及心得1、刚开始做分频器时,设计为需要某个音调的时候做其相应的分频,但后来发现这样做太占用资源。

参考一些资料后,改良为直接使用一个底层,定义一个变量Tone来控制分频,当Tone为某个值时,输出为其相应的分频(分1MHz)。

这样使得资源占用情况得到了大大的改善。

2、实验前对整体的把握不够完善,做了一部分后,做另一部分时,发现又要在之前的程序里面做修改,这样使得程序有了些不完善的地方。

在以后的学习中要重视在实验前对实验整体的思考与把握。

3、在做暂停/播放、上一首、下一首、本首重放、顺序播放、随机播放这些功能时,开始一直想着将某些功能嵌套在其他功能中,始终不得其法。

后来想到在实现这些功能时板子上的相应的按键的状态是各不相同的,所以可以根据这个状态的不同来实现这些功能。

4、原本将三首歌写入三个底层,在顶层用if语句调用各个底层,可是发现在顶层不能用if语句下实现元件例化。

可是又找不到好的解决方法,最后只能将三首歌的播放程序写到一个底层文件下,通过其状态计数器来实现各个功能。

5、程序编完后,发现资源占用过多,无法通过编译,这是因为歌曲编得过长了,删减一些后,编译通过,占用为90%。

再加入彩灯闪烁功能,最终占用为97%。

6、刚开始根据课件上给的音符与频率的关系,确定相应的频率,后来发现下载后的旋律不对,后把顺序修改,音符越高,频率越低,这样播发的音乐才正确。

八、完整源程序************顶层文件Songer************LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer ISPORT(CLK1MHZ :IN STD_LOGIC; --主频1MCAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --彩灯功能PP : IN STD_LOGIC; --暂停或播放SHOW : OUT STD_LOGIC; --播放模式显示NEXTONE : IN STD_LOGIC; --下一首LASTONE : IN STD_LOGIC; --上一首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 ISCOMPONENT NoteTabsPORT ( clk: IN STD_LOGIC;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;RANDOM: IN STD_LOGIC;SHOW : OUT STD_LOGIC;SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT ToneTabaPORT ( Index: IN INTEGER RANGE 0 TO 15;CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);Tone : OUT INTEGER RANGE 0 TO 16#7FF#――分频系数);END COMPONENT;COMPONENT SpeakeraPORT(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;SIGNAL 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 V ARIABLE C:INTEGER RANGE 0 TO 124999;BEGINIF(CLK1MHZ'EVENT AND CLK1MHZ='1')THENIF(C=124999)THENC:=0;T<=NOT T;ELSEC:=C+1;END IF;END IF;END PROCESS;process(T,STOP) --产生一个伪随机信号beginif STOP='1' thenprreg<=(others=>'0');prreg(0)<='1';elsif T'event and T='1' thenprreg<=(prreg((length-1)downto 0)&(prreg(tap1)xor prreg(tap2)));end if;end process;prbs<=prreg(length); --prbs随机为0或1CA T<="011111"; --之让第一个7段数码管显示歌曲序号u1: NoteTabs PORT MAP(clk=>T,MODE=>MODE,SHOW=>SHOW, ToneIndex => ToneIndex,RANDOM=>PRBS,SEG=>SEG,PP=>PP,NEXTONE=>NEXTONE,LASTONE=>LASTONE,PR EVIOUS=>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 ISPORT ( clk :IN STD_LOGIC; --4HzToneIndex : 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_LOGIC);END;ARCHITECTURE one OF NoteTabs ISSIGNAL Counter : INTEGER RANGE 0 TO 152;BEGINCNT8: PROCESS(clk,PP,MODE, RANDOM,NEXTONE,LASTONE,PREVIOUS)BEGINIF(clk'EVENT AND clk='1') THENIF( NEXTONE='0' AND LASTONE='0' AND PREVIOUS='0' AND MODE='0' AND PP='0' ) THEN --顺序播放模式下SHOW<='0'; --灯灭IF Counter=152 THEN Counter <=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,则播放前一首歌。

相关文档
最新文档