西南科技大学FPGA实验报告四2022_第1页
西南科技大学FPGA实验报告四2022_第2页
西南科技大学FPGA实验报告四2022_第3页
西南科技大学FPGA实验报告四2022_第4页
西南科技大学FPGA实验报告四2022_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页西南科技大学FPGA实验报告四2022硬件电子琴的制作

西南科技高校试验报告

课程名称:FPGA

试验名称:硬件电子琴电路设计

姓名:学号:2022班级:电子12指导老师:

西南科技高校信息工程学院制

硬件电子琴的制作

试验题目

一、试验原理

主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块〔如图1所示〕:Speakera.v(例4)和ToneTaba.v(例3),NoteTabs.v(例2)。

模块ToneTaba是音阶发生器,当8位发声掌握输入Inde*中某一位为高电平常,那么对

应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应当音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。

模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构

成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。

增加一个NoteTabs模块用于产生节拍掌握〔Inde*数据存留时间〕和音阶选择信号,

即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来掌握此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍掌握信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

二、试验步骤

分四步

1、将待播放的《梁祝》音乐音符存入ROM:建立一个.t*t的文本文件,将梁祝的音乐音乐音符数据写入,再将后缀名改为.coe文件。

建立一个IPcore,名为MUSIC.将MUSIC.core添加到IPcore中。

2、建立一个NoteTabs.V文件,从Music.v的ROM〔只读存储器〕读取数据,进行节拍掌握,和音阶选择。经过仿真无误后进行下一步。

3、建立div_50_12module,将50MHZ的时钟频率转化成12.5MHZ近似为12MHZ。4、建立div_50_4module,对50MHZ的时钟频率分频成4HZ。

5、建立ToneTabamodule,获得该音阶的分频预置值,音阶简谱的显示数码,音阶高8度显示。

6、建立Speakeramodule,获得分频预置值,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。

硬件电子琴的制作

三、试验结果及分析

50MHZ分为12MHZ的代码:

modulediv_50_12(clk_50M,clk_12MHZ,reset);inputclk_50M;inputreset;outputclk_12MHZ;reg[1:0]counter;regclk_12MHZ;

always@(posedgeclk_50Mornegedgereset)if(!reset)

counter=2'b000;else

if(counter==4)//分频预置数4,事实上的频率是12.5MHZcounter=2'b00;

else

counter=counter+1'b1;

always@(posedgeclk_50Mornegedgereset)if(!reset)clk_12MHZ=1'b0;elsebegin

if(counter==2'b11)clk_12MHZ=1'b1;elseclk_12MHZ=1'b0;

end

Endmodule仿真波形:

硬件电子琴的制作

分析:频率近似为12分频,由于在always中同一个变量counter的指不能被赋值两次,否那么简单引起竞争冒险等问题。

2、NoteTabs模块的测试,仿真波形如下图:

分析:由于梁祝音乐中写入的开头有1拍的‘3’,又由于是以1/4拍的形式存放在ROM里的,所以NoteTabs是4个1/4拍的’3’。3/4拍的’5’。附:仿真的testfi*ture文件moduletest_NoteTabs;

regClk;

wire[3:0]ToneInde*;NoteTabsuut();

initialbegin

Clk=0;

forever#10Clk=~Clk;//由于时钟是50MHZ,所以1/2T=10ns

.Clk(Clk),

.ToneInde*(ToneInde*)

endinitial#1000$stop;

endmodule

3、ToneTaba模块的仿真与测试仿真波形为:

硬件电子琴的制作

分析:可知当inde*=0001时,tone=1403d=01100000101b,符合要求,正确测试代码:moduleTestToneTaba;

reg[3:0]Inde*;wire[3:0]Code;wireHigh;wire[10:0]Tone;ToneTabauut();initialbegin

#50;Inde*=1;#30;Inde*=2;#20;Inde*=3;#100;

.Inde*(Inde*),.Code(Code),.High(High),.Tone(Tone)

Inde*=0;

end

endmodule

4、顶层模块的例化,然后进行综合,布局布线,生成课执行文件.bit文件,下载到板子上去。顶层模块代码:

modulesonger(clk_50M,reset,Code1,High1,Spkout);inputclk_50M;//CLK=50MHZinputreset;output[3:0]Code1;outputHigh1,Spkout;

硬件电子琴的制作

wire[10:0]Tone;wire[3:0]ToneInde*;wireclk_4HZ,clk_12M;NoteTabsu0(.Clk(clk_4HZ),

.ToneInde*(ToneInde*));

ToneTabau1(.Inde*(ToneInde*),.Code(Code1),.High(High1),

.Tone(Tone));Speakerau2(.Clk(clk_12M),.Tone(Tone),

.SpkS(Spkout));div_50_12u3(clk_50M,clk_12M,reset);div_50_4HZu4(clk_50M,clk_4HZ,reset);endmodule

四、试验思索题解答(试验指导书要求的思索题)

1、答:输出的频率要在扬声器的工作频率范围内,输出的电流要能够径直驱动扬声器的正常工作

2、答:将存储音符的ROM里面的内容转变,将notetabs里面的读取乐符数转变

五、体会

这是我第一次的试验胜利,主要归结于自己平常下课后不停的摸索,预习。学会了自己编写激励文件,转变了原始的画波形方式。

对于试验的波形观测也有了深刻的理解,但是我们全部的模块都是用的always语句,可以尝试一下用其他的语句实现同样的功能,增加我们对于语言运用的敏捷性。

硬件电子琴的制作

西南科技高校试验报告

课程名称:F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论