实验09硬件电子琴.doc_第1页
实验09硬件电子琴.doc_第2页
实验09硬件电子琴.doc_第3页
实验09硬件电子琴.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验九实验九 硬件电子琴硬件电子琴 一一 实验目的实验目的 1 了解交流蜂鸣器的发音原理 2 利用蜂鸣器呵呵按键设计硬件电子琴 3 学会在编写独立 HDL 顶层文件 二二 准备知识准备知识 与利用微处理器 CPU 或 MCU 来实现乐曲演奏相比 以纯硬件完成乐曲演奏电路的逻辑要复 杂的多 仅凭传统的数字逻辑技术 很难完成简单的演奏电路 但是借助于功能强大的 EDA 工具 与 VHDL 语言 就相对简单 很容易实现 实验箱上有 1 个交流蜂鸣器 BUZZER 通过跳线 JP6 的 BEEP 与可编程逻辑器件相连接 其硬 件原理图如图 所示 可以看出 为了增加 I O 口的驱动能力 在此采用了 PNP 型 三极管 这样只要在 BEEP 上输入一定频率的脉冲 蜂鸣器就会发出音乐 从能量的角度来说 这个脉冲信号占空比最好为 1 1 此时蜂鸣器的发声强度最大 乐曲演奏的原理 由于组成乐曲的每个音符的频率值 音调 及其持续时间 音长 是乐曲演奏 的 2 个基本数据 因此需要控制输出到蜂鸣器的激励信号的频率和该频率信号持续的时间 频率的高低决定了音调的高低 而乐曲的简谱与个音名的频率对应关系如表 9 1 所示 所以不 同的频率的信号都从同一基准频率分频而来的 由于音节频率为非整数 而把分频系数作为小数处 理又太麻烦 故需将计算得到的分频数进行四舍五入取整处理 并且其基准频率和分频系数应综合 考虑加以选择 从而保证音乐不会走调 如在 48MHz 的时钟下 中音 1 对应的频率值为 523 25Hz 的 分频系数应该为 48000000 2 523 25 0 xb327 这样只需对系统的时钟进行 45863 次分频 然后再 进行占空比为 1 1 的二分频即可得到所要的中音 1 至于其它音符 同样可以求出其对应的分频系 数 如表 9 2 所示 表 9 1 简谱中的音名与频率的关系 单位 Hz 低音部1234567 频 率261 63293 67329 63349 23391 99440 00493 88 中音部1234567 频 率523 25587 33659 25698 46783 99880987 76 高音部1234567 频 率1046 501174 6 6 1381 511396 921567 9817601975 52 注 中音频率为低音的 2 倍 高音频率为中音的 2 倍 表 9 2 简谱中音名与分频次数的关系 单位 次数 低音部1234567 频 率91734817267281068723612255454548595 中音部1234567 频 率45867408633474534361306132727324297 高音部1234567 频 率22934 20431 17372 17181 15306 13636 12149 从表 9 2 可知 分频器即计数器的位宽为 17 位即可 分频计数器的计数方式是 0 N 还是 N 满量程 在程序中需要加以区别 实验中最好采用 N 满量程的就是方式 那么计数器计满时的加载数就是 计满最大值 1 48000000 2 f 如表 9 3 所示 分频器即计数器的位宽设为 17 位 表 9 3 简谱中音名与加载数的关系 单位 次数 低音部1234567 频 率39338 49346 58262 62349 69847 76527 82477 中音部1234567 频 率85205 90209 96327 96711 100459 103799 106775 高音部1234567 频 率108138 110641 113700 113891 115766 117436 118923 说明 表 9 3 的加载数和设计的分频器的位宽有关系 因为只有 8 个按键 所以这里为了简单起见 进行如下处理 按键 key1 key7 按下 低电平 时分别对应中音部的 1 7 此时数码管 8 显示音符 数码 7 全灭不显示 而按键 key8 按下时 按 键 key1 key7 分别对应高音部的 1 7 此时数码管 8 显示音符 数码 7 显示 H 即标志为高音 为了简单起见 按键不进行消抖处理 三三 实验步骤实验步骤 1 新建工程 beep1 新建文件夹 并在该文件夹下新建工程 beep1 2 新建顶层文件 新建 HDL 文件 tone 并设为顶层实体文件 本实验训练的工程文件只包含 1 个 HDL 顶层文件 即在一个 HDL 文件中实现硬件电子琴的设 计 该文件的输入管脚包括 按键 key 7 0 系统时钟 clk48M 输出包括 蜂鸣器 buzzer 扫描显 示的位码 dig 7 0 扫描显示的段码 seg 7 0 按键 key8 按下时 低电平 数码 7 段码定义为 seg7 显示 H seg7 10001001 反之 不显示 seg7 11111111 按键 key7 key1 有且只有 1 个按键按下时 低电平 数码 8 段码定义为 seg8 分别显示 7 1 并得出不同的加载数 count start 无 key7 key1 操作时 数码 8 不显示即全灭 seg8 11111111 按下 key8 时 再分别按键 key7 key1 按下时 低电平 数码 8 分别显示 7 1 译码 出不同的加载数 无 key7 key1 操作时 数码 8 不显示即全灭 计数范围为加载数 N 满量程的带进位 beep r 的进程 beep r 经 T 触发器 结果为送蜂鸣器 buzzer 48MHz 的系统时钟分频 得到占空比为 1 1 的 clk100Hz 时钟信号 该时钟信号为高电平时 点亮数码 7 位码 dig 11111101 段码 reg seg7 该时钟信号为低电平时 点亮数码 8 位码 dig 11111110 段码 reg seg8 注意 各个进程之间的 连线 就是信号 进程之间依靠信号进行传递 数据 的 故需要定 义一些信号 VHDL 或寄存器 Verilog HDL 3 编译 锁定管脚 再编译 指定 ADDER8 原理图文件为顶层文件 为了方便锁定管脚 我们先进行编译 发现错误进行纠正 直至成功为止 锁定管脚 管脚表 再编译 把管脚锁定的信息编译到下载文件中去 4 下载 连接电源 进行下载 根据设计思路 试验结果 四四 实验参考程序实验参考程序 程序清单 tone VHD LIBRARY IEEE USEIEEE STD LOGIC 1164 ALL USE IEEE STD LOGIC UNSIGNED ALL USEIEEE STD LOGIC ARITH ALL ENTITY tone IS PORT clk48M INSTD LOGIC 系统时钟 48MHz key INSTD LOGIC VECTOR 7 DOWNTO 0 按键输入 buzzer OUT STD LOGIC 蜂鸣器输出端 seg OUTSTD LOGIC VECTOR 7 DOWNTO 0 数码管段码输出 dig OUTSTD LOGIC VECTOR 7 DOWNTO 0 数码管位码输出 END ARCHITECTURE one OF tone IS SIGNAL beep beep r clk100Hz clk50Hz STD LOGIC SIGNAL count count start INTEGER RANGE 0 TO 131071 预置数分频器中间计数值信号 SIGNAL count100Hz INTEGER RANGE 0 TO 480000 100Hz 计数器中间计数值信号 SIGNAL seg8 seg7 STD LOGIC VECTOR 7 DOWNTO 0 数码 7 8 的译码 BEGIN PROCESS clk48M BEGIN IFRISING EDGE clk48M THEN IF count 131071 THEN 计满 X 1FFFF count count start 加载预置数 beep r 1 输出进位 触发 T 触发器 ELSE count count 1 beep r 0 END IF END IF END PROCESS PROCESS beep r BEGIN IFRISING EDGE beep r THEN beep not beep T 触发器 得到 1 1 方波 END IF END PROCESS buzzer count start 85205 seg8count start 90209 seg8count start 96327 seg8count start 96711 seg8count start 100459 seg8count start 103799 seg8count start 106775 seg8count start 108138 seg8count start 110641 seg8count start 113700 seg8count start 113891 seg8count start 115766 seg8count start 117436 seg8count start 118923 seg8count start 131071 seg8 seg7seg7 11111111 不显示 END CASE END PROCESS PROCESS clk48M BEGIN IFRISING EDGE clk48M THEN IF count100Hz 240000 THEN count100Hz 0 clk100Hz not clk100Hz 反转 占空比 1 1 clk100Hz 1 ELS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论