北邮大三数电实验电子琴 (1).doc

上传人:b****9 文档编号:116464 上传时间:2022-10-03 格式:DOC 页数:32 大小:1.77MB
下载 相关 举报
北邮大三数电实验电子琴 (1).doc_第1页
第1页 / 共32页
北邮大三数电实验电子琴 (1).doc_第2页
第2页 / 共32页
北邮大三数电实验电子琴 (1).doc_第3页
第3页 / 共32页
北邮大三数电实验电子琴 (1).doc_第4页
第4页 / 共32页
北邮大三数电实验电子琴 (1).doc_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

北邮大三数电实验电子琴 (1).doc

《北邮大三数电实验电子琴 (1).doc》由会员分享,可在线阅读,更多相关《北邮大三数电实验电子琴 (1).doc(32页珍藏版)》请在冰豆网上搜索。

北邮大三数电实验电子琴 (1).doc

数字电路与逻辑设计实验报告

实验名称:

基于VHDL的电子琴演奏器实现

学院:

信息与通信工程学院

班 级:

姓 名:

学 号:

任课老师:

日 期:

2012年11月

第2页

目录

一.任务要求 2

1、基本要求 2

2、提高要求 3

二、原理概述 3

三、系统设计 3

1、基础功能 3

2、拓展功能1——自动播放 6

3、拓展功能2——储存音符并可自动播放所存字符 8

4、全部功能实现 8

四、波形仿真及波形分析 12

五、源程序 18

1、FENPINXISHU 18

2、FENPIN 19

3、BEEP 19

4、OUTPUT 20

5、YINFUFENPIN 24

6、JISHU 24

7、JIANPU 25

8、miaofenpin 27

9、jilu 28

10、SHUJUXUANZEQI 29

11、tp 30

六、功能说明 33

七、元器件清单及资源利用情况 33

八、故障及问题分析 33

九、总结和结论 34

一.任务要求

设计制作一个简易电子琴演奏器。

1、基本要求

(1)用8×8点阵显示“1234567”七个音符构成的电子琴键盘。

其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。

1234567

图1点阵显示的电子琴键盘

(2)用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。

当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。

下图所示为按下BTN3按键时点阵的显示情况。

1234567

图2按键按下后的点阵显示

a、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。

b、通过按键BTN0进行复位,控制点阵显示图1的初始状态。

2、提高要求

a、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。

b、增加手动演奏的音符存储、播放功能。

二、原理概述

根据声乐知识,产生音乐的两个因素是音乐频率和持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。

每两个半音的频率比为2开12次方。

另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间(sido),E到F(mifa)之间为半音,其余为全音。

由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。

表1简谱中的音名与频率的关系

音名

频率(Hz)

音名

频率(Hz)

音名

频率(Hz)

低音1

261.63

中音1

523.25

高音1

1046.50

低音2

293.67

中音2

587.33

高音2

1174.66

低音3

329.63

中音3

659.25

高音3

1318.51

低音4

349.23

中音4

698.46

高音4

1396.91

低音5

392.00

中音5

783.99

高音5

1567.98

低音6

440

中音6

880

高音6

1760

低音7

493.88

中音7

987.77

高音7

1975.53

三、系统设计

1、基础功能

表现音乐最重要的因素之一即为音调,因此我首先解决的问题是分频问题,将50M时钟分频,使其频率与相应的音调尽量接近。

表2为以50M时钟相对应的分频系数,由于分频系数只能为整数,所以是四舍五入得到的。

在实现过程中,表2是用一个类似数据选择器功能的元件来实现(在本例中对应的元件为FENPINXISHU)。

表2简谱中的音名与分频系数的关系

音名

分频系数

音名

分频系数

音名

分频系数

低音1

191112

中音1

95556

高音1

47778

低音2

170262

中音2

85131

高音2

42566

低音3

151686

中音3

75844

高音3

37922

低音4

143172

中音3

71586

高音4

35793

低音5

127552

中音4

63776

高音5

31888

低音6

113636

中音5

56818

高音6

28409

低音7

101238

中音7

50619

高音7

25310

根据基本要求,接下来则需要将按键与相应的分频时钟联系起来。

实际上,需要表现信息的元件:

蜂鸣器、LED灯、数码管、点阵,只有蜂鸣器的时钟必须是分频后的时钟信号,而其他的完全可以用50M时钟作为时钟信号。

因此,基本要求的工作框图如图3所示:

图3自由演奏的工作框图

为方便解释,现在这里解释在本例中针对HML、bn输入信息需要区分的两种状态:

输入有效及输入无效。

由于在同一时间蜂鸣器只能以单一频率输出,因此,规定HML信号、bn信号分别只能有且只有一位是有效的,也即只有低音1到高音7这21种情况对应的HML、bn是有效输入,其余输入均是无效输入。

下面详细解释上述图中信息:

首先,该元件所有外部接口信息如表3所示。

自由演奏外部接口信息表

接口名称

作用

对应实验板上的原件

Clear

复位

按键BTN0

Bn[6…0]

基本音级的选择

按键BTN7~BTN1

HML[2…0]

高中低音的选择

拨码开关SW2~SW0

Buzzer

蜂鸣器发声

蜂鸣器BEEP

COL[7…0]

控制点阵序列

点阵列COL7~COL1

ROW[7…0]

控制点阵序列

点阵行ROW7~ROW1

TUBE[12…0]

控制数码管亮灭

前6位CAT0~CAT5,后七位AA~AG

LED[2…0]

控制LED亮灭

LED灯LED2~LED0

Clk

接入50M时钟

时钟CLK_IN(50M)

各组件说明如下:

U1:

FENPINXISHU

该组件有两个输入,分别是bn[6..0]、HML[2..0],输出为XISHU1,是一整数,即根据音名及音组得出相应的分频系数传出。

在输出无效时,XISHU1为1。

图5组件FENPIN

U2:

FENPIN

该组件有三个输入,分别是clk、clear及U1的输出XISHU1,输出即为将clk分频后的时钟clk_out2。

在这个元件中clear的作用并不大,但为了保险起见还是留下了这样一个接口。

在XISHU1为1即输入无效时,clk_out2输出为’0’。

图6组件BEEP

U4:

BEEP:

在clear无效时直接输出clk2,在clear有效时输出低电平。

图7组件OUTPUT

U3:

OUTPUT

该组件的LED灯时钟与音高选择HML一致,与clear无关。

当clear有效时:

点阵输出如图1所示,数码管无显示;当clear无效时:

若输入无效,则点阵与数码管的输出与clear有效时相同,否则按要求显示。

2、拓展功能1——自动播放

在完成了基本任务的基础上,若将其功能改成仅有拓展要求1,即只有自动播放功能,思路其实十分明晰:

即只需改变原本的按键输入信息,其余并无需改变。

而这个按键输入信息,则必须同时记录音长,才能播放出乐曲。

而对此,我的方式依旧是用一个类似数据选择器功能的元件(在本例中对应的元件为jianpu)。

为了能够继续利用已经调试好的元件,依然需要用50M的时钟,因此这里又涉及到了分频的问题。

而这需要与自动播放的乐曲进行综合的考虑。

以我记录的这段乐曲为例:

经查阅,以四分音符为一拍,这段乐曲大概一分钟在70拍到90拍,为分频方便,则取75拍,每秒约75/60=1.25拍,即一拍四分音符0.8秒。

而这段乐曲音长最小的为十六分音符,一拍十六分音符0.2秒,频率为5hz,因此分频系数为10000000。

在此分频下,八分音符要记录为两个时钟周期,四分音符要记录为四个时钟周期,依此类推。

因此,仅有自动播放功能的工作框图如图4所示:

图8自动播放的工作框图

该元件所有外部接口信息如表4所示。

表4自动播放外部接口信息表

接口名称

作用

对应实验板上的原件

Clear

复位

按键BTN0

Buzzer

蜂鸣器发声

蜂鸣器BEEP

COL[7…0]

控制点阵序列

点阵列COL7~COL1

ROW[7…0]

控制点阵序列

点阵行ROW7~ROW1

TUBE[12…0]

控制数码管亮灭

前6位CAT0~CAT5,后七位AA~AG

LED[2…0]

控制LED亮灭

LED灯LED2~LED0

Clk

接入50M时钟

时钟CLK_IN(50M)

由于图8的右半部分实质上与图3是相同的,下面我们将只针对图8的左半部分即图9进行解释说明。

图9自动播放的工作框图局部放大图

图10组件YINFUFENPIN

U1:

YINFUFENPIN

输入为50M时钟信号clk及clear,输出为5Hz时钟信号。

图11组件JISHU

U2:

JISHU

输入有两个:

clear、clk(5Hz),输出只有一个,为COUNTER。

当clear有效时,COUNTER置0,否则,每一个时钟上升沿到来COUNTER加1。

图12组件JIANPU

组件U3:

JIANPU

该组件可类比为一张表格,与FENPINXISHU是相似的。

当COUNTER为0,输出的HML、bn的信息均为无效的,否则,输出相应时刻应弹奏的音名及音高信息。

3、拓展功能2——储存音符并可自动播放所存字符

拓展功能2的实现思路大致是,增加一个模式的选择器,当调到录音功能时,手动输入的音符和音高会被记录到一个数组中,有专门的分频器控制它的时钟,使其输出会有合适的节奏。

对于单独的储存音符功能的实现并不难,只是将其融入到其他已有的功能中,需要对不同模式下输入功能、输出功能进行数据信息的选择,这才是拓展功能的相对难点。

那么,接下来介绍全部功能的融合实现部分。

4、全部功能实现

对于不同功能的融合,实际上,只要根据不同的模式,改变按键信息的来源即可,那么再添加一个数据选择器即可(在本例中对应的元件为SHUJUXUANZEQI)。

综合所有功能的元件所有外部接口信息如表5所示。

表5外部全部功能接口信息表

接口名称

作用

对应实验板上的原件

Clear

复位

按键BTN0

Mode[1…0]

模式的选择

拨码开关SW26~SW27

Bn[6…0]

基本音级的选择

按键BTN7~BTN1

HML[2…0]

高中低音的选择

拨码开关SW2~SW0

Buzzer

蜂鸣器发声

蜂鸣器BEEP

COL[7…0]

控制点阵序列

点阵列COL7~COL1

ROW[7…0]

控制点阵序列

点阵行ROW7~R

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

当前位置:首页 > 求职职场 > 简历

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

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