已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计性实验设计性实验报告班 级: 姓名(学号): 实验项目名称: 乐曲演奏实验 实验项目性质: 设计性 实验所属课程: EDA基础 实验室(中心): 指 导 教 师 : 实验完成时间: 2009 年 12 月 13 日12教师评阅意见: 签名: 年 月 日实验成绩:一、实验目的1、熟悉QuartusII 软件的使用。2、熟悉EDA实验开发系统的基本使用。3、学习VHDL基本单元电路的设计应用。进一步掌握EDA的多层次设计方法。4、学习音乐发生器的设计。二、实验内容及要求1、实验内容利用可编程逻辑器件FPGA,设计乐曲硬件电路,可自动演奏乐曲。2、实验要求要求能够演奏出友谊天长地久的曲调或可另选一段较完整的曲调(扩展要求:能够从数码管上显示出当前曲调的简谱和频率),我们组演奏出的是实验要求上的友谊天长地久曲调。三、实验原理1、乐曲硬件电路产生音乐是和音乐频率和音乐的持续时间有关;音符的持续时间需根据乐曲的速度和每个音符的节拍数来确定。其简谱中音符和频率的关系如下:2、该演奏电路演奏的乐曲是友谊天长地久片段,其最小的节拍为1拍,将1拍的时长定位0.25S,则只需要再提供一个4hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍,(一定是节拍的整数倍),如全音符为4拍,2/4音符为2拍,1/4音符为1拍。3、乐曲硬件演奏电路系统主要有数控分频器和乐曲存储模块两个部分组成,其余还有音乐节拍发生器等等。数控分频器对FPGA 的基准频率进行分频,得到与各个音节对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中存放一个乐曲曲谱真值表(实验中用的ROM存储),由一个计数器来控制此真值表的输出,而由计数器的技术时钟信号作为乐曲节拍控制信号。4、要求演奏时能循环进行,必须需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。该计数器控制真值表按顺序输出简谱。四、实验仪器、材料 计算机一台、GW48 EDA/SOPC实验箱一台QuartusII软件、实验箱连接线一根五、方案设计这个实验中采用层次化的设计思路,因此我们把此乐曲硬件演奏电路分为3个主要模块,即音乐发生器NoteTabs模块,音符译码电路Tonetaba模块,数控分频Speakera模块。分好层次之后,编写每个模块的程序,分别生成项目符号,最后把生成的个项目符号用原理图的方式连接起来,然后编译、下载即可。由图例表示如下:NoteTabsTonetabaSpeakera输入 输出(乐曲)此实验设计中,我主要负责音乐发生器NoteTabs模块(ROM的定制过程)和最后的连接原理图部分。六、实验过程及原始记录1、音乐节拍发生器NoteTabs模块 这个模块用FPGA的片内ROM存放乐曲的简谱真值表,由一个二进制计数器为乐曲数据存储ROM的地址发生器随着NoteTabs中计数器按时钟频率做加法计数时,乐曲数据存储器ROM中的音符数据,将从ROM中的输出口输向音符译码电路Tonetaba,所存储的乐曲就开始连续自然地演奏起来。u ROM的定制过程,利用MegawizardPlug-In Manager定制音符数据存储器music1其过程如下: 在QuartusII主窗口Tools菜单中选择MegawizardPlug-In Manager命令,选择Create a new custom megafunction项。单击next按钮后,选择好后cyclone和VHDL语言后,产生对话框如下:如上所示就完成了,LPM_ROM的定制流程,完成了music1模块的定制工作,其产生的music1的VHDL语言程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;ENTITY music1 ISPORT(address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END music1;ARCHITECTURE SYN OF music1 ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (3 DOWNTO 0);COMPONENT altsyncramGENERIC (intended_device_family: STRING;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 STD_LOGIC_VECTOR (7 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT;BEGINq Cyclone,width_a = 4,widthad_a = 8,numwords_a = 256,operation_mode = ROM,outdata_reg_a = CLOCK0,address_aclr_a = NONE,outdata_aclr_a = NONE,width_byteena_a = 1,init_file = data.mif,lpm_hint = ENABLE_RUNTIME_MOD=NO,lpm_type = altsyncram)PORT MAP (clock0 = clock,address_a = address,q_a = sub_wire0);END SYN;u 在定制ROM的过程中,由于需要存入122个音符数据,选择ROM的数据位宽为8,地址为为8(共计256个字),ROM的类型选择为Auto。根据友谊天长地久的音乐简谱,以及简谱中的低、中、高和额节拍与发生频率的关系等等,化成个音符数字有122个,存入ROM中。在数据文件编辑窗中,在mif格式表格中填入友谊天长地久的122个音符数据,并以十进制填入,最后保存数据文件名为data.mif,存入原路径中。2、音乐节拍发生器NoteTabs的VHDL设计其源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISPORT(clk4hz:IN STD_LOGIC; Index2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Tone:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END NoteTabs;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC1PORT (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);SIGNAL INDEX1:STD_LOGIC_VECTOR(3 DOWNTO 0);Begin CNT8:PROCESS(clk4hz,Counter)BEGIN IF Counter=122 THEN Counter=00000000; ELSIF(clk4hzEVENT AND clk4hz=1) THEN CounterCounter,clock=clk4hz,q=Index1);ToneTone=1111111111111;CODE=0000;HIGHTone=0110000010001;CODE=0101;HIGHTone=0111000111110;CODE=0110;HIGHTone=1000100010001;CODE=0001;HIGHTone=1001010110010;CODE=0010;HIGHTone=1010000100101;CODE=0011;HIGHTone=1011000001000;CODE=0101;HIGHTone=1011100011110;CODE=0110;HIGHTone=1100010001000;CODE=0001;HIGHTone=1111111111111;CODE=0000;HIGH=0;END CASE;END PROCESS;END;u 在源程序中,Index3.0是音乐节拍发生器输出地音符数据;Tone12.0是为数控分频模块提供音符频率的初始值,此处有一个音符译码输出CODE3.0和音高指示信号HIGH可以通过数码管和LED来显示乐曲演奏时对应得音符和高低音。u 将以上设计的音符译码电路设置成可调用的原件,以被高层使用,其生成项目符号为:4、数控分频模块(speakera)设计,其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera IS PORT( clk :IN STD_LOGIC; Tone:IN STD_LOGIC_VECTOR(12 DOWNTO 0); SpkS:OUT STD_LOGIC );END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK,FullSpkS:STD_LOGIC;BEGINDivedeCLK:PROCESS(clk) VARIABLE Count4:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PreCLK11 THEN PreCLK=1; Count4:=0000; ELSIF clkEVENT AND clk=1 THEN Count4:=Count4+1; END IF;END PROCESS DivedeCLK;GenSpkS:PROCESS(PreCLK,Tone) VARIABLE Count13:STD_LOGIC_VECTOR(12 DOWNTO 0);BEGIN IF PreCLKEVENT AND PreCLK=1 THEN IF Count13=16#1FFF#THEN Count13:=Tone;FullSpkS=1; ELSE Count13:=Count13+1;FullSpkS=0;END IF; END IF; END PROCESS GenSpkS;DelaySpkS:PROCESS(FullSpkS) VARIABLE Count2:STD_LOGIC;BEGIN IF FullSpkSEVENT AND FullSpkS=1 THEN Count2:=NOT Count2; IF Count2=1 THEN SpkS=1; ELSE SpkS0);ELSIF CLKEVENT AND CLK=1 THENIF EN=1 THEN IF CQI0);END IF;END IF;END IF;CQ=CQI;END PROCESS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级数学教学总结范文(17篇)
- 学校管控措施实施方案
- 智能化机房工作方案
- 新疆昌吉回族自治州呼图壁县教育集团2025-2026年第二学期期中学科核心素养诊断八年级数学试题卷(含答案)
- 选拔考试工作方案
- 湖南省武冈市2025-2026学年七年级下学期4月期中考试语文试卷(含答案)
- 河南省驻马店市汝南县2025-2026学年七年级下学期4月期中素质测试英语试卷(含答案无听力音频及原文)
- 2026年办公楼能耗管理优化降本增效项目分析方案
- 文化市场安全生产实施方案
- 承办高中部的实施方案
- 2026年银行竞聘面试无领导小组讨论案例集含答案
- (二模)2026年深圳市高三年级第二次调研考试英语试卷(含答案)
- GA 1817.1-2026学校反恐怖防范要求第1部分:普通高等学校
- 2025北京高考英语答题卡A4版可以编辑版本1
- 代垫运费合同样本
- 保险转账委托书模板
- 云南省公路工程试验检测费用指导价
- 期中测试卷(试题)-2023-2024学年六年级下册数学苏教版
- 2024年赣州市国投集团招聘笔试参考题库附带答案详解
- 护士培训课程 药物计算和药物剂量调整技能
- 二手房交易资金监管协议书
评论
0/150
提交评论