FPGA硬件电子琴电路设计实验报告

  • 格式:doc
  • 大小:151.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA

实验报告

题目:硬件电子琴电路设计

一.实验目的:学习利用数控分频器设计硬件电子琴实验。

二.实验原理及内容:主系统由3个模块组成,顶层设计文件中包含三个功能模块, 和 , 。

模块ToneTaba 是音阶发生器,当8位发声控制输入Index 中某一位为高电平时,则对应某一音阶的数值将从端口Tone 输出,作为获得该音阶的分频预置值;同时由Code 输出对应该音阶简谱的显示数码,如‘5’,并由High 输出指示音阶高8度显示。

模块Speakera 中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera 由端口Tone 获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ 输入的频率进行分频,之后由Spkout 向扬声器输出发声。

增加一个NoteTabs 模块用于产生节拍控制(Index 数据存留时间)和音阶选择信号,即在NoteTabs 模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

图1 硬件电子琴电路结构

三.实验步骤.

1.

在QUARTUSII 软件下创建一工程,工程名为songer ,芯片名为EP2C35F672C6; 2.输入数控分频器程序并命名为,保存与工程相同的文件夹中。

其功能仿真波形和时序仿真波形分别如下:

3.输入音阶发生器程序并命名为,保存与工程相同的文件夹中。

PreClk<=1'b0;

Count4<=Count4+4'b1; end end always@(posedge PreClk)begin if(Count11>=11'h7FF) begin

Count11<=Tone;

FullSpkS<=1'b1; end else begin PreClk<=1'b1;

Count4<=1;end

else begin

Count11<=Count11+11'b1; FullSpkS<=0; end end

always@(posedge FullSpkS)begin

Count2<=~Count2; if(Count2==1'b1) SpkS<=1'b1;

else SpkS<=1'b0; end

Module ToneTaba (Index,Code,High,Tone); input[3:0] Index; output[3:0] Code; output High; output[10:0] Tone; reg[3:0] Code=0; reg High=0; reg[10:0] Tone=0; always begin

case(Index) 4'b0000 :begin Tone<=11'b; Code<=4'b0000;High<=1'b0;end//2047 4'b0001 :begin Tone<=11'b001; Code<=4'b0001;High<=1'b0;end//773

其功能仿真波形和时序仿真波形分别如下:

4.输入27分频程序并命名为,保存与工程相同的文件夹中。

4'b0011:beginTone<=11'b;

Code<=4'b0011;High<=1'b0;end//1036 4'b0101 :begin Tone<=11'b;

Code<=4'b0101;High<=1'b0;end//1

197

4'b0110 :begin Tone<=11'b;

Code<=4'b0110;High<=1'b0;end//1290

4'b0111 :begin Tone<=11'b;

Code<=4'b0111;High<=1'b0;end//1372;

4'b1000 :begin Tone<=11'b;

4'b1010 :begin Tone<=11'b; 4'b1010 :begin Tone<=11'b;

Code<=4'b0011;High<=1'b1;end//1542;

4'b1100 :begin Tone<=11'b;

Code<=4'b0101;High<=1'b1;end//1622;

4'b1101 :begin Tone<=11'b;

Code<=4'b0110;High<=1'b1;end//1668;

4'b1111 :begin Tone<=11'b;

Code<=4'b0001;High<=1'b1;end//172

module div_27(Clk2,Q2);

input Clk2;

output Q2;

reg Q2;

reg[32:0] count;

always@(posedge Clk2) begin if(count==3374999) begin count<=0;Q2=~Q2; end else count<=count+1; end endmodule module div_50(Clk1,Q1); input Clk1; output Q1; reg Q1;

reg[32:0] count;

always@(posedge Clk1)

begin if(count==1) begin count<=0;Q1=~Q1;end

else count<=count+1;end

endmodule

其功能仿真波形和时序仿真波形分别如下:

6.建立梁祝乐曲演奏数据的MIF 文件。

WIDTH = 4 ; 入程序并命名为,保存与工程相同的文件夹中。

8.输入硬件演奏电路顶层设计文件并命名为,保存与工程相同的文件夹中。

module

NoteTabs(reset,Clk,ToneIndex);

input Clk,reset;

output[3:0] ToneIndex;

reg[7:0] Counter;

always@(posedge Clk or negedge

reset)

begin

else if(Counter>=138) Counter<=8'b00000000; else Counter<=Counter+8'b1;end Music u5( .address(Counter), .clock(Clk), .q(ToneIndex) );

相关主题