ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:196.34KB ,
资源ID:3999528      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3999528.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SOPC EDA综合课程设计乐曲硬件演奏.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SOPC EDA综合课程设计乐曲硬件演奏.docx

1、SOPC EDA综合课程设计乐曲硬件演奏目录第一章 EDA技术综合应用设计的主要软件及设备 - 1 -1.1 主要软件、设备及作用: - 1 -1.2实验电路结构图 .- 1 -第二章 乐曲硬件演奏电路设计的原理 - 2 -第三章 乐曲硬件演奏电路VHDL 程序设计 - 4 -3.1 音乐节拍和音调发生器模块PUTTAB - 4 -3.1.1 PUTTAB模块原理图 - 5 -3.1.2 puttab模块时序仿真图 - 5 -3.2音乐谱对应分频预制数查表电路模块ONTAB - 5 -3.2.1 ONTAB模块原理图 - 7 -3.2.2 ONTAB模块时序仿真图 - 7 -3.3音乐符数控1

2、1分频电路模块OUTSPEKER - 8 -3.3.1 OUTSPEAKER模块原理图 - 9 -3.3.2 OUTSPEAKER模块时序仿真图 - 9 -3.4 乐曲演奏音符数据文件(梁祝、自选曲) - 10 -3.4 引脚绑定 - 11 -第四章 顶层程序的时序仿真图 - 13-第五章 课程设计心得体会 - 14 -参考文献 . -15-第一章 EDA技术综合应用设计的主要软件及设备1.1 主要软件、设备及作用: EDA技术的综合应用设计与开发可能用到的主要开发设计软件、设备及其作用如下: (1) EDA的工具软件:目前比较流行的、主流厂家的EDA的软件工具有Altera的MAX+plus

3、 、Quartus ,Lattice的ispDesignExpERT,Xilinx的Foundation Series、ISE/ISE-WebPACK Series。 (2) 计算机辅助分析软件:MATLAB用于复杂系统的系统级仿真,DSP的系统建模,有关数据的计算和分析等。 (3) 印刷电路板PCB的设计软件:主要有PROTEL、ORCAD等,用于设计系统的外围部件或外围电路的PCB图。 (4) EDA实验开发系统/片上系统(SOPC)/嵌入式系统:用于EDA实验与开发的硬件的编程下载及硬件验证。 (5) 单片机仿真器及仿真头:用于单片机程序的调试与硬件的验证。 (6) 印刷电路板PCB的制

4、作设备:用于系统外围部件或外围电路的PCB的制作。(7) 信号源、示波器、频率计、无线电综合测试仪等其它相关设备。1.2实验电路结构图图1-1 实验电路结构图NO.1第二章 乐曲硬件演奏电路设计的原理 与利用微处理器来实现乐曲演奏相比,一纯硬件完成乐曲演奏电路的逻辑要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。 本文通过利用硬件乐曲演奏电路的设计实例,使读者初步了解VHDL 硬件描述语言和Quartus II 开发环境。设计并调试好一个能产生梁祝曲子的音乐发生器,并利用EDA实验开发系统(本设计是在Altera 的FPGA

5、芯片CycloneEP1C6 和杭州康芯电子有限公司生产的GW48 系列EDA)的基础上完成硬件测试。 根据系统提供的时钟源引入一个12MHZ时钟的基准频率,对其进行各种分频系数的分频,产生符合某一音乐的频率,然后再引入8HZ的时钟为音乐的节拍控制,最后通过扬声器放出来。图2-1音乐产生器原理框图 乐曲时由每个音符的发音频率值及其持续的时间是乐曲能连续演奏的两个基本要素,在下面的电路就是来获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值来实现所希望乐曲的演奏效果。模块PUTTAB类似于弹琴人的手指;模块ONTAB类似于琴键;模块OUTSPEKER类似于琴弦或音调发生器。乐曲硬件演奏

6、电路设计的原理:(1)音符的频率可以由图中的OUTSPEKER获得,这是一个数控分频器。由其CLK端输入一具有较高频率(这里是12MHZ)的信号,通过OUTSPEKER分频后又SPKOUT输出,由于直接从数控分频器中出来的输出信号时脉宽及其狭窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器一均衡其占空比,但这是的频率将是原来的一半。OUTSPEKER对CLK输入信号的分频比又11位的预置数TONE10.0决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置数TONE10.0与SPKOUT的输出频率就有了对应关系。例如在ONTAB模块中若去TONE10.0=1036,

7、将发音符为“3”音的信号频率。(3)3.22音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定,图8-6中模块ONTAB的功能首先是为SPEAKRA提供决定所发音符的分频预置数,而此数在SPEAKRA输入口停留的时间即为此音符的节拍值。模块ONTAB是乐曲简谱码对应的分频预置数查表电路,其中设置了“梁祝”乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块PUTTAB的clk的输入频率决定,在此为4HZ。这13个值的输出由对应于ONTAB的4位输入值Index【3.0】确定,而Index【3.0】最多有16种可选值。输向ONTAB中Index【3.0】的值

8、ToneIndex【3.0】的输出值与持续的时间由模块NOTERABS决定。(3)3.23 在PUTTAB中设置了一个8位二进制计数器(计数最大值为137),作为音符数据ROM的地址发生器。这个计数器的计数频率选为4HZ,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,PUTTAB在以下的VHDL逻辑描述中,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应的,所对应的“3”音符分频预置值为1036,在OUTSPEKERA的输入端停留了1秒。随着PUTTAB中的计数器按4HZ的时钟速率作加法计数时,即随地址值递增时,音

9、符数据ROM中的音符数据将从ROM中通过ToneIndex【3.0】端口输向ONTAB模块,“梁祝”乐曲就开始连续自然的演奏起来了。图2-2 顶层模块设计原理图第三章 乐曲硬件演奏电路VHDL 程序设计根据顶层模块设计原理图,共分为music模块、地址发生器模块、分频预置数模块这3个模块。music模块存放乐曲中的音符数据,地址发生器模块作为music模块中所定制的音符数据ROM的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供计数初值,十六进制模块对12MHz的时钟脉冲进行16分频,得到750KHz的频率,给数控分频模块提供时钟脉冲。数控分频模块根据分频预置数输出各个音符所对应的

10、频率。3.1 音乐节拍和音调发生器模块PUTTAB乐曲演奏电路的VHDL 逻辑描述如下:library ieee;-音乐节拍和音调发生器模块use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PUTTAB isport( clk : in std_logic;-时钟信号 SEL : IN STD_LOGIC;-音乐选择键 RST : IN STD_LOGIC;-复位键 toneindex:out std_logic_vector(3 downto 0);end;architecture one of PUTTAB

11、 iscomponent MUSIC -音符数据port( address:in std_logic_vector(7 downto 0); clock:in std_logic; q:out std_logic_vector(3 downto 0);end component;signal counter:std_logic_vector(7 downto 0);-8位二进制计数器begin CNT8 : PROCESS(clk, Counter,sel,rst)BEGINIF (clkEVENT AND clk = 1) and (Counter=256 or rst=0) then Co

12、unter = 00000000;Counter =Counter+1; end if; IF (clkEVENT AND clk = 1) and (sel=0) THEN Counter =10010000;Counter counter,q=toneindex,clock=clk);end;3.1.1 PUTTAB模块原理图图3-1 PUTTAB模块原理图3.1.2 puttab模块时序仿真图将所编写的音乐节拍和音调模块PUTTAB的程序设为工程,选用Altera公司的Cyclone系列中的EP1C3TC144为目标芯片进行仿真。图3-2 puttab模块时序仿真图由上图可以看出,该模块

13、音乐节拍和音调发生器模块,当CLK给出上升沿输出时,给出音符节拍,当RST复位时音符从头给出3 5 8 等音乐节拍,当SEL为低电平时,自动切换到下一首歌曲。满足要求。3.2音乐谱对应分频预制数查表电路模块ONTABlibrary ieee;use ieee.std_logic_1164.all;entity ONTAB isport(index:in std_logic_vector(3 downto 0); tone:out std_logic_vector(10 downto 0); HIGH: OUT std_logic; CODE:out std_logic_vector(3 dow

14、nto 0);end;architecture one of ONTAB isbegin search:process(index) begin CASE Index IS - 译码电路,查表方式,控制音调的预置数 WHEN 0000 = Tone=11111111111 ; CODE=0000; HIGH Tone=01100000101 ; CODE=0001; HIGH Tone=01110010000 ; CODE=0010; HIGH Tone=10000001100 ; CODE=0011; HIGH Tone=10010101101 ; CODE=0101; HIGH Tone=

15、10100001010 ; CODE=0110; HIGH Tone=10101011100 ; CODE=0111; HIGH Tone=10110000010 ; CODE=0001; HIGH Tone=10111001000 ; CODE=0010; HIGH Tone=11000000110 ; CODE=0011; HIGH Tone=11001010110 ; CODE=0101; HIGH Tone=11010000100 ; CODE=0110; HIGH Tone=11011000000 ; CODE=0001; HIGH null; end case; end proce

16、ss;end;3.2.1 ONTAB模块原理图图3-3 ONTAB模块原理图3.2.2 ONTAB模块时序仿真图波形仿真将所编写的分频预置数查表模块ONTAB的程序设为工程,选用Altera公司的Cyclone系列中的EP1C3TC1448为目标芯片进行仿真。仿真结果如下图:图3-4 模块ONTAB的波形仿真 由上图可以看出,该模块为音乐谱对应分频预制数查表电路模块,当code为休止符0000时,输出端tone给出的分频预置数为2047,当code为0001时输出端tone给出的分频预置数为773,满足程序要求。3.3音乐符数控11分频电路模块OUTSPEKER音符的频率由数控分频模块获得,这

17、是一个数控分频电路。它是由一个初值可变的加法计数器构成。该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号FULL,此溢出信号就是用作发音的频率信号。在计数器的输入端给定不同的初值,而此预置数就是表1中的计数初值,就可得到不同音符的发音频率信号。它计满时所需要的计数初值可由下式来表示。分频系数=基准频率/音符的发生频率计数初值(Tone)=2047-分频系数低音时Tone值小,分频系数大,溢出信号周期长,扬声器发出的声音低,Tone随音乐的乐谱变化大,自动控制分频比,实现了数控分频,发生信号的频率与音调Tone成正比。这就是利用数控分频器自动演奏音乐的原理。library ieee

18、;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity OUTSPEKER is port(clk:in std_logic; tone:in std_logic_vector(10 downto 0); spks:out std_logic);end entity OUTSPEKER;architecture one of OUTSPEKER issignal preclk,fullspks:std_logic;begin divideclk:process(clk) variable count4:std_lo

19、gic_vector(3 downto 0); begin preclk11 then preclk=1;count4:=0000; elsif clkevent and clk=1 then count4:=count4+1; end if; end process divideclk; genspks:process(preclk,tone)- 11位可预置计数器 variable count11:std_logic_vector(10 downto 0); begin if preclkevent and preclk=1 then if count11=16#7ff# then cou

20、nt11:=tone;fullspks=1; else count11:=count11+1;fullspks=0; end if; end if; end process; delayspks:process(fullspks)-将输出再2分频,展宽脉冲,使扬声器有足够功率发音 variable count2:std_logic; begin 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;

21、3.3.1 OUTSPEAKER模块原理图图3-5 OUTSPEAKER模块原理图3.3.2 OUTSPEAKER模块时序仿真图波形仿真将所编写的音乐符数控分频模块OUTSPEKER的程序设为工程,选用Altera公司的Cyclone系列中的EP1C3TC144为目标芯片进行仿真。仿真结果如下图:图3-6模块OUTSPEKER的波形仿真图由上图可以看出,此图为音乐符数控11分频电路模块,tone为11001010110时,给出的分频预置数为1686,这样,与SPKS的输出频率就有了对应关系。满足程序要求。3.4 乐曲演奏音符数据文件(梁祝、自选曲)WIDTH = 4 ;-乐曲演奏数据DEPTH

22、 = 256 ;Address_radix = dec;Data_radix = dec;CONTENT BEGIN3 3 3 3 5 5 5 6 8 8 8 9 6 8 5 5 12 12 12 15 13 12 10 12 9 9 9 9 9 9 9 0 9 9 9 10 7 7 6 6 5 5 5 6 8 8 9 9 3 3 8 8 6 5 6 8 5 5 5 5 5 5 5 5 10 10 10 12 7 7 9 9 6 8 5 5 5 5 5 5 3 5 3 3 5 6 7 9 6 6 6 6 6 6 5 6 8 8 8 9 12 12 12 10 9 9 10 9 8 8 6 5

23、3 3 3 3 8 8 8 8 6 8 6 5 3 5 6 8 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 1 2 3 3 5 5 6 7 7 6 5 6 3 2 1 1 1 2 3 2 5 6 7 8 9 8 7 6 5 2 3 2 3 3 3 3 5 5 5 5 0 0 0 0 0 0 0 0 其中WIDTH=4,表示数据输出为宽为4;DEPTH=256,表示共有256个4位数据点;ADDRESS-RADIX=DEC,表示地址信号用十进制;DATA-RADIX=DEC,表示输出数据是十进制数。形成ROM中的配置数据(初始化数据)文件的方法如下:在QUARTUS|中编辑.

24、mif文件。首先在File菜单下的New菜单上选择Text Editor File命令,进入文本编辑器,然后输入以上格式的数据文件。文件中的关键词WIDTH设置ROM的数据宽度;DEPTH设置ROM数据的深度,即4位数据的数量,文件中设置的256等效于8位地址线宽度;ADDRESS-RADIX=DEC和DATA-RADIX=DEC表示设置地址和数据的表达式格式都是十进制;地址/数据表以CONTENT BEGIN开始,以END结束;其中的地址/数据表达方式是冒号左边写ROM地址值,冒号右边写对应此地址放置的十进制数据.3.4 引脚绑定为了能对此电路进行硬件测试,应将其输入信号锁定在芯片确定的引脚

25、上,编译后下载。当硬件测试完成后,还必须对配置芯片进行编程,完成FPGA的最终开发。确定引脚分别为CLK8HZ接第128脚,CLK12MHZ接在第123引脚上,复位RST接在第106引脚上,选择键SEL接在第107引脚上;CODE【3.0】 分别接在第42到39引脚上,high接在第73引脚上,输出SPKOUT接在第129引脚上。 确定了锁定引脚编号后就可以完成以下引脚锁定操作了,选择ASSSIGNMENT-PINS 命令,将弹出目标器件的引脚编辑窗口,将信号名拖入引脚上,最后储存这些引脚锁定的信息后,再编译一次,才能将引脚锁定信息编译进编程下载文件中。图3-7整个设计电路的引脚绑定图第四章

26、顶层程序的时序仿真图图4-1 顶层程序的时序仿真已经实现乐曲的演奏。SEL为低电平时切换第二首乐曲播放,RST为低电平时从第一首乐曲开始重新播放。达到了设计要求第五章 课程设计心得体会这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终

27、于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示。后来,在数十次的调试之后就可以观察到完整的仿真结果。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的乐曲硬件

28、演奏电路还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢参考文献1 潘松 黄继业 编著。EDA技术与VHDL(第二版)。清华大学出版社。20072 刘江海EDA 技术课程设计。 华中科技大学出版社。20083 潘松编著EDA技术实用教程北京:科学教育出版社. 20064 Quartus Semiconductor data booksQuartus Semiconductor Corporation . 20015 杭州康芯电子有限公司GW48-PK3实验系统说明书. 杭州康芯电子有限公司.2006

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1