北京实绱笱畔⒐こVHDL电子琴,内含源程序.docxVIP

北京实绱笱畔⒐こVHDL电子琴,内含源程序.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京实绱笱畔⒐こVHDL电子琴,内含源程序

北京邮电大学实 验 报 告实验名称:简易电子琴演奏器学 院: 信息与通信工程学院 班 级: 2010211128 姓 名: ____ 学 号: _ 日 期: 2012.11.17 一、实验名称:简易电子琴演奏器二、实验任务要求:用8×8点阵显示“1 2 3 4 5 6 7”七个音符构成的电子琴键盘。其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推。1 2 3 4 5 6 7用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1 2 3 4 5 6 7”七个音符。当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。下图所示为按下BTN3按键时点阵的显示情况。1 2 3 4 5 6 7由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。通过按键BTN0进行复位,控制点阵显示图1的初始状态。提高要求:可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。增加手动演奏的音符存储、播放功能。系统设计:1、设计思路:分频器把50MHZ的时钟频率分别分成12MHz、8HZ和1MHZ,用于分频产生声音、输出每个音符和点阵数码管输出 。notetabs和autoplay分别为两个最底层的模块,相应的按键和乐曲代码分别转化成10位的toneindex输入functionswitch,由其选择输出键盘的码还是自动播放的码。输出的toneindex进入生成音节的分频预置数的tonetaba。Tonetaba把分频预置数的码tone输入speaker来控制12MHZ的脉冲分频,得到所需要的音符频率。同时也把toneindex送入lattice和nixielight来控制点阵和数码管的显示。2、总体框图:3、分块设计:Manual:把键盘输入转换成统一的toneindexM,包括do—si七个音,高中低音转换及相应的指示灯。Autoplay:分频得到的8HZ时钟用来控制每个音节之间的停顿,乐曲以toneindexA的10位二进制数形式保存在其中,当reset键为‘1’时乐曲从头开始播放。Functionswitch:当其为‘1’时,输出自动播放的toneindexA,为‘0’时输出,以此来实现手动自动转换的功能。Tonetaba:把输入的toneindexA或toneindexM转化成22位的分频预置数tone和10位的code。Lattice:把输入的code所对应的21个音节分成3组对应7列点阵,输入音节对应点阵则灭掉。NixieLight:手动播放和自动播放时,输入的code一一对应数码管的音调(最左边)和音节(最右边)的显示。当手动播放时,输入的高中低音键分别锁定相应的数字‘3’‘2’‘1’显示在最左边的数码管。Speaker:把12MHZ的时钟脉冲按照分频预置数进行分频,然后再进行二分频以使声音清晰。仿真波形及波形分析Manual输入的高中低音MA、MB、MC(优先级MAMBMC)分别对应指示灯low、mid、high和第五位二进制数。Autoplay:Reset为‘1’时保持前一个音节,放开后从头开始播放。FunctionswitchFunswitch为‘0’时输出自动播放,‘1’时为手动播放Tonetaba把输入的toneindexA或toneindexM转化成11位二进制数的分频预置数tone和5位二进制数的code。Lattice输入音节对应点阵则灭掉。NixieLightShowtimetmp对应数码管显示的音节,catnumber对应音调Speaker五、源程序Songer:library ieee;use ieee.std_logic_1164.all;entity songer is port(clk:in std_logic; FunSwitch:in std_logic; reset:in std_logic; address:in std_logic_vector(6 downto 0); MajorA,Majorb,MajorC:in std_logic; high1,mid1,low1:out std_logic; spkout:out std_logic; row:out std_logic_vector(7 downto 0);col:out std_logic_vector(7 downto 0);cat_number:out std_logic_vector(5 downto 0);Show_number:out std_logic_vector(6 down

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档