乐曲硬件演奏电路设计
乐曲硬件电路演奏设计
![乐曲硬件电路演奏设计](https://img.taocdn.com/s3/m/c1c6c23ebed5b9f3f80f1c1f.png)
乐曲硬件电路演奏设计一、设计要求①了解元件例化语句的调用;②掌握自顶向下的数字系统设计方法;③了解乐器硬件演奏电路的工作原理;④能够播放“梁祝”乐曲。
二、设计过程2.1设计原理2.1.1 乐曲的发声原理组成乐曲的2个基本要素是:每个音符的发音频率值及其持续的时间(节奏)。
一般人能听到声音的频率范围约在几十到几千赫兹,可以利用程序控制FPGA某个引脚输出一定频率的矩形波,接上扬声器后就能发出相应频率的声音,演奏某个音符的音调。
同时,若能控制每个音符的持续时间,也就控制了乐曲的节奏,因此只要控制输出到扬声器的信号频率的高低以及每个信号持续的时间长短,即可实现乐曲的演奏。
2.1.2 音符与频率的关系乐曲的12平均率规定;每2个八度(如简谱中的中音1与高音1)之间的频率相差1倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为12/2。
另外,音符A的频率为440HZ,音符B到C之间,E 到F之间为半音,其余为全音。
由此可以计算出简谱中低音l至高音1之间每个音符的频率。
设计音符查找表电路模块,时钟模块,数控分频器模块,音乐节拍产生模块电路。
2.1.3 音符的获得方法所有不同频率的信号都可以从同一个系统基准频率分频而来,可以采用GENERIC类属语句,预置不同频率音符信号根据系统基准频率值计算分频系数(分频系数=系统基准频率/音符频率)由于个音符对应的频率为非整数,而分频系数必须为整数型,故要四舍五入取整,得到不同频率的音符。
2.1.4乐曲节奏的控制每个音符持续的时间是乐曲连续播放的另一个基本要素,如果采用1MHz的频率作为系统基准频率,则需要对1MHz的信号进行250000分频得到4Hz信号作为一个四分音符的频率。
对于其他占用时间较长的节拍(必须是四分之一拍的整数倍)则只需要将该音符连续输出相应遍数即可。
2.2设计方案2.2.1简谱码对应的分频预置数查表电路音符的持续时间根据乐曲的速度及每个音符的节拍来确定,模块ToneTaba的功能首先是为Spearkera提供决定所发音符的分频预置数,而此数在Spearkera输入口停留的时间即为音符的节拍值,然后模块ToneTaba是乐曲简谱码对应的分频预置数查表电路,其中设置了“梁祝”乐曲全部音符所对应的分频预置数共13个。
eda乐曲硬件演奏电路课程设计
![eda乐曲硬件演奏电路课程设计](https://img.taocdn.com/s3/m/3359328a85254b35eefdc8d376eeaeaad1f316e3.png)
eda乐曲硬件演奏电路课程设计一、课程目标知识目标:1. 学生能够理解EDA乐曲硬件演奏电路的基本原理,掌握电路组成及各部分功能。
2. 学生能够描述常见电子元件在演奏电路中的作用,并运用相关知识分析电路性能。
3. 学生能够掌握编程软件及硬件设计工具,完成简单的EDA乐曲演奏电路设计。
技能目标:1. 学生能够运用所学知识,独立完成演奏电路的搭建与调试。
2. 学生能够通过编程软件,编写简单的乐曲程序,实现乐曲演奏。
3. 学生能够运用团队协作能力,共同解决演奏电路设计过程中遇到的问题。
情感态度价值观目标:1. 学生通过本课程的学习,培养对电子技术和音乐艺术的热爱,提高审美情趣。
2. 学生在学习过程中,养成积极探究、勇于创新的精神,增强实践操作能力。
3. 学生能够认识到科技与艺术的结合在生活中的应用,增强社会责任感和团队合作意识。
课程性质:本课程为实践性较强的课程,结合电子技术与音乐艺术,旨在培养学生的动手能力、创新思维和团队协作能力。
学生特点:本年级学生具备一定的电子技术基础知识,对音乐艺术有一定兴趣,好奇心强,善于动手实践。
教学要求:教师应注重理论与实践相结合,引导学生积极参与实践操作,鼓励学生创新思维,提高团队协作能力。
同时,关注学生的个体差异,因材施教,确保每位学生都能在课程中收获成长。
二、教学内容本课程教学内容主要包括以下三个方面:1. 理论知识学习:- 电路基础知识:回顾电路的基本概念、原理及电路图的识别。
- 电子元件介绍:学习常用电子元件的原理、功能及在演奏电路中的应用。
- EDA软件使用:介绍编程软件及硬件设计工具的使用方法,如Multisim、Proteus等。
2. 实践操作能力培养:- 电路搭建:学习演奏电路的搭建方法,熟悉各类电子元件的连接方式。
- 程序编写:编写简单的乐曲程序,掌握编程技巧,实现乐曲演奏。
- 调试与优化:对搭建的演奏电路进行调试,找出问题并进行优化。
3. 创新思维与团队协作:- 设计实践:运用所学知识,小组合作完成指定乐曲的演奏电路设计。
乐曲硬件演奏电路的EDA设计 曹圣洁
![乐曲硬件演奏电路的EDA设计 曹圣洁](https://img.taocdn.com/s3/m/53dc52a41a37f111f1855bc8.png)
乐曲硬件演奏电路的EDA设计摘要可编程逻辑器件(简称PLD)是一种由用户编程来实现某种逻辑功能的新型逻辑器件,主要包括FPGA和CPLD两大类。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
FPGA/CPLD最明显的特点是高集成度、高速度和高可靠性,其时钟延时可小至纳秒级,集合器并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。
在高可靠领域,如果设计的得当,将不会存在类似于MCU的复位不可靠和PC的可能跑飞等问题。
FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓的片上系统,从而大大的缩小的体积,易于管理和屏蔽。
硬件的乐曲演奏电路是用FPGA将50M 时钟进行分频,两路的分频分别产生节拍和音调。
随着时间的推移节拍计数信号会记录当前在乐谱中的位置,根据当前的位置会将音调控制的信号数组置成乐谱上的音调,挂载信号数组上面的音调发生器会产生相应的音调,其中为增加音乐的效果信号数组上挂载了一个8个LED控制器,不同的音调灯的亮灭的组合会各不同会产生看似随机的等组合实际灯亮的组合根据音调的确定是固定的。
此现场可编程门阵列的程序是演奏生日快乐的乐曲的。
下面会有他的乐谱。
关键词FPGA,CPLD, 乐曲演奏电路,音乐节拍发生器,音乐译码电路,可编程逻辑器件分频器。
- I -沈阳工程学院课程设计(论文)AbstractProgrammable logic devices (hereinafter referred to as PLD) is a kind of programming by the user to achieve a certain logic function of the new logic devices, including two kinds of FPGA and CPLD. FPGA and CPLD were field programmable gate array and complex programmable logic device referred to as. FPGA/CPLD the most obvious characteristic is high integration, high speed and high reliability, the clock time delay can be small to nanosecond level, collector parallel work way, in the ultra high speed applications and real-time measurement and control aspects has a very broad application prospects. In the field of high reliability, if the design is proper, there will not be similar to the MCU reset is not reliable and PC can be run problems such as fly. FPGA/CPLD high reliability as well as in almost the whole system can be download from the same chip, so as to realize the so-called chip system, thus greatly reduced volume, easy to management and shielding. The music of hardware circuit is playing with FPGA will fifty m clock for crossover, two-way crossover respectively produce rhythm and tone. With the passage of time beat count signal will record the current position of the music, according to the current position will tone control signal array set to music on the tones, mount signal array the tone generator can produce corresponding tones, the music to increase the effect of array signal on mount a eight LED controller, different tones lamp light out of the different combination will can produce a seemingly random combined the actual combination of light according to determine the tone is fixed. The field programmable gate array program is playing the music of happy birthday. Below will have his music.Keywords FPGA, FPGA, CPLD, music performance, music beat generator circuit, music decoding circuit, programmable logic devices frequency divider.- II -乐曲硬件演奏电路的EDA设计目录摘要 (I)ABSTRACT (II)1引言 (1)1.1EDA技术的发展 (1)1.2硬件描述语言的产生 (1)1.3VHDL语言特点 (1)1.4EDA的发展趋势 (1)2乐曲演奏系统设计原理分析 (3)2.1乐曲演奏基本要求 (3)2.2乐曲演奏原理 (3)3系统硬件设计 (6)3.1现场可编程门阵列(FPGA) (6)3.1.1 FPGA的基本结构 (6)3.1.2 Altera公司的FPGA (6)3.2FLEX系列的结构特点 (7)3.2.1 概述 (7)3.2.1 FLEX的特点 (7)4乐曲硬件演奏电路的VHDL实现 (8)4.1音乐节拍的生成 (8)4.2乐谱的生成 (8)4.3音调的生成 (10)4.4乐曲硬件演奏电路完整硬件电路程序设计和仿真 (11)总结 (16)致谢 (17)参考文献 (18)- III -乐曲硬件演奏电路的EDA设计1引言1.1EDA技术的发展人类社会已经进入到高度发达的信息化社会,信息社会的发展离不开电子产的进步。
乐曲硬件演奏电路设计
![乐曲硬件演奏电路设计](https://img.taocdn.com/s3/m/a1ee450b326c1eb91a37f111f18583d049640fb6.png)
目录目录 0前言: (1)1.题目分析 (1)1.1 功能要求 (1)1.2 性能指标 (1)2.设计方案 (2)2.1顶层实体描述 (2)2.2模块划分 (3)2.3模块描述 (3)2.3.1 Speakera模块 (3)2.3.2 ToneTaba模块 (3)2.3.3 NoteTabs模块 (4)2.4顶层电路图 (5)3.方案实现 (5)3.1 NoteTabs模块仿真及描述 (5)3.2 ToneTaba模块仿真及描述 (5)3.3 Speakera模块仿真及描述 (6)3.4顶层电路仿真及描述 (6)4.硬件测试及说明 (6)5.结论 (7)6.课程总结 (7)7.附录 (8)前言:这次设计实验我做的是乐曲硬件演奏电路设计,通过在系统编程技术课程的学习,我已经学会了用VHDL语言来实现系统要求的电路设计。
VHDL语言具有良好的电路行为描述和系统描述的能力,用VHDL语言进行电子系统的设计非常方便和实用,而基于VHDL的自顶向下的设计方法是其很大的一个优点。
1.题目分析1.1 功能要求(1)播放歌曲(2)简谱码输出显示在数码管显示(3)通过LED灯显示音阶1.2 性能指标(1)乐曲硬件演奏电路的基本原理乐曲都是由一连串的音符组成,每一音符对应着一个确定的频率,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。
我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,所以,掌握好一首歌曲的节奏,就能完整地演奏出来。
(2)音符频率和乐曲节奏多个不同频率的信号可通过对某个基准频率进行分频器获得,本设计中选取750KHz的基准频率,由于clk端输入的是较高频率12MHz信号,可以对其进行16分频。
计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。
基于FPGA的音乐硬件演奏电路设计与实现(一)
![基于FPGA的音乐硬件演奏电路设计与实现(一)](https://img.taocdn.com/s3/m/65e8a3268e9951e79b8927ee.png)
基于FPGA的音乐硬件演奏电路设计与实现(一)
1 系统的设计要求
应用VHDL 硬件描述语言,设计一个乐曲硬件演奏电路,它能将一首预先设置存储好的乐曲自动播放出来,除此之外,也能够通过按键的方式输入音符,使其具备简易电子琴的功能。
通过此项研究,能够深切的体会利用EDA 工具开发的优越性,在此基础上,对乐曲硬件演奏电路功能进行丰富,具有一定的社会实用性。
根据硬件演奏电路的功能进行全局分析,采用自上至下的设计方法,从系统总体要求出发,逐步将设计内容细化,最后完成系统结构的整体设计。
将功能分为以下几个部分,1)实现预先设置乐曲的播放功能;2)实现预置乐曲的暂停和继续播放实时控制功能;3)实现预置多首乐曲间的切换功能。
预置乐曲,本文选取了《梁祝》的一段作预置,作预置时,需要将乐曲音符转换成相应的代码,通过计算逐一将音符转换成代码,通过EDA 开发平台quartusii6.0 进行乐曲定制。
为了提供乐曲发音所需要的发音频率,编写数控分频器程序,对单一输入高频,进行预置数分频,生成每个音符发音的相应频率。
为了给分频提供预置数,需要计算分频预置数。
对每部分结构单元逐一进行编译,生成相应的元器件符号,并对独立结构单元功能进行仿真。
2 系统的详细设计方案
2.1 顶层实体描述
按照EDA 开发流程,采用VHDL 硬件描述语言开发,将乐曲硬件演奏电路设计进行模块化分解,层次化设计,分成几个单独的结构体,每个结构体实现。
电子课程设计EDA课程设计乐曲硬件演奏电路
![电子课程设计EDA课程设计乐曲硬件演奏电路](https://img.taocdn.com/s3/m/452d4ef0e2bd960591c6779b.png)
电子课程设计——乐曲硬件演奏电路设计学院太原科技大学华科学院专业、班级电子信息工程姓名学号指导教师2011年12月目录一、设计任务与要求 (3)二、总框体图 (3)三、选择器件 (4)四、功能模块 (4)一、音乐数据模块 (4)二、音符控制输出模块 (7)3、音符译码模块 (8)4、数控分频器模块 (11)五、分频器模块 (12)六、译码模块 (13)五、整体设计电路图 (15)一、整体电路原理图……………………………15二、管脚分派图……………………………153、电路仿真结果 (15)4、硬件验证 (16)六、设计心得 (17)七、附录 (19)乐曲硬件演奏电路设计一、设计任务与要求:一、实验内容利用可编程逻辑器件FPGA,设计乐曲硬件演奏电路,可自动演奏乐曲。
二、实验要求(1)利用数控分频器设计硬件乐曲演奏电路。
(2)利用给定的音符数据定制ROM“music”。
(3)设计乘法器逻辑框图,并在QuartusII上完成全部设计。
(4)将音乐通过实验箱上的喇叭播放出来。
(5)与演奏发音相对应的简谱码输出在数码管上显示。
二、整体框图设计思路:C调音阶频率表:同的预置数即可发出不同频率的声音。
由此,可以以此为设计基础。
设计一功能模块,能够将乐曲中的音符一一以对应的频率以预置数的形式置入数控分频计中,即可利用该数控分频计产生不同的声音,演奏出设定好的音乐。
ROM 中的音乐数据文件刚可由编辑好的音符填入MIF 文件中再定制LPM_ROM 将音符数据加载入ROM 中,并设计程序在运行时自动读取ROM 中的文件并置入数控分频器中。
当采用四四拍曲子时,每节拍持续时间为秒。
置入数控分频器的速度也应与此同步或一致,避免音乐过快或过快慢而失真。
由已知的C 调音阶频率表,各频率对应的预置数就与数控分频推动蜂鸣器发作声音的频率对应。
在编写数控分频器时,不仅要考虑预置数的输入方式,还要考虑输入的速度,和驱动蜂鸣器发声的频率。
EDA实验报告5_乐曲硬件演奏电路设计
![EDA实验报告5_乐曲硬件演奏电路设计](https://img.taocdn.com/s3/m/70fcf4252f60ddccda38a0b1.png)
EDA技术与应用实验报告姓名学号专业年级电子信息工程实验题目乐曲硬件演奏电路设计实验目的1.学习利用数控分频器设计硬件乐曲演奏电路2.掌握模块化和层次化的设计方法以及音符编码的设计思想实验原理1.一定频率的矩形波通过扬声器可以发出相应频率的声音,乐曲是由一系列的音符组成的。
所以,如果我们通过控制每个音符的发音频率值及其持续的时间,就可以以纯硬件的手段,利用这些数值来实现所希望演奏的乐曲。
2.该硬件演奏电路由三个模块构成<1>音符数据ROM的地址发生器模块NoteTabs.vhdl内置8位二进制计数器,作为ROM的地址发生器,计数频率4Hz,即每一计数值的停留时间为0.25s,恰为全音符设为1s时,四四拍的4音符持续时间。
随着NoteTabs中的计数器按4Hz的时钟速率作加法计数即地址值递增时,ROM中的音符数据将通过ToneIndex[3..0]输向ToneTaba模块,乐曲即开始演奏起来。
<2>乐曲简谱码对应的分频预置数查表电路模块ToneTaba.vhdlToneTaba为Speakera提供决定所发音符的分频预置数,此数在Speakera输入口停留的时间即为此音符的节拍值。
输入Index[3..0]可确定乐曲全部音符所对应的分频预置数(13个)每一音符的停留时间由NoteTabs模块的clk决定(4Hz)。
<3>决定每一个音符音调的数控分频器模块Speakera.vhdl输入端clk输入一较高频率(12MHz)的信号,经Speakera分频,再经2分频以展宽脉冲后,由SpkOut输出。
11位预置数Tone[10..0]决定由clk输入信号的分频比,SpkOut输出的频率决定每一音符的音调。
实验内容1.定制存放LPM-ROM模块Music,在连续地址上存放乐曲的音符数据,2.用vhdl文本输入法和元件例化语句完成NoteTabs.vhdl的设计,该模块包含音符数据ROM模块Music.vhdl3.完成ToneTaba.vhdl的设计,此模块给数控分频模块提供每个音符所对应的分频预置数,即计数初值4.完成Speakera.vhdl的设计,该模块是一个初值可变的加法计数器。
实验硬件乐曲自动演奏电路实施方案
![实验硬件乐曲自动演奏电路实施方案](https://img.taocdn.com/s3/m/0d4ce028fad6195f312ba6ea.png)
验十硬件乐曲自动演奏电路设计1、实验目地:学习利用数控分频器设计硬件电子琴实验.实验仪器:PC机,操作系统为Windows2000/xp,Quartus II 5.1 设计平台,GW48系列SOPE/EDA实验开发系统.3、实验原理:本设计乐曲选取《梁祝》中化蝶部分,其简谱如图1所示.图1 《梁祝》中化蝶部分简谱组成乐曲地每个音符地发音频率值及其持续地时间是乐曲能连续演奏所需地2个基本要素,首先让我们来了解音符与频率地关系.乐曲地12平均率规定:每2个八度音(如简谱中地中音1与高音1)之间地频率相差1倍.在2个八度音之间,又可分为12个半音,每2个半音地频率比为.另外,音符A(简谱中地低音6)地频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音.由此可以计算出简谱中从低音1至高音1之间每个音符地频率,如表1所示.表1 简谱中音符与频率地关系主系统由4个模块组成;例1-1是顶层设计文件,其内部有三个功能模块(如图2所示):Tone.VHD(例1-2)和Speaker.VHD(例1-3)及Notetabs.VHD(例1-4).模块TONE是音阶发生器,当4位发声控制输入INDEX中某一位为高电平时,则对应某一音阶地数值将从端口TONE输出,作为获得该音阶地分频预置值;同时由CODE输出对应该音阶简谱地显示数码,如‘5’,并由HIGH输出指示音阶高8度显示.由例6-28可见,其语句结构只是类似与真值表地纯组合电路描述,其中地音阶分频预置值,如Tone <= 1290是根据产生该音阶频率所对应地分频比获得地.图2 硬件电子琴电路结构模块SPEAKER中地主要电路是一个数控分频器,它由一个初值可预置地加法计数器构成,当模块SPEAKER由端口TONE获得一个2进制数后,将以此值为计数器地预置数,对端口CLK12MHZ输入地频率进行分频,之后由SPKOUT向扬声器输出发声.模块NOTETABS,用于产生节拍控制(INDEX数据存留时间)和音阶选择信号,即在NOTETABS模块放置一个乐曲曲谱真值表,由一个计数器地计数值来控制此真值表地输出,而由此计数器地计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件地乐曲自动演奏电路.试完成此项设计,并在EDA实验系统上地FPGA目标器件中实现之.5、实验内容:编译适配以上4个示例文件,给出仿真波形,最后进行下载和硬件测试实验.建议使用实验电路模式“3”(附图2-5),用短路帽选择“CLOCK9”地输入频率选择12MHz,此信号作为系统输入信号CLK12MHZ;CLK8HZ与clock2相接,接受4Hz频率;键8至键1 作为INDEX输入信号控制各音阶;选择数码管1显示琴音简谱码,发光管D1显示高8度.6、思考题1:例1-3中地进程DelaySpkS对扬声器发声有什么影响?7、思考题2:电路上应该满足哪些条件,才能用数字器件直接输出地方波驱动扬声器发声?8、实验报告:用仿真波形和电路原理图,详细叙述硬件电子琴地工作原理及其4个VHDL 文件中相关语句地功能,叙述硬件实验情况..附录;【例10-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TOP IS -- 顶层设计PORT ( CLK12MHZ : IN STD_LOGIC;CLK8HZ : IN STD_LOGIC;CODE1 : OUTINTEGERRANGE 0 TO 15;HIGH1,SPKOUT : OUT STD_LOGIC);END;ARCHITECTURE one OF TOP ISCOMPONENT TonePORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); --11位2进制数 END COMPONENT;COMPONENT SpeakerPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#; --11位2进制数 SpkS : OUT STD_LOGIC );END COMPONENT;component NotetabsPort ( clk :in std_logic;index0 : out INTEGERRANGE 0 TO 15);end component;SIGNAL Tone2 : INTEGERRANGE0 TO 16#7FF#;SIGNAL Indx: INTEGERRANGE 0 TO 15;BEGIN -- 安装U1, U2, U3u1 : Tone PORT MAP (Index=>Indx, Tone=>Tone2,CODE=>CODE1,HIGH=>HIGH1); u2 : Speaker PORT MAP (clk=>CLK12MHZ,Tone1=>Tone2, SpkS=>SPKOUT );u3 : Notetabs PORT MAP(clk=>CLK8HZ,Index0=>Indx);END;【例10-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tone ISPORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUTINTEGERRANGE0 TO 16#7FF# );END;ARCHITECTURE one OF Tone ISBEGINSearch : PROCESS(Index)BEGINCASE Index IS -- 译码电路,查表方式,控制音调地预置数 WHEN 0=>Tone <= 2047; CODE <= 0; HIGH <= '0';WHEN 1=>Tone <= 773; CODE <= 1; HIGH <= '0';WHEN 2=>Tone <= 912; CODE <= 2; HIGH <= '0';WHEN 3=>Tone <= 1036; CODE <= 3; HIGH <= '0';WHEN 5=>Tone <= 1197; CODE <= 5; HIGH <= '0';WHEN 6=>Tone <= 1290; CODE <= 6; HIGH <= '0';WHEN 7=>Tone <= 1372; CODE <= 7; HIGH <= '0';WHEN 8=>Tone <= 1410; CODE <= 1; HIGH <= '1';WHEN 9=>Tone <= 1480; CODE <= 2; HIGH <= '1';WHEN 10=>Tone <= 1542; CODE <= 3; HIGH <= '1';WHEN 12=>Tone <= 1622; CODE <= 5; HIGH <= '1';WHEN 13=>Tone <=1668; CODE <= 6; HIGH <= '1';WHEN 15=>Tone <= 1728; CODE <= 1; HIGH <= '1';WHEN OTHERS =>NULL;END CASE;END PROCESS;END;【例10-3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speaker ISPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#;SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speaker ISSIGNAL PreCLK , FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk) -- 将CLK进 11分频,PreCLK为C L 11K 6分频VARIABLE Count4 : INTEGERRANGE 0 TO 15;BEGINPreCLK <= '0';IF Count4 > 11 THEN PreCLK <= '1'; Count4 := 0;ELSIF clk'EVENT AND clk='1' THEN Count4 := Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone1)VARIABLE Count11 : INTEGERRANGE0 TO 16#7FF#;BEGIN -- 11位可预置计数器IF PreCLK'EVENT AND PreCLK = '1' THENIF Count11=16#7FF# THEN Count11 := Tone1; FullSpkS <= '1'; ELSE Count11:=Count11 + 1; FullSpkS <= '0';END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkS'EVENT AND FullSpkS = '1' THEN Count2 := NOT Count2;IF Count2 = '1' THEN SpkS <= '1';ELSE SpkS <= '0';END IF;END IF;END PROCESS;END;【例10-4】library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Notetabs isPort ( clk: in std_logic; --系统时钟;键盘输入/自动演奏 index0 : out INTEGER RANGE 0 TO 15); --音符信号输出end NOTETABS;architecture Behavioral of Notetabs issignal count0:integer range 0 to 138;--changebeginmusic:process(clk) --此进程完成自动演奏部分曲地地址累加beginif clk'event and clk='1' thenif count0=138 then count0<=0;else count0<=count0+1;end if;end if;end process;com1:process(count0)begincase count0 is --此case语句:存储自动演奏部分地曲when 00 =>index0<=3;when 01 =>index0<=3;when 02 =>index0<=3;when 03 =>index0<=3;when 04 =>index0<=5;when 05 =>index0<=5;when 06 =>index0<=3;when 07 =>index0<=6;when 08 =>index0<=8;when 09 =>index0<=8;when 10 =>index0<=8;when 11 =>index0<=9;when 12 =>index0<=6;when 13 =>index0<=8;when 14 =>index0<=5;when 15 =>index0<=5;when 16 =>index0<=12;when 17 =>index0<=12;when 18 =>index0<=12;when 19 =>index0<=15;when 20 =>index0<=13;when 21 =>index0<=12;when 22 =>index0<=10;when 23 =>index0<=12;when 25 =>index0<=9; when 26 =>index0<=9; when 27 =>index0<=9; when 28 =>index0<=9; when 29 =>index0<=9; when 30 =>index0<=9; when 31 =>index0<=0; when 32 =>index0<=9; when 33 =>index0<=9; when 34 =>index0<=9; when 35 =>index0<=10; when 36 =>index0<=7; when 37 =>index0<=7; when 38 =>index0<=6; when 39 =>index0<=6; when 40 =>index0<=5; when 41 =>index0<=5; when 42 =>index0<=5; when 43 =>index0<=6; when 44 =>index0<=8; when 45 =>index0<=8; when 46 =>index0<=9; when 47 =>index0<=9; when 48 =>index0<=3; when 49 =>index0<=3; when 50 =>index0<=8; when 51 =>index0<=8; when 52 =>index0<=6; when 53 =>index0<=5; when 54 =>index0<=6; when 55 =>index0<=8; when 56 =>index0<=5; when 57 =>index0<=5; when 58 =>index0<=5; when 59 =>index0<=5; when 60 =>index0<=5; when 61 =>index0<=5; when 62 =>index0<=5; when 63 =>index0<=5; when 64 =>index0<=10; when 65 =>index0<=10; when 66 =>index0<=10; when 67 =>index0<=12;when 69 =>index0<=7; when 70 =>index0<=9; when 71 =>index0<=9; when 72 =>index0<=6; when 73 =>index0<=8; when 74 =>index0<=5; when 75 =>index0<=5; when 76 =>index0<=5; when 77 =>index0<=5; when 78 =>index0<=5; when 79 =>index0<=5; when 80 =>index0<=3; when 81 =>index0<=5; when 82 =>index0<=3; when 83 =>index0<=3; when 84 =>index0<=5; when 85 =>index0<=6; when 86 =>index0<=7; when 87 =>index0<=9; when 88 =>index0<=6; when 89 =>index0<=6; when 90 =>index0<=6; when 91 =>index0<=6; when 92 =>index0<=6; when 93 =>index0<=6; when 94 =>index0<=5; when 95 =>index0<=6; when 96 =>index0<=8; when 97 =>index0<=8; when 98 =>index0<=8; when 99 =>index0<=9; when 100=>index0<=12; when 101=>index0<=12; when 102=>index0<=12; when 103=>index0<=10; when 104=>index0<=9; when 105=>index0<=9; when 106=>index0<=10; when 107=>index0<=9; when 108=>index0<=8; when 109=>index0<=8; when 110=>index0<=6; when 111=>index0<=5;when 113=>index0<=3;when 114=>index0<=3;when 115=>index0<=3;when 116=>index0<=8;when 117=>index0<=8;when 118=>index0<=8;when 119=>index0<=8;when 120=>index0<=6;when 121=>index0<=8;when 122=>index0<=6;when 123=>index0<=5;when 124=>index0<=3;when 125=>index0<=5;when 126=>index0<=6;when 127=>index0<=8;when 128=>index0<=5;when 129=>index0<=5;when 130=>index0<=5;when 131=>index0<=5;when 132=>index0<=5;when 133=>index0<=5;when 134=>index0<=5;when 135=>index0<=5;when 136=>index0<=0;when 137=>index0<=0;when 138=>index0<=0;when others => null;end case;end process;end Behavioral;版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.Zzz6Z。
乐曲硬件演奏电路设计毕业
![乐曲硬件演奏电路设计毕业](https://img.taocdn.com/s3/m/d9393f48f90f76c660371aa2.png)
乐曲硬件演奏电路设计毕业电子技术课程设计————乐谱演奏电路设计学院:电子工程与电气自动化学院专业、班级:电子科学与技术(1)班姓名: 王志愿学号:12021034指导教师: 常红霞2014年12月目录一:设计任务要求 (2)1:课程设计题目 (2)2:设计分析 (2)3:工程设计总述 (5)二:总体框图 (8)三:选择器件 (9)四:功能模块:(①模块图形、②程序、③功能仿真图、④功能仿真图分析) (9)1:分频器(div) (9)2:计数器(notetabs) (11)3:选择模块(choice) (12)4:数据翻译模块(tontaba) (14)5:译码器模块(deled) (16)6:数控分频器模块(speakera) (17)7:乐谱数据ROM(四个模块) (19)8:地址线的选择 (27)9:led数码管位选功能的解决方案 (28)五:总体设计电路图…………………………………………28六:六:结束语 (29)乐谱演奏电路设计摘要设计了一种基于FPGA的乐谱演奏,该乐谱演奏由用Verilog硬件描述语言设计的核心部件和适当的外围电路构成,可从蜂鸣器上进行演奏也可自动行乐曲演奏。
基于FPGA(现场可编程门阵列)芯片,利用Verilog语言,介绍了一种通用乐曲演奏电路的设计,可实现多个八度音阶的乐曲演奏,与简谱的对应关系简单,编程方便,占用资源少,通用性好,可作为IP core模块引用,构成复杂的SOPC系统.关键词:乐谱演奏;现场可编程门阵列(FPGA);智力产权核(IP core);超高速集成电路硬件描述语言(Verilog);乐曲AbstractAn electronic piano is designed based on FPGA,which consists of core paris that designed by using Verilog hardware description languages,as well as some periphery circuits.The musical perform ance can be donenot only by keys but also with automatic type in the electronic piano. Based on FPGA,by Verilog language,this paper introduces a universal music circuit design,it can play high,middle and low multiple tonality,simple corresponding relation with simple musical notation,which programs easily using little resource.It can be used universally for IP core in making complicated SOPC system. Key words:electronic piano;Field Programmable Gate Array(FPGA);Intelligence Property core(IP core) ;Very-High-Speed Integrated Circuit Hardware Description Language(Verilog);music一、设计任务要求1、课程设计题目设计一个乐曲演奏电路,能够自动播放编写好的音乐。
硬件乐曲演奏电路设计
![硬件乐曲演奏电路设计](https://img.taocdn.com/s3/m/431edbf05ebfc77da26925c52cc58bd630869376.png)
硬件乐曲演奏电路设计近年来,随着科技的不断进步和人们对音乐的追求,硬件乐曲演奏电路的设计变得越来越重要。
这种电路的设计可以帮助音乐家们在演奏过程中更加准确地控制乐曲的各个要素,从而达到更高的演奏技巧和音乐表达。
硬件乐曲演奏电路设计主要包括硬件设备的选择和电路的构建。
首先,音乐家需要选择适合自己演奏风格和需求的硬件设备,例如乐器、效果器和控制器等。
这些设备的品质和功能对于演奏效果起着至关重要的作用。
因此,在选择硬件设备时,音乐家需要考虑其音质、响应速度和稳定性等因素。
其次,音乐家还需要根据自己的需求来设计电路。
这包括选择合适的电路元件和构建电路板等。
在设计电路时,音乐家需要考虑到乐曲演奏的各个要素,如音高、音量、音色和音效等。
通过合理的电路设计,音乐家可以实现对这些要素的精确控制,从而达到更好的演奏效果。
在硬件乐曲演奏电路设计中,还需要考虑到电路的可持续性和可靠性。
音乐演奏往往需要长时间的连续使用,因此电路的稳定性和耐用性非常重要。
音乐家需要选择高品质的电子元件和合适的电路布局,以确保电路的可靠性和稳定性。
此外,随着科技的进步,现代硬件乐曲演奏电路设计还可以结合计算机和软件技术。
通过将电路与计算机系统相连接,音乐家可以使用各种软件来实现更多的音乐效果和功能。
例如,可以使用音频处理软件来实现混响、合成和效果等功能,从而扩展音乐演奏的可能性。
总之,硬件乐曲演奏电路设计对于音乐家们的演奏技巧和音乐表达至关重要。
通过选择适合自己需求的硬件设备和设计合理的电路,音乐家可以实现对乐曲各个要素的准确控制,达到更高水平的演奏效果。
随着科技的发展,硬件乐曲演奏电路设计还将与计算机和软件技术相结合,为音乐家们带来更多的创新和可能性。
基于EDA的乐曲硬件演奏电路
![基于EDA的乐曲硬件演奏电路](https://img.taocdn.com/s3/m/ac012e2b647d27284b735188.png)
6.4乐曲硬件演奏电路EDA设计6.4.1 设计要求利用可编程逻辑器件FPGA,设计一个乐曲硬件演奏电路。
由键盘输入控制音响,同时可自动演奏乐曲。
演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个小扬声器。
其结构如图6-34所示,该设计产生的音乐选自"梁祝"片段。
图6-34 乐曲演奏电路结构方框图6.4.2 原理描述产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
根据6.4.1的设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。
数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。
乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。
1 音名与频率的关系音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍.在两个八度音之间,又可分为十二个半音,每两个半音的频率比为4。
另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音,由此可以计算出简谱中从低音1到高音1之间每个音名的频率如表6-3所示.由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。
若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。
实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。
本例中选取4MHz的基准频率,若无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。
各音阶频率及相应的分频系数如表6-4所示。
乐曲硬件演奏电路的VHDL设计报告
![乐曲硬件演奏电路的VHDL设计报告](https://img.taocdn.com/s3/m/8151c09951e79b8968022622.png)
EDA课程设计题目:乐曲硬件演奏电路的VHDL设计专业:通信工程班级:通信071姓名:葛鹏学号:0710920101一、设计题目:乐曲硬件演奏电路的VHDL设计二、设计目标:了解一般乐曲演奏电路设计设计方法,学习VHDL语言,熟悉EDA设计软件QuartusII和MAX+plusⅡ,加强独立完成电子设计的能力。
(1)能够播放“梁祝”乐曲。
(2)能够通过LED显示音阶。
(3)(选作)具有“播放/停止”功能,并在此基础上实现“按键演奏”的电子琴功能。
主芯片型号为FLEX10K10LC84-4三、实验电路的工作原理:(演奏电路逻辑图)组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能够连续演奏所需的两个基本要素,设计演奏电路的关键就是获得这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
演奏电路逻辑图有三部分:音乐节拍和音调发生器、简谱码对应的分频预置数查表电路、数控分频与演奏发生器。
演奏电路逻辑图:四、设计内容:1.完成程序的编辑工作。
2.将音乐数据制作成LMP_ROM文件.3.将程序加载到MAX+plusⅡ中进行编译、仿真,并保存仿真结果。
4.到实验室进行下载验证。
引脚进行锁定,然后下载到实验芯片中观察实验结果。
五、仿真结果:1.音乐节拍和音调发生器(NoteTabs.VHD)notetabs模块中设置了一个8位二进制计数器(计数最大值138),作为音符数据ROM的地址发生器。
这个计数器的计数频率选为4Hz,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。
随着notetabs模块中的计数器按4Hz的时钟速率作为加法计数时,即随地址值递增时,音符数据ROM中的音符数据将从ROM中通过ToneIndex[3..0]端口输向ToneTaba模块,“梁祝”乐曲就开始连续自然的演奏起来了。
Notetabs模块仿真图:2.简谱码对应的分频预置数查表电路(ToneTaba.VHD)音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,tonetaba模块的功能首先是为speakera提供决定所发音符的预置数,而此数在speakera输入口停留的时间即为此音符的节拍值。
EDA课程设计——乐曲硬件演奏电路资料
![EDA课程设计——乐曲硬件演奏电路资料](https://img.taocdn.com/s3/m/b9381ac667ec102de3bd8952.png)
«电子技术基础皿》项目设计报告课程名称____________________________任课教师____________________________设计题目乐曲硬件演奏电路设计班级姓名学号成绩日期题目分析1■设计要求利用FPGA,设计一硬件乐曲硬件演奏电路,能够利用硬件电路,自动播放音乐。
2■题目分析乐曲是由一连串的音符组成,而每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基本因素。
所以,设计音乐发生电路,需要得到相应音符的频率值,及其持续时间。
如果能够得到这两个基本元素,利用程序来控制FPGA 某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
所以,获取这两个要素是本实验的关键。
(1) 频率值频率的高低决定了音调的高低。
由于乐曲都是由一连串的音符组成,因此按照乐曲的乐谱,依次输出这些音符相对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。
简谱的音名与频率的关系如下表:表1简谱中的音名与频率的关系这次设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s 的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4Hz 的时钟频率即可产生四分音符的时长。
系统工作时就按4Hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,如果在曲谱文件中某个音符为三拍音长,只要将该音符连续书写三遍,系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,这样就可以控制音乐的音长了。
二、设计方案1■顶层实体描述音乐播放器,是能够演奏一曲完整的乐曲,在外部时钟的作用下,产生相应频率的方波信号,即在乐曲中对应相应的音符。
并且信号要持续一定的时间,即对应乐曲中的节拍。
得到了音调和节拍后,就可以组成相应的乐曲了。
138个音符,所以此计Music 模块存放乐曲的音符数据。
乐曲硬件演奏电路设计
![乐曲硬件演奏电路设计](https://img.taocdn.com/s3/m/0195183acaaedd3383c4d369.png)
目录一:设计任务要求 (2)1:课程设计题目 (2)2:设计分析 (2)3:工程设计总述 (5)二:总体框图 (8)三:选择器件 (9)四:功能模块:(①模块图形、②程序、③功能仿真图、④功能仿真图分析) (9)1:分频器(div) (9)2:计数器(notetabs) (11)3:选择模块(choice) (12)4:数据翻译模块(tontaba) (14)5:译码器模块(deled) (16)6:数控分频器模块(speakera) (17)7:乐谱数据ROM(四个模块) (19)8:地址线的选择 (27)9:led数码管位选功能的解决方案 (28)五:总体设计电路图................................................28六:六:结束语 (29)乐曲硬件演奏电路设计一、设计任务要求1、课程设计题目设计一个乐曲演奏电路,能够自动播放编写好的音乐。
要求将音乐通过实验箱上的喇叭播放出来,用发光二级管显示出乐曲的节拍。
(附加功能:本设计在题目所要求的功能全部实现的基础之上又添加了许多附加功能,所有的功能将在“工程设计总述”中阐明,特此声明。
)2、设计分析(1)音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
乐曲硬件演奏电路设计-verilog
![乐曲硬件演奏电路设计-verilog](https://img.taocdn.com/s3/m/98d28bfc4b73f242326c5f81.png)
EDA技术及创新实践(设计报告)题目: 乐曲硬件演奏电路设计姓名: 漩涡鸣人学院: 数理与信息工程学院专业: 电子科学与技术班级: 112 学号: 1886****20 指导教师: 汤大智2014年6 月一、设计目的及要求实验目的:1、理解音乐演奏的原理及分频器的原理与使用。
2、了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。
3、培养自主学习、正确分析和解决问题的能力。
要求:利用分频器设计硬件乐曲演奏电路;能通过数码管显示动态效果;通过一个开关实现两首乐曲的切换;在音乐播放的同时,会有led流水灯的闪烁。
二、设计原理乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。
图1、顶层模块图其中,乐谱产生电路用来控制音乐的音调和音长。
控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。
控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。
每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。
1、音调的控制频率的高低决定了音调的高低。
音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。
在两个8度音之间,又可分为12个半音,每两个半音的频率比为12√2。
另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。
由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表2所示:表2简谱中的音名与频率的关系所有不同频率的信号都是从同一个基准频率分频得到的。
由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。
EDA课程设计——乐曲硬件演奏电路
![EDA课程设计——乐曲硬件演奏电路](https://img.taocdn.com/s3/m/6cfb5d3c83c4bb4cf7ecd160.png)
《电子技术基础Ⅲ》项目设计报告课程名称任课教师设计题目乐曲硬件演奏电路设计班级姓名学号成绩日期一、题目分析1.设计要求利用FPGA,设计一硬件乐曲硬件演奏电路,能够利用硬件电路,自动播放音乐。
2.题目分析乐曲是由一连串的音符组成,而每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基本因素。
所以,设计音乐发生电路,需要得到相应音符的频率值,及其持续时间。
如果能够得到这两个基本元素,利用程序来控制FPGA 某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
所以,获取这两个要素是本实验的关键。
(1)频率值频率的高低决定了音调的高低。
由于乐曲都是由一连串的音符组成,因此按照乐曲的乐谱,依次输出这些音符相对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。
简谱的音名与频率的关系如下表:表1 简谱中的音名与频率的关系(2)时长这次设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4Hz 的时钟频率即可产生四分音符的时长。
系统工作时就按4Hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,如果在曲谱文件中某个音符为三拍音长,只要将该音符连续书写三遍,系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,这样就可以控制音乐的音长了。
二、设计方案1.顶层实体描述音乐播放器,是能够演奏一曲完整的乐曲,在外部时钟的作用下,产生相应频率的方波信号,即在乐曲中对应相应的音符。
并且信号要持续一定的时间,即对应乐曲中的节拍。
得到了音调和节拍后,就可以组成相应的乐曲了。
2.模块划分采用“自顶向下”的设计方法,将音乐播放器模块主要划分为地址发生模块、数控分频模块、music 模块和预置数模块。
(1)地址发生模块:增地址计数器,用于产生地址数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南人文科技学院课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:乐曲硬件演奏电路设计系别:通信与控制工程系专业:电子信息工程班级:08电信二班学生姓名: 王世伟朱彩虹学号:08409249 08409231起止日期:2011年06月13日~20年06月26日指导教师:姚毅成继中教研室主任:侯海良摘要乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。
FPGA预装了很多已构造好的参数化库单元LPM 器件。
通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
本课设在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,并定制LPM-ROM存储音乐数据,以“两只老虎”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改LPM-ROM所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新定制LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。
关键词:FPGA;EDA;VHDL;音乐目录设计要求 (1)1、方案论证与对比 (1)1.1方案一 (1)1.2方案二 (1)1.3综合对比 (1)2 乐曲演奏电路原理 (2)2.1 音乐演奏电路原理 (2)2.2 音符频率的获得 (2)2.3 乐曲节奏的控制 (3)2.4 乐谱发生器 (3)2.5 乐曲演奏电路原理框图 (3)3音乐硬件演奏电路的设计实现 (4)3.1 地址发生器模块 (4)3.1.1 地址发生器的VHDL设计 (4)3.2 分频预置数模块 (6)3.2.1 分频预置数模块的VHDL设计 (6)3.3 数控分频模块 (8)3.3.1 数控分频模块的VHDL设计 (8)3.4 music模块 (10)3.4.1 音符数据文件 (10)3.5.2 LPM-ROM定制 (12)3.6 顶层文件 (14)4 时序仿真及下载调试过程 (16)4.1 时序仿真图 (16)4.2 引脚锁定以及下载 (17)4.3调试过程及结果 (17)5扩大乐曲硬件演奏电路的通用性 (18)5.1 完善分频预置数模块的功能 (18)设计总结与心得体会 (21)参考文献 (22)乐曲硬件演奏电路设计设计要求利用FPGA,设计一个乐曲硬件演奏电路。
乐曲的12平均率规定:每2个八度(如简谱中的中音1与高音1)之间的频率相差1倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为12/2。
另外,音符A的频率为440HZ,音符B到C之间,E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音l至高音1之间每个音符的频率。
设计音符查找表电路模块,时钟模块,数控分频器模块,音乐节拍产生模块电路。
1、方案论证与对比1.1方案一利用FPGA来实现乐曲硬件演奏电路。
乐曲的12平均率规定:每2个八度(如简谱中的中音1与高音1)之间的频率相差1倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为12/2。
另外,音符A的频率为440HZ,音符B到C之间,E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音l至高音1之间每个音符的频率。
设计音符查找表电路模块,时钟模块,数控分频器模块,音乐节拍产生模块电路。
1.2方案二制作一个纯硬件电路来完成乐曲演奏。
1.3综合对比与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
所以选择方案一。
2 乐曲演奏电路原理2.1 音乐演奏电路原理图1 电路原理框图该主系统由三个模块:Songer顶层文件、div分频器、译码器组成。
且Songer 顶层文件还包括3个子文件分别是NoteTabs,ToneTaba和Speakera,此外,我们还需建立一个名为“music”的LPM_ROM模块与NoteTabs模块连接。
2.2 音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本文中选取750KHz的基准频率。
由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。
对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。
为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。
由于最大分频系数是1274,故分频器采用11位二进制计数器才能满足要求。
2.3 乐曲节奏的控制本课设的两只老虎乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。
计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。
2.4 乐谱发生器本文将乐谱中的音符数据存储在LPM-ROM中,如“两只老虎”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在LPM-ROM中连续的四个地址上都存储。
当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。
2.5 乐曲演奏电路原理框图我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,问题是如何来获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
图1中,模块U1类似于弹琴人的手指;U2类似于琴键;U3类似于琴弦或音调发声器。
音符的频率可以由图1中的SPEAKERA获得,这是一个数控分频器。
由其clk端输入一具有较频率(这里是12MHz)的信号,通过SPEAKERA分频后由SPKOUT输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/2。
SPEAKERA对clk输入信号的分频比由11位预置数Tone[10..0]决定。
SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT的输出频率,就有了对应关系。
音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定,图1中模块TONETABA的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKERA输入口停留的时间即为此音符的节拍值。
输向TONETABA中Index[3..0]的值ToneIndex[3..0]的输出值与持续的时间由模块NOTETABS决定。
在NOTETABS中设置了一个8位二进制计数器,作为音符数据ROM的地址发生器。
得到乐曲演奏电路的原理框图如图1所示:图1 电路原理图3音乐硬件演奏电路的设计实现音乐硬件演奏电路主要是用VHDL语言来设计,并利用QuartusII软件工具来编译、测试和仿真。
根据顶层原理图,共分为地址发生器模块、分频预置数模块、数控分频模块这三个模块。
而music模块是存放乐曲中的音符数据,在我们的顶层原理图中并没有显示出来,地址发生器模块作为music模块中所定制的音符数据ROM的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供计数初值。
数控分频模块根据分频预置数输出各个音符所对应的频率。
3.1 地址发生器模块地址发生器模块设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。
每来一个时钟脉冲信号(Clk),8位二进制计数器就计数一次,ROM文件中的地址也就随着递增,音符数据ROM中的音符也就一个接一个连续的取出来了。
3.1.1 地址发生器的VHDL设计这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒,四四拍的4分音符持续时间。
例如,地址发生器在以下的VHDL逻辑描述中,“两只老虎”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间。
那么相应随着程序中的计数器按4Hz的时钟频率作加法计数时,即随地址递增时,将从音符数据ROM中将连续取出4个音符“3”通过toneindex[3..0]端口输向分频预置数模块。
这样两只老虎乐曲中的音符就一个接一个的通过toneindex[3..0]端口输向分频预置数模块。
程序如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISPORT (clk: IN STD_LOGIC;ToneIndex:OUT STD_LOGIC_VECTOR (3 DOWNTO 0));END;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSICPORT (address: IN STD_LOGIC_VECTOR(7 DOWNTO 0);inclock: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));END COMPONENT;SIGNAL Counter: STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINCNT8: PROCESS(clk,Counter)BEGINIF Counter=138 THEN Counter<="00000000";ELSIF (clk'EVENT AND clk='1') THEN Counter<=Counter+1;END IF;END PROCESS;u1:MUSICPORT MAP(address=>Counter,q=>ToneIndex,inclock=>clk);END one;程序的功能是每来一个时钟,地址值递增1,并将这个地址上所存储的音符数据输出。