收藏 分享(赏)

EDA课设设计简易音乐播放器.doc

上传人:精品资料 文档编号:8232772 上传时间:2019-06-15 格式:DOC 页数:27 大小:835.50KB
下载 相关 举报
EDA课设设计简易音乐播放器.doc_第1页
第1页 / 共27页
EDA课设设计简易音乐播放器.doc_第2页
第2页 / 共27页
EDA课设设计简易音乐播放器.doc_第3页
第3页 / 共27页
EDA课设设计简易音乐播放器.doc_第4页
第4页 / 共27页
EDA课设设计简易音乐播放器.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、课程设计说明书11 引言VHDL 语言是一种用于电路设计的高级语言。它在 80 年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。随着 EDA 技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件 CPLDFPGA 的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。本文基于 FPGA 开发系统,在 QuartusII 7.2 软件平台上,完成了简易多功能信号发生器电路的设计和与仿真,并

2、下载到试验箱进行硬件实现。首先,本文介绍了 QuartusII 7.2 软件的基本使用方法和 VHDL 硬件描述语言的特点,采用 VHDL 硬件描述语言描述简易信号发生器,完成对电路的功能仿真。在设计过程中,重点探讨了简易信号发生器设计思路和功能模块划分。然后,初步探讨了电路逻辑综合的原理,该软件对简易多功能信号发生器电路进行了逻辑综合。最后,使用 EDA 实验开发系统进行电路的下载和验证。验证结果表明设计的简易简易信号发生器完成了预期的功能。简易多功能信号发生器是信号发生器的一种,在生产实践和科研领域中有着广泛的应用。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源,

3、由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波和锯齿波等,因而广泛用于通信、雷达、导航、宇航等领域。本设计是采用 VHDL 来实现的简易乐曲演奏器。它能实现自动演奏已存歌曲和手动演奏简易乐曲。且要求实现如下功能:(1)通过按键输入来控制音响声音 ;(2)演奏时可以通过按键选择是手动演奏还是自动演奏,手动演奏是通过按键进行简易乐曲的演奏,自动演奏则是演奏已存入的固定乐曲;(3)至少保存一首自动演奏的乐曲,且自

4、动演奏的乐曲能重复播放;(4)进行手动演奏和自动演奏时,数码管上要同时能显示演奏乐曲的乐谱;(5)扩展功能(选作)自动播放时,设置低速,中速,快速控制键,能实现乐曲不同速度的播放。课程设计说明书22 VHDL 及 QuartusII 软件简介2.1 EDA 简介EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世纪 60 年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 HDL 完成设计

5、文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用 EDA 工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出 IC 版图或 PCB 版图的整个过程的计算机上自动处理完成。现在对 EDA 的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物等各个领域,都有 EDA 的应用。2.2 硬件描述语言 VHDL硬件描述语言(HDL

6、)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个 32 位的加法器,利用图形输入软件需要输人 500 至 1000 个门,而利用 VHDL 语言只需要书写一行“A=B+C” 即可。而且 VHDL 语言可读性强,易于修改和发现错误。早期的硬件描述语言,如 ABEL、HDL、AHDL,由不同的 EDA 厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985 年美国国防部正式推出了高速集成电路硬件描述语言 VHDL,1987 年IEEE 采纳

7、 VHDL 为硬件描述语言标准(IEEE-STD-1076)。VHDL 是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此 VHDL 几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由下向上的电路设计过程都可以用 VHDL 来完成。VHDL 还具有以下优点:(1)VHDL 的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)VHDL 可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方便,而且也便于设计结果的交流、保存和重用。课程设计说明书

8、3(3)VHDL 的设计不依赖于特定的器件,方便了工艺的转换。(4)VHDL 是一个标准语言,为众多的 EDA 厂商支持,因此移植性好。美国于 1981 年提出了一种新的、标准化的 HDL,称之为 VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,简称 VHDL。这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用 PLD 实现其功能。2.3 软件介绍Quartus II 是 Altera

9、 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD 设计流程。 Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库,使用户可以充分

10、利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方 EDA 工具。 此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到了广泛的应用。Altera 在 Quartus II 中包含了许多诸如 Sig

11、nalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC 和 HardCopy 设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。课程设计说明书43 简易乐曲演奏器设计及仿真3.1 原理描述3.1.1 音名与频率的关系乐谱中从低音 1 到高音 1 之间每个音名的频率如表 3-1 所示:表 3-1 简谱中的音名与频率的关系音名 频率(Hz) 音名 频率(Hz) 音名 频率(Hz)低音 1

12、 261 中音 1 523 高音 1 1046低音 2 294 中音 2 578 高音 2 1175低音 3 330 中音 3 659 高音 3 1318低音 4 349 中音 4 698 高音 4 1397低音 5 392 中音 5 784 高音 5 1568低音 6 440 中音 6 880 高音 6 1760低音 7 440 中音 7 988 高音 7 19763.1.2 可变分频器1. 基准频率的选取各音名所对应的频率可由一频率较高的基准频率进行整数分频得到,所以实际产生各音名频率为近似的整数值。这是由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频系数四舍五入取整,若

13、基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差较小,但分频结构将变大,实际的设计应综合考虑两方面的因素,在尽量减小频率差的前提下取舍合适的基准频率。本次设计选择 12MHz 作为基准频率。2. 分频系数 A、公用二进制的计数容量 N 及初始值的选取 D(1) 分频系数的选取首先将 12MHz 的基准频率进行 12 分频,得到 1MHz 的基准频率,分频系数 A1MHz音名频率,此分频系数可由计数器实现。为得到对称方波,可将分频系数 A 分解为:分频系数 A=分频系数 n2。即先进行分频系数 n 的分频,得到不对称方波,然后再 2 分频得到对称方波。(2)

14、 公用二进制的计数容量 N 的选取n 分频可由 n 进制计数器实现。n 进制计数器可用复位法或置位法实现,由于加载初始值 d 的置位法可有效地减少设计所占用的可编程逻辑器件资源,因此,此次设计采用置位法。低音 1 的分频数 n 为最大,其值为 1275,应取公用二进制计数器的计数容课程设计说明书5量 N 大与“最大分频系数 n”,故本次设计的公用二进制计数器应该设计为十一位二进制加法计数器,其计数最大容量为 2048,计数的最大值 N 为 2047,可满足本次设计中所有音名对音频系数的要求。(3) 初始值的选取 D初始值 D = 计数最大值 N - 分频系数 n此次设计中应用的各音名对应的分频

15、系数值及初始值如表所示:表 3-2 各音名对应的分频系数值及初始值音符 初始值 对应音谱 区别高中低音0 2047 0 01 1091 1 12 1196 2 13 1289 3 14 1331 4 15 1409 5 16 1479 6 17 1541 7 18 1569 1 29 1621 2 210 1668 3 211 1689 4 212 1728 5 213 1763 6 214 1794 1 23. 小星星的音符谱为:1;1;5;5;6;6;5;4;4;3;3;2;2;1;5;5;4;4;3;3;2;5;5;4;4;3;3;2;1;1;5;5;6;6;5;4;4;3;3;2;2;

16、13.1.3 节拍发生器原理该演奏电路的最小节拍为 1 拍,将一拍的时长定为 0.25s,则只需要再提供一个 4Hz 的时钟频率即可产生一拍的时长。为了能达到演奏时能循环进行,则需设置一个时长计数器,当乐曲演奏完时,保证能自动从头开始演奏。3.2 乐曲演奏电路各模块设计本次设计乐曲演奏电路结构方框图如图 3-1 所示:课程设计说明书6基准时钟 12MHz模式选择 auto手动输入FPGA时钟电路 数控分频器电路音乐节拍产生电路 音调编码电路4Hz12MHz扬声器数码管图 3-1 乐曲演奏电路结构方框图3.3 乐曲演奏电路的子结构顶层结构所包含的模块分别有音调发生器(ydfsq)模块、音调编码器

17、 (ydbmq)模块、分频器模块(dd) 、手动 自动选择(bmux) 模块及数控分频器 (skfpq)模块。3.3.1 音调发生器模块1. 音调发生器模块在此模块中设置了一个 8 位二进制计数器(计数最大值为 64) ,这个计数器的计数频率选为 4Hz,即每一计数值的停留时间为 0.25s,恰好为当全音符设为 1s 时,四四拍的 4 分音符的持续时间。音调发生器模块 VHDL 源程序如下:library ieee;use ieee.std_logic_1164.all; entity ydfsq isport(clk:in std_logic;toneindex:out integer ra

18、nge 0 to 15);end;architecture bhv of ydfsq issignal counter:integer range 0 to 99; beginprocess(clk,counter)beginif counter=100 thencountertoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneinde

19、xtoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end;课程设计说明书82. 音调发生器模块的仿真图图 3-2 音调发生器模块的仿真波形图通过仿真图可以清楚的看到,时钟 clk 由 0 开始计数,每计一次数输出toneindex 的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中,自第 1 个时钟上升沿来临到第 4 个时钟上升沿,输出 toneindex “1”。于是根据乐谱的不同就输出不同的音符,作为音调编码器的输入。然后把输出 toneinde

20、x 输入到音调编码器模块,进行下一步编码工作。于是,由仿真图可以知道本模块输出的即为演奏音乐的音符谱,说明该程序正确,可以生成逻辑器件。3. 音调发生器模块生成的逻辑器件图 3-3 音调发生器电路模块生成器件3.3.2 音调编码器电路模块1. 音调编码器模块该编码模块的作用为将输入的音符数据翻译为音乐产生模块的所需要的分频系数,并且显示音符的数字码型和高音阶,通过对照表 3-2 各音名对应的分频系数值及初始值,根据输入得到初始值,从而得到分频系数以便进行分频,得到所需的频率。音调编码器模块的 VHDL 源程序:clk toneindex30y df sqinst课程设计说明书9library

21、ieee;use ieee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;architecture bhv of ydbmq isbeginprocess(index)begin case index iswhen 0 =tonetonetonetonetonetonetonetonetonetonet

22、onetonetonetonetoneNULL;end case;end process;end ;2. 音调编码器模块的仿真图图 3-4 音调发生器模块的仿真波形图课程设计说明书10在此程序中 index 为音乐节拍产生模块输出的音符数据,经过翻译后将tone 输出到数控分频模块为其提供分频系数的初始值,code 为数码管显示的字符数,应用模式 5,所以直接输出音符的二进制值,code1 为高音阶指示信号,当 code1 为是说明输出为高音阶的音符。通过仿真图可以清楚地看到结果。3. 音调编码器模块生成的逻辑器件图 3-5 音调发生器电路模块生成器件3.3.3 分频器电路模块1. 分频器模块

23、该编码模块的作用为将 12MHZ 的时钟信号分频出 4HZ 的时钟信号,从而实现只用一个时钟信号控制电路。分频器模块的 VHDL 源程序:library ieee;use ieee.std_logic_1164.all;entity dd isport(clk:in std_logic;d:buffer std_logic);end;architecture bhv of dd isbegin process(clk)variable count4:integer range 0 to 1500000;begin if clkevent and clk=1thencount4:=count4+

24、1;if count4=1500000 then dqqqtoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end;音调编码器模块library ieee;use i

25、eee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;architecture bhv of ydbmq isbeginprocess(index)begin case index iswhen 0 =tonetonetonetonetonetonetonetonetonetonetonetoneton

26、etonetoneNULL;end case;end process;end ;分频器模块library ieee;use ieee.std_logic_1164.all;entity dd isport(clk:in std_logic;d:buffer std_logic);end;architecture bhv of dd isbegin process(clk)variable count4:integer range 0 to 1500000;begin if clkevent and clk=1thencount4:=count4+1;if count4=1500000 then

27、 dqqq=d1;end case;end if;end process;end;数控分频器模块library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end;architecture bhv of skfpq issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)课程设计说明书25variable coun

28、t:integer range 0 to 16;begin preclk=0;if count=12 then preclk=1;count:=0;elsif clkevent and clk=0thencount:=count+1;end if;end process;process(preclk,tone)variable count1:integer range 0 to 2047;begin if preclkevent and preclk=1then if count1=2047 thencount1:=tone;fullspks=1;else count1:=count1+1;f

29、ullspks=0;end if;end if;end process;process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 thencount2:=not count2;if count2=1 then spks=1;elsespks=0;end if;end if;end process;end;顶层程序课程设计说明书26library ieee;use ieee.std_logic_1164.all;entity yybf isport(clk1:in std_logic;CS:in

30、 std_logic;RST:in std_logic;D2:in integer range 0 to 15;oup1:out std_logic;oup2:out integer range 0 to 15;oup3:out integer range 0 to 15);end;architecture bhv of yybf issignal s1: integer range 0 to 15;signal s2: integer range 0 to 15;signal s3: integer range 0 to 2047;signal d: std_logic;component

31、ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end component;component ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end component;component bmux isport(d1,d2:in integer range 0 to 15;c

32、s,rst:in std_logic;q:out integer range 0 to 15); end component;component skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;课程设计说明书27spks:out std_logic);end component;component dd isport(clk:in std_logic;d:out std_logic);end component;beginu1: ydfsq port map(d,s1);u2:ydbmq port map(s2,oup2,oup3,s3);u3:bmux port map(s1,D2,CS,RST,s2);u4:skfpq port map(clk1,s3,oup1);u5:dd port map (clk1,d);end bhv;

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报