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

下载本文档

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

文档简介

FPGA实验报告 题目:硬件电子琴电路设计1 实验目的:学习利用数控分频器设计硬件电子琴实验。2 实验原理及内容:主系统由3个模块组成,顶层设计文件中包含三个功能模块,Speakera.v 和ToneTaba.v ,NoteTabs.v 。模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如5,并由High输出指示音阶高8度显示。模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。 图1 硬件电子琴电路结构3 实验步骤.1. 在QUARTUSII软件下创建一工程,工程名为songer,芯片名为EP2C35F672C6;2. 输入数控分频器程序并命名为Speakera.v,保存与工程相同的文件夹中。reg10:0Count11; reg Count2; reg SpkS;always(posedge Clk)begin if(Count411)beginmodule Speakera(Clk,Tone,SpkS); input Clk; input10:0 Tone; output SpkS; reg PreClk; reg FullSpkS; reg3:0 Count4; else beginCount11=Count11+11b1;FullSpkS=0; endend always(posedge FullSpkS)begin Count2=Count2; if(Count2=1b1) SpkS=1b1; else SpkS=1b0; endendmodulePreClk=1b0; Count4=11h7FF) begin Count11=Tone; FullSpkS=1b1; end else begin PreClk=1b1; Count4=1;end 其功能仿真波形和时序仿真波形分别如下:3. 输入音阶发生器程序并命名为ToneTaba.v,保存与工程相同的文件夹中。 always begin case(Index)4b0000 :begin Tone=11b11111111111;Code=4b0000;High=1b0;end/20474b0001 :begin Tone=11b01100000101;Code=4b0001;High=1b0;end/7734b0010 :begin Tone=11b01110010000;Code=4b0010;High=1b0;end/912Module ToneTaba (Index,Code,High,Tone); input3:0 Index; output3:0 Code; output High; output10:0 Tone; reg3:0 Code=0; reg High=0; reg10:0 Tone=0; 4b1010 :begin Tone=11b11000000110;4b1010 :begin Tone=11b11000000110;Code=4b0011;High=1b1;end/1542;4b1100 :begin Tone=11b11001010110;Code=4b0101;High=1b1;end/1622;4b1101 :begin Tone=11b11010000100;Code=4b0110;High=1b1;end/1668;4b1111 :begin Tone=11b11011000000;Code=4b0001;High=1b1;end/1728;endcase endendmodule 4b0011:beginTone=11b10000001100;Code=4b0011;High=1b0;end/10364b0101 :begin Tone=11b10010101101;Code=4b0101;High=1b0;end/11974b0110 :begin Tone=11b10100001010;Code=4b0110;High=1b0;end/12904b0111 :begin Tone=11b10101011100;Code=4b0111;High=1b0;end/1372;4b1000 :begin Tone=11b10110000010;Code=4b0001;High=1b1;end/1410;4b1001 :begin Tone=11b10111001000;Code=4b0010;High=1b1;end/1480;4b1010 :begin Tone=11b11000000110;其功能仿真波形和时序仿真波形分别如下:4. 输入27分频程序并命名为div_27.v,保存与工程相同的文件夹中。begin if(count=3374999) begin count=0;Q2=Q2; end else count=count+1; endendmodule module div_27(Clk2,Q2);input Clk2;output Q2;reg Q2;reg32:0 count;always(posedge Clk2)5. 输入50分频程序并命名为div_50.v,保存与工程相同的文件夹中。 begin if(count=1) begin count=0;Q1=Q1;end else count=138) Counter=8b00000000;else Counter=Counter+8b1;endMusic u5( .address(Counter), .clock(Clk), .q(ToneIndex) ); endmodulemodule NoteTabs(reset,Clk,ToneIndex); input Clk,reset; output3:0 ToneIndex; reg7:0 Counter;always(posedge Clk or negedge reset) beginif(!reset) Counter 11,则使PreClk,Count4赋值为1,否则使PreClk赋值为0,Count4加1,用第一个always模块产生的PreClk上升沿做触发条件,如果count1111h7FF,则使Count11赋值为Tone,FullSpkS赋值为1,否则使Count11加1,FullSpkS为0;第二个always模块产生的FullSpks上升沿做触发条件,每遇到一个上升沿让count2翻转一次,如果count2为1,扬声器发出声音,否则不发。在分频模块中,用27MHz分频产生占空比为50%的4Hz时钟,在27MHz时钟的上升沿触发,如果count计数达到3374999,将count赋为0,并将Q2翻转,否则继续计数。用50MHZ的输入频率接入并进行分频得12.5MHz。在NoteTabs模块中,用Clk上升沿或 reset下降沿做触发条件,如果reset为0,则将计数器置0.当计数到138时,Counter清0,否则继续计数。调用Music模块发音。(2)原理:用mif文件将梁祝乐曲的曲谱、节拍和音调存储在内存中,再结合程

温馨提示

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

评论

0/150

提交评论