基于FPGA电子琴设计实验报告_第1页
基于FPGA电子琴设计实验报告_第2页
基于FPGA电子琴设计实验报告_第3页
基于FPGA电子琴设计实验报告_第4页
基于FPGA电子琴设计实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

西南科技大学电工学,电子技术学生实验报告课程名称FPGA现代数字系统设计实验名称硬件电子琴电路设计姓名学号20095885 班级电子0902指导老师评分2012年4月19日实验目的:进一步熟悉QUARTUSII软件的使用。学习和熟悉时序电路的设计,仿真和硬件测试。学习利用数控分频器设计硬件电子琴实验。实验原理:主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1所示):Speakera.v(例4)和ToneTaba.v(例3),NoteTabs.v(例2)。模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。实验内容和步骤:打开桌面上的QUARTUSII软件。选择File菜单建立XULIEQI的工程(project),参数按实验指导书设置。由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑顶层模块的Verilog描述,并保存。modulesonger(Clk1,Clk2,Code1,High1,Spkout);inputClk1,Clk2;output[3:0]Code1;outputHigh1,Spkout;wire[10:0]Tone;wire[3:0]ToneIndex;wireQ1,Q2;NoteTabsu0(.Clk(Q2), .ToneIndex(ToneIndex));ToneTabau1(.Index(ToneIndex),.Code(Code1),.High(High1),.Tone(Tone));Speakerau2(.Clk(Q1),.Tone(Tone),.SpkS(Spkout));div_50u3(.Clk1(Clk1),.Q1(Q1));div_27u4(.Clk2(Clk2),.Q2(Q2));Endmodule由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑NoteTabs的Verilog描述,并保存。moduleNoteTabs(Clk,ToneIndex);inputClk;output[3:0]ToneIndex;reg[7:0]Counter;always@(posedgeClk)beginif(Counter>=138) Counter<=8'b00000000; elseCounter<=Counter+1'b1;endMusicu5(.address(Counter), .clock(Clk), .q(ToneIndex));endmodule由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑ToneTaba的Verilog描述,并保存;进行功能仿真、全编译、时序仿真moduleToneTaba(Index,Code,High,Tone);input[3:0]Index;output[3:0]Code;outputHigh;output[10:0]Tone;reg[3:0]Code;regHigh;reg[10:0]Tone;always@(Index)begincase(Index)4'b0000:beginTone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end//20474'b0001:beginTone<=11'b01100000101;Code<=4'b0001;High<=1'b0;end//7734'b0010:beginTone<=11'b01110010000;Code<=4'b0010;High<=1'b0;end//9124'b0011:beginTone<=11'b10000001100;Code<=4'b0011;High<=1'b0;end//10364'b0101:beginTone<=11'b10010101101;Code<=4'b0101;High<=1'b0;end//11974'b0110:beginTone<=11'b10100001010;Code<=4'b0110;High<=1'b0;end//12904'b0111:beginTone<=11'b10101011100;Code<=4'b0111;High<=1'b0;end//1372;4'b1000:beginTone<=11'b10110000010;Code<=4'b0001;High<=1'b1;end//1410;4'b1001:beginTone<=11'b10111001000;Code<=4'b0010;High<=1'b1;end//1480;4'b1010:beginTone<=11'b11000000110;Code<=4'b0011;High<=1'b1;end//1542;4'b1100:beginTone<=11'b11001010110;Code<=4'b0101;High<=1'b1;end//1622;4'b1101:beginTone<=11'b11010000100;Code<=4'b0110;High<=1'b1;end//1668;4'b1111:beginTone<=11'b11011000000;Code<=4'b0001;High<=1'b1;end//1728;default:beginTone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end//2047endcaseendendmodule功能仿真图(5):时序仿真图(6):由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑Speakera的Verilog描述,并保存;进行功能仿真、全编译、时序仿真moduleSpeakera(Clk,Tone,SpkS);inputClk;input[10:0]Tone;outputSpkS;regPreClk;regFullSpkS;reg[3:0]Count4;reg[10:0]Count11;regCount2;regSpkS;always@(posedgeClk)beginif(Count4>11)beginPreClk<=1'b1;Count4<=1;endelsebeginPreClk<=1'b0;Count4<=Count4+1'b1;endendalways@(posedgePreClk)beginif(Count11>=11'h7FF)beginCount11<=Tone;FullSpkS<=1'b1;endelsebeginCount11<=Count11+1'b1;FullSpkS<=0;endendalways@(posedgeFullSpkS)beginCount2<=~Count2;if(Count2==1'b1) SpkS<=1'b1;elseSpkS<=1'b0;endendmodule功能仿真(7):时序仿真(8):由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑50M_12.5M分频器的Verilog描述,并保存;进行功能仿真、全编译、时序仿真modulediv_50(clk1,Q1);inputclk1;outputQ1;regQ1;reg[1:0]count;always@(posedgeClk1)begin if(count==3) count<=0; else count<=count+1;endalways@(count)begin if(count==3) Q1<=1; else Q1<=0;endendmodule功能仿真(7):时序仿真(8):由File->new,可打开下面的选项,选择VerilogHDLFile,按ok继续。在在打开的空白文档,编辑div_27分频器的Verilog描述,并保存;进行功能仿真、全编译、时序仿真modulediv_27(Clk2,Q2);inputClk2; outputQ2; wireQ2;//分频后的时钟信号,4HZ reg[22:0]count; //寄存器循环计数 always@(posedgeClk2)//当Clk2上升沿时就执行一次过程语句 begin if(count<6750000) count<=count+1'b1; else count<=23'b0; end assignQ2=(count<3375000)?0:1;endmodule编辑“梁祝”乐曲演奏数据的ROM模块Music锁引脚下载及调试选择LEDR3~LEDR0发光管显示

温馨提示

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

评论

0/150

提交评论