- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
近代电子实验--硬件电子琴
实验六 硬件电子琴
实验目的
(1)了解蜂鸣器发声原理和硬件实现乐曲演奏的原理;
(2)了解数控分频器的工作原理;
(3)进一步学习Verilog HDL的设计方法;
二、实验原理
根据蜂鸣器输入信号频率的不同决定了其发声不同的原理,这就是本次实验的主要原理。因此本次实验只要能够有一个数控分频器来产生不同的频率即可完成实验目的。数控分频器的预置值由乐曲的音调的制来决定,从而间接的控制蜂鸣器的发声频率。
因此就要了解音符与频率的关系,在了解了音符与频率的关系后就可以知道本次实验的模块设计了。
模块设计
整个实验由4个模块构成,音符的频率由pulse模块输出至SPK发声,这是一个数控分频器,由奇clk5mhz端输入5MHz脉冲信号,分频比由预置输入端d[12..0]决定。输出为对称脉冲,其频率为2500000/(1+D[12..0]),单位为Hz。
音符的持续时间需要根据乐曲的速度以及每个音符的节拍来确定,notetable模块首先是为pulse模块提供决定所发音符的分频预置数,而此数停留的时间即为此音符的节拍值。在notetable模块中设置了一个8位二进制计数器,这个计数器的计数频率选为4Hz,所以每一个计数值的停留时间为0.25s,即四四拍的4分音符持续时间。随着notetable模块中的计数器按4Hz的时钟速率递增并依次输出分频预置数,乐曲就开始连续自然的演奏起来了。
四、原理框图
模块的Verilog HDL代码
(1)5MHz 分频器的代码如下:
module clk5mhz(clk, div_out);
input clk;
output reg div_out;
reg [31:0] clk_div;
parameter CLK_FREQ = D50_000_000; //系统时钟50MHz
parameter DCLK_FREQ = //输出频率10MHz/2
always @(posedge clk)
begin
if(clk_div (CLK_FREQ/DCLK_FREQ))
clk_div = clk_div+1;
else
begin
clk_div = 0;
div_out = ~div_out;
end
end
endmodule
(2)4Hz分频器的代码如下:
module ckl4hz(clk, div_out);
input clk;
output reg div_out;
reg [31:0] clk_div;
parameter CLK_FREQ = D50_00_000; //系统时钟5MHz
parameter DCLK_FREQ = D8; //输出频率8Hz/2
always @(posedge clk)
begin
if(clk_div (CLK_FREQ/DCLK_FREQ))
clk_div = clk_div+1;
else
begin
clk_div = 0;
div_out = ~div_out;
end
end
endmodule
(3)pulse模块代码如下:
module pulse(clk,spk,D);
input clk;
input [12:0] D;
output reg spk;
reg [31:0] clk_div;
//parameter CLK_FREQ = D50_000_000; //系统时钟50MHz
//parameter DCLK_FREQ = D5000000/(1+D); //输出频率8Hz/2
always @(posedge clk)
begin
if(clk_div (1+D))
clk_div = clk_div+1;
else
begin
clk_div = 0;
spk = ~spk;
end
end
endmodule
(4)管脚分配的TCL如下:
#Setup.tcl
# Setup pin setting for EP3C25_3C16-V5 main board
set_global_assignment -name RESERVE_ALL_UNUSED_PINS AS INPUT TRI-STATED
set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF
set_location_assignment PIN_149 -to clk
#beep
set_locatio
您可能关注的文档
- 中班育儿知识.docx
- 中班音乐游戏《小兔和狼》.doc
- 中考专项复习三.doc
- 中考古诗文理解默写.doc
- 中考物理答题规范略谈[李远楷].doc
- 中考说明文阅读知识要点及答题技巧时间.doc
- 中职生心理健康探究.doc
- 主题活动八大习惯.doc
- 为什么要带孩子去旅行.doc
- 乒乓球经典比赛欣赏.ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)