




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、硬件电子琴电路模块设计一、实验目的:学习利用数控分频器设计硬件电子琴实验。二、实验原理:实验用FPGA实现乐曲的播放原理: 分四步1、将待播放的梁祝音乐音符存入ROM2、以4HZ频率读取ROM3、根据1MHZ的内部时钟要求,将读出的音符换算成应计数的数值4、以1MHZ为内部时钟,实现符合要求的方波信号。图1 硬件电子琴电路结构主系统由五个模块组成,songer.v是顶层设计文件,其内部有五个功能模块(如图1所示):Speakera.v 和ToneTaba.v,NoteTabs.v,div_50_12M.v,div_50_4HZ.v。模块ToneTaba是音阶发生器,当8位发声控制输入Index
2、中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如5,并由High输出指示音阶高8度显示。模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而
3、由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。div_50_12M.v是由于实验板上,只有50MHZ有源晶振,故将用50MHZ进行分频实现12.5MHZ的时钟,在后续模块Speakera.v中再分频得到近似1MHZ时钟。div_50_4HZ.v是用系统需要4HZ频率读ROM,于是用50MHZ,分频得到4HZ频率。三、实验内容:1自己编写12.5 MHZ和4HZ的分频程序div_50_12M和div_50_4HZ。用CLOCK=50MHZ(PIN_N2)的输入频率接入并进行分频得12.5MHz,此信号作为Speakera模块的输入频率;用CLOCK=5
4、0MHZ的输入频率接入并进行分频得4Hz,此信号作为NoteTabs模块的输入频率。2Music模块用ROM的IP CORE存放“梁祝”乐曲演奏数据,编写并加载.COE文件放置梁祝”乐曲演奏数据。3编译适配以上文件,给出仿真波形,最后进行下载和硬件测试实验。4选择LD5LD2发光管显示Code3Code0表示琴音简谱码,发光管LD7显示高8度,SPEAKOUT接蜂鸣器端口。工程分布:顶层模块:songer.vmodule songer(clk_50M,reset,Code1,High1,Spkout);input clk_50M;/CLK=50MHZinput reset;output3:0
5、Code1;output High1,Spkout;wire10:0 Tone;wire3:0 ToneIndex;wire clk_4HZ,clk_12M;NoteTabs u0( .Clk(clk_4HZ),.ToneIndex(ToneIndex) );ToneTaba u1( .Index(ToneIndex),.Code(Code1),.High(High1),.Tone(Tone) );Speakera u2( .Clk(clk_12M),.Tone(Tone),.SpkS(Spkout) );div_50_12M u3(clk_50M,clk_12M,reset);div_50_
6、4HZ u4(clk_50M,clk_4HZ,reset);endmoduleNoteTabs模块:module NoteTabs(Clk,ToneIndex);input Clk;output3:0 ToneIndex;reg7:0 Counter;always(posedge Clk ) beginif(Counter>=138) Counter<=8'b00000000;else Counter<=Counter+1'b1;endMusic u5( .address(Counter),.clock(Clk),.q(ToneIndex) );endmodu
7、leToneTaba模块:module ToneTaba (Index,Code,High,Tone);input3:0 Index;output3:0 Code;output High;output10:0 Tone;reg3:0 Code;reg High;reg10:0 Tone;always (Index)begincase(Index)4'b0000 :begin Tone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end/2047 4'b0001 :begin Tone<=11
8、'b01100000101;Code<=4'b0001;High<=1'b0;end/773 4'b0010 :begin Tone<=11'b01110010000;Code<=4'b0010;High<=1'b0;end/912 4'b0011 :begin Tone<=11'b10000001100;Code<=4'b0011;High<=1'b0;end/10364'b0101 :begin Tone<=11'b100101011
9、01;Code<=4'b0101;High<=1'b0;end/1197 4'b0110 :begin Tone<=11'b10100001010;Code<=4'b0110;High<=1'b0;end/1290 4'b0111 :begin Tone<=11'b10101011100;Code<=4'b0111;High<=1'b0;end/1372; 4'b1000 :begin Tone<=11'b10110000010;Code<
10、=4'b0001;High<=1'b1;end/1410; 4'b1001 :begin Tone<=11'b10111001000;Code<=4'b0010;High<=1'b1;end/1480; 4'b1010 :begin Tone<=11'b11000000110;Code<=4'b0011;High<=1'b1;end/1542; 4'b1100 :begin Tone<=11'b11001010110;Code<=4'b0
11、101;High<=1'b1;end/1622; 4'b1101 :begin Tone<=11'b11010000100;Code<=4'b0110;High<=1'b1;end/1668; 4'b1111 :begin Tone<=11'b11011000000;Code<=4'b0001;High<=1'b1;end/1728; default :begin Tone<=11'b11111111111;Code<=4'b0000;High<=
12、1'b0;end/2047 endcaseendendmoduleSpeskera模块:module Speakera(Clk,Tone,SpkS);input Clk;input10:0 Tone;output SpkS;reg PreClk;reg FullSpkS;reg3:0 Count4;reg10:0Count11;reg Count2;reg SpkS;always(posedge Clk)beginif(Count4>11)beginPreClk<=1'b1;Count4<=1;endelse beginPreClk<=1'b0;
13、Count4<=Count4+1'b1;endendalways(posedge PreClk)beginif(Count11>=11'h7FF) beginCount11<=Tone;FullSpkS<=1'b1;endelse beginCount11<=Count11+1'b1; FullSpkS<=0;endendalways(posedge FullSpkS)begin Count2<=Count2;if(Count2=1'b1) SpkS<=1'b1; else SpkS<=1
14、39;b0;endendmodule两个分频模块:IP核模块:MEMORY_INITIALIZATION_RADIX = 10; MEMORY_INITIALIZATION_VECTOR= 3 , 3 , 3 , 3, 5, 5, 5,6, 8, 8,8 , 9 , 6 , 8, 5, 5, 12,12,12, 15,13 , 12 , 10 , 12, 9, 9, 9, 9, 9, 9, 9 , 0 , 9 , 9, 9, 10, 7, 7, 6, 6, 5 , 5 , 5 , 6, 8, 8, 9, 9, 3, 3,8 , 8 , 6 , 5, 6, 8, 5, 5, 5, 5, 5 ,
15、5 , 5 , 5, 10, 10, 10, 12, 7, 7, 9 , 9 , 6 , 8, 5, 5, 5, 5, 5, 5, 3 , 5 , 3 , 3, 5, 6, 7, 9, 6, 6, 6 , 6 , 6 , 6, 5, 6, 8, 8, 8, 9, 12 ,12 ,12 ,10, 9, 9,10, 9,8, 8,6 , 5 , 3 , 3, 3, 3, 8,8, 8,8,6 , 8 ,6 , 5, 3, 5, 6,8, 5,5,5 ,5 , 5 ,5, 5,5,0, 0, 0;执行综合后的电路:引脚锁定:四、思考题:1、电路上应该满足哪些条件,才能用数字器件直接输出的方波驱动扬声器发声? 答:当电路输出的频率在扬声器的工作范围之内时,驱动电流能够驱动扬声器,才能用数字器件直接输出的方波驱动扬声器发声。2、如果演奏其他乐曲,程序应做哪些方面的改动?程序应将coe文件改掉以及ToneTbaba和NoteTabs做相应改变,要将频谱对应的中高低音对应的二进制改变。五、实验过程代码分析:1、在分频模块中用50M分频产生50%的4HZ时钟,先将count、clk_4HZ赋值为0一次,在50M始终上升沿触发,如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年项目管理中的法律法规考题试题及答案
- 项目管理战略分析试题及答案
- 2025年公司财务治理新趋势试题及答案
- 微生物检测新技术的探索试题及答案
- 2024年项目管理考题预测试题及答案
- 证券从业资格证考试制度理解试题及答案
- 重要致病菌的特征识别试题及答案
- 放射性金属矿的开采对土壤质量的影响考核试卷
- 生态环境监测在农业生态环境保护中的重要性考核试卷
- 新冠疫情下微生物检测的策略与实施试题及答案
- 眼视光器械学-第五章-眼底检测仪器课件
- 有毒动植物食物中毒及其预防-河豚鱼中毒(食品安全课件)
- 某装饰装修工程施工应急处置预案
- 第四章-数据交换技术课件
- 塞外山城张家口
- 日光温室大棚承包合同
- 电子商务案例分析13例 - 电子商务案例
- 多发伤及复合伤的抢救处理流程
- 2023年郑州科技学院单招面试题库及答案解析
- 《表观遗传》教学设计
- 自动跟随智能小车的定位与跟随系统设计
评论
0/150
提交评论