资源描述:
《实验四硬件电子琴电路模块方案设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四硬件电子琴电路设计一、实验目的:学习利用数控分频器设计硬件电子琴实验。二、原理说明:主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1所示):Speakera.v(例4)和ToneTaba.v(例3),NoteTabs.v(例2)。模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数
2、器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。图1硬件电子琴电路结构源程序如下:【例1】modulesonger(Clk1,Clk2,Code1,High1,Spkout);inputCl
3、k1,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(.Clk
4、2(Clk2),.Q2(Q2));endmodule【例2】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【例3】moduleToneTaba(Index,Code,H
5、igh,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
6、<=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'b10101011
7、100;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