1、 1 第 9章 草鱼 草鱼基于 FPGA的简单音乐电路设计 草鱼 草鱼 草鱼 要求 草鱼 理解运用 VHDL硬件描述语言和 Quartus 草鱼 II开发工具进行 音乐电路设计 的方法 草鱼 知识点 草鱼 理解 音乐电路 总体方案设计 方法 草鱼 理解 音乐电路 各模块 设计方法 草鱼 重点和 难点 草鱼 理解 音乐电路 各模块 设计方法 草鱼 草鱼 草鱼 引言 草鱼 草鱼 草鱼 草鱼 草鱼 音乐电路广泛用于自动答录装置 、 pork手机铃声 、 pork集团电话及智能仪器仪表设备中 。 草鱼 随着CPLD/FPGA 草鱼 集成度的提高 , 鲤鱼 价格下降 , 鲤鱼 草鱼 EDA 草鱼 设计工
2、具更新换代 , 鲤鱼 功能日益强大 , 鲤鱼 以 CPLD/FPGA实现乐曲演奏电路会越来越多 。 草鱼 本章将引导学生应用 VHDL语言 设计一个 音乐电路 。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 2 9 1 草鱼 草鱼工作任务的陈述与背景 草鱼 一 、 pork工作任务 的陈述 草鱼 使用层次化设计方法 , 鲤鱼 设计并用 FPGA实现一个能循环播放乐曲的 音乐电路 。 草鱼 草鱼 二 、 pork工作任务的背景 草鱼 据有关媒体介绍 , 鲤鱼 中国的第一颗人造卫星东方红一号卫星 , 鲤鱼 于 1965年开始研制 , 鲤鱼 1970年 4月2
3、4日进入太空轨道 , 鲤鱼 该星重量超过了苏 、 pork美 、 pork法 、 pork日等前 4个国家第一颗卫星重量的总和 ,在某些技术方面超过上述 4个国家第一颗卫星的水平 ,开创了中国航天史的新纪元 。 草鱼草鱼 草鱼 草鱼 东方红一号重 173公斤 ,设计寿命为 14天 ,实际寿命达到 20天 ,1970年 5月 14日停止发送信号 。 草鱼 关键技术包括东方红乐音装置 、 pork短波天线遥测系统等 4项 。 草鱼 其中电子乐音发生器是全星的核心部分 ,它通过 20兆赫兹短波发射系统反复向地面播送 “东方红 ”乐曲的前八小节 , 鲤鱼全中国人民乃至 全世界 的人 民通过收音机 都能
4、听得到 。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 完成研制 东方红乐音装置任务 的是 中国科学院自动化所的一个小组 。 草鱼 他们首先考虑 , 鲤鱼用什么样的方法来模拟出 “东方红 ”乐曲 。 草鱼 当时有三种方案提上了台面 , 鲤鱼 一种是八音盒方案 ,鲤鱼 它采用机械齿轮播放音乐 ; pork另一种就是把音乐录在磁带机上 , 鲤鱼 但是当时中国还没有小磁带机 ,鲤鱼 都是笨重的大磁带机 , 鲤鱼 不可能装上卫星升空 ; pork因此第三种方案自然就是电子音乐 , 鲤鱼 这也是后来被广泛接受的一种方案 。 草鱼 草鱼 草鱼 根据 上级 要求 , 鲤鱼 只 需 让卫星播放东方红 前八个小节的旋律
5、 。 草鱼 小组决定在四十秒内连续播放两遍这八个小节 , 鲤鱼 然后发射机就切换成遥测信号 , 鲤鱼 用一个发射机就可以实现交替传送乐曲和遥测信号的目的 。 草鱼 草鱼 这是国内早期最知名 , 鲤鱼 影响最大的一个 音乐电路 。 草鱼 在 国内缺乏 集成电路 , 鲤鱼 没有微处理器的 那个 时代 , 鲤鱼 东方红乐音装置 全部用晶体管分立元件做成 。 草鱼 有人 粗略统计 , 鲤鱼 整个 乐音装置 全部共用了 110多个晶体三极管(绝大多数是 3DG6), 鲤鱼 大约 150个二极管(都是 2AP10) , 鲤鱼 其他都是电阻电容 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 现在 , 鲤鱼 音乐电路
6、 广泛用于自动答录装置 、 pork手机铃声 、 pork集团电话及智能仪器仪表设备 中 。 草鱼 作为一个电子系统的一个模块 , 鲤鱼 音乐电路 的 实现方法有以下几种 : 草鱼草鱼 ( 1) 购买专用音乐电路片 。 草鱼 特点是价格便宜 , 鲤鱼 多用于玩具 , 鲤鱼 草鱼 无法更改乐曲 ,也无法编程 。 草鱼草鱼 ( 2) 录音重放电路 , 鲤鱼 如 ISD 草鱼 系列录放电路 。 草鱼 草鱼 可通过麦克风人工录音 , 鲤鱼 分段放音 , 鲤鱼 成本稍高 。 草鱼草鱼 3 ( 3) 利用微处理器来实现乐曲演奏 ,需要占用微处理器的资源较多 (要占用 D/ 草鱼 A 草鱼 和定时器等 )
7、草鱼 , 鲤鱼 大多数情况无法采 用这种方法 。 草鱼 草鱼草鱼 ( 4) 以 CPLD/FPGA实现 乐曲演奏 , 鲤鱼 也就是本任务要求使用的方法 。 草鱼 用这种方法实现 音乐电路 , 鲤鱼 现在单独价格较高 。 草鱼 但 随着 CPLD/FPGA 草鱼 集成度的提高 , 鲤鱼 价格下降 , 鲤鱼 草鱼 EDA 草鱼 设计工具更新换代 , 鲤鱼 功能日益强大 , 鲤鱼 操作方便实用 草鱼 , 鲤鱼 以及 IP 草鱼 core 草鱼概念日益普及与流行 , 鲤鱼 使这种方案的应用领域 会 越来越多 。 草鱼 草鱼 它的突出优点是 : pork第一 , 鲤鱼 仅占用 FPGA 草鱼 中很少的资
8、源 , 鲤鱼 因此增加 的系统整体 成本 较 低 , 鲤鱼 甚至不增加成本 。 草鱼 草鱼 这是因为某个产品选定某型号 FPGA 草鱼 芯片 , 鲤鱼 产品 的其它部分 只用了其中一部分资源 , 鲤鱼 还有相当一部分资源闲置没用 ; pork第二 , 鲤鱼 更改乐曲非常方便 ; pork第三 ,鲤鱼 可作为 IP 草鱼 core 草鱼 实现设计重用 。 草鱼草鱼 草鱼 9 2 草鱼完成工作任务的引导 草鱼 一 、 pork资讯 草鱼 1明确任务 草鱼 作为初步的开发设计 , 鲤鱼 为了简化设计 , 鲤鱼 本任务设计的 音乐 电路可只考虑音的 最重要 的两个方面 : pork“ 音的高低 ” 和
9、 “ 音的长短 ” , 鲤鱼 即 音高和音长 , 鲤鱼 忽略音的力度和音色 。 草鱼 要求 音乐 电路最少能连 续循环 演奏 一首歌曲或一首歌曲的一部分 , 鲤鱼 在此基础上可再做进一步的扩展 。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 由于不考虑音色 , 鲤鱼 考虑到充分利用 FPGA的数字电路资源 , 鲤鱼 可用一个可控分频电路模块产生 演奏 音乐所需的每个音 , 鲤鱼 而各个音 演 奏 的顺序和持续的时间即音长可根据乐谱用一个控制电路模块来控制 。 草鱼草鱼 电路输入是两路时钟信号 : pork一路作为可控分频电路模块的输入时钟 , 鲤鱼 经可控分频电路模块分频后 , 鲤鱼 得到各种所需的乐
10、音信号 。 草鱼 一路作为控制电路模块的输入时钟 ,鲤鱼 用来产生节拍 。 草鱼 草鱼 这两路 时钟信号 的频 率根据具体的实验条件和所选歌曲可有所不同 。 草鱼草鱼 电路的输 出有 : pork一路一线是乐音信号输出 , 鲤鱼 用来驱动外接喇叭或蜂鸣器演奏音乐 。草鱼 一路一线用来驱动外接的一个 LED, 鲤鱼 演奏高音时发光 。 草鱼 一路四线用来驱动外接的数码管显示演奏的音符简谱符号 。 草鱼草鱼 2查阅资料 草鱼 4 到 图书馆 、 pork互联网查找有关资料 。 草鱼 前人发表的有关 音乐电路 的文章主要散见在学术期刊和有关网页上 。 草鱼 可用 乐曲演奏电路 、 por k音乐 发
11、生器等关键词查找 。 草鱼 另外 , 鲤鱼要理解这些文章所介绍的原理 , 鲤鱼 还要具有 音乐 简谱 、 pork乐音 频 率的有关知识 , 鲤鱼 如果缺乏 , 鲤鱼 可再查找有关 音乐 简谱 、 pork乐音 频率的知识 。 草鱼草鱼 本章第三节 , 鲤鱼 提供了一些与本任务有关的资料 , 鲤鱼 请认真阅读 。 草鱼草鱼 二 、 pork计划 草鱼 草鱼 草鱼 草鱼 草鱼 音乐电路是模仿人歌唱的电路 。 草鱼 故可用人歌唱作为原型来分析设计本任务的总体方案 。 草鱼 人通过声带振动发出声音 , 鲤鱼 声带振动频率不同发出不同声音 。 草鱼 故在用数字电路来模仿时 , 鲤鱼 可用一个可控分频电
12、路来产生不同频率时钟信号来用来驱动外接喇叭或蜂鸣器演奏音乐 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 人在歌唱时 , 鲤鱼 是根 据歌谱 , 鲤鱼 用大脑控制声带按照一定节拍来在不同时间发出不同的乐音的 。 草鱼 故在用数字电路来模仿时 , 鲤鱼 还应该有一个 控制电路模块 , 鲤鱼 用来根据歌谱控制可控分频电路模块按照一定节拍来在不同时间发出不同的乐音的 。 草鱼而 控制电路 模块 应该分为两个小模块 , 鲤鱼 一个用来产生 节拍 , 鲤鱼 称 节拍产生 模块 。 草鱼另一个用来 根据歌谱控制可控分频电路模块在不同时间发出不同的乐音 , 鲤鱼 称 音符产生 模块 。 草鱼草鱼 草鱼 草鱼 草鱼
13、草鱼 控制电路模块 只是根据歌谱产生可供控制可控分频模块 , 鲤鱼 按照一定节拍来在不同时间发出不同的乐音的 音符 信号 。 草 鱼 具体要控制可控分频模块 , 鲤鱼 还得要把 音符信号转换为 可控分频模块的 分频系数 输入信号 , 鲤鱼 另外也要根据 音符 信号决定 提供给外围数码管的用于显示简谱音符符号的 数据 和提供给外围 LED的用于显示高低音的 数据 。 草鱼 这就需要另一个 模块 : pork分频系数 、 porkLED数据产生 模块了 。 草鱼 草鱼 由于 音乐 电路是连续循环 演奏 , 鲤鱼 故控制电路 模块 的核心部分 节拍产生 模块 应是一个计数器 , 鲤鱼 每个状态持续的
14、时间是需 演 奏 的所有的音的音长的最小公因数 ,鲤鱼 比如是一个十六 分音符 时值 , 鲤鱼 具体时间长度应根据 需 演 奏 歌曲而定 。 草鱼 这样 , 鲤鱼 每 个音 持续的时间是 每个状态持续的时间的整数倍 , 鲤鱼 故占据整数倍个状态 。 草鱼 具体占据状态的个数要根据每个音的音长来决定 。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 控制电路的计数器的模即状态数 , 鲤鱼 可由 需 演 奏 歌曲的各个音所占据状态个数累加而得 。 草鱼 例如一首用于 演 奏 “梁祝”乐曲 的音乐电路的 控制电路的计数器的模是 139。 草鱼草鱼 5 节拍产生电路 的计数器 , 鲤鱼 用来产生节拍定时 , 鲤
15、鱼 音符产生 模块则将 节拍产生电路 的计数器的 状态翻译成对应的音符 , 鲤鱼 假如需 演 奏 的歌曲中所用到的音符在 9到 16个之间 , 鲤鱼 则 音符产生 模块的输出信号应有四位 , 鲤鱼 其它情况 , 鲤鱼 依此类推 。 草鱼草鱼 分频系数 、 porkLED数据产生 模块则根据 音符产生 模块输出的 音符信息 , 鲤鱼 产生每个时刻提供给可控分频模块的 分频系数 、 pork提供给外围数码管的用于显示简谱音符符号的 数据 和提供给外围 LED的用于显示高低音的 数据 。 草 鱼草鱼 草鱼 草鱼 草鱼 草鱼 因此 , 鲤鱼 音乐 电路 设计总体 参考 方案 如下 : pork草鱼 草
16、鱼 图 9-1 草鱼 音乐电路设计总体 参考 方案 草鱼 其中的 两个时钟频率取值 , 鲤鱼 下面再做分析 。 草鱼草鱼 三 、 pork决策 草 鱼 本 音乐 电路 设计 重点在可控分频模块和 控制电路模块 的设计 , 鲤鱼 故只讨论这两个模块以及 顶层模块 的设计方案的选择 。 草鱼草鱼 可控分频模块设计方案的选择 草鱼 草鱼 草鱼 草鱼 草鱼( 1) 等占空比 和 非等占空比 方案选择 草鱼 可控分频电路按输出时钟的 占空比 来分 , 鲤鱼 有 等占空比 和 非等占空比 两类 方案 , 鲤鱼为了得到足够功率驱动蜂鸣器 , 鲤鱼 采用 等占空比 输出的可控分频电路方案 。 草鱼草鱼 ( 2
17、) 偶数分频 、 por k整 数分频 方案 的选择 草鱼 常见的 分频电路 有 偶数分频 、 por k奇数分频 和整 数分频 电路 , 鲤鱼 本任务从原理来看 , 鲤鱼既有 偶数分 频 又有 奇数分频 , 鲤鱼 故应属于 整 数分频 电路 。 草鱼 非等占空比 的 偶数分频 、pork奇数分频 电路有统一的设计方法并且比较简单 , 鲤鱼 但 等占空比 的 偶数分频 、 pork奇数分频 电路设计方法则不相同 。 草鱼 对于 偶数 ( 2N)的 等占空比 分频 , 鲤鱼 可先做 N非等占空比 分频 , 鲤鱼 再做 2分频 即可 , 鲤鱼 比较简单 。 草鱼 对于 等占空比 的 奇数分频 电路
18、则不能采用Clk4Hz Clk12MHz LedHigh 分频系数 、 LED数据产生模 块 可控分频模 块 节拍产生模 块 音符产生模 块 SpkOut SegCode Index Tone 6 这种方法 , 鲤鱼 比较复杂 。 草鱼 本任务可采取用较高频率(比如 12MHz)的输入时钟 , 鲤鱼这样分频比就比较大 , 鲤鱼 故对于初学者 , 鲤鱼 作为初步解决方案 , 鲤鱼 可采用 偶数 分频比近似代替 奇数分频 比的方法 , 鲤 鱼 把 整 数分频 电路变成 偶数 ( 2N) 分频 电路 , 鲤鱼 用先做 N非等占空比 分频 , 鲤鱼 再做 2分频 这种较简单的方法来设计 。 草鱼 作为
19、提高 , 鲤鱼 可采用比较复杂的真正的 整 数分频 电路设计方法设计 。 草鱼 草鱼 控制电路模块 设计方案的选择 草鱼 控制电路 模块 的核心部分 节拍产生 模块 是一个计数器 , 鲤鱼 可采用通常的方法设计 。 草鱼草鱼 音符产生 模块的输入信号是 节拍产生 模块 输出的计数值 , 鲤鱼 输出信号是表示 音符 的音符 序号 。 草鱼 在 节拍产生 模块 输出的计数值变化范围不大并且 音符产生 模块的输出数值不需灵活改变时 , 鲤鱼 可用 VHDL语句直接来描述 音符产生 模 块即可 。 草鱼 在 节拍产生模块 输出的计数值变化范围较大或 音符产生 模块的输出数值需灵活改变时 , 鲤鱼 可使
20、用 LPM_ROM来 存储对应于不同计数值的 音符 序号 。 草鱼 草鱼 VHDL输入设计法和原理图输入设计法的选择 草鱼 本任务 , 鲤鱼 底层模块采用 VHDL输入设计法较简单 , 鲤鱼 而 顶层模块 采用 VHDL输入设计法或原理图输入设计法都可 。 草鱼草鱼 四 、 p o rk实施 草鱼 下面用 用于 演 奏 “梁祝”乐曲 的音乐电路为例 , 鲤鱼 对音乐电路各模块的 实施 进行进一步的分析 。 草鱼 草鱼 (一)控制电路模块 草鱼 草鱼 草鱼 草鱼 草鱼 控制电路模块 包含 节拍产 生模块和音符产生模块 两 子 模块 , 鲤鱼 可合写成一个文件 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼
21、 1 节拍产生模块 设计分析 草鱼 根据以上分析 , 鲤鱼 此模块为一计数器 , 鲤鱼 现在需进一步决定计数器的模及其输入时钟频率 。 草鱼草鱼 根据 乐曲“梁祝”的简谱 , 鲤鱼 此乐曲以四 分音符 为一拍 , 鲤鱼 四拍为一节 , 鲤鱼 所有的音的音长的最小公因数是一个十六 分音符 时值 , 鲤鱼 所以以十六 分音符 时值作为一个状态持续时间 , 鲤鱼 把 乐曲“梁祝” 中各个音所占据状态个数累加而得知 节拍产生模块 计数器的 模是 139, 鲤鱼 其中最后休止符用了三个时间单位 。 草鱼 草鱼 7 草鱼 草鱼 草鱼 草鱼 乐曲“梁祝”的简谱 没有明确标出 演 奏速度 , 鲤鱼 根据经验设
22、定一分钟 演 奏 60拍 , 鲤鱼 因此一拍持续时间即四 分音符 的时值为一秒 , 鲤鱼 一个状态持续时间即一个十六分音符 时值为 0.25秒 。 草鱼 故 节拍产生模块 输入时钟周期为 0.25秒 , 鲤鱼 频率为 4Hz。 草鱼草鱼 2 音符产生模块 设计分析 草鱼 音符产生 模块的功能是将 节拍产生电路 的计数器的计数值 按照 乐曲“梁祝”的简谱 翻译成对应的音符 , 鲤鱼 若用 Counter表示 计数器的 状态 , 鲤鱼 Index表示音符符号 , 鲤鱼 可把 乐曲“梁祝”的简谱 出现的音规定如下 : por k草鱼 表 9-1 草鱼 音符与 Index、 por kLED数据的对应
23、关系 低音 中音 高音 音名 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 Index 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 那么 , 鲤鱼 根据 乐曲“梁祝”的简谱 可得其真值表如下 : pork草鱼 表 9-2音符产生模块 真值表 Counter:por kIndex Counter:por kIndex Counter:por kIndex Counter:por kIndex Counter:por kIndex 00: 草鱼 3 草鱼 ;por k草鱼01: 草鱼 3 草鱼 ;pork草鱼 02: 草鱼 3 草鱼 ;pork草鱼 03:
24、 草鱼 3;por k草鱼04: 草鱼 5;pork草鱼 05: 草鱼5;por k草鱼 06: 草鱼 5;pork草鱼 07: 草鱼 6;pork草鱼 08: 草鱼 8;pork草鱼 09: 草鱼 8;pork草鱼 10: 草鱼 8 草鱼 ;por k草鱼11: 草鱼 9 草鱼 ;pork草鱼 12: 草鱼 6 草鱼 ;pork草鱼 13: 草鱼 8;por k草鱼14: 草鱼 5;pork草鱼 15: 草鱼5;por k草鱼 16: 草鱼 12;por k草鱼17: 草鱼 12;pork草鱼 18: 草鱼 12;por k草鱼 19:15;por k草鱼20:13 草鱼 ;por k草鱼2
25、1:12 草鱼 ;por k草鱼22:10 草鱼 ;por k草鱼23:12;por k草鱼 24: 草鱼9;por k草鱼 25: 草鱼 9;pork草鱼 26: 草鱼 9;por k草鱼 27: 草鱼 9;por k 28: 草鱼 9;por k草鱼29: 草鱼 9;pork草鱼 30: 草鱼9 草鱼 ;pork草鱼 31: 草鱼 9 草鱼 ;por k草鱼32: 草鱼 9 草鱼 ;pork草鱼 33: 草鱼 9;por k草鱼 34: 草鱼 9;por k草鱼35:10;por k草鱼 36: 草鱼7;por k草鱼 37: 草鱼 7;pork草鱼 38: 草鱼 6;pork草鱼 39:
26、 草鱼 6;pork草鱼 40: 草鱼 5 草鱼 ;pork草鱼 41: 草鱼 5 草鱼 ;por k草鱼42: 草鱼 5 草鱼 ;pork草鱼 43: 草鱼 6;pork草鱼 44: 草鱼 8;pork草鱼 45: 草鱼 8;pork草鱼 46: 草鱼 9;pork草鱼 47: 草鱼 9;pork草鱼 48: 草鱼 3;pork草鱼 49: 草鱼 3;pork草鱼 50: 草鱼 8 草鱼 ;por k草鱼51: 草鱼 8 草鱼 ;pork草鱼 52: 草鱼 6 草鱼 ;pork草鱼 53: 草鱼 5;por k草鱼54: 草鱼 6;pork草鱼 55: 草鱼8;por k 56: 草鱼 5;
27、por k草鱼57: 草鱼 5;pork草鱼 58: 草鱼5;por k草鱼 59: 草鱼 5;pork草鱼 60: 草鱼 5 草鱼 ;pork草鱼 61: 草鱼 5 草鱼 ;por k草鱼62: 草鱼 5 草鱼 ;pork草鱼 63: 草鱼 5;por k草鱼 64:10;por k草鱼65:10;por k草鱼66:10;por k草鱼67:12;por k草鱼 68: 草鱼7;por k草鱼 69: 草鱼 7;pork草鱼 70: 草鱼 9 草鱼 ;pork草鱼 71: 草鱼 9 草鱼 ;por k草鱼72: 草鱼 6 草鱼 ;pork草鱼 73: 草鱼 8;pork草鱼 74: 草鱼
28、5;pork草鱼 75: 草鱼 5;pork草鱼 76: 草鱼 5;pork草鱼 77: 草鱼 5;pork草鱼 78: 草鱼 5;pork草鱼 79: 草鱼 5;pork草鱼 80: 草鱼 3 草鱼 ;por k草鱼81: 草鱼 5 草鱼 ;por k草鱼 82: 草鱼 3 草鱼 ;por k草鱼 83: 草鱼 3;por k 84: 草鱼 5;por k草鱼85: 草鱼 6;pork草鱼 86: 草鱼7;por k草鱼 87: 草鱼 9;pork草鱼 88: 草鱼 6;pork草鱼 89: 草鱼 6;pork草鱼 90: 草鱼 6 草鱼 ;pork草鱼 91: 草鱼 6 草鱼 ;por k
29、草鱼92: 草鱼 6 草鱼 ;pork草鱼 93: 草鱼 6;pork草鱼 94: 草鱼 5;pork草鱼 95: 草鱼 6;pork草鱼 96: 草鱼 8;pork草鱼 97: 草鱼 8;pork草鱼 98: 草鱼 8;pork草鱼 99: 草鱼 9;pork草鱼 100:12 草鱼 ;por k草鱼101:12 草鱼 ;por k草鱼102:12 草鱼 ;por k草鱼103:10;por k草鱼104: 草鱼 9;por k草鱼105: 草鱼 9;por k草鱼106:10;por k草鱼107: 草鱼 9;por k草鱼108: 草鱼 8;por k草鱼109: 草鱼 8;por k草
30、鱼110: 草鱼 6 草鱼 ;por k草鱼112: 草鱼 3 草鱼 ;pork草鱼113: 草鱼 3;por k草 鱼114: 草鱼 3;por k草鱼115: 草鱼 3;por k草鱼116: 草鱼 8;por k草鱼117: 草鱼 8;por k草鱼118: 草鱼 8;por k草鱼119: 草鱼 8;por k草鱼120: 草鱼 6 草鱼 ;por k草鱼121: 草鱼 8 草鱼 ;por k草鱼122: 草鱼 6 草鱼 ;por k草鱼123: 草鱼 5;por k草鱼124: 草鱼 3;por k草鱼125: 草鱼 5;por k草鱼126: 草鱼 6;por k草鱼127: 草鱼
31、 8;por k草鱼128: 草鱼 5;por k草鱼129: 草鱼 5;por k草鱼130: 草鱼 5 草鱼 ;por k草鱼131: 草鱼 5 草鱼 ;por k草鱼8 111: 草鱼 5 草鱼 ;por k 132: 草鱼 5 草鱼 ;por k草鱼133: 草鱼 5;por k草鱼134: 草鱼 5;por k草鱼135: 草鱼 5;por k草鱼136: 草鱼 0;por k草鱼137: 草鱼 0;por k草鱼138: 草鱼 0;por k草鱼 草鱼 草鱼 草鱼 草鱼 3 设计文件 实体描述 草鱼 两模块可合起来写成一个文件 NoteTabs.vhd, 鲤鱼 其实体描述如下 :
32、pork草鱼 LIBRARY 草鱼 ieee;pork草鱼 USE 草鱼 ieee.std_logic_1164.ALL;por k草鱼 ENTITY 草鱼 NoteTabs 草鱼 IS 草鱼 草鱼 草鱼 草鱼 草鱼 PORT 草鱼 ( 草鱼 草鱼 草鱼 clk 草鱼 : 草鱼 IN 草鱼 STD_LOGIC;por k草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Index 草鱼 : 草鱼 OUT 草鱼 草鱼 STD_LOGIC_VECTOR(3 草鱼 DOWNTO 草鱼 0) 草鱼 草鱼 );pork草鱼 END;por k草鱼 其中输入时钟信号与 Clk4Hz相
33、连 , 鲤鱼 Index 表示音符信息 。 草鱼 因为 Index 取值从 1 到15, 鲤鱼 故为 4 位二进制信号 。 草鱼草鱼 其结构体设计可参考例 9.3。 草鱼草鱼 ( 二 ) 分频系数 、 porkLED 数据产生 模块 草鱼 1 设计文件 实体描述 草鱼 此模块的功能是产生提供给可控分频模块的 分频系数 、 pork提供给外围数码管和外围LED 的 数据 。 草鱼 其实体描述如下 : pork草鱼 LIBRARY 草鱼 ieee;pork草鱼 USE 草鱼 ieee.STD_LOGIC_1164.ALL;por k草鱼 ENTITY 草鱼 ToneTaba 草鱼 IS 草鱼 草鱼
34、 草鱼 草 鱼 草鱼 PORT 草鱼 ( 草鱼 Index 草鱼 : 草鱼 草鱼 IN 草鱼 草鱼 STD_LOGIC_VECTOR 草鱼 (3 草鱼 DOWNTO 草鱼 0) 草鱼 ;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Seg 草鱼 草鱼 : 草鱼 OUT 草鱼 草鱼 STD_LOGIC_VECTOR 草鱼 (3 草鱼 DOWNTO 草鱼 0) 草鱼 ;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 草鱼 : 草鱼 OUT 草鱼 STD_LOGIC;por k 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草
35、鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Tone 草鱼 草鱼 : 草鱼 OUT 草鱼 草鱼 STD_LOGIC_VECTOR 草鱼 (10 草鱼 DOWNTO 草鱼 0) 草鱼 );pork草鱼 END;por k草鱼 草鱼 草鱼 草鱼 草鱼 其中 Index 为 4 位二进制信号 , 鲤鱼 表示音符的信息 , 鲤鱼 Seg 为 4 位二进制信号 , 鲤鱼是提供给外围数码管的用于显示简谱音符符号的 数据 , 鲤鱼 Led 是提供给外围 LED9 的用于显示高低音的 数据 。 草鱼 Tone 是供给可控分频模块的 分频系数 。 草鱼 它们的关系如 表 9-3所示 。 草鱼草鱼 2 结构体设计分析 草鱼
36、 乐曲“梁祝” 是 F 调 , 鲤鱼 其频率数据如 表 9-3所示 。 草鱼 在表中 , 鲤鱼 可控分频模块的输入时钟设为 12M 草鱼 Hz, 鲤鱼 经 前后 12 2 草鱼 分频后为 500000Hz, 草鱼 故 供给可控分频模块的 分频系数 Tone 草鱼 =211 草鱼 -500000/f。 草鱼 又考虑到最大分频比为 500000/349.2 1432, 鲤鱼 其二进制表示是 10110011000, 鲤鱼 故 可控分频模块的 计数器为 11 位 二进制计数器 。 草鱼草鱼 表 9-3 草鱼 分频系数 、 porkLED 数据产生 模块 真值表 F 调 简谱 音名 Index Seg
37、 Led 频率 f Tone 草鱼 Tone( B) 草鱼 草鱼 草鱼 低音 1 f1 1 0001 0 349.2 616 01001101000 2 g1 2 0010 0 392.0 773 01100000101 3 a1 3 0011 0 440.0 912 01110010000 4 b1b 4 0100 0 466.2 976 01111010000 5 c2 5 0101 0 523.3 1092 10001000100 6 d2 6 0110 0 587.3 1197 10010101101 7 e2 7 0111 0 659.3 1290 10100001010 草鱼 草鱼
38、 草鱼 草鱼 草鱼 中音 1 f2 8 0001 1 698.5 1372 10101011100 2 g2 9 0010 1 784.0 1410 10110000010 3 a2 10 0011 1 880.0 1480 10111001000 4 b2b 草鱼 11 0100 1 932.3 1512 10111101000 5 c3 12 0101 1 1047 1570 11000100010 6 d3 13 0110 1 1175 1622 11001010110 7 e3 14 0111 1 1319 1668 11010000100 高音 1 f3 15 0001 1 1397
39、 1690 11010011010 这是一个简单的组合逻辑模块 , 鲤鱼 其 VHDL描述比较简单 , 鲤鱼 这里不再介绍 。 草鱼草鱼 ( 三 ) 可控分频模块 草鱼 草鱼 草鱼 草鱼 草鱼 此模块的功能是用一个可控分频电路来产生 演奏 音乐所需的每个音 。 草鱼 可控分频模块 实体描述如下 : por k草鱼 LIBRARY 草鱼 ieee;pork草鱼 USE 草鱼 ieee.std_logic_1164.ALL;por k草鱼 USE 草鱼 IEEE.std_logic_unsigned.ALL;por k草鱼 ENTITY 草鱼 Speakera 草鱼 IS草鱼 草鱼 草鱼 草鱼 草
40、鱼 PORT 草鱼 ( 草鱼 草鱼 草鱼 clk 草鱼 草鱼 : 草鱼 IN 草鱼 STD_LOGIC;por k草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Tone 草鱼 : 草鱼 IN 草鱼 STD_LOGIC_VECTOR 草鱼 (10 草鱼 DOWNTO 草鱼 0);pork草鱼 10 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 SpkS 草鱼 : 草鱼 OUT 草鱼 STD_LOGIC 草鱼 草鱼 );pork草鱼 END;por k草鱼 作为初步解决方案 , 鲤鱼 采用 偶数 分频比近似代替 奇数分频 比的方
41、法 , 鲤鱼 把 整 数分频 电路变成 偶数分频 电路来设计 。 草鱼草鱼 可控分频模块 是一个具有 12预 分频 和 2后分频的可控分频电路 。 草鱼 可控分频模块 的输入时钟 clk频率选 12MHz, 鲤鱼 为了使 可控分频模块 分频系数取值范围 比较合适 , 鲤鱼输入时钟先 经 12 草鱼 分频 , 鲤鱼 同时为了使输出信号 SpkS具有较高的驱动功率 , 鲤鱼 可控分频 后再经 2分频 , 鲤鱼 使输出信号 SpkS具有 50%的占空比 , 鲤鱼 从而具有 较高的驱动功率 。草鱼草鱼 可控分频模块的输入时钟为 12M 草鱼 Hz, 鲤鱼 经前后 12 2 草鱼 分频后为 500000
42、Hz,应根据此频率来计算各音的分频系数 , 鲤鱼 计算中对小数四舍五入 。 草鱼 这相当于 把 整 数分频 电路变成 偶数 ( 2N) 分频 电路 , 鲤鱼 用先做 N非等占空比 分频 , 鲤鱼 再做 2分频 这种较简单的方法来设计 。 草鱼 根据 最大分频比 的 二进制表示的位数来确定可 控分频 电路 的 计数器的 位 数 。 草鱼 例如 乐曲“梁祝” , 鲤鱼 最大分频比为 500000/349.2 1432, 鲤鱼 其二进制表示是 10110011000, 鲤鱼 故可控分频模块的 计数器为 11位二进制计数器 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 分频电路的描述与计数器电路相似 , 鲤鱼
43、 下面进程描述一个 12分频 电路 。 草鱼 草鱼 PROCESS(clk)草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 VARIABLE 草鱼 Count4 草鱼 : 草鱼 STD_LOGIC_VECTOR 草鱼 (3 草鱼 DOWNTO 草鱼 0) 草鱼 ;pork草鱼 草鱼 草鱼 草鱼 草鱼 BEGIN草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 PreCLK 草鱼 11 草鱼 THEN 草鱼 PreCLK 草鱼 = 草鱼 1;pork 草鱼 草鱼 Count4 草鱼 := 草鱼 “0000“;por k草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ELSIF 草鱼 clkEVENT 草鱼 AND 草鱼 clk 草鱼 = 草鱼 1 草鱼 THEN 草鱼 草鱼 Count4 草鱼 := 草鱼 Count4 草鱼 + 草鱼 1;pork 草鱼 草鱼 草鱼 草鱼 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 END 草鱼 IF;pork草鱼 草鱼 草鱼 草鱼 草鱼 END 草鱼 PROCESS;pork草鱼 可控分频模块 结构体中其他部分代码如 可控分频 电路进程和后两分频电路进程的描述可参考例 9.2。 草鱼草鱼 ( 四 )顶 层模块 草鱼 顶层模块 的功能是把以上各个模块组装起来构成一个完整的电路 。 草鱼 顶层模 块 可用
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。