硬件电子琴及硬件乐曲演奏电路.docx

上传人:b****8 文档编号:9954707 上传时间:2023-02-07 格式:DOCX 页数:13 大小:114.94KB
下载 相关 举报
硬件电子琴及硬件乐曲演奏电路.docx_第1页
第1页 / 共13页
硬件电子琴及硬件乐曲演奏电路.docx_第2页
第2页 / 共13页
硬件电子琴及硬件乐曲演奏电路.docx_第3页
第3页 / 共13页
硬件电子琴及硬件乐曲演奏电路.docx_第4页
第4页 / 共13页
硬件电子琴及硬件乐曲演奏电路.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

硬件电子琴及硬件乐曲演奏电路.docx

《硬件电子琴及硬件乐曲演奏电路.docx》由会员分享,可在线阅读,更多相关《硬件电子琴及硬件乐曲演奏电路.docx(13页珍藏版)》请在冰豆网上搜索。

硬件电子琴及硬件乐曲演奏电路.docx

硬件电子琴及硬件乐曲演奏电路

FPGA嵌入式系统设计专题实践

结课论文

 

题目:

硬件电子琴及硬件乐曲演奏电路

 

专业:

电子信息科学与技术

 

一、设计题目

硬件电子琴及硬件乐曲演奏电路

二、设计目标

1.学习利用蜂鸣器和按键设计硬件电子琴

2.利用硬件电子琴原理设计硬件演奏电路

3.掌握VHDL编程语言,了解实际设计中的优化方案

三、设计原理

音乐演奏的原理是:

由于组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲演奏的两个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。

四、设计内容

1、硬件电子琴

(1)原理图

(2).分频器程序

--filenameclk_div3.vhd

--description:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYClk_Div3IS

PORT(clk_in:

INSTD_LOGIC;

clk_out:

OUTSTD_LOGIC);

END;

ARCHITECTUREmyArchitectureOFClk_Div3is

SIGNALcnt1,cnt2:

integerrange0to2;

SIGNALclk1,clk2:

STD_LOGIC;

BEGIN

PROCESS(clk_in)

BEGIN

IFrising_edge(clk_in)THEN

IFcnt1<2THEN

cnt1<=cnt1+1;

ELSE

cnt1<=0;

ENDIF;

IFcnt1<1THEN

clk1<='1';

ELSE

clk1<='0';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk_in)

BEGIN

IFfalling_edge(clk_in)THEN

IFcnt2<2THEN

cnt2<=cnt2+1;

ELSE

cnt2<=0;

ENDIF;

IFcnt2<1then

clk2<='1';

ELSE

clk2<='0';

ENDIF;

ENDIF;

ENDPROCESS;

clk_out<=clk1ORclk2;

END;

(3).七个中音主程序

modulebeepx(clk,key,beep,led,ledbt);//模块名称beep

inputclk;//系统时钟12MHz

input[7:

0]key;//按键输入

outputbeep;//蜂鸣器输出端

output[7:

0]led;

output[7:

0]ledbt;//LED输出

regbeep_r;//寄存器

reg[15:

0]count,count_end;

reg[7:

0]key_r;

reg[7:

0]led_bt;

always@(posedgeclk)

begin

count<=count+1'b1;//计数器加1

if((count==count_end)&(!

(count_end==16'hffff)))

begin

count<=16'h0;//计数器清零

beep_r<=!

beep_r;//取反输出信号

end

end

always@(key)

begin

key_r=key;//取键值

case(key_r)

8'b11111110:

begincount_end=16'h2CCA;key_r=8'b11111001;led_bt=8'b11111110;end//中音1的分频系数值

8'b11111101:

begincount_end=16'h27E8;key_r=8'b10100100;led_bt=8'b11111110;end//中音2的分频系数值

8'b11111011:

begincount_end=16'h238D;key_r=8'b10110000;led_bt=8'b11111110;end//中音3的分频系数值

8'b11110111:

begincount_end=16'h218E;key_r=8'b10011001;led_bt=8'b11111110;end//中音4的分频系数值

8'b11101111:

begincount_end=16'h1DE5;key_r=8'b10010010;led_bt=8'b11111110;end//中音5的分频系数值

8'b11011111:

begincount_end=16'h1AA2;key_r=8'b10000010;led_bt=8'b11111110;end//中音6的分频系数值

8'b10111111:

begincount_end=16'h17BA;key_r=8'b11111000;led_bt=8'b11111110;end//中音7的分频系数值

8'b01111110:

begincount_end=16'h166B;key_r=8'b11111001;led_bt=8'b11111110;end//高音1的分频系数值

8'b01111101:

begincount_end=16'h13F4;key_r=8'b10100100;led_bt=8'b11111110;end//高音2的分频系数值

8'b01111011:

begincount_end=16'h11C7;key_r=8'b10110000;led_bt=8'b11111110;end//高音3的分频系数值

8'b01110111:

begincount_end=16'h10C7;key_r=8'b10011001;led_bt=8'b11111110;end//高音4的分频系数值

8'b01101111:

begincount_end=16'h0EF3;key_r=8'b10010010;led_bt=8'b11111110;end//高音5的分频系数值

8'b01011111:

begincount_end=16'h0D51;key_r=8'b10000010;led_bt=8'b11111110;end//高音6的分频系数值

8'b00111111:

begincount_end=16'h0BDD;key_r=8'b11111000;led_bt=8'b11111110;end//高音7的分频系数值

default:

count_end=16'hffff;

endcase

end

assignbeep=beep_r;//输出音乐

assignled=key_r;//输出按键状态

assignledbt=led_bt;

endmodule

2.硬件乐曲演奏电路。

(1)内存分配图

(2)主程序

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYbuzzerIS

PORT(

ch:

INstd_logic;--键盘与歌曲播放选择

cho:

INstd_logic;--歌曲切换

key_data:

INstd_logic_vector(2DOWNTO0);--电子琴组合键盘输入

clk:

INstd_logic;--系统时钟

out_bit:

OUTstd_logic);--输出给蜂鸣器

ENDbuzzer;

ARCHITECTUREarchOFbuzzerIS

COMPONENTliangzhu

PORT(address:

instd_logic_vector(7downto0);

clock:

instd_logic;

q:

outstd_logic_vector(15downto0));

ENDCOMPONENT;

signalsta1:

std_logic_vector(7downto0);

signalsta:

integerrange0to147;

signalcount:

std_logic_vector(15DOWNTO0);

signalcount_end:

std_logic_vector(15DOWNTO0);

signalcount1:

std_logic_vector(23DOWNTO0);

signalout_bit_temp:

std_logic;

signalkey_temp:

std_logic_vector(2DOWNTO0);

signalcount_end_temp:

std_logic_vector(15DOWNTO0);

signalchoice:

std_logic;

--音调分频数

CONSTANTsuo0:

std_logic_vector(15DOWNTO0):

="1110111100101000";--61224

CONSTANTla0:

std_logic_vector(15DOWNTO0):

="1101010100010001";--54545

CONSTANTxi0:

std_logic_vector(15DOWNTO0):

="1011110111010001";--48593

CONSTANTduo:

std_logic_vector(15DOWNTO0):

="1011001100100111";--45863

CONSTANTlai:

std_logic_vector(15DOWNTO0):

="1001111110100000";--40864

CONSTANTme:

std_logic_vector(15DOWNTO0):

="1000111000110010";--36402

CONSTANTfa:

std_logic_vector(15DOWNTO0):

="1000011000110111";--34359

CONSTANTsuo:

std_logic_vector(15DOWNTO0):

="0111011110010100";--30612

CONSTANTla:

std_logic_vector(15DOWNTO0):

="0110101010001001";--27273

"010*********

"010*********

"010*********

"010*********

"010*********

CONSTANTsuo1:

std_logic_vector(15DOWNTO0):

="0011101111001010";--15306

CONSTANTla1:

std_logic_vector(15DOWNTO0):

="0011010101000100";--13636

CONSTANTxi1:

std_logic_vector(15DOWNTO0):

="0010111101110111";--12151

CONSTANTduo2:

std_logic_vector(15DOWNTO0):

="0010101001100011";--10851

CONSTANTt:

std_logic_vector(23DOWNTO0):

="101101110001101100000000";

BEGIN

out_bit<=out_bit_temp;

key_temp<=key_data;

PROCESS(cho)--歌曲间切换

BEGIN

IF(cho'EVENTANDcho='1')THEN

choice<=NOTchoice;

ENDIF;

ENDPROCESS;

PROCESS(clk)--分频后的音调输出控制

BEGIN

IF(clk'EVENTANDclk='1')THEN

count<=count+1;

IF(count=count_end)THEN

count<=x"0000";

out_bit_temp<=NOTout_bit_temp;

ENDIF;

ENDIF;

ENDPROCESS;

U:

liangzhuPORTMAP(address=>sta1,q=>count_end_temp,clock=>clk);

--与liangzhu.vhd的接口

PROCESS(clk,ch,choice,cho)--音调单位时长和曲谱依次播放(sta自加)控制

BEGIN

IF(ch='1')THEN--键盘与歌曲播放切换

IF(clk'EVENTANDclk='1')THEN

IF(count1

count1<=count1+1;

ELSE

count1<=x"000000";

IF(choice='1')THEN

sta<=0;

IF(sta1=10001010)THEN

sta1<="00000000";

ELSE

sta1<=sta1+1;

count_end<=count_end_temp;--《梁祝》曲谱信息赋给count_end

ENDIF;

ELSE

sta1<="00000000";

IF(sta=147)THEN

sta<=0;

ELSE

sta<=sta+1;

CASEstaIS--《友谊天长地久》曲谱信息

WHEN0|1=>count_end<=suo0;

WHEN2TO8=>count_end<=duo;

WHEN9|10=>count_end<=me;

WHEN11TO14=>count_end<=lai;

WHEN15=>count_end<=duo;

WHEN16|17=>count_end<=lai;

WHEN18|19=>count_end<=me;

WHEN20TO24=>count_end<=duo;

WHEN25|26=>count_end<=me;

WHEN27|28=>count_end<=suo;

WHEN29TO33=>count_end<=la;

WHEN34TO38=>count_end<=la;

WHEN39TO42=>count_end<=suo;

WHEN43TO45=>count_end<=me;

WHEN46|47=>count_end<=duo;

WHEN48TO51=>count_end<=lai;

WHEN52=>count_end<=duo;

WHEN53|54=>count_end<=lai;

WHEN55|56=>count_end<=me;

WHEN57TO60=>count_end<=duo;

WHEN61TO63=>count_end<=la0;

WHEN64TO65=>count_end<=suo0;

WHEN66TO69=>count_end<=duo;

WHEN70TO73=>count_end<=duo;

WHEN74|75=>count_end<=la;

WHEN76TO79=>count_end<=suo;

WHEN80TO82=>count_end<=me;

WHEN83|84=>count_end<=duo;

WHEN85TO88=>count_end<=lai;

WHEN89=>count_end<=duo;

WHEN90|91=>count_end<=lai;

WHEN92|93=>count_end<=la;

WHEN94TO97=>count_end<=suo;

WHEN98TO100=>count_end<=me;

WHEN101|102=>count_end<=suo;

WHEN103TO106=>count_end<=la;

WHEN107TO110=>count_end<=la;

WHEN111|112=>count_end<=duo1;

WHEN113TO116=>count_end<=suo;

WHEN117TO119=>count_end<=me;

WHEN120|121=>count_end<=duo;

WHEN122TO125=>count_end<=lai;

WHEN126=>count_end<=duo;

WHEN127|128=>count_end<=lai;

WHEN129|130=>count_end<=me;

WHEN131TO134=>count_end<=duo;

WHEN135TO137=>count_end<=la0;

WHEN138|139=>count_end<=suo0;

WHEN140TO143=>count_end<=duo;

WHEN144TO147=>count_end<=duo;

WHENOTHERS=>count_end<=(others=>'0');

ENDCASE;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ELSE

CASEkey_tempIS--组合琴键设置

WHEN"011"=>count_end<=duo;

WHEN"101"=>count_end<=lai;

WHEN"110"=>count_end<=me;

WHEN"001"=>count_end<=fa;

WHEN"100"=>count_end<=suo;

WHEN"010"=>count_end<=la;

WHEN"000"=>count_end<=xi;

WHENOTHERS=>count_end<=(others=>'0');

ENDCASE;

ENDIF;

ENDPROCESS;

ENDarch;

五、实验现象:

按键1到7表示七个音符,当按下一个按键时发出对应的音符声音,并且在第一位数码管上显示对应的数字。

让程序运行后使蜂鸣器播放一段音乐,并且通过按键可对其进行暂停、播放、切换等操作。

六、实验感想:

通过这次试验让我更加认识到EDA在多方面的应用,以及了解一些相关的编程,提高了我对实验箱的操作能力。

为即将进行的毕业设计做了良好的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1