电子琴实验报告乐曲硬件演奏电路设计本科论文

  • 格式:docx
  • 大小:611.69 KB
  • 文档页数:17

下载文档原格式

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

武夷学院实验报告

课程名称:逻辑设计与FPGA 项目名称:

乐曲硬件演奏电路设计 ______________

姓名: 专业:微电子学 班级:14微电子 学号:04实验日期

、 实验预习部分: 1. 实验目的:

学习利用数控分频器设计硬件乐曲演奏电路。

2. 实验原理:

综合利用数控分频器、LPM ROMPLL 等单元电路设计硬件乐曲演奏电路。系统框图如图

1

所示由三个模块组成,分别为 NOTETABSTONETABASPEAKERA

NOTETAB 模块(把教材图9-4中的CNT138T 和MUSIC 模块合在一起即为此模块)类似于弹 琴人的手指;TONETAB 模块类似于琴键;SPEAKER 类似于琴弦或音调发生器。

音符的频率由SPEAKER 模块(与教材图9-4中的SPKEF 模块对应)获得,这是一个数控分 频器。由其CLK 端输入一具有较高频率(12MHZ 的信号,通过SPEAKER 分频后由SPKOU 输出。 SPEAKER 对CLK 输入信号的分频比由11位预置数TONE[10..0]决定。SPKOU 的输出频率将决定

每一音符的音调,这样,分频计数器的预置值 TONE[10..0]与SPKOU

的输出频率就有了对应关

系。例如在TONETAB 模块(与教材图9-4中的F_COD 模块对应)中若取 TONE[10..0] = 1036,

图1硬件乐曲演奏电路结构框图

i.;E-Z

将发出音符“ 3”音的信号频率。

实验预习成绩(百分制)____________________ 实验指导教师签字:_________________________

实验过程记录部分: 1实验过程记录:

1.1输入信号锁相环PLLO 调节:

图2.1锁相环

管脚clk_50m (设置为B12)接入FPGA 内部的50mhz 的时钟信号,CO 口为得到数控分屏器 模块的输入时钟 750KHZ 将分频比设置为1/67,即50000000HZ/67=74.6K 约等于75K; cl 口为 2KHZ (配合下级的500分频模块),设置为:c 仁50000000HZ/25000=2KHZ

1.2 500分频模块count500 (即500进制的计数器):

如图2.2,因为梁祝歌曲只用低音和中音来演奏,为 1/4拍,即四分之一拍,每个音符持续 0.25秒的时间。因为前级电路已经实现了从50MHZ 到2KHZ 的转换,要得到4HZ 的频率,则用500 进制的计数器(0到499的计数)产生的进位信号对 2KHZ 实现500分频(输出波形分析见后)。

dncIkD

PLLO

Clk

Ratio =1- F

DC (%)

€0 1JS7 c co

cl -

飞00

50.00

inst

7;50khz ::

ck Sum [ r

df>clkD frequency: 50.D00 Ml Hz

Uode: IMcrmal 图2.2分频电路程序设计

1.3乐曲长度控制计数器cnt138设计:

hd | 宦]rmjsic.bdP

1library leeej

2use icee:■兰cd_lc3giLQ_L:l£4 ・目1丄;

3use leee ・st d_logxc^tms i.gneci ■日丄丄;

4S entity cntlSS is

5B port (elk: in std_logic;

6cntS: 口口匸xntegez range 0 to 139}J

7end cntl38;

B E arehiteetuEe:bhv af ent 13 B is

9^xgnal ql : xnceger range 0 co 138;

10H begin

11S process (elk) begin

12 B if elk1event and 匚丄k=V then

13Eif ql=138 tlien ql<=0;

.14 E elaie qlC"ql+lj

15end if;

16end xf;

17end process;

IB cnt6<=

19 end bhvr

图2.3乐曲长度控制

计数器程序及元件图

经查阅《EDA技术实用教程(第五版)》可知,《梁祝》这首歌曲总共有139个音符,其中包含末尾的3个休止符。如图2.3,因此为了产生这139音符,因此想到开发一个139进制的计数器(计数值:0到138),实现用139状态代表139个音符。又因为要配合下一级音符谱码存储模块的输入(ROM的输入一般为偶数位),因此将原本用7路线就可以表示完成的输出端cnt8增加一位线宽。注:在本程序中,输出端cnt8由于定义成integer整型,在Quartus中被自动分

配成了7根;也可以定义成vector 型,而此时需要注意配合下级电路的权位最好写成cnt8: out

std_logic_vector(7 dow nto 0).

1.4音符谱码存储模块设计构建:

1.4.1 ROM的设置:

图2.4音符谱码存储模块ROM

音符谱码存储模的主体构想,是为了让前级模块所产生的139个状态与实际音符(DoRe Mi Fa So La Si )构成映射。因此需要构建一个包含《梁祝》乐谱的 mif 文件。

1.4.2构建《梁祝》乐谱.mif 文件:

文件(町

锚(E)

式(O 〕fe(V) K

I DEPTH

256;

WIDTH

I ;

ADDRES S RADI X =UNS; DATA_RADIX = UNS. CONTEN

T

BEGIN

00

3 ;

01

3 ; 02

3 ; 03

3 : 04

5 ; 05

5 ; 06

5 ;

07

6 . 08

8 ; 09

8 ; 10

8 ; 11

9 ; 12

6 . 13

8 ; 14

5 ; 15

5 ;

16

12 : 17

12 ;

图2.5《梁祝》乐谱(部分截取)

因此综上所述,结合1.3的分析,音符谱码存储 ROM 即输入为8位数据线,含256bit 数 据

(实际只用了 139bit );输出为4根线,这是由于《梁祝》这首歌曲只有低音的 123567,以及 中音

的12356合高音部分的1,加上休止符一共13个状态,因此用4根数据线完全足够。

出于简化电路设计原则以及综合考虑电路测试的难易程度, 我将高音部分的1当做中音的7 来处理,将13个状态音符分为低音音符,中音音符和休止符;这样的好处是:在测试时候,只 需用一个LED 的亮灭并结合七段数码管来具体表示播放的音符,此时若灯亮且七段数码管显示 为“7”,实际代表输出为高音的“ DO'。

注:在以下的段落中,若出现“中音”,则用以表示“中

音”的1235和“高音”的1.