音乐播放器课程设计报告Word下载.docx

上传人:b****4 文档编号:6527290 上传时间:2023-05-06 格式:DOCX 页数:28 大小:151.29KB
下载 相关 举报
音乐播放器课程设计报告Word下载.docx_第1页
第1页 / 共28页
音乐播放器课程设计报告Word下载.docx_第2页
第2页 / 共28页
音乐播放器课程设计报告Word下载.docx_第3页
第3页 / 共28页
音乐播放器课程设计报告Word下载.docx_第4页
第4页 / 共28页
音乐播放器课程设计报告Word下载.docx_第5页
第5页 / 共28页
音乐播放器课程设计报告Word下载.docx_第6页
第6页 / 共28页
音乐播放器课程设计报告Word下载.docx_第7页
第7页 / 共28页
音乐播放器课程设计报告Word下载.docx_第8页
第8页 / 共28页
音乐播放器课程设计报告Word下载.docx_第9页
第9页 / 共28页
音乐播放器课程设计报告Word下载.docx_第10页
第10页 / 共28页
音乐播放器课程设计报告Word下载.docx_第11页
第11页 / 共28页
音乐播放器课程设计报告Word下载.docx_第12页
第12页 / 共28页
音乐播放器课程设计报告Word下载.docx_第13页
第13页 / 共28页
音乐播放器课程设计报告Word下载.docx_第14页
第14页 / 共28页
音乐播放器课程设计报告Word下载.docx_第15页
第15页 / 共28页
音乐播放器课程设计报告Word下载.docx_第16页
第16页 / 共28页
音乐播放器课程设计报告Word下载.docx_第17页
第17页 / 共28页
音乐播放器课程设计报告Word下载.docx_第18页
第18页 / 共28页
音乐播放器课程设计报告Word下载.docx_第19页
第19页 / 共28页
音乐播放器课程设计报告Word下载.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

音乐播放器课程设计报告Word下载.docx

《音乐播放器课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《音乐播放器课程设计报告Word下载.docx(28页珍藏版)》请在冰点文库上搜索。

音乐播放器课程设计报告Word下载.docx

Cyclone系列器件是Altera公司推出的低价位FPGA产品,是Stratix系列的简化版,分为CycloneI和CycloneII两个系列。

CycloneI系列产品为基于1.5V、采用0.13um全铜SRAM工艺的低成本FPGA。

CycloneII系列产品基于1.2V,采用0.09um全铜CMOS工艺,SRAM编程技术,其成本更低、容量更高、速度更快。

它和高性能的StratixII系列的FPGA是目前Altera公司主流产品。

我的音乐播放器主要是用VHDL语言编写,以Cyclone器件为依托,并下载到Altera仿真工具箱Cyclone-EP1C6Q240C8验证功能成功,能够初步完成音乐播放器的雏形。

随着大规模集成电路技术和计算机技术的高速发展,在涉及通信、国防、工业自动化、计算机设计与应用、仪器仪表等领域的电子系统设计工作中,FPGA技术的含量正以惊人的速度提升。

电子类的新技术项目的开发也更多地依赖于FPGA技术的应用,特别是随着HDL等硬件描述语言综合功能和性能的提高,计算机中许多重要的元件(包括CPU)都用硬件描述语言来设计和表达,许多微机CPU、硬核嵌入式系统(如ARM、MIPS)、软核嵌入式系统(如NiosII)、大型CPU,乃至整个计算机系统都用FPGA来实现,即所谓的单片系统SOC或SOPC(SystemOnaChip、SystemOnaProgrammerableChip)。

计算机和CPU的设计技术及其实现途径进入了一个全新的时代!

不但如此,传统的CPU结构模式,如冯诺依曼结构和哈佛结构正在接受巨大的挑战。

例如美国WincomSystems公司推出一款令人惊叹的服务器,其核心部分是由FPGA完成的超强功能CPU。

该系统工作能力超过50台DELL或IBM计算机,或SUNMicrosystems公司的服务器。

该服务器的处理速度要比传统服务器快50到300倍。

我们知道,传统的PC机及服务器通常采用诸如Intel公司的奔腾处理器或SUN公司的SPARC芯片作为中央处理单元,而WincomSystems的这款产品却没有采用微处理器,而是由FPGA芯片驱动。

FPGA芯片的运行速度虽比奔腾处理器慢,但可并行处理多项任务,而微处理器一次仅能处理一项任务。

因此,WincomSystems的服务器只需配置几个价格仅为2000多美元的FPGA芯片,便可击败SUN公司的服务器或采用Intel处理器的计算机。

50多年前,匈牙利数学家冯诺依曼提出了计算机的设计构想:

通过中央处理器从储存器中存取数据,并逐一处理各项任务。

然而现在,却采用FPGA取代传统微处理器获得了更高的性能,致使美国Xilinx公司的首席执行官WillemRoelandts认为:

“由冯诺依曼提出的电脑架构已经走到尽头”,“可编程芯片将掀起下一轮应用高潮”。

FPGA芯片操作灵活,可以重复擦写无限次,而微处理器均采用固定电路,只能进行一次性设计。

设计人员可通过改变FPGA中晶体管的开关状态对电路进行重写,即重配置,从而尽管FPGA芯片的时钟频率要低于奔腾处理器,但是由于FPGA芯片可并行处理各种不同的运算,所以可以完成许多复杂的任务。

正如WillemRoelandts所说的,“我们认为下一代超级电脑将基于可编程逻辑器件”,他声称,这种机器的功能比目前最大的超级电脑还要强大许多倍。

EDA专家WilliamCarter认为,只要EDA开发工具的功能允许,将有无数的证据证明FPGA具有这种神奇的能力,进而实现基于FPGA的超级电脑的开发。

此外,美国加州大学伯克利分校和杨百翰大学的研究人员也正在设计基于FPGA的电脑,这些电脑可在运行中实现动态重配置。

这对定位危险目标等军事应用和面容识别之类的计算密集型安全应用十分有用。

由此看来,在计算机应用领域和计算机系统设计领域中,EDA技术和FPGA的应用方兴未艾!

硬件描述语言HDL(HardwareDescriptionLanguage)是EDA技术的另一重要组成部分,常见的HDL有:

VHDL、VerilogHDL、SystemVerilog和SystemC。

其中VHDL、Verilog在现在EDA设计中使用最多,也得到几乎所有的主流EDA工具的支持。

而后两种HDL语言尚处于完善过程中。

VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。

VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述能力,在语言易读性和层次化结构设计方面表现了强大的生命力和应用潜力。

因此,VHDL支持各种模式的设计方法:

自顶向下与自底向上或混合方法,在面对当今许多电子产品生命周期缩短,需要多次重新设计以融入最新技术、改变工艺等方面,VHDL都表现了良好的适应性。

第1章系统原理

1.1音乐编码

1.1.1编码原理

1.音乐的十二平均率规定

(1)每两个八度音之间的频率相差一倍。

(2)两个八度音之间又可以分为十二个伴音,每两个伴音的频率比为1.059463。

(3)低音6(音名A)的频率是440Hz,音名B到C之间、E到F之间为伴音,其余为全音。

2.乐谱编码

选取65536Hz为基准频率,以此频率分频得到简谱高音各音调的分频比。

计算公式为N=65536/f。

表1-1简谱高音频率与分频系数

音名

f(Hz)

N(65536Hz)

1

1046.5

63

2

1174.7

56

3

1318.5

50

4

1396.9

47

5

1568.0

42

6

1760.0

37

7

1975.5

33

1.1.2编码参照表

为了让ROM能够识别各音频的分频系数,需将个音频分频系数按照一定格式转换成十六进制格式。

我们采用8位的ROM,D6D5位表示高中低音,如表1-2所示,11为高音,10为中音,01为低音;

用D4D3D2D1D0位表示分频系数,将表1-1的分频系数转换成二进制格式表示;

ROM的高位全部补0。

然后转换成十六进制如表1-2所示。

之所以采用高音分频比的二分之一为基准分频系数,是因为ROM的位宽限制,而每两个八度音频率相差一倍,所以我们后面用译码器译成各音频的分频系数输出给分频器,这样由分频器输出到扬声器,扬声器就可发声了。

表1-2简谱音频分频系数十六进制格式表示

高音

中音

低音

分频系数

十六进制格式

D6D5

D4D3D2D1D0

11

10

01

11111

7F

5F

3F

11100

7C

5C

3C

11001

79

59

39

11000

78

58

38

10101

75

55

35

10011

73

53

10001

71

51

31

1.2设计原理

通过circle与sel[1..0]进行选曲,circle的功能是循环播放,sel的功能是分别选取四首歌中的一首。

操作步骤是先进行选取再按下start便开始播放了。

如选circle,再按下start则四首歌循环播放,若选sel中的任意一个,再按下start则单曲循环,将start置为0则播放结束。

无论选取哪种播放模式,节拍器的输出q为ROM的地址线,clkout为ROM的时钟,然后按地址读取数据,按节拍ROM输出数据给译码器,译码器的时钟频率为系统的时钟频率,译码器的作用是按照音调编码的规则进行解码,使输出的数据能够被分频器所识别。

分频器设计为对任意奇数、偶数分频,且输出脉冲占空比严格为50%,这样就有足够的功率驱动扬声器,从而发声。

图1-1顶层设计

第2章系统工作过程

2.1节拍产生电路

2.1.1工作原理

1.功能介绍

(1)clk为系统时钟,预设频率为65536Hz。

(2)乐曲的播放模式分为四首循环播放和单曲循环,分别有circle和sel控制

(3)选取模式circle的优先级别比sel的高,若circle为1,则当start=‘1’时,进行四首歌曲循环播放,若circle为0,则选择sel中的一个,当start=‘1’时,将选中的歌曲单曲循环。

(4)在播放的过程中每一次clkout发出脉冲的同时q加1并输出,提供ROM的地址。

2.VHDL实现

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entityjpqis

generic(m:

integer:

=105);

port(start,clk,circle:

instd_logic;

sel:

instd_logic_vector(1downto0);

clkout:

outstd_logic;

q:

outstd_logic_vector(10downto0));

endjpq;

architecturebehaveofjpqis

signalcout:

std_logic_vector(8downto0);

signalc:

integer:

=0;

signalclko:

std_logic;

signals:

std_logic_vector(1downto0);

begin

process(clk)

variablen:

n:

=integer(6536*15/m);

ifclk='

1'

andclk'

eventthen

ifc=(integer(n/2))*2-1thenc<

elsec<

=c+1;

ifc<

(integer(n/2))thenclkO<

='

0'

;

elseclkO<

endif;

endif;

endif;

endprocess;

process(clko,start)

ifstart='

thencout<

="

000000000"

elsifstart='

then

ifclko'

eventandclko='

then

ifcout<

"

11111111"

thencout<

=cout+1;

elsecout<

=(others=>

'

);

process(cout,sel,circle,s)

ifcircle='

ifcout="

thens<

=s+1;

elses<

=sel;

clkout<

=clko;

q<

=s&

cout;

end;

2.1.2仿真分析

图1-2节拍器的波形仿真分析

2.2歌曲存储器

2.2.1工作原理

按照歌曲的简谱编码规则,生成十六进制歌曲文件,再定制一个ROM,用十六进制歌曲文件初始化ROM

2.2.2歌曲编码

1.编码规则

(1)参照1.1.2编码参照表。

(2)由C语言编程文件生成十六进制文件。

2.C编程实现乐谱编码

#include<

stdio.h>

stdlib.h>

math.h>

intfhex(chara)/*将十六进制数转换为十进制数*/

{

intc;

if(a=='

F'

)c=15;

elseif(a=='

E'

)c=14;

D'

)c=13;

C'

)c=12;

B'

)c=11;

A'

)c=10;

9'

)c=9;

8'

)c=8;

7'

)c=7;

6'

)c=6;

5'

)c=5;

4'

)c=4;

3'

)c=3;

2'

)c=2;

)c=1;

)c=0;

return(c);

}

charhex(inta)/*将十进制数转换为十六进制数*/

charc;

if(a==15)c='

elseif(a==14)c='

elseif(a==13)c='

elseif(a==12)c='

elseif(a==11)c='

elseif(a==10)c='

elseif(a==9)c='

elseif(a==8)c='

elseif(a==7)c='

elseif(a==6)c='

elseif(a==5)c='

elseif(a==4)c='

elseif(a==3)c='

elseif(a==2)c='

elseif(a==1)c='

elseif(a==0)c='

voidaddress(inti,char*m)/*计算每一字节的地址码*/

inta,b,c,d;

a=i/4096;

b=(i-a*4096)/256;

c=(i-a*4096-b*256)/16;

d=i-a*4096-b*256-c*16;

*(m+3)=hex(a);

*(m+2)=hex(b);

*(m+1)=hex(c);

*(m+0)=hex(d);

voidmain()/*主函数*/

FILE*fp;

inti,j,k,t[3],n,s[3],x=0;

inth[6];

charfilename[20],l[2],d[4],*c;

printf("

creathexfile,inputfilename:

\n"

/*输入要创建的文件名字*/

scanf("

%s"

filename);

if((fp=fopen(filename,"

w"

))==NULL)

{

printf("

cannotopenfile\n"

/*若不能打开文件返回错误*/

exit(0);

}

getchar();

c=d;

INPUTYUEPU:

for(;

{i++;

inputtune,pitchandtime:

/*按照音调、音高、音长的格式输入乐谱*/

scanf("

%d%d%d"

&

t[0],&

t[1],&

t[2]);

n=0;

for(;

{

j++;

n++;

if(t[0]==8)

{

fputs("

:

00000001FF"

fp);

fclose(fp);

exit(0);

}

else

{if(n==t[2]+1)break;

fputc('

'

address(x,c);

x++;

for(k=3;

k>

k--)

{

h[k]=fhex(d[k]);

fputc(d[k],fp);

}

if(t[1]==0)

fputc('

h[5]=0;

elseif(t[1]==1)

h[5]=3;

elseif(t[1]==2)

h[5]=5;

elseif(t[1]==3)

h[5]=7;

if(t[0]==0)

h[4]=0;

if(t[0]==7)

h[4]=1;

elseif(t[0]==6)

h[4]=3;

elseif(t[0]==5)

h[4]=5;

elseif(t[0]==4)

h[4]=8;

elseif(t[0]==3)

h[4]=9;

elseif(t[0]==2)

h[4]=12;

elseif(t[0]==1)

h[4]=15;

s[2]=255-(h[3]*16+h[2]+h[1]*16+h[0]+h[4]+h[5]*16)%256;

s[1]=s[2]/16;

s[0]=s[2]-s[1]*16;

/*产生十六进制文件的奇偶校验码*/

l[0]=hex(s[1]);

l[1]=hex(s[0]);

fputc(l[0],fp);

fputc(l[1],fp);

\n'

}

%d|"

x);

/*显示输入的节拍数*/

2.2.2ROM定制

从菜单里的Tools选择MegaWizardPlug-InManager…,按照向导完成ROM的定制。

图2-1ROM定制向导

图2-2ROM初始化文件

2.3译码器电路设计

2.3.1译码器工作原理

1.译码器功能

(1)识别由ROM输出的数据并转换成分频器能识别的分频数据。

(2)按照乐谱编码规则进行反编码。

entitydecoderis

port(input:

instd_logic_vector(7downto0);

clk:

output:

outstd_logic_vector(7downto0));

enddecoder;

architecturebehaveofdecoderis

process(input,clk)

ifclk='

ifinput(6downto5)="

11"

thenoutput<

00"

&

input(4downto0)&

elsifinput(6downto5)="

10"

&

input(4downto0)&

"

01"

=input(4downto0)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2