云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > FPGA课程设计(最终版)

FPGA课程设计(最终版)

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 14:41:25

武汉理工大学FPGA应用课程设计

音名 中音1 中音2 中音3 中音4 中音5 中音6 中音7 低音5 频率/Hz 523 578 659 698 784 880 988 392 分频系数 7648 6920 6069 5730 5102 4545 4048 10204 音名 高音1 高音2 高音3 高音4 高音5 高音6 高音7 低音6 频率/Hz 1047 1175 1319 1397 1586 1760 1976 440 分频系数 3820 3404 3032 2863 2522 2272 2024 9090 表2-2 各音名对应的分频系数

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数。如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。

至于音长的控制,在自动演奏模块,每个乐曲的音符是按地址存放的,播放乐曲时按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。如果乐谱中某个音符为三拍音长,那又该如何控制呢?其实只要在3个连续地址存放该音符,这时就会发三个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。

2.3系统组成及工作原理

2.3.1系统组成

整个系统由乐曲自动演奏模块、音调发生器模块和数控分频器模块三个部分组成。乐曲自动演奏模块又包含了键盘的编码,并且设置了一个自动演奏/键盘输入切换auto。乐曲自动演奏模块的作用是产生发声控制输入信号。音调发生器根据发声控制输入产生获得音阶的分频预置值(即分频系数)。数控分频器根据分频预置值对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。系统组成框图如图2-1所示。

6

武汉理工大学FPGA应用课程设计

自动演奏/按键输入选择32MHz系统时钟数控分频器扬声器 音符显示乐曲自动演奏音调发生器高低音显示 键盘[7:0]图2-1系统组成框图

2.3.2系统工作原理

系统的基准时钟脉冲为32MHz,所以在本设计中需要将其进行分频,以得到所需要的脉冲来发出相应的音符。键盘输入一共有9个按键,除了8个音符对应的按键之外,还设置一个自动演奏/键盘输入切换auto,它不是一个单独的模块,它和其他按键一起包含在乐曲自动演奏模块中,作用相当于一个开关。

当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,自动演奏模块以4Hz的频率输出8位发声控制输入信号,再送入音调发生器。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将在端口tone输出,该数值即为该音阶的分频预置值,音调发生器还输出音符显示信号、高低音显示信号。最后由数控分频模块按照音调发生器输出的分频预置值进行分频,得到存储的乐曲的音符的频率,之后由扬声器输出对应的声调。

auto=“1”时,选择键盘输入的信号,8个按键分别对应8个音符,自动演奏模块将按键输入转化为8位发声控制输入信号送入音调发生器,最后通过数控分频模块得到按键对应的音符的频率,之后由扬声器输出对应的声调。

7

武汉理工大学FPGA应用课程设计

3系统模块设计

3.1顶层模块的设计

VHDL采用的是自顶向下的设计方式,顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。其中乐曲自动演奏部分(automusic)又包括了键盘编码,还设置了一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择由键盘输入的信号,再对其进行编码。两种情况下输出的都是八位二进制数,对应音调发生器的输入。图3-1即是顶层模块设计原理图。

图3-1顶层模块设计原理图

3.2乐曲自动演奏模块的设计

为了实现电子琴的功能要求,需要设计一个自动演奏模块,该模块的作用是产生8位发声控制输入index。当auto为“0”或“1”时可以选择自动演奏或者键盘输入,如果auto为“0”,则由存储在此模块中的8位二进制数来作为发声控制输入index,由此便可自动演奏乐曲;当auto为“1”时,则由键盘的输入转化为8位2进制数作为发声控制输入index。此模块的VHDL语言中包括三个进程,首先是对基准脉冲进行分频得到4Hz的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间,此处便是1/4=0.25s;第二个进程完成自动演奏部分乐曲的地址累加;第3个进程是输出

8

武汉理工大学FPGA应用课程设计

存储的自动演奏的乐曲或键盘输入的发声控制输入index。乐曲自动演奏模块如图3-2所示。

图3-2乐曲自动演奏模块

3.3音阶发生器模块的设计

音阶发生器的作用是产生获得音阶的分频预置值。当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将以端口tone输出,作为获得该音阶的分频预置值,该值作为数控分频器的输入,来对4MHz的脉冲进行分频,由此得到每个音阶相应的频率,例如输入index=\,即对应的按键是2,产生的分频系数便是6920由code输出对应该音阶简谱的显示数码;由high输出指示音阶高8度的显示,高电平有效。音阶发生器如图3-3所示。

图3-3音阶发生器模块

3.4数控分频器模块的设计

数控分频模块的目的是对基准脉冲分频,得到0,1,2,3,4,5,6,7七个音符对应频率。该模块的VHDL描述中包含了三个进程。首先对32MHz的基准脉冲进行分频得到8MHz

9

搜索更多关于: FPGA课程设计(最终版) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

武汉理工大学FPGA应用课程设计 音名 中音1 中音2 中音3 中音4 中音5 中音6 中音7 低音5 频率/Hz 523 578 659 698 784 880 988 392 分频系数 7648 6920 6069 5730 5102 4545 4048 10204 音名 高音1 高音2 高音3 高音4 高音5 高音6 高音7 低音6 频率/Hz 1047 1175 1319 1397 1586 1760 1976 440 分频系数 3820 3404 3032 2863 2522 2272 2024 9090 表2-2 各音名对应的分频系数 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数。如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com