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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

两只老虎EDA课程设计详细.docx

1、两只老虎EDA课程设计详细课程设计课程设计名称: 专业班级 学生姓名: 学 号: 指导教师: 课程设计时间:1设计任务及要求设计任务:乐曲自动播放器。自行选择一首自己喜爱的经典乐曲,用FPGA 设计实现一个该曲目的自动演奏电路。要求:(1)根据设计题目要求编写相应程序代码(2) 对编写的VHDL程序代码进行编译和仿真(3) 利用实验箱完成硬件验证(4) 总结设计内容,完成课程设计说明书与利用微处理器,以纯硬件完成乐曲演奏电路的逻辑要复杂得多。本实验 设计项目作为“两只老虎”乐曲演奏电路的实现,组成每个乐曲的每个音符的发 音频率值及持续的时间是乐曲能连续演奏所需要的两个基本要素。(1) 音乐硬件

2、演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序 来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频 率的声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符 的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符 组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连 续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生 是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持 续时间是乐曲能够连续演奏的两个关键因素。(2) 音符频率的获得多个不同频率的信号

3、可通过对某个基准频率进行分频器获得。由于各个音符 的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数 四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。 若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。 本设计中选取1MHz的基准频率。数控分频器采用12位二进制计数器,乐曲中的 休止符,只要将分频系数设为0,即初始值=4095,此时扬声器不会发声。根据分频系数,可计算数控分频器得到的初始值。初始值的计算公式如下: 由于所设计的数控分频计采用12MHZ作为时钟源

4、,并通过一次12分频给出频率 为1MHZ的脉冲溢出信号,再对该1MHZ的溢出信号进行12位2进制码的带预置 数进行计数,并给出一个频率随预置数变化的脉冲信号。由于该脉冲信号不具有 驱动蜂鸣器的能力,故对此脉冲信号进行2分频以推动蜂鸣器发声,故最终输出 信号的频率与预置数的关系如下:其中九为音阶对应的频率。表1简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1中音1高音1低音2中音2高音2低音3中音3高音3低音4中音4高音4低音5中音5高音5低音6440中音6880高音61760低音7中音7高音7表2各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始

5、值低音17644547中音138224369高音119116280低音26810)1381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音428645327高音414326759低音551023089中音525515640高音512566935低音645453646中音622735918高音611377054低音740504141中音720256166高音710137178(3)乐曲节奏的控制一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出4Hz的1/4拍的时长(秒),对于其它占用时间较长

6、的节拍(必为1/4拍的整数 倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快幔的控制信号,时钟快时输出节拍速度就快,演奏 的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,由于最后 的蜂鸣器前需加一个二分频的程序,因此计数器的时钟信号应为4Hz的2倍,即8Hzo(4)乐谱的发生本设计将乐谱中的音符数据存储在LPM-ROM中,若某音在逻辑中停留了 4个时钟 节拍,即1秒的时间,相应地,该音符就要在LPM-ROM中连续的四个地址上都存 储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。(5)选择模块选择模块将用一个4位数的控制信号控制乐谱模块

7、数据的选择性,用vhdl 语言描述。两只老虎12 3 112 3 13 4 53 4 6两只老虎两只老虎龜待快胞铸快1 5 1 弓1 5 1 515 1516 16法E艮歌2设计原理及总体框图SPEAKERAJCL.KSPKSTONE CIO.O(1)音符的发音频率设定及实现音符的频率可由一个数控分频器SPEAKERA获得,由其CLK端输入一个有较高频率 的信号,通过SPEAKERA分频后由SPROUT输出。由于直接从数控分频器中出来的输出信号是 脉宽极窄的,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率 将是原来的1/对elk输入信号的分频比由11位预置数Tone10.

8、0决定。SPROUT的辙出频 率就有了对应关系。例如,在TONETABA模块中若取Tone10. 0 = 1036,将对应法音符为3” 音的信号频率。TONETapa :CODE3. . I MDEX3. OJ H I GH : TOME I: JL0 0丁(2)音符的持续时间 XO 1音符的持续时间需根据乐曲的速度及每个一怒的节拍数来确定,图中模块 TONETAB/V的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKER 输入口停留的时间即为次音符的节拍值。模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置“两只老虎”乐曲 全部音符所对应的分频预置

9、数,共M个,每一音符的停留时间由音乐节拍和音调发生器模 块NOTETABS的elk输入频率决定,这11个值的输出由对应于TONETABA中Index3. .0的 值Tone Index 3. .0的输出值与持续时间由模块NOTETABS决定。在NOTETABS中设置了一个 8位二进制计数器(计数最大值为138),这个计数器的技术频率选为4Hz,即每一个计数值 停留时间为,恰为当全音符设为Is时,四四拍的4分音符持续时间。例如,NOTETABS在以 下的VHDL逻辑描述中,“两只老虎”乐曲的第一个音符为“5”,此音在逻辑中停留了 1个时 钟节拍,即时间,相应地,所对应的“”音符分频预置值为在SP

10、EAKERA的输入端开始连续 自然地演奏起来了。设计的总体框图如下:3程序设计VHDL程序如下:(1)是设计电路的顶层设计LIBRARY IEEE;USE Songer IS PORT(CLK12MHZ:IN STD LOGIC;CLK8HZ:IN STD_LOGIC;CODEI:OUT INTEGER RANGE 0 TO 15;HIGH1:OUT STD_LOGIC;SPKOUT:()UT STD LOGIC):END;ARCHITECTURE one OF Songer ISCOMPONENT NoteTabs PORT(elk:IN STD_LOGIC;ToneIndex:OUT IN

11、TEGER RANGE 0 TO 15);END COMPONENT;COMPONENT ToneTabaEND COMPONENT;COMPONENT SpeakeraPORT(elk:IN STD_LOGIC;Tone:IN INTEGER RANGE 0 TO 16#7FF#;SpkS:OUT STD LOGIC):END COMPONENT;SIGNAL Tone:INTEGER RANGE 0 TO 16#7FF#;SIGNAL Toneindex:INTEGER RANGE 0 TO 15;BEGINul:NoteTabs PORT MAP(elk二clk8HZ,Toneindex

12、二Toneindex);PORTu2:ToneTabaMAP (Index=ToneIndex,Tone=Tone,CODE=C()DE1,HIGH=HIGH1);u3: Speakera PORT MAP(c1k=CLK12MHZ,Tone=Tone,SpkS=SPKOUT); END;(2)是乐曲简谱码对应的分频预置数查表电路。LIBRARY IEEE;USE ToneTaba ISPORT(Index:IN INTEGER RANGE 0 TO 15;CODE:OUT INTEGER RANGE 0 TO 15;HIGH:OUT STD_LOGIC;Tone:OUT INTEGER RA

13、NGE 0 TO 16#7FF#);END;ARCHITECTURE one OF ToneTaba ISBEGIN(Search:PROCESS(Index)BEGINCASE Index ISWHEN 0 =Tone=2047;CODE=O:HIGHTone=773;C0DE=l;HIGHTone=912:CODE=2:HIGHTone=1036;C0DE=3;HIGHTone=l110;CODE=4;HIGHTone=l197;C0DE=5;HIGHTone=1290;C0DE=6;HIGHTone=1372;CODE=l;HIGHTone=1410;C0DE=2;HIGHTone=14

14、80;C0DE=3;HIGHTone=1542;CODE=4;HIGH=rI1;WHEN OTHERS二NULL;END CASE;)END PROCESS;END;(3)是设计电路的数控分频器:LIBRARY IEEE;USE Speakera ISPORT(elk:IN STD_LOGIC;Tone:IN INTEGER RANGE 0 TO 16#7FF#;SpkS:OUT STD_LOGIC);END;ARCHITECTURE one OF Speakera ISSIGNAL PreCLK:STD_LOGIC;SIGNAL FullSpkS:STD LOGIC;BEGINDivideC

15、LK:PROCESS(elk)VARIABLE Count4:INTEGER RANGE 0 TO 15;BEGINPreCLK 11 THEN PreCLK=r11;Count4:=0;ELSIF elk1EVENT AND elk二i THEN Count4:=Count4+l;END IF;END PROCESS;GENSpkS:PROCESS(PreCLK,Tone)VARIABLE Count 11:INTEGER RANGE 0 TO 16#7FF#;BEGINIF PreCLK*EVENT AND PreCLK二T THENIF Count11=16#7FF# THENCount

16、ll:=Tone;FullSpkS=,r;ELSE Count11:=Count11+1;FullSpkSUO;END IF;END IF;END PROCESS;De1aySpkS:PROCESS(FullSpkS)VARIABLE Count2:STD LOGIC;BEGINIF FullSpkS1EVENT AND FullSPKS二TTHENCount2:=NOT Count2;IF Count2 二TTHEN SpkSOl;ELSE SpkS=,0,;END IF;END IF;END PROCESS;END;(4)NOTETABS模块决定音乐的输出值与持续时间:LIBRARY IE

17、EE;cUSE NoteTabs ISPORT(elk:IN STD丄OGIC;Toneindex:OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF NoteTabs ISSIGNAL Counter:INTEGER RANGE 0 TO 35;BEGINCNT8:PROCESS(elk)BEGINIF Counter=35 THEN Counter=0;ELSIF (elk1EVENT AND elk二l)THENCounterToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTon

18、eIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexTonelndex=4;WHEN26=ToneIndexToneIndexToneIndexToneIndexTonelndex=l;WHEN31=ToneIndexToneIndexToneIndexToneIndexToneIndexchip=zuhe; in

19、put pin=54Clkl2mhzchip=zuhe; input pin=126CodelOchip=zuhe; output pin=33CodelOchip=zuhe; output pin=32CodelOchip=zuhe; output pin=31CodelOchip=zuhe; output pin二30Highlchip=zuhe; output pin=81SPKOUTchip=zuhe; output pin=99引脚锁定后再通过编译器对文件重新编译以便将引脚信息编入下载文件 中。然后再将文件下载到实验箱当中,观察实验结果,试验箱开始循环播放“两 只老虎”乐曲O心得体会通过两周的课程设计,我对EDA的设计有了进一步的认识,对 MAX PLUSII的设计步骤也有了更进一步的了解。 这种基于FPGA 的音乐硬件演奏电路的设计与实现,不仅通过VHDL层次化和模块化 设计方法,同时釆用数控分频和定制LPM-ROM的设计思想,更好的优 化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可 随意变更乐曲,有效缩短了产品开发周期、减少了设计芯片的数量、 降低了功耗、提高了设计的灵活性、可靠性和可扩展性通过课程设计, 感觉还是学到了不少的实践动手能力。本次课程设计使我对EDA设计 的能力和兴趣有很大提髙,受益良多,对自己以后的发展也会起到一 定的作用。

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

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