电子琴实验报告-乐曲硬件演奏电路设计

上传人:na****u 文档编号:61006987 上传时间:2022-03-10 格式:DOC 页数:14 大小:830.50KB
收藏 版权申诉 举报 下载
电子琴实验报告-乐曲硬件演奏电路设计_第1页
第1页 / 共14页
电子琴实验报告-乐曲硬件演奏电路设计_第2页
第2页 / 共14页
电子琴实验报告-乐曲硬件演奏电路设计_第3页
第3页 / 共14页
资源描述:

《电子琴实验报告-乐曲硬件演奏电路设计》由会员分享,可在线阅读,更多相关《电子琴实验报告-乐曲硬件演奏电路设计(14页珍藏版)》请在装配图网上搜索。

1、武夷学院实验报告课程名称:逻辑设计与FPGA 项目名称: 乐曲硬件演奏电路设计 姓名: 专业:微电子学 班级: 14微电子 学号: 04 实验日期 一、 实验预习部分:1实验目的:学习利用数控分频器设计硬件乐曲演奏电路。2实验原理:综合利用数控分频器、LPM_ROM、PLL等单元电路设计硬件乐曲演奏电路。系统框图如图1所示由三个模块组成,分别为NOTETABS、TONETABA、SPEAKERA。图1 硬件乐曲演奏电路结构框图NOTETABS模块(把教材图9-4中的CNT138T和MUSIC模块合在一起即为此模块)类似于弹琴人的手指;TONETABA模块类似于琴键;SPEAKERA类似于琴弦或

2、音调发生器。音符的频率由SPEAKERA模块(与教材图9-4中的SPKER模块对应)获得,这是一个数控分频器。由其CLK端输入一具有较高频率(12MHZ)的信号,通过SPEAKERA分频后由SPKOUT输出。SPEAKERA对CLK输入信号的分频比由11位预置数TONE10.0决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值TONE10.0与SPKOUT的输出频率就有了对应关系。例如在TONETABA模块(与教材图9-4中的F_CODE模块对应)中若取TONE10.01036,将发出音符“3”音的信号频率。音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,TON

3、ETABA模块的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKERA输入口停留的时间即为此音符的节拍值。TONETABA模块是乐曲简谱码对应的分频预置数查表电路,其中需设置“梁祝”乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块NOTATABS的CLK的输入频率决定,在此为4HZ。这13个值的输出由对应于TONETABA的4位输入值INDEX3.0确定。在NOTETABS中设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。这个计数器的计数频率选为4HZ,即每一计数值的停留时间为0.25秒,恰为当

4、全音符设为1秒时,四四拍的4分音符持续时间。例如,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为1036,在SPEAKERA的输入端停留了1秒。随着NOTETABS中的计数器按4HZ的时钟频率作加法计数时,即随地址递增时,音符数据ROM中的音符数据将从ROM通过TONEINDEX3.0端口输向TONETABA模块,乐曲就开始连续自然地演奏起来了。具体参考教材实验9-1中说明。3实验仪器:PC机1台 QuartusII系统开发板1块 开发板外接扬声器4实验步骤及方法:分模块设计和仿真测试,通过后联合仿真测试,最后下载到硬件中测

5、试。5注意事项:所有实验数据放入一个文件夹内,并且不要把文件夹放在系统盘上,实验结束后备份好实验数据,以备教师随时查阅。 实验预习成绩(百分制) 实验指导教师签字: 二、 实验过程记录部分:1实验过程记录:1.1 输入信号锁相环PLL0调节: 图2.1 锁相环管脚clk_50m(设置为B12)接入FPGA内部的50mhz的时钟信号,C0口为得到数控分屏器模块的输入时钟750KHZ,将分频比设置为1/67,即50000000HZ/67=74.6K约等于75K;c1口为2KHZ(配合下级的500分频模块),设置为:c1=50000000HZ/25000=2KHZ。1.2 500分频模块count5

6、00(即500进制的计数器): 图2.2 分频电路程序设计 如图2.2,因为梁祝歌曲只用低音和中音来演奏,为1/4拍,即四分之一拍,每个音符持续0.25秒的时间。因为前级电路已经实现了从50MHZ到2KHZ的转换,要得到4HZ的频率,则用500进制的计数器(0到499的计数)产生的进位信号对2KHZ实现500分频(输出波形分析见后)。1.3 乐曲长度控制计数器cnt138设计: 图2.3 乐曲长度控制计数器程序及元件图 经查阅EDA技术实用教程(第五版)可知,梁祝这首歌曲总共有139个音符,其中包含末尾的3个休止符。如图2.3,因此为了产生这139音符,因此想到开发一个139进制的计数器(计数

7、值:0到138),实现用139状态代表139个音符。又因为要配合下一级音符谱码存储模块的输入(ROM的输入一般为偶数位),因此将原本用7路线就可以表示完成的输出端cnt8增加一位线宽。 注:在本程序中,输出端cnt8由于定义成integer整型,在Quartus中被自动分配成了7根;也可以定义成vector型,而此时需要注意配合下级电路的权位最好写成cnt8: out std_logic_vector(7 downto 0).1.4 音符谱码存储模块设计构建:1.4.1 ROM的设置: 图2.4 音符谱码存储模块ROM 音符谱码存储模的主体构想,是为了让前级模块所产生的139个状态与实际音符(

8、Do Re Mi Fa So La Si)构成映射。因此需要构建一个包含梁祝乐谱的mif文件。1.4.2构建梁祝乐谱.mif文件: 图2.5梁祝乐谱(部分截取)因此综上所述,结合1.3的分析,音符谱码存储ROM,即输入为8位数据线,含256bit数据(实际只用了139bit);输出为4根线,这是由于梁祝这首歌曲只有低音的123567,以及中音的12356合高音部分的1,加上休止符一共13个状态,因此用4根数据线完全足够。出于简化电路设计原则以及综合考虑电路测试的难易程度,我将高音部分的1当做中音的7来处理,将13个状态音符分为低音音符,中音音符和休止符;这样的好处是:在测试时候,只需用一个LE

9、D的亮灭并结合七段数码管来具体表示播放的音符,此时若灯亮且七段数码管显示为“7”,实际代表输出为高音的“Do”。 注:在以下的段落中,若出现“中音”,则用以表示“中音”的1235和“高音”的1.141.5 分频预置查表电路f_code构建: 图2.6 f_code模块代码及原理图 由前级电路可知,从mscicsionROM模块的输出端q输出了13个音符(13个状态),而扬声器发出声音的实质是通过播放不同的声音频率实现的,而要实现将统一的频率分为不同的频率则必须引入实现分频功能的模块,由数字电子技术基础(第五版)的“时序电路章节”知识可知:普通的实现分频功能的计数器实现分频的原理是当计数值达到计

10、数器最大模值N时,跳转到“预置数M”,因此可以实现“N-M+1”分频的功能;由此,我想到,如果将原本固定的“预置数”端,用一个模块代替,进而产生可以随需求变化而变化的预置数,这样就可以实现对不同音符频率的分频功能。因此,本级模块最主要功能是将已有音符映射成对应的预置数。因为下级模块“数控分频器”的最大计数值为11位2进制数,因此本级模块的输出TOO也为11位线宽。因为下级模块数控分频器的最大计数值为2047,预置数为NT,计数模值为2047-NT+1=2048-NT, 如NT=912, 那么计数模值(分频系数)为2047-912=1135,因此将十进制的912改为十一位二进制的01110010

11、000,赋值给TOO端(如图2.6),作为输出。同时CODE端输出对应的音符(1到7),送至下级电路“谱码指示模块”;同时为了区别输出的音符为“低音”的(1到7)还是“中音”的(1到7),因此定义输出端口H,并接到FPGA的一个LED,若灯不亮则表示为“低音”,若点亮则表示“高音”,再配合谱码指示模块中的“七段数码管”上显示的数值进而显示具体的音符。1.6 数控分频器模块spker设计: 图2.7 数控分频器模块spker代码及原理图 如图2.7,该模块主要作用是将预置数通过计数器与对应音符的频率构成映射。由于数控分频器所给的的输入时钟为750KHZ。由之前的分析,数控分频器的最大计数值为11

12、位2进制数,即211=2047,逢2047后预置NT, 为加法计数,输出为进位信号,进位信号总是取最大状态2047的译码。不妨取1.5的假设,当NT=912时,计数模值:2047-912=1135,数控分频器输出频率为750KHZ/1135=660HZ,再由下级电路模块对数控分频输出进行2分频,则输出频率为660HZ/2=330HZ,对应为低音的2(Re)。(其余见附录一)即,对应总公式: fo =750KHZ/(2048-TN)/2其中,f0为音符频率;TN即(TOO)为预置数。 1.7 谱码指示模块的设计: 1.7.1 七段数码管译码转换模块的设置: 图2.8 七段数码管译码转换模块代码及

13、原理图如图13所示T触发器由D触发器加非门电路组成,构成一个二分频电路,由于直接从数控分频器出来的信号是脉宽极窄的信号,为了有利于驱动扬声器而添加此电路。由1.5分析可知,f_code模块代的输出端CODE为4根线,而查阅PFGA开发板手册可知七段数码管的引脚有8个(包含一个小数点)。因此,若想在数码管上显示对应的音符,必须开发一个模块,将4位二进制数(13个状态音符)用七位二进制数表示,对应7个输出端。(因为本实验中用不到小数点,所以只考虑用数码管显示数值部分的7段LED) 1.7.2 七段数码管的设置: 图2.9 谱码指示模块总原理图如图2.9,因为译码电路属于组合电路,属于异步,不受CL

14、K控制,所以本级模块不设CLK端。结合(附录二)由于FPGA的七段数码管是共阳极接法,所以输出为0则点亮,例如音符“0001”,对应输出“1111001”。1.8 二分频模块的设计: 图2.10 二分频模块原理图由1.6可知,承接数控分频器模块的输出频率,为输出真正的音符频率,还需要一个二分频模块实现,直接调用D触发器,外接非门构成T触发器,实现二分频功能。此外由于从数控分频器输出的某些音符的频率的占空比很小,如果不加本模块,会出现音符出现的声音非常短暂的情况,因此,本模块还起到提高占空比50%,进而提升功率的作用。2实验现象及原始数据记录:2.1 设计电路总图:图2.11 总原理图2.2 开

15、发板管脚设置图:图2.12 全体管脚映射图附录一附录二实验操作成绩(百分制)_ 实验指导教师签字:_三、 实验结果与讨论:1 数据处理及实验结果分析:1.1 实物图: 图3.1实物图1.2 500分频模块波形仿真图: 图3.2 500分频模块波形由图3.2可见,计数器计数值从0到499,到达计数最大模值499时进位输出pm端由低电平转入高电平,即500进制实现500分频。1.3 cnt138模块波形仿真图: 图3.3 138模块波形由图3.3,计数器从0计数到138,一共139个不同输出状态,从cnt8端输出。2实验改进、心得体会及思考题:2.1 实验心得体会:这次实验自己非常重视,花了很多时

16、间,收获了很多。自己对模块化设计电路有了更深,更直观的感受。此外对用计数器来实现分频功能有了深刻的理解;在开发过程中也遇到了一系列的问题,例如在对“数控分频器”的VHDL代码编写中,开始不懂得signal和variable的区别,用前者时,信号在进程结束后才被改变,因此与所需音符状态无法及时对应;而后,我又发现如果在同一个进程中反复对variable所定义的变量进行赋值的话,软件只会把最后一次赋值的值赋给“变量”。诸如此类的不再一一赘述,希望日后继续努力。2.2 实验思考题: 1.教材图9-4中由D触发器INST1和非门INST2构成的2分频电路对扬声器发声有什么影响? 答:该电路模块实现对前级输出频率的二分频,让输出音符的频率全部处于人耳朵的听觉范围内。同时还起到提高占空比至50%,进而提升功率的作用。 2.在电路上应该满足哪些条件,才能用数字器件直接输出的方波驱动扬声器发声? 答:(1):输出频率要在扬声器工作范围内; (2):输出的电流要能驱动扬声器的正常工作。 实验报告成绩(百分制) 实验指导教师签字: 日期:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!