EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc

上传人:椰子壳 文档编号:5014480 上传时间:2020-01-28 格式:DOC 页数:21 大小:481.50KB
返回 下载 相关 举报
EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc_第1页
第1页 / 共21页
EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc_第2页
第2页 / 共21页
EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc_第3页
第3页 / 共21页
EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc_第4页
第4页 / 共21页
EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计-基于VHDL的简易乐曲演奏器设计.doc(21页珍藏版)》请在三一文库上搜索。

1、目目 录录 引言.1 1 VHDL 及 QUARTUSII 软件简介2 1.1 EDA 简介 2 1.2 硬件描述语言 VHDL.2 1.3 软件介绍 .3 1.4 界面介绍 .4 1.4.1 软件打开界面.4 1.4.2 代码输入界面.4 1.4.3 波形仿真界面.5 2 简易音乐演奏器设计及仿真.5 2.1 硬件电路设计 .5 2.2 软件代码设计 .6 2.2.1 音符储存单元.6 2.2.2 选择播放模式及手动模块单元.7 2.2.3 分频模块单元.8 2.2.4 预置数模块单元.9 2.2.5 音频发声模块单元.10 2.3 系统功能仿真 .12 2.3.1 音符储存单元波形仿真.1

2、2 2.3.2 频率控制单元波形仿真.12 2.3.3 分频模块单元波形仿真.13 2.3.4 预置数模块波形仿真.13 2.3.5 音频发声模块单元波形仿真.14 3 引脚锁定及下载15 3.1 引脚锁定 .15 3.2 结果分析 .15 4 设计总结16 参考文献.17 附录.18 课程设计说明书课程设计说明书 1 引言 VHDL 语言是一种用于电路设计的高级语言。它在 80 年代的后期出现。最初 是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使 用范围较小的设计语言 。 随着 EDA 技术的高速发展,电子系统的设计技术和工具发生了深刻的变化, 大规模可编程逻辑器件

3、CPLDFPGA 的出现,给设计人员带来了诸多方便。利用 它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。 突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。 本文基于 FPGA 开发系统,在 QuartusII 7.2 软件平台上,完成了简易乐曲演奏 器设计和与仿真,并下载到试验箱进行硬件实现。首先,本文介绍了 QuartusII 7.2 软件的基本使用方法和 VHDL 硬件描述语言的特点,采用 VHDL 硬件描述语言描 述简易信号发生器,完成对电路的功能仿真。在设计过程中,重点探讨了简易乐 曲演奏设计思路和功能模块划分。然后,初步探讨了电路逻辑综合的原理

4、,该软 件对简易乐曲演奏器进行了逻辑综合。最后,使用 EDA 实验开发系统进行电路的 下载和验证。验证结果表明设计的简易乐曲演奏器完成了预期的功能。 本设计是采用 VHDL 来实现的简易乐曲演奏器。它能实现自动播放和手动播 放。 课程设计说明书课程设计说明书 2 1 VHDL 及 QuartusII 软件简介 1.1 EDA 简介简介 EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世纪 60 年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助 测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 EDA 技术就

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

6、产、生物等各 个领域,都有 EDA 的应用。 1.2 硬件描述语言 VHDL 硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编 程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述 方式相比,它更适合大规模系统的设计。例如一个 32 位的加法器,利用图形输入 软件需要输人 500 至 1000 个门,而利用 VHDL 语言只需要书写一行“A=B+C” 即 可。而且 VHDL 语言可读性强,易于修改和发现错误。早期的硬件描述语言,如 ABEL、HDL、AHDL,由不同的 EDA 厂商开发,互不兼容,而且不支持多层次 设计,层次间翻译工作要由人工完成。为了

7、克服以上不足,1985 年美国国防部正 式推出了高速集成电路硬件描述语言 VHDL,1987 年 IEEE 采纳 VHDL 为硬件描 述语言标准(IEEE-STD-1076)。 VHDL 是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻 辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此 VHDL 几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由下向上的电路 设计过程都可以用 VHDL 来完成。VHDL 还具有以下优点: (1)VHDL 的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作 重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。 (

8、2)VHDL 可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方便, 而且也便于设计结果的交流、保存和重用。 (3)VHDL 的设计不依赖于特定的器件,方便了工艺的转换。 课程设计说明书课程设计说明书 3 (4)VHDL 是一个标准语言,为众多的 EDA 厂商支持,因此移植性好。 美国于 1981 年提出了一种新的、标准化的 HDL,称之为 VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,简称 VHDL。这是一种用 形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种语 言来描

9、述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合 到门电路,最后用 PLD 实现其功能。 1.3 软件介绍 Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、 VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种 设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置 的完整 PLD 设计流程。 Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设 计流程外,提供了完善的用户图形界面设计方式。具有运行速

10、度快,界面统一, 功能集中,易学易用等特点。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库,使 用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三 方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方 EDA 工具。 此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方 便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系 统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发

11、平台。 Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到 了广泛的应用。Altera 在 Quartus II 中包含了许多诸如 SignalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC 和 HardCopy 设计流程,并且继承 了 Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和 直观易用的接口,越来越受到数字系统设计者的欢迎。 课程设计说明书课程设计说明书 4 1.4 界面介绍 1.4.1 软件打

12、开界面 软件打开界面如图所示: 图 1 软件打开界面 1.4.2 代码输入界面 代码输入界面如图所示: 图 2 代码输入界面 课程设计说明书课程设计说明书 5 1.4.3 波形仿真界面 波形仿真界面如图所示: 图 图 4 波形仿真界面 2 简易音乐演奏器的设计及仿真 2.1 硬件电路设计 根据要求:简易功能演奏器的功能要求,需要设计手动播放功能和自动播放 功能,所以系统顶层框图设计如下图所示: 课程设计说明书课程设计说明书 6 图 5 顶层设计图 其中,自动和手动通过一个按键实现,当按键按下(即此键的指示灯亮)时 表示音乐自动播放。当按键不按下(即此键的指示灯灭)时表示手动播放,音符 的输入通

13、过实验箱的七个按键实现, 。 硬件系统使用的是实验室的 EDA 试验箱,其 FPGA 主芯片使用的型号是: ACKX1K:EP1K30TC144-3。 简易乐曲演奏器的原理图如下: d130 d230 cs rst q30 bmux inst clkclkout fenpin inst1 clknote30 notetaba inst2 clk tone100 spks speak inst3 index30code30 code130 tone100 tonetaba inst4 VCC clk INPUT VCC key30 INPUT VCC cs INPUT VCC rst INPUT

14、 code30 OUTPUT code130 OUTPUT spkout OUTPUT 图 6 简易乐曲演奏器 2.2 软件代码设计 软件代码设计部分由多个功能模块组成,包括:音符储存模块、选择播放模 式和手动播放模块、分频模块、预置数模块和音频发声模块。 2.2.1 音符储存单元 随着 clk 的计数变化 note 的输出音符将内部 rom 的输出。 此模块的代码为:library ieee; use ieee.std_logic_1164.all; entity notetaba is port(clk:in std_logic; note:out integer range 0 to 1

15、5); 分频模块 自动播放模块 选择及手 动模块 预置数模块 播放模块 课程设计说明书课程设计说明书 7 end; architecture bhv of notetaba is signal counter:integer range 0 to 120; begin process(clk,counter) begin if counter=120 then counternotenotenotenotenotenotenotenotenotenotenoteNULL; end case; end process; end; 形成的模块框图如下图所示: 课程设计说明书课程设计说明书 8 cl

16、knote30 notetaba inst2 图 7 音符储存模块图 2.2.2 选择播放模式及手动模块单元 当 cs=1 时为手动模式,cs=0 时为自动播放模式。 此模块的代码为:library ieee; use ieee.std_logic_1164.all; entity bmux is port(d1,d2:in integer range 0 to 15; cs,rst:in std_logic; q:out integer range 0 to 15); end; architecture bhv of bmux is begin process(cs,rst) begin i

17、f rst=1 then qqqqtonetonetonetonetonetonetonetonetonetonetonetonetonetonetoneNULL; end case; 课程设计说明书课程设计说明书 11 end process; end ; 模块图如下: 图 10 预置数模块图 2.2.5 音频发声模块单元 此模块实现发声的功能将对应的频率值的音输出。 代码为:library ieee; use ieee.std_logic_1164.all; entity speak is port(clk:in std_logic; tone:in integer range 0 to

18、2047; spks:out std_logic); end; architecture bhv of speak is signal preclk:std_logic; signal fullspks:std_logic; begin process(clk) variable count4:integer range 0 to 15; begin preclk11 then preclk=1;count4:=0; elsif clkevent and clk=1 then count4:=count4+1; end if; end process; process(preclk,tone)

19、 variable count11:integer range 0 to 2047; begin adr30digit30 hig tone100 zhishu inst11 课程设计说明书课程设计说明书 12 if preclkevent and preclk=1 then if count11=2047 then count11:=tone;fullspks=1; else count11:=count11+1;fullspks=0; end if; end if; end process; process(fullspks) variable count2:std_logic; begi

20、n if fullspksevent and fullspks=1 then count2:=not count2; if count2=1 then spks=1; else spks=0; end if; end if; end process; end; 此模块框图: 图 11 音频产生模块 2.3 系统功能仿真 2.3.1 音符储存单元波形仿真 clk tone100 spks speak inst3 课程设计说明书课程设计说明书 13 图 12 音符储存单元波形仿真 对输入的 clk 进行计数, ,对输出进行赋值,每一个周期输出一个音符。 2.3.2 选择播放模式及手动模块单元波形仿

21、真 图 13 选择播放模式及手动单元波形仿真 从图中可以看出 CS=1 时,可以实现手动功能,CS=0 时,可以实现自动功能。rst 实现复位重新播放功能。 2.3.3 分频模块模块波形仿真 课程设计说明书课程设计说明书 14 图 14 分频模块仿真波形 为了实现四拍的节奏,可将时间设为 4Hz,1s 输出 4 个音符。所以将 12MHz 的频 率分频到 4Hz. 2.3.4 预置数模块单元波形仿真 图 15 预置数模块仿真波形 根据输入的不同音符,将其对应的 11 位加法计数器对应的分频预置数输出。 2.3.5 音频发声模块单元波形仿真 图 16 音频发声模块仿真波形 将预置数输入时,在此基

22、础进行加法计数,加到 2047 时,speak 为高电平。 课程设计说明书课程设计说明书 15 3 引脚锁定及下载 3.1 引脚锁定 选择 Assignments 菜单下的 Pins 命令,出现以下窗口: 课程设计说明书课程设计说明书 16 图 17 引脚锁定图 下载时,实验箱上则需连续按“模式选择”按钮选择模式 5,再按“系统复位”按 钮。进行引脚锁定,查阅附表,分别点“location”选择引脚号。引脚锁定后再编译。 如同此前进行过的。编译成功后点确定。 下载完后就可以在实验箱查看结果。 3.2 结果分析 将程序代码下载到实验箱的 FPGA 芯片中,并验证了在仿真中的结果的正确 性。此简易

23、乐曲演奏器系统,能够产生所要求的功能。能够自动播放储存好的乐 曲,手动实现音符的发音并能实现复位功能。 4 设计总结 经过四天的课程设计,已经按计划将要求的简易音乐演奏器设计出来,并能 实现所要的功能,可以实现手动播放功能、自动放歌曲、复位重新播放的功能。 在设计过程中,我遇到了许多问题,通过自己上网、查阅资料、问同学老师, 解决了各个问题,并设计出所需要的要求的程序代码。在设计过程中,我了解到 设计程序代码的基本过程,首先建立子模块,并对各个模块进行仿真,调试,直 到实现所要的功能为止。再用元件例化对顶层文件进行仿真,调试,到仿真图正 确止。最后将程序代码下载到 FPGA 实验箱上。 在设计

24、过程中,深切感受到自己的渺小,做设计时,需要请教别人,也许是 他人的一句简单的话语,就能点醒自己的设计思路。设计思路正确,结果未必正 确,也许是语言表达的问题,使机器不能正确识别。 此次设计对我的影响较大,也许对生活中存在的东西多问一个为什么,在你 课程设计说明书课程设计说明书 17 设计东西时,你就会感觉轻松许多,更加有时间去想一些别的功能,使自己的设 计更加完美,使自己是享受设计的过程,是自己变得更加主动,而不是被动的接 受。 在设计中更使我明白,学习是无止境的。狂妄的自大就是无知。要时刻保持 学习的态度,只要学会的才是自己的。 参考文献 1.Voknei A.Pedroni.VHDL 数

25、字电路设计教程.电子工业出版社,2008.5 2.潘松,黄继业.EDA 技术实用教程(第二版).科学出版社,2005.2 3.焦素敏.EDA 应用技术.清华大学出版社,2002.4 课程设计说明书课程设计说明书 18 附录 library ieee; use ieee.std_logic_1164.all; entity top1 is port ( clk : in std_logic cs,rst : in std_logic; key : in integer range 0 to 15; code:out integer range 0 to 15; code1:out integer

26、 range 0 to 15; spkout: out std_logic ); end top1; 课程设计说明书课程设计说明书 19 architecture one of top1 is component notetaba is port(clk:in std_logic; note:out integer range 0 to 15); end component; component bmux is port(d1,d2:in integer range 0 to 15; cs,rst:in std_logic; q:out integer range 0 to 15); end

27、component; component tonetaba port(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 Speak is port(clk:in std_logic; tone:in integer range 0 to 2047; spks:out std_logic); end component; compone

28、nt fenpin is port(clk:in std_logic ; clkout:buffer std_logic); end component; signal a : integer range 0 to 15; signal b : integer range 0 to 15; signal c : integer range 0 to 2047; signal d : std_logic; begin u1 : notetaba port map (d, a); u2 : bmux port map (a,key,cs,rst,b); u3 : tonetaba port map (b,code,code1,c); u4 : speak port map(clk,c, SPKOUT); 课程设计说明书课程设计说明书 20 u5 : fenpin port map(clk,d); end;

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1