近代电子实验--硬件电子琴.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档