




免费预览已结束,剩余11页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子信息科学与技术 专业课程设计任务书学生姓名专业班级学号题 目乐曲演奏电路课题性质A课题来源D指导教师同组姓名无主要内容根据设计,乐曲演奏电路应满足以下基本要求:(1) 用纯硬件的方法设计音乐演奏电路。(2) 采用模块化设计的方法设计乐曲演奏电路(3) 能反复演奏程序中的“世上只有妈妈好”乐曲片段。(4) 当改变时钟频率时乐曲播放的快慢节奏会发生变化。(5) 数码管能显示当前的简谱码。任务要求根据设计题目要求编写相应程序代码对编写的VHDL程序代码进行编译和仿真条件允许,完成硬件验证(可选)总结设计内容,完成课程设计说明书参考文献1 焦素敏 EDA课程设计指导书 河南工业大学 20082 曹昕燕 EDA技术实验与课程设计 北京清华大学出版社 20043 黄智伟 FPGA系统设计与实践 电子工业出版社 20054 焦素敏. EDA技术基础 清华大学出版社 20055 刘昌华 数字逻辑EDA设计与实践 国防工业出版社 2005审查意见指导教师签字:教研室主任签字: 2012年 02月 20日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页EDA课程设计报告1 设计任务及要求用VHDL语言设计音乐的节拍与音符产生电路;用VHDL语言设计分频系数、音符显示数据产生电路;用VHDL语言设计可控分频器电路;理解简易音乐播放器总体设计方案。掌握基本的VHDL语言,理解简易音乐播放器总体设计方案。掌握用VHDL语言设计音乐的节拍与音符产生电路,掌握用VHDL语言设计分频系数、音符显示数据产生电路,掌握用VHDL语言设计可控分频器电路。设计结果及原理图与原程序、电路仿真图。能在实训系统上播放悦耳动听的音乐。其基本要求及内容如下:一、 用纯硬件的方法设计音乐演奏电路。二、 采用模块化设计的方法设计乐曲演奏电路。三、 能反复演奏程序中的“世上只有妈妈好”乐曲片段。四、 当改变时钟频率时乐曲播放的快慢节奏会发生变化。五、 数码管能显示当前的简谱码。2设计原理及总体框图产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器来实现乐曲演奏要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。其中,乐曲的每个音符的频率值,即音调,频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可以分为十二个半音,每两个半音的频率比为21/12 1.12246 。音名A(简谱中的低音6)的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音。持续的时间为音长,音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。本实验演奏的世上只有妈妈好片断,最短的音符为四分音符,如果全音符的持续时间设为1s,则四分音符的持续时间为0.25s。反馈预置计数器对基准频率12MHz进行分频,产生分频后的输出时钟信号。再经过2分频器,成为方波信号,以驱动扬声器发声。 音名显示电路显示乐曲演奏时对应的音符。乐谱产生电路用来根据高音、中音和低音的值决定分频计数器的预置数的值。反馈预置数2分频器乐谱产生电路音符显示12MHZ4HZ扬声器数码管系统整体框图系统的顶层设计如下所示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; TONEINDEX: 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_LOGIC); END COMPONENT;SIGNAL TONE: INTEGER RANGE 0 TO 16#7FF#;SIGNAL TONEINDEX: INTEGER RANGE 0 TO 15;BEGIN U1: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;3 程序设计乐曲演奏电路有3个模块组成,分别为:乐曲简谱码对应的分频预置数查表模块tonetaba、数控分频器模块speakera以及音乐节拍和音调发生器模块notebabs。以下介绍各模块的详细设计。3.1乐曲简谱码对应的分频预置数查表模块tonetaba 模块tonetaba 是乐曲简码对应的分频预置数查表电路,其中设置了“世上只有妈妈好”乐曲对应的分频预置数。每一个音符的停留时间由音乐节拍和音调发生器模块notetabs的clk输入频率决定,在此为4hz.这13个值的输出由对应于tonetaba的4位输入值index3.0确定,而index3.0最多有16种可选值。输向tonetaba中index3.0的值toneindex3.0的输出值与持续时间由模块notetabs决定。乐曲简码对应的分频预置数查表电路模块由VHDL程序来实现,程序代码如下: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 0 = tone=2047;code=0;high tone=773;code=1;high tone=912;code=2;high tone=1036;code=3;high tone=1197;code=5;high tone=1290;code=6;high tone=1372;code=7;high tone=1410;code=1;high tone=1480;code=2;high tone=1542;code=3;high tone=1622;code=5;high tone=1668;code=6;high tone=1728;code=1;high NULL; END CASE; END PROCESS;END;3.2 数控分频器模块speakera这是一个数控分频器,有其clk端口输入一个有较高频率的信号,通过其分频后有spkout输出。由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于扬声器驱动,需要另加一个D触发器来均衡其占空比,但这时的频率将是原来的二分之一。数控分频器模块speakera由VHDL程序来实现,程序代码如下:LIBRARY 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; BEGINpreclk11 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; END IF; END IF; END PROCESS; delaysks:PROCESS(fullspks) VARIABLE count2:STD_LOGIC; BEGIN IF fullspks EVENT AND fullspks=1 THEN count2:= NOT count2; IF count2=1 THEN spks=1; ELSE spks=0; END IF; END IF; END PROCESS;END;3.3音乐节拍和音调发生器模块notebabs 在notetabs中设置了一个8位二进制计数器,这个计数器的技术频率选为4hz,即每一计数值的停留时间为0.25s,恰为当全音符设为1s时,四四拍的4分音符持续时间。音乐节拍和音调发生器模块notebabs由VHDL程序来实现,程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY notetabs 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 127; BEGIN CNT8:PROCESS(clk) BEGIN IF counter=127 THEN counter=0; ELSIF(clkEVENT AND clk=1) THEN counter toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindexNULL; END CASE; END PROCESS;END;4 编译及仿真4.1乐曲简谱码对应的分频预置数查表模块tonetaba模块仿真及分析VHDL程序实现后,对其进行编译仿真,其仿真图如图4.1所示。图4.1 分频模块仿真图对仿真图进行仿真分析:如图所示,译码电路分频预置值查表并输出控制音调的预置数,同时由code输出显示对应的简谱码,由high输出显示音调高低。4.2数控分频器模块speakeraVHDL程序实现后,其仿真图如图4.2所示。图4.2主控模块时序仿真图对时序仿真图进行分析:将clk进行11分频,若计数已满,在时钟的上升沿将预置数锁入11位计数器并使fullspks输出高电平,否则继续计数输出低电平。最后再将输出进行二分频,将脉冲展宽以使扬声器有足够功率发音。 4.3音乐节拍和音调发生器模块notebabs VHDL程序实现后,进行编译仿真其仿真图如图4.3所示。图4.3左边灯控制模块时序仿真图对时序仿真图进行分析:先是译码器,查歌曲的乐普表,查表结果为音调表,把索引值输入,看几个时钟节拍以及节拍的时长。上图为开始的乐谱表。4.4整个系统仿真及分析仿真图如下所示。图4.5 整个系统仿真图对时序仿真图进行分析:时钟信号输入之后,按照音调表的的音调顺序及时长,依次进行每个音符的进入及输出,一直持续到所有的音符全部播放完毕。整个系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025铝合金门窗制作合同示范文本
- 2025年度合同管理流程规范
- 深圳市工程供货合同(30篇)
- 2025实习生合同协议书样本
- 股权转让及股权激励协议v1
- 二零二五的债权转让协议书范例
- 个人租车协议书样本
- 二零二五版监护人协议书的内容
- office格式合同样本
- 云南省购房合同样本
- GB/T 20424-2025重有色金属精矿产品中有害元素的限量规范
- 2025年兰考三农职业学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 2025电动自行车集中充电设施第2部分:充换电服务信息交换
- 输油管道安全培训
- 2025美国急性冠脉综合征(ACS)患者管理指南解读课件
- 统编历史七年级下册(2024版)第7课-隋唐时期的科技与文化【课件】f
- 2025年河南省高校毕业生“三支一扶”招募1100人高频重点模拟试卷提升(共500题附带答案详解)
- 2025年国家林业局西北林业调查规划设计院招聘4人历年高频重点模拟试卷提升(共500题附带答案详解)
- 桥梁检测报告模板
- 2025年浪潮数字企业技术有限公司招聘笔试参考题库含答案解析
- 课时精讲14-物质的聚集状态与晶体的常识(学生版)
评论
0/150
提交评论