电子琴实验报告乐曲硬件演奏电路设计本科论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.