




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
兰花草乐曲硬件演奏电路设计专业:电子信息工程 学号:2010012145 姓名:程营前言乐曲演奏广泛应用于自动答录装置,手机铃声,集团电话,及智能仪器仪表设备。实现方法有许多种,在众多的实验方法中,以纯硬件完成乐曲演奏,随着fpga集成度的提高,价格下降,eda设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。本文分析了乐曲演奏设计中音符,频率,节拍与编码的相互关系,并在eda开发工具max-plus ii平台上,采用vhdl语言及原理图的设计方法,实现基于fpga片上系统动态显示可选择多首乐谱的乐曲演奏器的设计,使乐曲演奏数字电路的设计得到了更好的优化,提高了设计得灵活性。目录目录.1前言.11.题目分析.11.1功能要求.11.2性能指标22.设计方案.2 2.1顶层实体描述.3 2.2模块划分.3 2.3模块描述 2.3.1 speakera模块.4 2.3.2 tonetaba模块5 2.3.3 notetabs 模块6 2.4顶层电路图.83硬件测试及说明84.课程总结85.参考文献.81. 题目分析1.1功能要求(1)播放歌曲(2)简谱码输出显示在数码管显示(3)通过led灯显示音阶1.2性能指标(1)乐曲硬件演奏电路的基本原理乐曲都是由一连串的音符组成,每一音符对应着一个确定的频率,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,所以,掌握好一首歌曲的节奏,就能完整地演奏出来。(2)音符频率和乐曲节奏多个不同频率的信号可通过对某个基准频率进行分频器获得,本设计中选取750khz的基准频率,由于clk端输入的是较高频率12mhz信号,可以对其进行16分频。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。简谱音符和频率关系如下表所示: 表1 各音阶频率对应的分频值音名分频系数初始值音名分频系数初始值音名分频系数初始值低音11274773中音16371410高音13191728低音21135912中音25871480高音22771770低音310111036中音35051542高音32481799低音49701077中音44681579高音42331814低音59501197中音54251622高音52081839低音67571290中音63791668高音61851862低音76751372中音73301717高音716518822. 设计方案自顶向下的设计框图乐曲硬件电路设计数控分频器音乐节拍和音调发生器预置数查表电路2.1顶层实体描述当一个4hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当12mhz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了,当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。顶层设计程序:library ieee;use ieee.std_logic_1164.all;entity songer isport(clk12mhz:in std_logic;clk8hz :in std_logic; code1 : out std_logic_vector (3 downto 0)high1: out std_logicspkout: out std_logic);endarchitecture one of songer iscomponent notetabsport(clk :in std_logic; toneindex: out std_logic_vector(3 downto 0);end component;component tonetabaport(index: in std_logic_vector (3 downto 0);code: out std_logic_vector (3 downto 0);high: out std_logic;tone: out std_logic_vector (10 downto 0);end component;component speakera port ( clk : in std_logic;tone : in std_logic_vector (10 downto 0);spks : out std_logic );end component;signal tone: std_logic_vector (10 downto 0);signal toneindex: std_logic_vector (3 downto 0);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=clk12hz, tone= tone, spks=spkout);end;2.2模块划分主系统由三个模块组成,分别为speakera模块、tonetaba模块、notetabs模块。(1)speakera是数控分频模块;(2)tonetaba是分频预置数查找表电路模块;(3)notetabs音调发生器模块。2.3模块描述2.3.1 speakera模块speakeraclktone10:0spks speakera模块实体图音符的频率可以由此模块获得,这是一个数控分频器,由其clk端输入一具有较高频率的信号,通过speakera分频后由spkout输出,由于直接从数控分频器中出来的输出信号是脉冲极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个d触发器以均衡其占空比,但这时的频率将是原来的1/2。speakera对clk输入信号的分频比由11位预置数tone10.0决定。spkout的输出频率将决定每一音符的音调,这样,分频计数器的预置值tone10.0与spkout的输出频率就有了对应关系。例如在tonetaba模块中若取tone10.0=1036,将发出音符为“3”音的信号频率。程序如下library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport ( clk : in std_logic; tone : in std_logic_vector (10 downto 0); spks : out std_logic );end;architecture one of speakera is signal preclk, fullspks : std_logic;begindivideclk : process(clk) variable count4: std_logic_vector (3 downto 0) ; beginpreclk11 then preclk =1; count4:= 0000; elsif clkevent and clk = 1 then count4:=count4+1;end if;end process;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 count11 := tone ; fullspks = 1; else count11 := count11 + 1; fullspks = 0; end if;end if;end process;delayspks : process(fullspks)-将输出再2分频,展宽脉冲,使扬声器有足够功率发音 variable count2 : std_logic;beginif fullspksevent and fullspks = 1 then count2 := not count2;if count2 = 1 then spks = 1;else spks tone=11111111111;code =0000; high tone=10000001100;code =0011; high tone=10010101101;code =0101; high tone=10100001010;code =0110; high tone=10101011100;code =0111; high tone=10110000010;code =0001; high tone=10111001000;code =0001; high tone=11000000110;code =0011; high tone=11000101011;code =0100; high tone=11001010110;code =0101; high tone=11010000100;code =0110; high null;end case;end process;end;2.3.3 notetabs模块notetabsclktoneindex(3:0) notetabs模块实体图在notetabs中设置了一个8位二进制计数器,作为音符数据rom的地址发生器,计数最大值为138,如果乐曲比较长的话可以用9位,此时计数最大值为512。这个计数器的计数频率选为4hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。随着notetabs中的计数器按4hz的时钟速率作加法计数时,即随地址值递增时,音符数据rom中的音符数据将从rom中通过toneindex3.0端口输向tonetaba模块,乐曲就开始自然地演奏起来。程序如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetabs is port(clk :in std_logic; toneindex: out std_logic_vector(3 downto 0);end;architecture one of notetabs iscomponent musicport(address:in std_logic_vector(7 downto 0)inclock: in std_logic;q: out std_logic_vector(3 downto 0);end component;signal counter: std_logic_vector(7 downto 0)begincnt8:process(clk,counter)beginif counter1=128 then counter = 00000000;elsif (clkevent and clk=1) then counter counter,q=toneindex,inclock=clk);end;在notetabs模块中定制rom元件,首先建立.mif文件输入音乐谱,再利用megawizard plug-in manager定制rom宏功能块,最后加载于rom中,步骤为:(1)进入quartusii,选菜单 tool-megawizard plug-in manager,选择“creat a new”,然后按“next”键,选择lpm-rom;最后在browse下的栏中键入路径与输出文件名。(2)单击“next”键,选择rom数据位宽度为4,地址线宽为256,即设置此rom能存储4位二进制数据共256个。(3)通过“browse” 钮,找到rom中的加载文件路径和文件名:注意rom元件的inclock是地址锁存时钟。(4)打开已定制的rom文件,将它设置为工程,并确定目标器件,进行测试仿真波形,按照定制步骤对音符数据文件进行rom定制。定制的宏模块如下图所示:012345670661010101010108101010101010991688898877246666000032131313131313131340131313131313121248101012121212111156101010100000641010131313131212721010101010109980889988778866663333963388887710466666610101129998775512066660000high1notetabsclktoneindex3:0tonetabaindex3:0highcode3:0tone10:0speakeratone10:0clkspksclk12mhzclk8hzspkout2.4顶层电路图code3:03. 硬件测试及说明对其进行引脚锁定,下载到fpga上进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能机器人产业创新与市场拓展知识产权保护合同
- 2025年自动化立体仓储系统设计与集成服务协议
- 2025年酒店餐饮部专业厨师任期制劳动合同模板
- 2025年高科技项目研发资金保障协议
- 2025年音乐教育机构校园音乐节演出合同规范文本
- 2025年度租赁市场调研与房屋买卖综合服务合同
- 2025年度艺术教育机构课程研发与全国分校运营管理合同
- 2025年度新型磷矿开采与市场推广合作协议
- 2025年度金融产品创新趋势预测报告定制合同书
- 2025年水产养殖技术交流与设备进出口合同
- 公路工程监理安全生产管理制度(图表丰富)
- 3级人工智能训练师(高级)国家职业技能鉴定考试题库600题(含答案)
- 医疗收费及费用管理制度
- 2024检车员青工竞赛理论考试题库-下(判断题)
- 2024工勤晋级计算机信息处理员高级技师操作技能考核模拟题库含答案全套
- 品管圈PDCA提高手卫生依从性手卫生依从性品管圈完整版
- NB-T+31010-2019陆上风电场工程概算定额
- JT-T-1234-2019道路冷链运输服务规则
- 小学数学一年级下册(一年级升二年级)暑假链接提升训练题(共26份251题)
- 考研英语长难句分析技巧及实战70例
- 安全保卫工作会议记录6篇
评论
0/150
提交评论