欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    fpga课设蜂鸣器音乐演奏.docx

    • 资源ID:12908604       资源大小:132.61KB        全文页数:17页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    fpga课设蜂鸣器音乐演奏.docx

    1、fpga课设蜂鸣器音乐演奏FPGA实 验 报 告实验名称:蜂鸣器音乐演奏实验日期:姓 名:学 号:一、实验目的1.熟悉QuartusII 软件的使用。2.熟悉EDA实验开发系统的基本使用。3.学习VHDL基本单元电路的设计应用。进一步掌握EDA的多层次设计方法。4.学习音乐发生器的设计。除了报警,蜂鸣器还可以用来奏乐。让它发出悦耳动听的声音,加深理解蜂鸣器的控制电路原理。二设计要求1.自动循环播放歌曲义勇军进行曲。2.由数码管分别显示高、中、低音的音符。三实验原理1、乐曲硬件电路产生音乐是和音乐频率和音乐的持续时间有关;音符的持续时间需根据乐曲的速度和每个音符的节拍数来确定。其简谱中音符和频率

    2、的关系如下:2、该演奏电路演奏的乐曲是友义勇军进行曲,其最小的节拍为1拍,将1拍的时长定位0.2S,则只需要再提供一个5hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍,(一定是节拍的整数倍),如全音符为4拍,2/4音符为2拍,1/4音符为1拍。3、乐曲硬件演奏电路系统主要有音调分频器和乐曲存储模块两个部分组成,其余还有音乐节拍发生器等等。音调分频器对1mhz(由基准频率产生)的频率进行分频,得到与各个音节对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中存放一个乐曲曲谱真值表(实验中用的ROM存储),由一个计数器来控制此真值

    3、表的输出,而由计数器的技术时钟信号作为乐曲节拍控制信号。4、其中5hz和1mhz的频率由基准频率分频产生,分别作用给每个模块。四、方案设计a. 设计分析:实验中采用层次化设计思路,音乐发生器的设计包括四个模块:时钟分频模块fdiv、自动演奏模块autoplay、查表及显示模块table、音调分频模块fenpin。分好层次之后,编写每个模块的程序。时钟分频模块fdiv通过基准时钟频率clk(50mhz)产生两个时钟信号clk1(1mhz),clk2(5hz)。自动演奏模块autoplay接收clk1的时钟信号,输出index_auto。查表及显示模块table利用index_auto查找并输出分

    4、频系数tone。同时将音调对应的给三个数码管,分别显示高中低音符。音调分频模块fenpin接收tabled输出的分频系数 tone,并据此分频,将对应频率的信号buzz输出给扬声器供其发声。b流程图: 数码管显示 clk 输出buzz五实验过程1. 时钟分频模块fdiv通过基准时钟频率clk(50mhz)产生两个时钟信号clk1(1mhz),clk2(5hz)。程序见附录1:其仿真结果如下:2.自动演奏autoplays模块 这个模块用FPGA的片内ROM存放乐曲的简谱真值表,由一个二进制计数器为乐曲数据存储ROM的地址发生器随着autoplay中计数器按clk2时钟频率做加法计数时,乐曲数据

    5、存储器ROM中的音符数据,将从ROM中的输出口输向音符查表模块table,所存储的乐曲就开始连续自然地演奏起来。ROM的定制过程,利用MegawizardPlug-In Manager定制音符数据存储器music,其中music_rom的程序见附录二。在定制ROM的过程中,由于需要存入296个音符数据,选择ROM的数据位宽为8,地址为64(共计512个字),ROM的类型选择为Auto。根据义勇军进行曲的音乐简谱,以及简谱中的低、中、高和额节拍与发生频率的关系等等,化成个音符数字有296个,存入ROM中。在数据文件编辑窗中,在mif格式表格中填入义勇军进行曲的296个音符数据,并以十进制填入,最

    6、后保存数据文件名为music.mif,存入原路径中。其中17表示低音,814表示中音,1521表示高音。 Autoplay的程序见目录三。在源程序中index_auto是音乐节拍发生器输出地音符数据;clk2是计数时钟输入端,该信号作为音符的快慢信号,频率越高,时钟的输出节拍速度就越快,演奏的速度也越快。该模块仿真结果如下:3、查表及显示table模块利用index_auto查找并输出分频系数tone。同时将音调对应的给三个数码管,分别显示高中低音符。其程序见目录四。在源程序中,tone是音调分频模块提供音符频率的分频系数,此处有一个位选信号come和段选信号seg可以通过数码管来显示乐曲演奏

    7、时对应的高中低音符。在此模块中假设index_auto音符为15,其仿真结果如下:4、音调分频模块(speakera)设计分频器对FPGA的clk1进行分频,得到与各个音阶对应的频率输出,里面包含一个计数器,当计数器满时,产生一个进位信号,该信号就是用作发音的频率信号,在计数器端的预置值端给定不同的初值时,产生不同频率的信号。其程序见附录五。假设tone为252,其仿真结果如下:5、根据层次化设计要求把各个部分根据实验设计流程,设计成顶层文件。其程序见附录六。6、经编译无错后,绑定引脚,下载测试。其管脚分配如下: 六、实验结果及分析下载测试,下载完毕,听到完整的一段义勇军进行曲音乐,并且音调很

    8、好,数码管显示没有错误。频率折算中,由于频率计数不能是小数,采用了四舍五入的方法,所以得到的频率并不是十分精确的,但是不会影响结果。附录附录一library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fdiv isport(clk:in std_logic;clk1:out std_logic;clk2:out std_logic);-50MHz end fdiv;architecture behave of fdiv is signa

    9、l temp: std_logic; -f=1/(2*(cnt+1)*f0 signal temp1: std_logic; -f=1/(2*(cnt+1)*f0 signal cnt1: integer range 0 to 25;-1mhz signal cnt2: integer range 0 to 5000000;-5hz begin process(clk)-1mhz begin if (clkevent and clk= 1 )then if (cnt1 = 24 )then cnt1 = 0; temp = not temp; else cnt1 = cnt1+1; end i

    10、f; end if; end process ;clk1 = temp;process(clk)-5hz begin if (clkevent and clk= 1 )then if (cnt2 = 4999999)then cnt2 = 0; temp1 = not temp1; else cnt2= cnt2+1; end if; end if; end process ;clk2 = temp1;end;附录二LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_compone

    11、nts.all;ENTITY music_rom is PORT ( address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); END music_rom;ARCHITECTURE SYN OF music_rom IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); COMPONENT altsyncram GENERIC ( intended_device_family : STRI

    12、NG; width_a : NATURAL; widthad_a : NATURAL; numwords_a : NATURAL; operation_mode : STRING; outdata_reg_a : STRING; address_aclr_a : STRING; outdata_aclr_a : STRING; width_byteena_a : NATURAL; init_file : STRING; lpm_hint : STRING; lpm_type : STRING ); PORT ( clock0 : IN STD_LOGIC ; address_a : IN ST

    13、D_LOGIC_VECTOR (8 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); END COMPONENT;BEGIN q Cyclone, width_a = 8, widthad_a = 9, numwords_a = 512, operation_mode = ROM, outdata_reg_a = UNREGISTERED, address_aclr_a = NONE, outdata_aclr_a = NONE, width_byteena_a = 1, init_file = music.mif, lpm_hint =

    14、ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=ROM, lpm_type = altsyncram) PORT MAP (clock0 = inclock,address_a = address,q_a = sub_wire0);END ;附录三LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY autoplay ISPORT(clk2:IN STD_LOGIC; index_auto:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END

    15、autoplay;ARCHITECTURE behav OF autoplay IScomponent music_romPORT ( address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); END component;SIGNAL CQI:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINPROCESS(clk2)BEGINIF clk2EVENT AND clk2=1 THEN CQICQI,q=index_aut

    16、o,inclock=clk2);END ;附录四:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity table isport(index_auto:in STD_LOGIC_VECTOR (4 DOWNTO 0); come:out std_logic_vector(7 downto 0); seg:out std_logic_vector(7 downto 0); tone:out integer range 0 to 191

    17、0);end;architecture search of table isbegin process(index_auto) begin case index_auto is when 00001= tone=1910;come=11111110;seg tone=1701;come=11111110;seg tone=1516;come=11111110;seg tone=1431;come=11111110;seg tone=1275;come=11111110;seg tone=1135;come=11111110;seg tone=1011;come=11111110;seg ton

    18、e=954;come=11111101;seg tone=850;come=11111101;seg tone=757;come=11111101;seg tone=715;come=11111101;seg tone=637;come=11111101;seg tone=567;come=11111101;seg tone=505;come=11111101;seg tone=477;come=11111011;seg tone=425;come=11111011;seg tone=378;come=11111011;seg tone=357;come=11111011;seg tone=3

    19、18;come=11111011;seg tone=283;come=11111011;seg tone=252;come=11111011;seg tone=0;come=00000000;seg=00000000; end case; end process ;end;附录五library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk1:in std_logic;-1MHz tone:in integ

    20、er range 0 to 1910; buzz:out std_logic);end;architecture behave of fenpin is signal clk_data: std_logic; signal i: integer range 0 to 1910;beginyinpin: process(clk1) begin if (clk1event and clk1 = 1 )then if (i = tone) then i = 0; clk_data = not clk_data; else i = i+1; end if; end if; end process yinpin;-f=1/(2*(tone+1)*f0buzzclk,clk1=clk1_top,clk2=clk2_top);u2:table port map(index_auto=index_auto_top,tone=tone_top,come=come_top,seg=seg_top);u3:autoplay port map(clk2=clk2_top,index_auto=index_auto_top);u4:fenpin port map(clk1=clk1_top,tone=tone_top,buzz=spkout);end behave;


    注意事项

    本文(fpga课设蜂鸣器音乐演奏.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开