- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验十五 电子琴设计
音名与频率的关系:
音乐上的十二平均律规定:每两个八度音之间的频率相差一倍。在这两个八度音之间,分成十二个半音,每两个相邻伴音的频率比为12?2。另外还规定,音名A的频率为440Hz。音名B到C、E到F之间为半音,其余为全音。这样,可计算得从A(简谱的低音6)到a1(简谱的高音6)之间每个音名的频率为:
A(6):440Hz a(6):880Hz a1(6):1760Hz
B(7):493.88Hz b(7):987.76Hz
c(1):523.25Hz c1(1):1046.50Hz
d(2):587.33Hz d1(2):1174.66Hz
e(3):659.25Hz e1(3):1318.51Hz
f(4):698.46Hz f1(4):1396.92Hz
g(5):783.99Hz g1(5):1567.98Hz
二、设计要求:
设计一个电子琴,要求能演奏音名A到a1之间的全部音阶。按下一个键,则演奏该音名,并用数码管显示音名,用发光二极管指示高、中、低音。
三、设计提示:
本实验由键盘编码,音频输出译码器、分频器组成。取10MHz信号作为基准。以基准频率除以上述频率,可得各音名频率的分频系数。注意,为了减少输出的偶次谐波成分,最后输出应为对称方波。音频输出译码器实质上是一个多路选择器,根据键盘编码的输出,选择音阶发生器的不同的预置数,分频后输出音频。
分频器可以为加法计数器,以可以为减法计数器,计算预置数时稍有不同,应加以注意。另外,应根据基准频率和输出频率,来确定计数器的位数。
设计框图如下图所示:
按键编码
按键编码
预置数选择
可预置计数器
T触发器
(二分频)
扫描时钟
按键输入
键码
10MHz时钟
音频输出
预置数
译码器
显示输出
电子琴框图
四、实验步骤
1、启动ISE集成开发环境,创建工程并输入设计源文件。
2、对设计进行时序仿真,分析设计的正确性。
3、锁定引脚,完成设计实现过程。并在实验箱上连线,利用iMPACT进行程序下载。
4、在实验箱上验证电子琴的功能,观察并记录实验结果.
五、实验报告
1.music的VHDL 源程序:
library ieee;
use ieee.std_logic_1164.all;
entity music is
port(kin: std_logic_vector(0 to 15);
spk_out: out std_logic;
led_out: out std_logic_vector(6 downto 0);
index: out std_logic_vector(2 downto 0);
clk: in std_logic);
end music;
architecture stru of music is
component tonetab
port(
index : in INTEGER range 0 to 15;
tone : out INTEGER range 0 to 16#3fff#;
code : out INTEGER range 0 to 15;
high : out STD_LOGIC_VECTOR(2 DOWNTO 0)
);
end component;
component tonegen
port(
clk : in STD_LOGIC;
tone : in integer range 0 to 16#3fff#;
spks : out STD_LOGIC
);
end component;
component hex2led
port(
hex : in integer range 0 to 15;
led : out STD_LOGIC_VECTOR(6 downto 0)
);
end component;
component keybord
port(
kin : in STD_LOGIC_VECTOR(0 to 15);
kout : out INTEGER range 0 to 15
);
end component;
signal kout: integer range 0 to 15;
signal tone: INTEGER range 0 to 16#3fff#;
signal digit: integer range 0 to 15;
begin
u1: keybord port map (kin=kin,kout=kout);
u2: toneta
您可能关注的文档
最近下载
- 特种作业操作证 制冷与空调运行操作作业 实操培训.pdf VIP
- CL01实验室内审检查记录表.pdf VIP
- 幼儿园:实习心得.docx VIP
- (高清版)DB52∕T 895-2014 混凝土砌块用轻质配砖.pdf VIP
- BS EN 10025-6-2004第6部分:技术交付条件用于高屈服强度的扁平产品淬火和结构钢回火的条件.pdf VIP
- 2025法律职业伦理历年试题及答案.doc VIP
- 《房颤诊断和治疗中国指南(2023)》解读PPT课件.pptx VIP
- 40篇短文搞定高考英语3500单词(回顾巩固用).pdf VIP
- 大学生职业生涯规划.pdf VIP
- 2025 公司招聘简章(模板).pdf VIP
原创力文档


文档评论(0)