基于FPGA的音乐播放器设计.docx

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

基于FPGA的音乐播放器设计.docx

《基于FPGA的音乐播放器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的音乐播放器设计.docx(37页珍藏版)》请在冰点文库上搜索。

基于FPGA的音乐播放器设计.docx

基于FPGA的音乐播放器设计

唐山学院

《EDA技术》课程设计

题目音乐播放器

系(部)智能与信息工程学院

班级14电信2班

姓名张洪达

学号

指导教师魏明哲张银蒲

2016年12月19日至12月30日共2周

2016年12月30日

《EDA技术》课程设计任务书

一、设计题目、内容及要求

1.设计题目:

《音乐播放器》

设计内容:

1.使用蜂鸣器播放音乐

2.三首音乐以上

3.数码管上显示当前播放的歌曲位置(第几首歌曲)

2.设计要求:

(1)根据任务要求确定电路各功能模块;

(2)写出设计程序;

(3)给出时序仿真结果;

(4)最后要有设计总结。

二、设计原始资料

QuartusⅡ软件;EDA实验箱;计算机一台;

三、要求的设计成果(课程设计说明书、设计实物、图纸等)

课程设计说明书1份,不少于2000字,应包含设计原理分析、相关软件介绍、仿真波形分析,实验箱下载验证等。

四、进程安排

周一、二:

查找资料,进行方案论证;

周三、四:

编写程序、完成模块仿真;

周五、一:

硬件调试与完善;

周二、三:

设计说明书的撰写与修改;

周四、五:

答辩。

五、主要参考资料

[1]潘松,黄继业,潘明.《EDA技术实用教程》——VerilogHDL版(第五版).科学出版社,2013.11

[2]潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2

[3]焦素敏.《EDA应用技术》.清华大学出版社,2002.4

指导教师(签名):

教研室主任(签名):

《EDA技术》成绩评定表

出勤

情况

出勤天数

缺勤天数

出勤情况及设计过程表现(20分)

课设答辩(20分)

说明书(20分)

设计成果(40分)

总成绩(100分)

提问

(答辩)

问题

情况

指导教师签名:

年月日

前言................................................................................................................................1

1设计原理分析.............................................................................................................2

1.1设计任务.................................................................................................................2

1.2设计要求.................................................................................................................2

2软件介绍....................................................................................................................3

2.1VerilogHDL相关介绍...........................................................................................3

2.2QuartusⅡ相关介绍.............................................................................................3

3总体设计....................................................................................................................5

3.1总体结构.................................................................................................................5

3.2设计原理.................................................................................................................5

4主要模块功能的设计.................................................................................................7

4.1顶层模块................................................................................................................7

4.2数码管显示模块.....................................................................................................7

4.3蜂鸣器块................................................................................................................9

5程序调试运行..........................................................................................................12

5.1seg7_drive的验证.................................................................................................12

5.2:

beep的软件验证................................................................................................13

6硬件仿真..................................................................................................................15

6.1引脚设置...............................................................................................................15

6.2硬件调试...............................................................................................................15

7总结..........................................................................................................................17

参考文献......................................................................................................................18

附录..............................................................................................................................19

前言

随着电子技术的飞速发展,微电子技术的进步主要表现在大规模集成电路加工技术即半导体工艺技术的发展上,使得本征半导体的工艺水平的线宽已经达到了60nm,并在不断地缩小,面在硅片单位面积上,集成了更多的晶体管。

集成电路设计正在不断地向超大规模,极低功耗和超高速的方向发展,电子产品的功能越来越强大,体积越来越小,功耗越来越低。

?

顺应电子技术的发展趋势,可编程逻辑器件和EDA?

技术使设计方法发生了质的变化。

把以前“电路设计+硬件搭试+调试焊接”转化为“功能设计+软件模拟+仿真下载”。

利用EDA?

开发平台,采用可编程逻辑器件FPGA?

使硬件的功能可通过编程来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB设计的工作量和难度,增强了设计的灵活性,有效地提高了工作效率,增加了系统的可靠性和稳定性,提高了技术指标。

?

这些技术使得各种电子产品迅速的进入了我们的生活,我们处在一个被电子产品深度包围的时代,在一个普通老百姓的家里,衣食住行,每一个产品的诞生都离不开EDA技术,从彩色电视机,到智能冰箱,到全自动洗衣机,电饭煲,到微波炉,电磁炉,电子琴,再到个人随身用的手机,MP3音乐播放器都需要EDA技术提供支持。

?

本文应用VerilogHDL硬件描述语言,设计一个音乐播放器,它能将预先设置存储好的乐曲自动播放出来,下面对乐曲播放电路的设计与实现中涉及的EDA技术,以及EDA技术中常用的开发器件FPGA可编程逻辑器件,开发语言VerilogHDL以及开发软件QuartusⅡ作简单介绍。

1设计原理分析

1.1设计任务

本课题要求设计音乐播放器,能实现基本的播放音乐的功能。

1.2设计要求

设计一个简易的音乐播放系统,使其下载到电路板上使,能使蜂鸣器播放音乐。

在可以使蜂鸣器播放音乐的基础上,增加播放音乐的数量,要求播放的音乐在三首以上。

在数码管上显示当前播放的音乐是第几首,并使播放的音乐在数码管显示屏上进行滚动(例如,当播放第一首歌曲使,数码管显示000001,并且1由右向左依次显示,其余位置为0),当蜂鸣器播放下一首歌时,数码管的显示可以立即加一,并且仍然由右向左滚动。

2软件介绍

2.1VerilogHDL相关介绍

VerilogHDL是一种硬件描述语言(HDL:

HardwareDiscriptionLanguage),是一种用文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。

被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。

数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。

VerilogHDL语言具有下述描述能力:

设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。

所有这些都使用同一种建模语言。

此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。

VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。

因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。

语言从C编程语言中继承了多种操作符和结构。

VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。

但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。

当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。

VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。

现在,随着系统级FPGA以及片上系统的出现,软硬件协同设计和系统设计变得越来越重要。

传统意义上的硬件设计越来越倾向于与系统设计和软件设计相结合。

2.2QuartusⅡ相关介绍

QuartusII是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。

该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。

QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

QuanusⅡ设计的主要流程有:

创建工程、设计输入、编译、仿真验证、下载,其进行数字电路设计的一般流程如图1-1所示。

图1-1QuanusⅡ一般流程图

当我们安装完成QuartusⅡ后,双击桌面上的QuartusⅡ图标,迎接我们的就是图1-2所示的开发环境。

图1-2QuartusⅡ开发环境

这个环境包含了几部分内容:

最上面的菜单项和工具栏,左边的两个窗口为工程浏览窗口和进度窗口,下面的窗口为信息窗口。

利用QuartusⅡ进行原理图设计的优点是,设计者不必具有许多诸如编译技术、硬件语言等新知识就能迅速入门,完成较大规模的电路系统设计

3总体设计

3.1总体结构

音乐播放器的系统方框图如图3-1所示,本设计是一种采用FPGA芯片进行音乐播放器,主要由蜂鸣器模块、数码管显示控制模块、译码器模块、存储器模块等模块组成。

图3-1设计框图

3.2设计原理

根据设计要求,系统的输入信号:

时钟脉冲clk,复位信号rst_n;输出信号:

音乐播放器播放的音乐beep,控制数码管的seg和sel。

声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上蜂鸣器就能发出相应频率的声音。

乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不用音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。

而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个重要因素。

每个音符对应的频率如下图3-2所示:

图3-2每个音符对应的频率

4主要模块功能的设计

4.1顶层模块

顶层模块只要是实现通过FPGA中的结构建模,把每个模块例化过来,将每个模块连接起来。

其产生原理是:

命名顶层文件名为beep,通过例化把选址模块controller,存储器模块my_rom,乐谱产生模块translate,分频模块dir_freq,显示控制模块show_controller,数码管seg7_drive连接起来,以实现让蜂鸣器播放三首以上音乐,且数码管循环显示当前所播放音乐为第几首。

4.2数码管显示模块

数码管是一种发光的半导体器件,其基本单元式发光二极管。

数码管可分为七段数码管和八段数码管,八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP。

数码管特点:

1.一个数码管可表示任意一个4位二进制;  

      2.可分共阴和共阳且本开发板上低电平有效

3.可动态,静态显示;

4.动态扫描频率为1KHZ;

     5.根据视觉暂留效果可显示数字。

 

数码管的实现原理:

输入信号为:

时钟脉冲clk,复位信号rst_n,位选信号sel,段码seg.依次经过分频器模块,滚动模块,位选模块,转换模块来实现。

下图为共阴极数码管的电路图和引脚图:

图4-1共阴极数码管

分频器模块的功能为产生所需要的频率。

其原理是系统输入信号时钟脉冲clk,复位信号rst_n。

例如:

频率是1MHZ,则周期是1000ns,如果占空比为50%,则高低电平每500ns变反一次。

如果设所需脉冲频率为freq,则得到所要脉冲的计数个数NUM为:

实现框图如图4-2所示:

4-2分频器模块实现框图

位选模块的功能是用来控制那个数码管亮灭。

要使数码管同时亮,可以先让第一个数码管亮,在让第一个数码管灭,第二个数码管亮,因为人眼视觉暂留效果,只要每个数码管灭的时间足够短,我们就可以看到六个数码管是同时亮着的。

其产生原理:

系统的输入信号有:

时钟脉冲clk,复位信号rst_n,6个数码管可显示的24位数data;系统输出信号有:

控制那个数码管亮灭的位选信号sel,每个数码管显示的4位二进制数show_data。

当每个时钟上升沿到来时,位选信号初始为3’b000,位选信号每到上升沿来时加一,直到位选信号等于5。

且第零个数码管输出show_data为data的[23:

20]位,第一个数码管输出show_data为data的[19:

16]位,第二个数码管输出show_data为data的[15:

12]位,第三个数码管输出show_data为data的[11:

8]位,第四个数码管输出show_data为data的[7:

4]位,第五个数码管输出show_data为data的[3:

0]位。

实现框图如图4-3所示:

4-3位选模块实现框图

滚动模块功能是使音乐播放器所播放的第几首歌的数字在数码管上显示,并由右向左滚动,且其余位置显示0。

其产生原理:

该模块输入信号:

时钟脉冲clk,复位信号rst_n,要输出的当前歌曲位置data2;输出信号:

6个数码管要显示的24位数data.

当要输出第一首歌位置时,应使初始data<=24’h000001,下一秒使data<=24’000010。

即每增加一秒让data输出的1左移一位。

实现框图如图4-4所示:

4-4滚动模块实现框图

转换模块功能为把数码管要显示的四位二进制数转换成七段数码管的段码。

其产生原理:

该模块的输入信号:

数码管要显示的四位二进制数show_data;输出信号:

七段数码管的段码seg。

例:

当show_data=0时seg=8'b1100_0000;

实现框图如图4-5所示:

4-5转换模块实现框图

4.3蜂鸣器模块

蜂鸣器模块功能是实现让蜂鸣器播放三首以上的乐曲。

其实现原理:

输入信号为时钟信号clk和复位信号rst_n,中间经过选址模块,存储器模块,乐谱产生模块,显示控制模块,以及数码管显示模块,输出信号为音符对应的频率信号beep(clk_out)和数码管显示信号seg和sel。

选址模块功能为程序存储器rom中所存储的数据分配地址。

其实现原理:

输入信号clk,rst_n;输出信号addr。

每一个时钟上升沿到来时,先判断时间是否已经记满到12.5ms,若已记满,再判断地址是否小于255,若小于,则地址加1,直到加到255,反复循环。

实现模块如图4-6所示:

图4-6选址模块实现框图

存储器模块功能式实现对音乐音符的存储,每个音符对应一个地址,地址来源于选址模块的地址。

其实现原理:

输入信号clk,addr,输出信号为q,将所需要的乐谱音符存入到存储器my_rom中,然后将存储音符输出。

例如在存储器的0-64存储两只老虎的音符:

图4-7存储器的0-64存储两只老虎的音符

实现模块如图4-8所示:

4-8存储器模块实现框图

译码器模块功能为将存储器输出的音符译码成每个音符所对应的频率输出给分频器模块。

其实现原理:

输入信号为时钟信号clk,复位信号rst_n,音符信号music_data。

输出信号为music_freq信号。

在每一个时钟上升沿到来之后,经过一个case,endcase选择语句,对music_data进行选择,输出一个对应音符的频率。

实现模块如图4-9所示:

4-9译码器模块实现框图

显示控制模块功能为将显示的歌曲数目对应的显示在七段数码管,让七段数码管的数据循环显示。

其实现原理:

输入信号为时钟信号clk,复位信号rst_n,地址信号addr。

输出信号为输入到数码管的数据显示信号data1。

在每一个时钟信号到来之后,通过if语句的嵌套语句来判断输入信号的地址addr来决定输出给数码管的数据data1,再通过例化与数码管显示模块连接起来。

实现模块如图4-10所示:

4-10显示控制模块实现框图

5程序调试运行

5.1seg7_drive的验证

激励程序如下:

`timescale1ns/1ps

moduleseg7_drive_tb;

regclk;

regrst_n;

reg[23:

0]data;

wire[2:

0]sel;

wire[7:

0]seg;

initial

begin

clk=1'b1;

rst_n=1'b0;

data=24'h234567;

#200.1

rst_n=1'b1;

#10_000

$stop;

end

always#10clk=~clk;

seg7_driveseg7_drive_dut(

.clk(clk),

.rst_n(rst_n),

.data(data),

.sel(sel),

.seg(seg)

);

endmodule

仿真图如图5-1所示:

5-1seg7_drive仿真框图

5.2:

beep的软件验证

激励程序程序如下:

`timescale1ns/1ps

modulecontroller_tb;

regclk;

regrst_n;

regen;

wire[7:

0]addr;

initial

begin

clk=1'b1;

rst_n=1'b0;

en=1'b0;

#200.1

rst_n=1'b1;

#234

en=1'b1;

#3000

en=1'b0;

#2000

en=1'b1;

#4000

$stop;

end

always#10clk=~clk;

controller

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

当前位置:首页 > 农林牧渔 > 林学

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

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