- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE \* MERGEFORMAT 19
1.软件硬件
1 EP3C40Q240C8芯片
2 实验箱底板电路(包括 蜂鸣器、7段数码管、Led灯1个、拨码开关3个、Key按键7个)
3 QuartusⅡ9.0
4 计算
2. 总体模块功能
使用两个时钟分别为12MHz和8Hz的时钟,分别供分频驱动器(数控分频器)与计数器使用。
计数器完成计数功能,分为两个计数器counter1和counter2,counter1计数到269,counter2计数到163,都是在上升沿来临时计数。
四个音乐模块分别记录了2首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。
选择器完成选择歌曲的功能。
数据翻译模块将选择器所选择的歌曲里的地址的数据翻译成分频驱动器(数控分频器)分频所需的控制数据、1个led灯数据(中低音)、以及译码器所需的数据。
分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。
译码器将乐谱数据在led数码管上显示。
图3-2 小糊涂神曲谱
3.各个模块图形及程序
3.1 计数器及歌曲存储模块(notetabs)
计数器完成计数功能,分为两个计数器,分别计到269和163,因为两首歌曲的最大字符分别为269和163,存储的两首歌是《采蘑菇的小姑娘》、《小糊涂神》,曲谱如下:
图3-1 采蘑菇的小姑娘曲谱
模块图形
模块如图3-3所示:
图3-3 notetabs模块图形
2 程序
由于此程序较多,在附录中给出,见附录
3 仿真波形图
仿真图如图3-4所示:
图3-4 notetabs仿真波形图
通过仿真图可以清楚的看到,每计一次数输出toneindex的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中,自第8个时钟上升沿来临到第15个时钟上升沿,输出toneindex2均选取音符“5”。然后把输出toneindex2输入到音调编码器模块,进行下一步编码工作。
3.2 手动模块(tone)
可通过7个按键手动的进行演奏,7个按键分别代表7个音。
模块图形
模块如图3-5所示:
图3-5 tone 模块图形
4.程序
library ieee;
use ieee.std_logic_1164.all;
entity tone is
port(key:in std_logic_vector(6 downto 0);
toneindex1:out std_logic_vector(3 downto 0));
end;
architecture one of tone is
begin
search:process(key)
begin
case key is
when0000001=toneindex1=0001;
when0000010=toneindex1=0010;
when0000100=toneindex1=0011;
when0001000=toneindex1=0100;
when0010000=toneindex1=0101;
when0100000=toneindex1=0110;
when1000000=toneindex1=0111;
when others=toneindex1=0000;
end case;
end process;
end;
3 仿真波形图
仿真图如图3-6所示:
图3-6 tone 仿真波形
在此仿真图中不同的key相当于对应不同的琴键,当按下不同的琴键时输出相对应的toneindex1,toneindex1在输入音调编码器中进行下一步编码。
3.3.3 手动、自动选择模块(mux)
根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于是,可通过一个按键cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏,其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与cs相连的按键除外)来控制不同的音符。与此同时,还需要一个复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。以上提到的手动与自动的选择只能在rst为0时有效。
模块图形
模块图形如图3-7所示:
图3-7 mux 模块图形
2 程序
library ieee;
use ieee.std_logic_1164.all;
entity mux is
port(rst:in std_logic;
index1:in std_logic_vector(3 downto 0);
index2:in std_logic_vector(3 downto 0);
cs :in std_logic;
toneindex:out std_logic_vector(3 downto 0)
文档评论(0)