实验四硬件电子琴电路模块方案设计实验指导书.docVIP

  • 21
  • 0
  • 约4.64千字
  • 约 5页
  • 2017-03-28 发布于重庆
  • 举报

实验四硬件电子琴电路模块方案设计实验指导书.doc

实验四硬件电子琴电路模块方案设计实验指导书

         实验四 硬件电子琴电路设计 一、实验目的: 学习利用数控分频器设计硬件电子琴实验。 二、原理说明: 主系统由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模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。 图1 硬件电子琴电路结构 源程序如下: 【例1】 module songer(clk_50M,reset,Code1,High1,Spkout); input clk_50M;//CLK=50MHZ input reset; output[3:0] Code1; output High1,Spkout; wire[10:0] Tone; wire[3:0] ToneIndex; wire clk_4HZ,clk_12M; NoteTabs u0( .Clk(clk_4HZ), .ToneIndex(ToneIndex) ); ToneTaba u1( .Index(ToneIndex), .Code(Code1), .High(High1), .Tone(Tone) ); Speakera u2( .Clk(clk_12M), .Tone(Tone), .SpkS(Spkout) ); div_50_12M u3(clk_50M,clk_12M,reset); div_50_4HZ u4(clk_50M,clk_4HZ,reset); endmodule 【例2】 module NoteTabs(Clk,ToneIndex); input Clk; output[3:0] ToneIndex; reg[7:0] Counter; always@(posedge Clk ) begin if(Counter=138) Counter=8 else Counter=Counter+1b1; end Music u5( .address(Counter), .clock(Clk), .q(ToneIndex) ); endmodule 【例3】 module ToneTaba (Index,Code,High,Tone); input[3:0] Index; output[3:0] Code; output High; output[10:0] Tone; reg[3:0] Code; reg High; reg[10:0] Tone; always @ (Index) begin case(Index) 4b0000 :begin Tone=11b11111111111;Code=4b0000;High=1b0;end//2047 4b0001 :begin Tone=11b01100000101;Code=4b0001;High=1b0;end//773 4b0010 :begin Tone=11b01110010000;Code=4b0010;High=1b0;end//912 4b0011 :begin Tone=11b10000001100;Code=4b0011;High=

文档评论(0)

1亿VIP精品文档

相关文档