已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、 设计任务与要求 1二、 总体框图 2三、 选择器件 5四、 功能模块 61. songer模块 61.1 notetabs模块 61.2 tonetaba模块 111.3 speakera模块 132. div模块 163. 七段译码器模块 18五、 总体设计电路图211. 顶层设计的电路原理图 212. 顶层设计的仿真结果 233. 电路的管脚图 23六、 结束语24七、 心得体会25八音符电子琴电路设计一、 设计任务与要求在eda开发平台上利用vhdl语言设计一个八音符电子琴,由键盘输入控制音响或自动演奏。用户可以将自己编制的乐曲存入电子琴,演奏时可以选择键盘输入乐曲或者自动演奏已存入的乐曲。二 、总体框图系统设计方案:方案一:采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然。但是由于元器件种类、个数繁多,而过于复杂的硬件电 路也容易引起系统的精度不高、体积过大等不利因素。例如八个不同的音符是由八个不同的频率来控制发出的,而采用方案一就需要运用不同的分频器来对信号进行不同程度的分频。所用仪器之多显而易见。 方案二: 采用vhdl语言编程来实现电子琴的各项功能。系统主要由电子琴发声模块、选择控制模块和储存器模块组成。和方案一相比较,方案二就显得比较笼统,只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。但是我们必须看到用超高速硬件描述语言vhdl的优势,它不仅具有良好的电路行为描述和系统描述的能力而且通俗易懂。 经过对以上两种方案的分析、比较和总结,我们选用方案二来进行八音符电子琴的设计。 八音符电子琴设计总体框图,如图1:notetabstonetaba译码器分频器 扬声器speakera 图1 八音符电子琴设计总体框图该系统由三个模块:songer、div和seg7(7段译码器)组成。1. songer模块:此模块包括3个小模块,分别是notetabs模块,tonetab模块和speakera模块。此外,还需建立一个名为“music”的lpm_rom模块与notetabs模块连接。1 notetabs模块:该模块的功能就是定义音符数据rom“music”随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据rom中的音符数据。将从rom中通过toneindex3.0端口输向tonetaba模块,演奏采茶舞曲。2 tonetaba模块:是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块notetabs的clk的输入频率决定,这些值由对应于tonetaba的4位输入值index3.0确定,最多有16种可选值。输向tonetaba中index3.0的值toneindex3.0的输出值与持续的时间由模块notetabs决定。3 speakera模块:是一个数控分频器,音符的频率可由此模块获得。由clk端输入一具有较高频率的信号,通过speakera分频后由spkout输出。由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号。为了利用驱动扬声器,需加一个d触发器以均衡其占空比,频率将是原来的1/2。speakera对clk输入信号的分频比由预置数tone决定。spkout的输出频率将决定每一音符的音调。 2. div模块:由于所使用的硬件设备不能满足设计所需要的两个clk输出 的频率,所以使用一个分频器来实现把一个50mhz的晶体振荡频率分成一个12mhz,一个8hz两个分频率,再把两个频率分别给所需的两个模块。3. eg7模块:seg7 模块是一个七段译码器,作用是在硬件上显示音频的高 低,用0到7分别对应空节拍do、ri、mi、fa、suo、la、xi,高音时,led灯亮,数码管显示对应数字。发音原理:1. 乐曲演奏的原理组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续时间,就可以使扬声器发出连续的乐曲声。2.音调的控制: 频率的高低决定了音调的高低。2.1 基准频率f0的选取所有不同频率的信号都是从同一个基准频率f0分频而得到的。由于音节频率多为非整数,而分频系数又不能为小数,因此必须将计算所得的分频数四舍五入取整。若基准频率过高,则分频比太小,取整后误差较大。若基准频率过高,虽然误差减小,但分频数变大。综合这两方面因素,在尽量减小频率误差的前提下取合适的基准频率,在此取f0=12mhz。2.2 分频系数,二进制计数器计数的容量n和预置数的选取 分频系数a=f0/音名频率分频系数n=f0/音名频率/2n=max分频系数n由表1可得最大分频系数为1274,因此n=2048为2的11次方。因此二进制计数器设为11位二进制加法计数器,其计数容量为2048,计数的最大值为2047。预置数=n-分频系数n表1为各音阶的频率、对应的分频系数及预置数:3. 音长的控制:音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定的。采茶舞曲中最短的音符为四分音符,如果全音符的持续时间为1s,则四分音符的持续时间为0.25s,二分音符持续的时间为0.5s等等,只需再提供一个4hz的时钟频率。每来一个脉冲计一次数,每一计数值的停留时间为0.25s,即要输入一个全音符时需要计四次数才行,则应在rom表格中输出相应音符四次,表示一个全音符的持续时间。三、选择器件 1.装有quartusii软件的计算机一台。2.外置扬声器3.7段数码管4.led灯一个5.芯片:使用altera公司生产的cyclone系列芯片,如ep1c12q240c8芯片。6.eda实验箱一个。7.下载接口是数字芯片的下载接口(jtag),主要用于fpga芯片的数据下载。cyclone器件的配置器件:此次设计实验采用altera公司的cyclone系列的fpga芯片ep1c12,设计和仿真采用altera公司的quartus ii软件,ep1c12各项参数参照表2。 cyclone的配置器件 配置器件器件数量ep1c3ep1c4ep1c6ep1c12ep1c20epcs1111n/an/aepcs411111epc2 11122epc411111epc811111epc1611111 表2 ep1c12参数表cyclone的性能特性:1、新的可编程体系结构,实现低成本设计。 2、嵌入式存储器资源支持多种存储器应用和数字信号处理(dsp)实现 3、专用外部存储器接口电路,支持与ddr fcram和sdram器件以及sdr sdram存储器的连接。 4、支持串行总线和网络接口以及多种通信协议 片内和片外系统时序管理使用嵌入式pll 5、支持单端i/o标准和差分i/o技术,lvds信号数据速率高达640mbps。 6、处理功耗支持nios ii 系列嵌入式处理器 7、采用新的串行配置器件的低成本配置方案 8、quartus ii 软件opencore评估特性支持免费的ip功能评估 四、 功能模块1)、songer模块如图3:图3 songer模块songer模块由三个模块组成:notetabs模块,tonetaba模块和speakera模块。notetabs模块类似于弹琴人的手指,tonetaba类似于琴键,speakera类似于琴弦或音调发生器。1. notetabs模块:原理:在这个模块中设置了一个8位二进制计数器,作为音符数据 rom的地址发生器。这个计数器的计数频率选为4hz,即每一计数值的停留时间为0.25秒,当全音符设为1秒时,4分音符持续时间为0.25s, 2分音符持续的时间为0.5s等等。每来一个脉冲计一次数,每一计数值的停留时间为0.25s,即要输入一个全音符时需要计数4次才行,则应在rom表格中输出相应音符四次,表示一个全音符的持续时间,要输入一个2分音符则需要计数2次,依次类推。notetabs模块图如图4:图4 notetabs模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetabs is port(clk1:in std_logic; toneindex:out std_logic_vector(3 downto 0);end;architecture one of notetabs 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);begincnt8:process(clk1,counter) begin if counter=336 then counter=00000000; elsif(clk1event and clk1=1)then countercounter,q=toneindex,clock=clk1);end;notetabs模块波形仿真图如图5:(注:每来一个时钟clk,输出一个相应的数,每个音符的拍子不一样所记次数也不一样)图5 notetabs的波形仿真图采茶舞曲简谱如图6图6 采茶舞曲简谱下表7是rom表格:(即为此程序中调用的music模块)。表7 rom表格rom模块图如图8:图8 rom生成的模块图2. tonetaba模块:原理:tonetaba是乐曲简谱码对应的分频预置数查表电路。音符的持续时间需要根据乐曲的速度及每个音符的节拍数来确定,tonetaba的功能首先是为speakera提供决定所发音符的分频预置数,而此数在speakera输入口停留的时间为此音符的节拍值。模块tonetaba是乐曲简码对应的分频预置数查表电路,其中设置了采茶舞曲乐曲全部音符所对应的分频预置数,共16 个,每一音符的停留时间由音乐节拍和音调发生器模块notetabs的clk的输入频率决定,在此为4hz。这16个值得输出由对应于tonetaba的4位输入值index3.0确定。输向tonetaba中index3.0的值,toneindex3.0的输出值与持续的时间由模块notetabs决定。如图9: 图9 tonetab模块程序library ieee;use ieee.std_logic_1164.all;entity tonetaba isport( 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;architecture one of tonetaba is beginsearch: process(index)begincase index is when 0000=tone=11111111111;code=0000;hightone=01100000101;code=0001;hightone=01110010000;code=0010;hightone=10000001100;code=0011;hightone=10000110101;code=0100;hightone=10010101101;code=0101;hightone=10100001010;code=0110;hightone=10101011100;code=0111;hightone=10110000010;code=0001;hightone=10111001000;code=0010;hightone=11000000110;code=0011;hightone=11000101000;code=0100;hightone=11001010110;code=0101;hightone=11010000100;code=0110;hightone=11011000000;code=0001;hightone=11011101010;code=0010;high null; end case;end process;end;(注:每一个index的值都对应一个code,tone值,index的值从0000到0111对应的 high为低电,从1000到1111对应的high为高电。)tonetaba模块波形仿真图如图10:图10 tonetaba的波形仿真图3. speakera(数控分频器)模块:原理:数控分频器的功能是当在输入端给定不同的输入数时,将对输入的时钟信号有不同的分频比,数控分频器是用计数值可并行预置的加法计数器来完成的。在此,音符的频率可由数控分频器speakera获得。由其clk端输入一具有较高频率的信号,通过speakera分频后由 spkout 输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需加一个d触发器以均衡其占空比,但这时的频率将是原来的1/2。speakera对clk输入信号的分频比由11位预置数tone10.0决定。spkout 的输出频率将决定每一音符的音调,这样分频计数器的预置值tone10.0与spkout的输出频率就有了对应关系。如图11图11 speakera模块程序:library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera is port(clk2: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;begin divideclk:process(clk2) variable count4:std_logic_vector(3 downto 0); begin preclk11 then preclk=1; count4:=0000; elsif clk2event and clk2=1 then count4:=count4+1; end if; end process; genspks:process(preclk,tone) 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) variable count2:std_logic; begin if fullspksevent and fullspks=1 then count2:=not count2; if count2=1 then spks=1; else spks=1 then cnt:=0; tmp:=not tmp; else cnt:=cnt+1; end if; end if; clk12mhz=3124999 then cnt:=0; tmp:=not tmp; else cnt:=cnt+1; end if; end if; clk8hz=tmp; end process u2;end one;div模块波形仿真图如图14: 图14 div的波形仿真图(注:由50mhz的时钟信号分频得到clk12mhz,clk12mhz)3)、seg7模块:原理: seg7 模块是一个七段译码器,作用是在硬件上显示音频的高低,用0到7分别对应空节拍do、ri、mi、fa、suo、la、xi,高音时,led灯亮,数码管显示对应数字。如图15:图15 seg7模块vga为0010,如图16:图16 vga连接图程序:library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity seg7 is port(num:in std_logic_vector(3 downto 0); a:out std_logic; b:out std_logic; c:out std_logic; d:out std_logic; e:out std_logic; f:out std_logic; g:out std_logic; dp:out std_logic );end seg7;architecture fun of seg7 issignal led:std_logic_vector(6 downto 0);begin a=led(6); b=led(5); c=led(4); d=led(3); e=led(2); f=led(1); g=led(0); dp=0; ledclk8hz,toneindex=toneindex);u2:tonetaba port map(index=toneindex,tone=tone,code=num,high=high1);u3:speakera port map(clk2=clk12mhz,tone=tone,spks=spkout);end; 2. quaratus2的波形仿真图如图19:图19 quaratus2的波形仿真图(注:a-h表示数码管,high1表示输出的音为高音或是低音)3.管脚分配图如图20: 图20 管脚分配4.实验连线: io9连led灯,clk为ep1c12板上的50mhz晶振输入,io5接扬声器。5.实验结果: 连接好eda实验箱,把设计内容下载到实验箱上的芯片上,io5接上扬声器,就会听到采茶舞曲的音乐播放,同时数码显示管会根据谱子的不同而显示不同的数字。led灯也会根据谱子的高低音亮灭,为低音时,灯灭,为高音时,灯亮。六、结束语:本文介绍了基于fpga的电子琴电路的设计,实现了一个乐曲器,而且描述了其工作原理、设计思路及实现方法,并在quartus上选用目标芯片仿真实现了电子琴电路的功能。实践证明:采用fpga设计实现音乐演奏电路的可行性和可靠性,而且更改乐曲容易,可根据需要修改rom中的音符数据文件,从而使电路实现任一曲子的播放。这种基于fpga的音乐硬件演奏电路的设计与实现,不仅通过vhdl层次化和模块化设计方法,同时采用数控分频和定制lpm-rom的设计思想,更好的优化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可随意变更乐曲,有效缩短了产品开发周期、减少了设计芯片的数量、降低了功耗、提高了设计的灵活性、可靠性和可扩展性。七、心得体会:课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。回顾此次课程设计,从书籍,网络不断的寻找到设计电路,从拿到题目到完成整个设计,从理论到实践,可以学到很多很多的的东西。对课本知识的进一步加深的同时学到了很多在书本上没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川省攀枝花市西区保安员招聘考试题库附答案解析
- 司法考试客观题(试卷二)真题题库及答案
- 中级经济师考试经济基础知识完整题库500题含答案
- 县中级经济师《保险专业实务》模拟试题(附答案及解析)
- 2025年湖南省岳阳市岳阳县保安员招聘考试题库附答案解析
- 2025广东汕头大学司法鉴定中心招聘1人备考试题及答案解析
- 钢结构廊施工合同(3篇)
- 2024年四川省岳池县事业单位公开招聘工作人员考试题含答案
- 2022年G2电站锅炉司炉考试试题及答案(100题)
- 咕嘟咖啡面试题及答案
- (完整版)文明施工管理体系及保证措施
- 多联机空调安装施工方案
- 2024年中国中信金融资产江西分公司招聘2人笔试备考题库完整参考答案详解
- 2025年广西继续教育公需科目真题及答案
- 2024-2025学年上海市浦东区七年级(上)期中英语试卷
- 肿瘤心脏病学课件
- 项目管理教材
- 23《月迹》 课件 统编版 小学语文五年级上册
- 2025云南省交通投资建设集团有限公司普洱管理处招聘约350人笔试历年参考题库附带答案详解
- 电池(储能)安全事故应急预案(如使用)
- 冬季工地车辆安全培训课件
评论
0/150
提交评论