“两只老虎”EDA课程设计(详细)

上传人:20****08 文档编号:63949061 上传时间:2022-03-20 格式:DOC 页数:14 大小:163.50KB
收藏 版权申诉 举报 下载
“两只老虎”EDA课程设计(详细)_第1页
第1页 / 共14页
“两只老虎”EDA课程设计(详细)_第2页
第2页 / 共14页
“两只老虎”EDA课程设计(详细)_第3页
第3页 / 共14页
资源描述:

《“两只老虎”EDA课程设计(详细)》由会员分享,可在线阅读,更多相关《“两只老虎”EDA课程设计(详细)(14页珍藏版)》请在装配图网上搜索。

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

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

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

4、时钟源,并通过一次12分频给出频率为1MHZ的脉冲溢出信号,再对该1MHZ的溢出信号进行12位2进制码的带预置数进行计数,并给出一个频率随预置数变化的脉冲信号。由于该脉冲信号不具有驱动蜂鸣器的能力,故对此脉冲信号进行2分频以推动蜂鸣器发声,故最终输出信号的频率与预置数的关系如下:其中为音阶对应的频率。 表1 简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.63中音1532.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92

5、低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7493.88中音7987.76高音71975.52 表2 各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始值低音17644547中音138224369高音119116280低音268101381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音428645327高音414326759低音551023089中音525515640高音512566935低音645453646中音622735

6、918高音611377054低音740504141中音720256166高音710137178 (3) 乐曲节奏的控制 一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出4Hz的1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,由于最后的蜂鸣器前需加一个二分频的程序,因此计数器的时钟信号应为4Hz的2倍,即8Hz。 (4) 乐谱的发生本设计将乐谱中的音符数据存储在LPM-ROM中

7、,若某音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,该音符就要在LPM-ROM中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。(5) 选择模块 选择模块将用一个4位数的控制信号控制乐谱模块数据的选择性,用vhdl语言描述。2设计原理及总体框图(1)音符的发音频率设定及实现 音符的频率可由一个数控分频器SPEAKERA获得,由其CLK端输入一个有较高频率的信号,通过SPEAKERA分频后由SPKOUT输出。由于直接从数控分频器中出来的输出信号是脉宽极窄的,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/2.SP

8、EAKERA对clk输入信号的分频比由11位预置数Tone10.0决定。SPKOUT的输出频率就有了对应关系。例如,在TONETABA模块中若取Tone10.0=1036,将对应法音符为“3”音的信号频率。(2)音符的持续时间 音符的持续时间需根据乐曲的速度及每个一怒的节拍数来确定,图中模块TONETABA的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKER输入口停留的时间即为次音符的节拍值。 模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置“两只老虎”乐曲全部音符所对应的分频预置数,共11个,每一音符的停留时间由音乐节拍和音调发生器模块NOTE

9、TABS的clk输入频率决定,这11个值的输出由对应于TONETABA中Index3.0的值ToneIndex3.0的输出值与持续时间由模块NOTETABS决定。在NOTETABS中设置了一个8位二进制计数器(计数最大值为138),这个计数器的技术频率选为4Hz,即每一个计数值停留时间为0.25S,恰为当全音符设为1s时,四四拍的4分音符持续时间。例如,NOTETABS在以下的VHDL逻辑描述中,“两只老虎”乐曲的第一个音符为“5”,此音在逻辑中停留了1个时钟节拍,即0.25S时间,相应地,所对应的“”音符分频预置值为在SPEAKERA的输入端开始连续自然地演奏起来了。设计的总体框图如下:3

10、程序设计VHDL程序如下:(1) SONGER.VHD是设计电路的顶层设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT(CLK12MHZ:IN STD_LOGIC; CLK8HZ:IN STD_LOGIC; CODE1:OUT INTEGER RANGE 0 TO 15; HIGH1:OUT STD_LOGIC; SPKOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT(clk:IN STD_LOGIC; Tone

11、Index:OUT INTEGER RANGE 0 TO 15); END COMPONENT; COMPONENT ToneTaba PORT(Index:IN INTEGER RANGE 0 TO 15; CODE:OUT INTEGER RANGE 0 TO 15; HIGH:OUT STD_LOGIC; Tone:OUT INTEGER RANGE 0 TO 16#7FF#); END COMPONENT; COMPONENT Speakera PORT(clk:IN STD_LOGIC; Tone:IN INTEGER RANGE 0 TO 16#7FF#; SpkS:OUT STD

12、_LOGIC); END COMPONENT; SIGNAL Tone:INTEGER RANGE 0 TO 16#7FF#; SIGNAL ToneIndex:INTEGER RANGE 0 TO 15;BEGINu1:NoteTabs PORT MAP(clk=clk8HZ,ToneIndex=ToneIndex);u2:ToneTaba PORT MAP(Index=ToneIndex,Tone=Tone,CODE=CODE1,HIGH=HIGH1);u3:Speakera PORT MAP(clk=CLK12MHZ,Tone=Tone,SpkS=SPKOUT);END;(2) TONE

13、TABA.VHD是乐曲简谱码对应的分频预置数查表电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT(Index:IN INTEGER RANGE 0 TO 15; CODE:OUT INTEGER RANGE 0 TO 15; HIGH:OUT STD_LOGIC; Tone:OUT INTEGER RANGE 0 TO 16#7FF#);END;ARCHITECTURE one OF ToneTaba ISBEGIN Search:PROCESS(Index) BEGIN CASE Index IS WHEN

14、 0 =Tone=2047;CODE=0;HIGHTone=773;CODE=1;HIGHTone=912;CODE=2;HIGHTone=1036;CODE=3;HIGHTone=1110;CODE=4;HIGHTone=1197;CODE=5;HIGHTone=1290;CODE=6;HIGHTone=1372;CODE=1;HIGHTone=1410;CODE=2;HIGHTone=1480;CODE=3;HIGHTone=1542;CODE=4;HIGHNULL; END CASE; END PROCESS;END;(3) SPEAKERA.VHD是设计电路的数控分频器:LIBRARY

15、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speakera IS PORT(clk:IN STD_LOGIC; Tone:IN INTEGER RANGE 0 TO 16#7FF#; SpkS:OUT STD_LOGIC);END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK:STD_LOGIC; SIGNAL FullSpkS:STD_LOGIC; BEGIN DivideCLK:PROCESS(clk) VARIABLE Count4:INTEGER RANGE 0 TO 15; BEGIN PreCLK

16、 11 THEN PreCLK=1;Count4:=0; ELSIF clkEVENT AND clk=1 THEN Count4:=Count4+1; END IF; END PROCESS; GENSpkS:PROCESS(PreCLK,Tone) VARIABLE Count11:INTEGER RANGE 0 TO 16#7FF#; BEGIN IF PreCLKEVENT AND PreCLK=1 THEN IF Count11=16#7FF# THEN Count11:=Tone; FullSpkS=1; ELSE Count11:=Count11+1; FullSpkS=0; E

17、ND IF; END IF; END PROCESS; DelaySpkS:PROCESS(FullSpkS) VARIABLE Count2:STD_LOGIC; BEGIN IF FullSpkSEVENT AND FullSPKS=1THEN Count2:=NOT Count2; IF Count2 =1THEN SpkS=1; ELSE SpkS=0; END IF; END IF; END PROCESS;END; (4) NOTETABS模块决定音乐的输出值与持续时间: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTab

18、s IS PORT(clk:IN STD_LOGIC; ToneIndex:OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF NoteTabs IS SIGNAL Counter:INTEGER RANGE 0 TO 35;BEGIN CNT8:PROCESS(clk) BEGIN IF Counter=35 THEN Counter=0; ELSIF (clkEVENT AND clk=1)THEN CounterToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexT

19、oneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexToneIndexNULL;END CASE;END PROCESS;END;4 编译及仿真在这次

20、EDA课程设计过程中,用的是MAX+plus II,它是一种集成的开发环境,提供了一种与结构无关的设计环境,设计者无需精通器件的内部结构,而只需要用自己熟悉的设计输入方式去表达设计内容,MAX+plus II便会自动把这些设计转换成最终结构,所需的格式。并且MAX+plus II使用方便,具有强大的编程,设计,仿真功能。顶层设计仿真波形图如下:5 硬件调试与结果分析本实验器件选用EP1K30TC144-1,利用GW48-CK实验开发系统,并使用其中结构图NO.1.引脚排列如下:Clk8hzchip=zuhe;input pin=54Clk12mhzchip=zuhe;input pin=126

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!