




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武夷学院实验报告课程名称:逻辑设计与fpga项目名称:乐曲硬件演奏电路设计姓名:-专业:微电子学班级:14微电子学号:04实验日期一、实验预习部分:1. 实验0的:学习利用数控分频器设计硬件乐曲演奏电路。2. 实验原理:综合利用数控分频器、lpm_r0m、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位预置数t0ne10. 0决定。spkout的输出频率将决定 每一音符的音调,这样,分频计数器的预置值tone1o.o与spkout的输出频率就有了对应关 系。例如在tonetaba模块(与教材图9-4中的f_code模块对应)中若取tone10. 0 =1036, 将发出音符“3”音的信号频率。咅符的持续时间需根据乐曲的速度及每个咅符的节拍数来确定
3、,tonetaba模块的功能首先 是为sprakera提供决定所发咅符的分频预置数,而此数在sprakera输入口停留的时间即为此 咅符的节拍值。tonetaba模块是乐曲简谱码对应的分频预置数査表电路,其中需设置“梁祝” 乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模 块kotatabs的clk的输入频率决定,在此为4hz。这13个值的输出由对应于tonetaba的4位 输入值index 3. 0确定。在notetabs中设置了一个8位二进制计数器(计数最大值为138),作为音符数据rom的 地址发生器。这个计数器的计数频率选为4hz,即每一计数值的停留
4、吋间为0.25秒,恰为当全 音符设为1秒时,四四拍的4分音符持续时间。例如,“梁祝”乐曲的第一个咅符为“3”,此音 在逻辑中停留了 4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为1036, 在sprakera的输入端停留了 1秒。随着notetabs中的计数器按4hz的时钟频率作加法计数时, 即随地址递增时,咅符数据rom中的咅符数据将从rom通过t0netndex3. 0端口输向tonetaba 模块,乐曲就开始连续自然地演奏起来了。具体参考教材实验9-1中说明。3. 实验仪器:pc机1台 quartusii系统开发板1块开发板外接扬声器4. 实验步骤及方法:分模块设计和仿
5、真测试,通过后联合仿真测试,最后下载到硬件屮测试。5. 注意事项:所有实验数据放入一个文件夹内,并且不要把文件夹放在系统盘上,实验结朿后备份好实 验数据,以备教师随时查阅。二、实验过程记录部分:1.实验过程记录:1.1输入信号锁相环pllo调节:pinr- . - . . . - . . . - - -參參蠡參參蠡參蠡參參鲁參瞻蠡鲁參i_e1clk.somincikocyctone iii图2. 1锁相环clkratio-二oc (%)co1/670.0050 00d £5:0.00mooinciko frequer>cy: 50.000 mhz opera ton mode:
6、 normal管脚clk_50m (设置为b12)接入fpga内部的50mhz的时钟信号,co 口为得到数控分屏器 模块的输入时钟750khz,将分频比设置为1/67,即50000000hz/67=74. 6k约等于75k; cl 口为 2khz (配合下级的500分频模块),设置为:cl=50000000hz/25000=2khz。1. 2 500分频模块count500 (即500进制的计数器):阁2. 2分频电路程序设计如图2. 2,因为梁祝歌曲只用低音和中音来演奏,为1/4拍,即四分之一拍,每个音符持续 0. 25秒的时间。因为前级电路已经实现了从50mhz到2khz的转换,要得到4h
7、z的频率,则用500 进制的计数器(0到499的计数)产生的进位信号对2khz实现500分频(输出波形分析见后)。hd1.3乐曲长度控制计数器cntl38设计:| 饱 music , bdf11 library xeee;2 use ieee.scd_logic_1164.all;3 use ieee.std一logic一unsigned.all;4 h entity cntl38 is5 hport (elk: xn std一logic;6 cnt8: out integer range 0 to 138);7 end cncl38;8 口architecture bhv of cntl38
8、 is9 signal ql : integer range 0 co 138;10 bbegin11 h process (elk) begin12 b if elk1 event andthenb if ql«138 chen ql<«0;belse ql<«ql+l;end if; end if; end process; cnts<=ql; end bhv;elk cnts7.o图2. 3乐曲长度控制计数器程序及元件图经查阅eda技术实用教程(第五版)可知,梁祝这首歌曲总共有139个音符,其中包 含末尾的3个休止符。如图2. 3,因此为了
9、产生这139音符,因此想到开发一个139进制的计数 器(计数值:0到138),实现用139状态代表139个音符。又因为要配合下一级音符谱码存储 模块的输入(rom的输入一般为偶数位),因此将原本用7路线就可以表示完成的输出端cnt8 增加一位线宽。注:在本程序中,输出端cnt8由于定义成integer繫型,在quartus中被0动分配成了 7根;也可以定义成vector型,而此时需要注意配合下级电路的权位最好写成cnt8: out std_iog ic_vector(7 downto 0).1.4咅符谱码存储模块设计构建:1. 4. 1 rom的设罝:mscicsionaddressr7.01
10、clock=o-<3(3. 01nst4 stock type: auto图2. 4音符谱码存储模块rom音符谱码存储模的主体构想,是为y让前级模块所产生的139个状态与实际音符(dorcmifa so la si)构成映射。因此需要构建一个包含梁祝乐谱的mif文件。1.4. 2构建梁祝乐谱.mif文件:文件(f)编辑(e)格式(o)查宭(v)铥depth =256;width =4;addressradix = uns;data_radix = uns;contentbegin00:301:302:303:304:505:506:507: 608: 809: 810: 811:912:
11、 613: 814:515:516: 1217: 12图2. 5梁祝乐谱(部分截収)因此综上所述,结合1.3的分析,音符谱码存储rom,即输入为8位数据线,含256bit数 据(实际只用了 139bit);输出为4根线,这是由于梁祝这首歌曲只有低音的123567,以及 中音的12356合高音部分的1,加上休止符一共13个状态,因此用4根数据线完全足够。出于简化电路设计原则以及综合考虑电路测试的难易程度,我将高音部分的1当做屮音的7 来处理,将13个状态音符分为低音音符,中音音符和休止符;这样的好处是:在测试时候,只 需用一个led的亮灭并结合七段数码管来具体表示播放的音符,此时若灯亮且七段数码
12、管显示 为“7”,实际代表输出为高音的“do”。注:在以下的段落中,若岀现“中咅”,则用以表示“中音”的1235和“高音”的1.1.5分频预置杳表电路f code构建:1 library ieee;2 use ieee.fltd_logic_1164.<11;(axisul一 inx3.ocode3.0h-et0010.0insts1r3 b entity fcode is4 b port ( inx : in atd 一logic_vector (3 downto 0);5 cods: out atd_logicvector (3 dovnto 0);6 h: out 薦td 一log
13、ic;7 too: out atd_logic_v«cor (10 dovno 0);8 蠹71(1;sbarchlr<ctuxeoneofcodexa10 bbegin11 bsearch:pzocest(inx)b<gin13when*oooo->too<-11111111111-;c0dk-*0000"14when*0001”>too<»-01x00000x01-;code<-*0001-1swhen*0010”>too<01110010000-;codi<»*0010"16wh
14、enm0011w>too<»-x0000001100-;code<.0011-17when*»0101”>too<10010101101-;code<-*0101*1白when*ono->too<-x0100001010-;code<-f0110-19whan*mu”>>too<-10101011100-;code<»*0111"20when*1000*>too<«-10110000010-;code<».,0001*21when*1001
15、”>too<»胃10111001000*;codz<«*0010-22when*1010"too-11000000110-;codec.0011"23when',1100”>too<-11001010110-;code<.0101"24when*r1101w>too<a-11010000100-;cod£<».0110-25when*1rllllw>too-11011000000-;cods<*.0001-26 when others »&g
16、t; too <=w1111i111111w ; codz<»woooo-;27 end case;2send process;29end;h<.0.;2047773;103;1290;h<»tlt;1410; hwv ;-14b0;1542;h<.1.;1622;h<*.1.;168;hw;-1728;2047;12 a cate inxit图2. 6 f code模块代码及原理图由前级电路口j知,从mscicsionrom模块的输出端q输出丫 13个音符(13个状态),而扬声 器发出声音的实质是通过播放不同的声音频率实现的,而要实现将
17、统一的频率分为不同的频率 则必须引入实现分频功能的模块,由数字电子技术基础(第五版)的“时序电路章节”知识 可知:普通的实现分频功能的计数器实现分频的原理是当计数值达到计数器最大模值n时,跳 转到“预置数m”,因此可以实现“n-m+1”分频的功能;由此,我想到,如果将原本固定的“预 置数”端,用一个模块代替,进而产生可以随需求变化而变化的预置数,这样就可以实现对不 同音符频率的分频功能。因此,本级模块最主要功能是将已有音符映射成对应的预置数。因为下级模块“数控分频器”的最大计数值为11位2进制数,因此本级模块的输出t00也 为11位线宽。因为i级模块数控分频器的最大计数值为2047,预置数为n
18、t,计数模值为 2047-nt+l=2048-nt,如nt=912,那么计数模值(分频系数)为2047-912=1135,因此将十进 制的912改为h位二进制的01110010000,赋值给t端(如图2. 6),作为输出。同时code端输出对应的音符(1到7),送至丁级电路“谱码指示模块”;同时为了区别输 出的音符为“低音”的(1到7)还是“屮音”的(1到7),因此定义输出端口 11,并接到fpga 的一个led,若灯不亮则表示为“低音”,若点亮则表示“高音”,再配合谱码指示模块中的“七 段数码管”上显示的数值进而显示具体的音符。1.6数控分频器模块spker设计:67390121 libra
19、ry ieee;2 useieee.std_logic_1164.all;3 useieee.3td_logic_arith.all;4 useieee.std_logic_unsigned.all;5 entity spker is6 口port (elk: in stdlogic;tn :3td_logic_veccor (10 downto 0);bspies: out stdlogic);9 end spjcer;3 barchitecture bhv of spker is1 h begin2 bprocess(elk)3 variable ql: std_logic_veccor(
20、10 downto 0);4 begin5 bif elk*event and elk !? thenif ql « wlllllllllllwb|chen ql:-tn; spksbelse ql : ql+1; spies置();end if;end if; end process;end;tn13jin=t10图2. 7数控分频器模块spker代码及原理图如阁2. 7,该模块主要作用是将预置数通过计数器与对应音符的频率构成映射。由于数控分 频器所给的的输入时钟为750khz。由之前的分析,数控分频器的最大计数值为11位2进制数, 即2"11=2047,逢2047后预置
21、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即(t00)为预置数。1.7谱码指示模块的设计:1.7.1七段数码管译码转换模块的设置:library ieee;use ieee.3cd_lcgic_li64all;use ie
22、ee.3td_lcgic_un3igned.all; entity decode isport( d: in 3td_logic_vector(3 downto 0); sw: out std_logic_vector(6 downto 0);end decode;architecture bhv of decode is begin process(d) beginsearch:case d iswhen ”0000”画>3%/<,”1000000”; when w0001h«>sw<-n1111001w; when "0010”画>3
23、65;<醒"0100100”; when w0011w»>sw<«w0110000" when n0100tf«>sw<asw1001100ff; when "0101"=>sw<="0010010”; when w0110w=>sw<=w0000010w; when n0111"=>3w<=w1111000n; when others =>3w<=wxxxxxxxn;end case;end process;end bhv;七
24、53sde uled3.o圳6.0】insl1tl门厂图2. 8七段数码管译码转换模块代码及原理图如阁13所示t触发器由d触发器加非门电路组成,构成一个二分频电路,由于直接从数 控分频器出来的信号是脉宽极窄的信号,为了有利于驱动扬声器而添加此电路。由1. 5分析可知, f_code模块代的输出端de为4根线,面查阅pega幵发板手册可知七段数码管的引脚有8个 (包含一个小数点)。因此,若想在数码管上显示对应的音符,必须开发一个模块,将4位二进 制数(13个状态音符)用七位二进制数表示,对应7个输出端。(因为本实验中用不到小数点, 所以只考虑用数码管显示数值部分的7段led)1.7.2七段数码管
25、的设置:阁2. 9谱码指示模块总原理阁如图2. 9,因为译码电路属于组合电路,属于异步,不受clk控制,所以木级模块不设clk 端。结合(附录二)由于fpga的七段数码管是共阳极接法,所以输出为0则点亮,例如音符“0001”, 对应输出“1111001”。1.8二分频模块的设计:阁2. 10二分频模块原理阁由1.6可知,承接数控分频器模块的输出频率,为输出真正的音符频率,还需要一个二分频 模块实现,直接调用d触发器,外接非门构成t触发器,实现二分频功能。此外由于从数控分 频器输出的某些音符的频率的占空比很小,如果不加本模块,会出现音符出现的声音非常短暂的 情况,因此,本模块还起到提高占空比50
26、%,进而提升功率的作用。2.实验现象及原始数据记录:2.1设计电路总图:图2. 11总原理图2.2开发板管脚设置图:named:1«»| edit x 7filter: |pins: a|:node namedirectionlocationi/o bankvref gro 叩i/o standard1曲dk 50minputpinj127b7 n12.5 v(defeult)2炒 hlyzsoutputpinj11b1 n12.5 v (default)3spkjaoutputpin r123b3 n12.5 v (default)4炒 sw6outputpin f137
27、b7 n12.5 v (default)5炒 sw5outputpin.f127b7 n12.5 v (default)6炒 sw4outputpin 6127b7 n12.5v(defeult)7炒 sw3outputpin h137b7 n12.5v(defeult)8炒 sw2outputpin h127b7 n12.5v(defeult)9炒 sv'1outputpin f117b7 n12.5v(defeult)10炒 sw0outputpin e117b7 n12.5v(defeult)11«newnode»0 2. 12全体管脚映射图附录一音符名频率(
28、hz)分频系数计数初值音符名频率(hz)频数分系数tfi 计初休止符37500002047屮音4796. 1784681579低音1294. 3491274773中音5882. 3534251622低音2330.3961135912中音6989. 4463791668低音3370. 9210111036中音71136. 3633301717低音4386. 5989701077高音11175.5493191728低音5394. 7379501197商音21353.7902771770牴音6495. 3767571290高音31512.0972481799低音7555. 566751372高音41
29、609. 4422331814中音1588. 6976371410高音51802. 8842081839中音2638. 845871480高咅62027. 0271851862中音3742.5745051542高音72272. 7271651882附录二909mcxd d|01pin c11s«vansanuni digit 0(0hex0二d(1二(m04l 0(1 hex0_d(2pin_h128«vtristgown (moll 0(2hcx0d|lpin.h13savins*flm«ni k»gil 0(3hex0:d(4】pin:o11s*fl
30、mlrt 陶10(4hex0.d(5pin.f128料*nool! 0(shtxodifl)pin p13savintegm«nt digit 0,ft|hexo.dpp1n.d1*stvtn8«g<9wit (mmal pohl 0mex1.d(»pin>us«v*r>s*gm«at qigji 10htxi.dllhn.bdsivn011|1hex1-0|2pln.eilswanogil 1|imfk1_d(3p1n_a14$#v«ns*gm«nt digit 1ah£x1_d|4pin-b14sevan3«gm«nt oigil 1|4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度艺术品抵押借款合同协议
- 二零二五年度汽车零部件制造厂房产权移交合同
- 二零二五年度瑜伽舞蹈工作室店铺铺面租赁协议
- 发言稿组织委员
- 2025年安徽货运从业资格考试题目大全答案
- 老母亲遗留房产转让合同
- 2014年饭店转让协议
- 高一新生会发言稿
- 2025年上海货运从业资格证考试新规
- 高中家长会 稳舵扬帆逐梦再起航课件-高三七班期末班会家长会
- 远程医疗创业计划书
- 初中生心理健康教育讲座课件
- 广东省广州市白云区2023-2024学年八年级上学期期末英语试题(答案)
- 洞库安全隐患
- 2024-2025年第一学期小学德育工作总结:点亮德育灯塔引领小学生全面成长的逐梦之旅
- 2024解析:第二章声现象-基础练(解析版)
- 整体法兰强度校核计算表(设计:zxg)
- 《供配电技术》课件第1章
- 建筑垃圾清理及运输方案
- 2024年甘肃省公务员录用考试《行测》真题卷及答案解析
- 2024版Visio入门到精通完整教程
评论
0/150
提交评论