基于vhdl语言的音乐发生器

合集下载

(完整word版)基于VHDL的简易音乐播放器

(完整word版)基于VHDL的简易音乐播放器

EDA技术实用教程课程设计简易音乐播放器电子12-11206040124简易音乐播放器设计1.MIDI概述MIDI(Musical Instrument Digital Interface)乐器数字接口,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。

MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。

它用音符的数字控制信号来记录音乐.一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。

MIDI应用也比较广泛,电视晚会的音乐编导可以用MIDI功能辅助音乐创作,或按MIDI标准生成音乐数据传播媒介,或直接进行乐曲演奏.如果在计算机上装备了高级的MIDI软件库,可将音乐的创作、乐谱的打印、节目编排、音乐的调整、音响的幅度、节奏的速度、各声部之间的协调、混响由MIDI来控制完成.利用MIDI技术将电子合成器、电子节奏机(电子鼓机)和其他电子音源与序列器连接在一起即可演奏模拟出气势雄伟、音色变化万千的音响效果,又可将演奏中的多种按键数据存储起来,极大的改善了音乐演奏的能力和条件。

2.工作原理MIDI 音乐是Windows下的一种合成音乐,由于它通过记谱的方式来记录一段音乐.因此与wave音乐相比,它可以极大的减少存储容量。

MIDI 音乐的基本原理为:组成乐曲的每一个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和每一个频率信号持续时间,就可以使扬声器发生连续的乐曲。

图1 是歌曲《生日快乐歌》开头一句的简谱。

由图1 可知,该乐典涉及:中音5,6 ,7 ;高音1,2,3,4,5 .以此为例下面介绍在本音乐发生器芯片中音乐的形成过程。

前两个音符为中音5 ,1/16 音符,它对应的编码为1000 ,所占的脉冲个数为2 ,这样逐个将以上的简谱翻译成代码如下:|1000 1000 1001 1001 1000 1000 |1011 1011 1010 1010 1010 1010||1000 1000 1001 1001 1000 1000 |1100 1100 1011 1011 1011 1011||1000 1000 1111 1111 1101 1101 |1011 1011 1010 1010 1001 1001||1110 1110 1101 1101 1011 1011 |1100 1100 1011 1011 1011 1011|图1 《生日快乐歌》歌谱在节奏时钟脉冲的控制下,将每个代码所对应的分频系数逐一赋给基频,得到对应的音调,这样连续起来就形成一段美妙的音乐。

Verilog_HDL综合设计实例(自动乐曲演奏)

Verilog_HDL综合设计实例(自动乐曲演奏)
tclk
Place & Route
Timing Analysis
基于FPGA的乐曲自动演奏器设计
FPGA
产生音符所对应频率的方波信号
在输入参考频率fc=3MHz时, 计算简谱中所有音符的分频系 数。
实际上,只要各个 音符之间的相对频率关 系不变,演奏出的音乐 听起来就不会“走调”。
1. 一.设计目的与要求
音名显示电路用来显示乐曲演奏时对应的 音符。可以用3个数码管,分别显示高、 中、低音的音名,实现演奏的动态显示, 十分直观。在本例中,high[3:0]、 med[3:0]、low[3:0]等信号分别用于显示高 音、中音、低音音符。为了使演奏能循环 进行,需另外设置一个时长计数器,当乐 曲演奏完成时,保证能自动从头开始演奏。

4)12MHz分频成1mhz波形分频器,源代码和顶层模块如下: //12mhz分成1mhz的分频模块,提供给quma模块 module div_clk1mhz(clk_12mhz,clk_1mhz); input clk_12mhz; output clk_1mhz; reg clk_1mhz; reg [21:0] cnt; always @(posedge clk_12mhz) if(cnt<5) cnt=cnt+1; // (12mhz/1mhz=12,cnt<[12/2-1=5]) else begin cnt=0; clk_1mhz =! clk_1mhz; end Endmodule
用纯硬件完成乐曲演奏电路的设计与利用微处 理器(CPU)实现相比逻辑要复杂得多,如不借助 于功能强大的EDA工具和硬件描述语言,仅凭传 统的数字逻辑技术,即使最简单的演奏电路也难以 实现。

VHDL音乐播放器

VHDL音乐播放器

洛阳理工学院课程设计报告课程名称 EDA技术与VHDL设计题目音乐播放器的设计与仿真专业通信工程班级 B1105学号 B1105姓名完成日期 2014年12月22日前言随着科学技术的进步,电子器件和电子系统设计方法日新月异,电子设计自动化(Electronics Design Automation,EDA)技术正是适应了现代电子产品设计的要求,吸收了多学科最新成果而形成的一门新技术。

现如今掌握EDA技术是电子信息类专业的学生、工程技术人员所必备的基本能力和技能。

传统电子电路的设计,首先要对系统进行分析,然后按功能对系统进行划分,接下来就要选择特定芯片,焊接成PCB电路板,最后对成品PCB电路板进行调试。

这样的设计没有灵活性可言,搭成的系统需要的芯片种类多且数目大,而且对于电路图的设计和电路板的设计都需要很大的工作量,工作难度也很高。

随着可编程器件和EDA技术的发展,传统设计的劣势被克服,采用可编程逻辑器件基于芯片的设计方法,期间的内部逻辑和引脚可以由设计者自行决定,提高了设计的灵活性和工作效率;同时,将系统集成在一个芯片上的设计,使系统具有体积小、功耗低、可靠性高等特点。

EDA技术即电子设计自动化技术,它是以可编程逻辑器件(PLD)为载体,以硬件描述语言(HDL)为主要的描述方式,以EDA软件为主要的开发软件的电子设计过程。

它主要采用“自顶向下”的设计方法,设计流程主要包括:设计输入、综合、仿真、适配、下载。

EDA技术主要有以下特征:(1)高层综合的理论和方法取得进展,从而将EDA设计层次由RT级提高到了系统级,并推出了系统级综合优化工具,缩短了复杂ASIC的设计周期。

(2)采用硬件描述语言来描述10万门以上的设计,并形成了VHDL和Verilog-HDL两种标准硬件描述语言。

(3)采用平面规划技术对逻辑综合和物理版图设计联合管理,做到在逻辑设计综合早期阶段就考虑到物理设计信息的影响。

(4)可测性综合设计。

基于VHDL语言信号发生器的设计.EDA课程设计

基于VHDL语言信号发生器的设计.EDA课程设计

基于VHDL语言信号发生器的设计1、设计目的1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。

2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。

3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计2、设计的主要内容和要求通过使用VHDL语言及Quartus II软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。

信号发生器:体现在它能自动的实现四种波形的转换。

根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求:1、设计好用于波形切换的四路数据选择器selector4_1;2、设计好用于总电路设计的各个信号输出模块;3、设计好数模(D/A)转换器。

3、整体设计方案基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。

信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。

最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。

用示波器测试D/A转换器的输出,可以观测到4种信号的输出。

时钟信号信号产生信号控制D/A转换输出信号选择信号图3.1信号发生器结构框图通过查找资料把各类信号模块的程序输入到Quartus Ⅱ中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。

基于VHDL语言的简易信号发生器

基于VHDL语言的简易信号发生器

基于VHDL语言的简易信号发生器1设计方案1.1??系统功能要求函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等波形的电路。

函数信号发生器在电路实验和设备检测中具有十分广泛的用途。

现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。

1.2??总体框图(。

2??2.1BEGINBEGINIFclrn='0'THENtmp:="00000000";ELSIFclk'EVENTANDclk='1'THENIFf='0'THENIFTHENf:='1';ELSEtmp:=tmp+1;ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";f:='0';ELSEtmp:=tmp-1;ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDa;2.2方波模块该模块部分VHDL源程序如下: LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENDIF;BEGINENDIF;ENDIF;ENDa;2.3LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYsinISPORT(clk,clrn:INSTD_LOGIC;q:OUTINTEGERRANGE255DOWNTO0); ENDsin; ARCHITECTUREAOFsinISBEGINPROCESS(clk,clrn)VARIABLEtmp:INTEGERRANGE63DOWNTO0;BEGINIFclrn='0'THENq<=0;tmp:=0;ELSEIFclk'EVENTANDclk='1'THENIFtmp=63THENtmp:=0;ELSEtmp:=tmp+1;ENDIF;CASETMPISWHEN00=>q<=255;WHEN01=>q<=254;WHEN02=>q<=252;WHEN03=>q<=249; WHEN04=>q<=245;WHEN05=>q<=239;WHEN06=>q<=233;WHEN07=>q<=225;ENDIF;ENDIF;ENDa;2.4ENTITYsig_controlISPORT(delta,square,sin:INSTD_LOGIC;d0,d1,d2:INSTD_LOGIC_VECTOR(7DOWNTO0);q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDsig_control;ARCHITECTUREbehaveOFsig_controlISSIGNALsel:STD_LOGIC_VECTOR(2DOWNTO0);BEGINsel<=delta&square&sin;PROCESS(sel)BEGINCASEselISWHEN"100"=>q<=d0;WHEN"010"=>q<=d1;WHEN"001"=>q<=d2;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDbehave;3仿真波形及分析各部分模块完成后,用Quartus对程序编译、仿真、得到的仿真波形,各模块仿真波形及顶层仿真波形如下:3.13.23.3clkclrnQ[7..0]。

eda创新性实验--梁祝音乐发生器

eda创新性实验--梁祝音乐发生器

学年__学期创新性实验研究报告实验项目名称_乐曲硬件演奏电路设计--“梁祝”音乐发生器设计组长姓名学号联系电话E-mail成员姓名学号专业班级导教师及职称年月日一、实验摘要乐曲演奏广泛用于自动答录装置、手机铃声、集团电话及智能仪器仪表设备。

实现方法有很多,随着EDA设计工具更新换代,功能日益普及与流行,使这种方案应用越来越多。

本次创新性实验在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,就达到了以纯硬件的手段来实现乐曲的演奏效果。

二、实验目的深入理解数控分频器的设计原理,学会采用QuartusII工具,利用VHDL语言实现一个乐曲硬件演奏电路,并且在试验箱上进行验证,综合实验系统的使用方法,熟悉创新性实验报告的撰写方法。

三、实验场地及仪器、设备和材料:实验场地:DSP实验室实验仪器、设备:计算机、QuartusII软件、EDA试验箱四、实验内容1、实验原理1.1实验总体结构框图图1-1 总体框图1.2总体硬件乐曲演奏电路结构图1-2 硬件乐曲演奏电路结构该主系统由3个模块组成:分别是NoteTabs模块,ToneTaba模块,Speakera模块。

音符控制输出模块NoteTabs的功能描述:该模块的功能就是定义音符数据ROM“music”随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据ROM中的音符数据将从ROM中通过ToneIndex[3..0]端口输向ToneTaba模块,演奏《梁祝》。

在该模块中设置了一个8位二进制计数器(计数最大值为138),作为音符数据ROM的地址发生器。

这个计数器的计数频率为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。

音符译码模块ToneTaba,是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs的CLK的输入频率决定,这些值由对应于ToneTaba的4位输入值Index[3..0]确定,最多有16种可选值。

第4章应用VHDL设计数字系统-电子琴和音乐播放器的设计

第4章应用VHDL设计数字系统-电子琴和音乐播放器的设计

CLK
IF EN = '1' THEN
--检测是否允许计数(同步使能)
IF CNTI < 9 THEN --检测是否小于9
RST
CNTI := CNTI + 1; --小于9,允许加1计数
EN
ELSE
CNTI := (OTHERS =>‘0’); --大于等于9,计数值清零 END IF;
inst
END IF;
END IF;
IF CNTI = 9 THEN COUT <= ‘1’; --计数等于9,输出进位信号
ELSE COUT <= '0';
END IF;
CNT <= CNTI; --将计数值向端口输出
END PROCESS;
END behav;
CNT[3..0] COUT
项目1:电子琴的设计
仿真结果:10进制计数器设计
结论: 计数器就可以完成分频器的任务!
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
CNT_N CLK
RST
ENTITY CNT_N IS PORT (
CNT[11..0] COUT
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
ARCHITECTURE behav OF CNT_N IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0);

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现

简易电子琴的VHDL仿真与实现随着科技的发展,电子琴已成为一种十分普及的音乐乐器。

除了可以通过购买市面上的电子琴来使用外,我们还可以自己动手制作一台简易的电子琴。

本文将介绍使用VHDL仿真与实现一台简易电子琴的方法。

首先,我们需要了解VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。

VHDL可以描述数字电路和系统的行为、结构和时间性质,并且可以转化为硬件和软件实现。

因此,我们可以使用VHDL来描述电子琴的结构和行为,然后将其实现在FPGA上。

在电子琴的设计中,我们需要考虑最基础的功能:音符的产生和声音的输出。

因此,我们需要将电子琴拆分成两部分来考虑:输入和输出。

输入部分主要负责产生音符,音符的产生需要考虑按键的位置、按键的压力等因素。

由于VHDL主要用来描述数字电路,我们可以将输入部分简化为一组称为“开关矩阵”的二维数组。

在这个开关矩阵中,我们可以设置每个按键的位置和状态(即是否按下),并通过数字电路来判断按键状态的变化。

输出部分则负责将产生的声音输出到扬声器上。

在FPGA 中,我们可以通过PWM(Pulse-Width Modulation)技术来实现声音的输出。

PWM技术可以将模拟信号转化为数字信号,然后通过FPGA输出数字信号的高低电平来模拟模拟信号的频率和幅度,从而实现声音的输出。

接下来,我们需要考虑如何将输入和输出部分结合起来。

我们可以将输入部分和输出部分放在同一个模块中,并通过端口来连接。

在这个模块中,我们可以设置一个时钟,根据时钟的脉冲来判断按键状态是否改变,并且触发PWM来输出声音。

在设计完成后,我们需要进行VHDL仿真来验证我们的电子琴是否正确。

仿真可以模拟电路的行为和输出,以验证电路是否按照预期工作。

我们可以通过仿真来测试输入部分的工作状态,例如测试按键是否可以正确响应。

同时,我们也可以测试输出部分的工作状态,例如测试声音的频率和幅度是否符合预期。

VHDL音频发生器课程设计

VHDL音频发生器课程设计

VHDL音频发生器课程设计一、课程目标知识目标:1. 学生能理解VHDL语言的基本语法和结构,掌握利用VHDL进行数字电路设计的基本方法。

2. 学生能掌握音频发生器的原理,了解其工作流程及组成结构。

3. 学生能运用VHDL语言编写程序,实现一个简易的音频发生器。

技能目标:1. 学生能够运用所学知识,使用VHDL设计并实现音频发生器,提高实际操作能力。

2. 学生通过课程学习,培养解决实际问题的能力,学会查阅资料、分析问题、设计方案、调试程序等过程。

情感态度价值观目标:1. 学生在学习过程中,培养对电子设计、编程的兴趣和热情,提高创新意识和团队协作精神。

2. 学生能够认识到电子技术在现实生活中的应用,增强对科技发展的关注,培养社会责任感和使命感。

本课程针对高中年级学生,结合电子技术课程内容,以VHDL语言为基础,设计一个音频发生器。

课程性质为实践性、综合性,注重培养学生的动手能力和实际问题解决能力。

在教学过程中,要求教师引导学生积极参与,注重启发式教学,鼓励学生提出问题、解决问题,从而实现课程目标。

通过本课程的学习,学生能够达到以上所述的知识、技能和情感态度价值观目标,为后续相关课程学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. VHDL语言基础:讲解VHDL的基本语法、数据类型、运算符、信号与变量等,对应教材第1章内容。

2. 数字电路设计原理:介绍数字电路设计的基本概念、原理和方法,重点讲解时钟信号、触发器、计数器等基本电路,对应教材第2章内容。

3. 音频发生器原理:分析音频发生器的工作原理、组成结构以及关键参数,对应教材第3章内容。

4. VHDL程序设计:结合实际案例,教授如何利用VHDL语言编写程序,实现数字电路的设计,对应教材第4章内容。

5. 音频发生器设计与实现:引导学生运用所学知识,设计并实现一个简易的音频发生器,包括程序编写、调试与优化等,对应教材第5章内容。

6. 实践操作与总结:安排学生进行实践操作,培养动手能力,并对设计过程中遇到的问题进行总结和分析,提高解决问题能力。

课程设计(论文)基于vhdl的简易乐曲演奏器的设计

课程设计(论文)基于vhdl的简易乐曲演奏器的设计

1 引言VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述,基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。

使用VHDL语言描述的电路,可以进行综合和仿真。

然而,值得注意的是,尽管所有VHDL代码都是可仿真的,但并不是所有代码都能综合。

VHDL被广泛使用的基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便地进行移植和重用。

VHDL两个最直接的应用领域是可编程逻辑器件(PLD)和专用集成电路(ASIC),其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。

关于VHDL最后要说明的是:与常规的顺序执行的计算机程序不同,VHDL 从根本上讲是并发执行的。

在VHDL中,只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。

本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。

系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。

该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。

我们知道,与利用单片机来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具与硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

2 整体功能介绍2.1准备知识在本次设计中采用了铃声《北京欢迎你》作为要播放的乐曲,它的旋律如下:3 5 3 2 3 2 3 3 2 6 1 3 2 22 1 6 1 23 5 2 3 6 5 6 2 1 12 1 6 1 23 5 2 3 6 5 5 3 -2 3 2 1 5 6 2 5 3 3 2 3 (加粗表示低音,其他为中音)根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。

基于VHDL的信号发生器设计

基于VHDL的信号发生器设计

EDA课程设计报告题目:简易信号发生器姓名:XXX班级:10级通信一班学号:XXXXXXXXXXXX同组人:XXX指导老师:郑亚民、董晓舟目录一、课程设计内容及要求(一)设计内容(二)设计要求二、系统原理介绍(一)直接数字频率合成(DDS)1、相位累加器2、查找表(二)波形选择模块(三)幅度控制1、乘法电路2、除法电路(四)消除按键抖动三、系统方案论证及设计(一)方案论证(二)系统设计1、按键分配2、直接数字频率合成设计模块(含频率控制)3、数码管模块(显示频率值)4、波形选择模块5、幅度控制模块6、DAC模块电阻的选择四、系统仿真及结果分析(一)系统仿真与调试(二)仿真实验与结果分析1、Quartus Ⅱ仿真结果2、示波器波形显示3、结果分析五、总结与体会(一)设计总结(二)个人体会一、课程设计内容及要求(一)设计内容根据直接数字频率合成原理设计简易信号发生器,焊接DAC并将其和FPGA连接,将程序下载到实验板上实现所要求的功能。

(二)设计要求1、设计的信号发生器要求频率可调,频率调节通过按键的操作来实现,并且将频率显示在数码管上。

2、输出波形可选,要求产生正弦波、三角波、矩形波,并选择其中一种波形输出。

3、输出波形幅度可调,也是通过按键操作实现。

二、系统原理介绍本课程设计完成简易信号发生器的功能,可以在正弦波,方波,三角波三种波形进行转换,可以通过按键的选择输出波形。

可以通过频率控制字按键输出信号的频率,通过幅度控制字按键控制呢输出信号的幅度。

再将输出信号的频率显示在数码管上。

频率的选择通过直接数字频率合成(DDS)完成将编写好的程序下载到FPGA里,最后在示波器上进行观察,分析计算波形的失真。

(一)直接数字频率合成(DDS)DDS技术是一种把一系列数字量形式的信号通过DAC转换成模拟量的信号合成技术,它是将输出波形的一个完整周期、幅度值都顺序地存放在波形存储器中,通过控制相位增量产生频率、相位可控的波形。

EDA课程设计—音乐播放器

EDA课程设计—音乐播放器

基于VHDL的音乐播放器的设计目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。

一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

本设计是一种采用FPGA芯片进行音乐播放,主要由分频器、乐谱存储模块和音乐选择模块组成,利用FPGA的可编程性,简洁又多变的设计方法,缩短了研发周期。

主要采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品的升级。

一、设计任务与要求(1)能够播放音乐并进行切换选择用VHDL语言设计乐音的节拍与音符产生电路;用VHDL语言设计可控分频器电路;用存储模块ROM来存放乐曲,最后能够采用FPGA芯片进行音乐播放,并通过手动拨换开关来切换不同音乐。

(2)能够显示播音音乐的次序用VHDL语言进行译码转换,最后在实验板上用数码管显示数字,以此来确定正在播放音乐的顺序,即当播放第一首音乐时,数码管显示数字1,依次类推。

二、设计原理产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

根据设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。

数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。

用VHDL设计乐曲发生器

用VHDL设计乐曲发生器

1 概述随着EDA 技术的进展,基于可编程ASIC 的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA 技术为核心的能在可编程ASIC 上进行系统芯片集成的新设计方法,也正在快速地取代基于P CB板的传统设计方式。

与利用微处理器(CPU 或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA 工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

如何使用EDA工具设计电子系统是人们普遍关心的问题,本设计在美国ALTERA公司MA X + plusⅡ的EDA 软件平台上,使用层次化设计方法,实现了乐曲发生器的设计。

乐曲选取《梁祝》中化蝶部分,其简谱如图1所示。

2 音符与频率的关系我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,首先让我们来了解音符与频率的关系。

乐曲的12平均率规定:每2 个八度音(如简谱中的中音1 与高音1)之间的频率相差1 倍。

在2 个八度音之间,又可分为12个半音,每2个半音的频率比为12√2。

另外,音符A(简谱中的低音6)的频率为4 40Hz,音符B 到C之间、E 到F之间为半音,其余为全音。

由此可以计算出简谱中从低音l 至高音1 之间每个音符的频率,如表 1 所示。

产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但会增加分频器的分频级数。

实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的时钟频率。

本文设计的乐曲发生器选取6MHz 的基准频率。

若无6MHz 的时钟频率,则可以先分频得到6MHz 或换一个新的基准频率。

实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会"走调"。

(完整word版)基于VHDL语言信号发生器的设计.EDA课程设计

(完整word版)基于VHDL语言信号发生器的设计.EDA课程设计

EDA 课程设计报告书课题名称 基于VHDL 语言信号发生器的设计 姓 名易金祥学 号 081220139 院 系 物理与电信工程系 专 业 电子信息工程 指导教师周来秀 讲师2011年 6月10日※※※※※※※※※ ※※ ※※ ※※2008级学生EDA 课程设计基于VHDL语言信号发生器的设计1、设计目的1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。

2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。

3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计。

2、设计的主要内容和要求通过使用VHDL语言及Quartus II软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。

信号发生器:体现在它能自动的实现四种波形的转换。

根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求:1、设计好用于波形切换的四路数据选择器selector4_1;2、设计好用于总电路设计的各个信号输出模块;3、设计好数模(D/A)转换器。

3、整体设计方案基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。

信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。

基于VHDL的音乐播放器的设计

基于VHDL的音乐播放器的设计

摘要摘要在EDA开发工具Quartus II 6.0平台上,采用VHDL语言层次化和模块化的设计方法,通过音符编码的设计思想,预先定制乐曲,实现动态显示乐曲演奏电路的设计,并在此基础上,基于同一原理,使此电路同时具备了简易电子琴的功能,使基于CPLD/FPGA芯片的乐曲播放数字电路得到了更好的优化,提高了设计的灵活性和可扩展性。

关键字:EDA;Quartus II;VHDL;CPLD/FPGA;乐曲演奏电路;简易电子琴ABSTRACTABSTRACTBased on the QuartusII-the EDA development tool, this design has adopted the method of classification and modularization of VHDL level. Through the concept of note coding, the design of dynamic music-displaying circuit is realized after the musical composition has been made in advance. On the basis of the above and the same principle, this electric circuit has the same function of a simple electronic organ. The design of CPLD/FPGA chip-based music-displaying digital circuit is greatly improved, and the flexibility and expansibility of the design are improved as well.Key Words: EDA;Quartus II;VHDL;CPLD/FPGA;music-displaying circuit;simple electronic organ目录第1章绪论 (1)1.1 研究背景 (1)1.2 电子设计自动化发展史 (2)1.2.1 EDA技术的涵义 (2)1.2.2 EDA技术的发展史 (2)1.3 EDA技术发展动态 (3)1.4 研究思路及主要工作 (4)第2章可编程技术简介 (5)2.1 可编程逻辑器件FPGA/CPLD (5)2.2 硬件描述语言VHDL (7)2.3 开发软件QUARTUS Ⅱ (9)第3章系统设计 (13)3.1 系统原理 (13)3.1.1 音调的控制 (14)3.1.2 音长的控制 (14)3.2系统结构 (15)3.3 各模块分析与设计 (16)3.3.1 定制《万水千山总是情》音符数据ROM (16)3.3.2 音符数据地址发生器模块NOTETABS (17)3.3.3 预置数查表电路电路模块TONETABA (17)3.3.4 发声频率产生模块SPEAKERA (17)3.3.5 简易电子琴功能模块ELECLOCK (18)第4章系统程序实现与仿真分析 (19)4.1 各部分程序实现 (19)4.1.1 在QUARTUSII 6.0下定制的LPM_ROM (19)4.1.2 乐曲硬件演奏电路顶层设计VHDL实现 (19)4.1.3 音符数据地址发生器模块NOTETABS程序与说明错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COUNT<=0;
ELSE COUNT<=COUNT-1;
END IF;
END IF;
END PROCESS TWO;
THREE: PROCESS (COUNT)
VARIABLE L1,L2,L3,L4,L5,L6,L7:STD_LOGIC_VECTOR(10 DOWNTO 0);
END IF;
END IF;
END PROCESS;
TWO:PROCESS(QL,BUZZER3)
BEGIN
IF BUZZER3='1' THEN COUNT<=199;
ELSIF (QL'EVENT AND QL='1') THEN
IF COUNT=0 THEN
WHEN 024=>M<=L5;WHEN 025=>M<=L5;WHEN 026=>M<=L5;WHEN 027=>M<=L5;
WHEN 028=>M<=L5;WHEN 029=>M<=L5;WHEN 030=>M<=L5;WHEN 031=>M<=L5;
WHEN 032=>M<=L5;WHEN 033=>M<=L5;WHEN 034=>M<=L5;WHEN 035=t;=H1;WHEN 097=>M<=H1;WHEN 098=>M<=Z7;WHEN 099=>M<=Z7;
WHEN 100=>M<=Z6;WHEN 101=>M<=Z6;WHEN 102=>M<=Z5;WHEN 103=>M<=Z5;
WHEN 104=>M<=Z3;WHEN 105=>M<=Z3;WHEN 106=>M<=Z3;WHEN 107=>M<=Z3;
WHEN 108=>M<=Z5;WHEN 109=>M<=Z5;WHEN 110=>M<=Z6;WHEN 111=>M<=Z6;
WHEN 112=>M<=Z5;WHEN 113=>M<=Z5;WHEN 114=>M<=Z5;WHEN 115=>M<=Z5;
WHEN 116=>M<=Z3;WHEN 117=>M<=Z3;WHEN 118=>M<=Z3;WHEN 119=>M<=Z3;
WHEN 180=>M<=Z3;WHEN 181=>M<=Z3;WHEN 182=>M<=Z3;WHEN 183=>M<=Z3;
WHEN 184=>M<=Z3;WHEN 185=>M<=Z3;WHEN 186=>M<=Z3;WHEN 187=>M<=Z3;
WHEN 188=>M<=Z2;WHEN 189=>M<=Z2;WHEN 190=>M<=Z2;WHEN 191=>M<=Z2;
BEGIN
PROCESS(CLK)
VARIABLE CLKDIV:INTEGER;
BEGIN
IF (CLK'EVENT AND CLK='1') THEN
IF CLKDIV=78643 THEN
CLKDIV:=0;
QL<= NOT QL;
ELSE CLKDIV:=CLKDIV+1;
CASE COUNT IS
WHEN 000=>M<=Z5;WHEN 001=>M<=Z5;WHEN 002=>M<=Z5;WHEN 003=>M<=Z5;
WHEN 004=>M<=Z3;WHEN 005=>M<=Z3;WHEN 006=>M<=Z3;WHEN 007=>M<=Z3;
WHEN 008=>M<=Z3;WHEN 009=>M<=Z3;WHEN 010=>M<=Z3;WHEN 011=>M<=Z3;
WHEN 120=>M<=Z3;WHEN 121=>M<=Z3;WHEN 122=>M<=Z3;WHEN 123=>M<=Z3;
WHEN 124=>M<=Z2;WHEN 125=>M<=Z2;WHEN 126=>M<=Z2;WHEN 127=>M<=Z2;
WHEN 128=>M<=Z5;WHEN 129=>M<=Z5;WHEN 130=>M<=Z5;WHEN 131=>M<=Z5;
WHEN 048=>M<=H1;WHEN 049=>M<=H1;WHEN 050=>M<=Z7;WHEN 051=>M<=Z7;
WHEN 052=>M<=Z6;WHEN 053=>M<=Z6;WHEN 054=>M<=Z5;WHEN 055=>M<=Z5;
WHEN 056=>M<=Z3;WHEN 057=>M<=Z3;WHEN 058=>M<=Z3;WHEN 059=>M<=Z3;
基于VHDL语言的音乐发生器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY MUSIC IS
PORT(CLK,BUZZER3:IN STD_LOGIC;
WHEN 072=>M<=Z3;WHEN 073=>M<=Z3;WHEN 074=>M<=Z3;WHEN 075=>M<=Z3;
WHEN 076=>M<=Z3;WHEN 077=>M<=Z3;WHEN 078=>M<=Z5;WHEN 079=>M<=Z5;
WHEN 080=>M<=Z6;WHEN 081=>M<=Z6;WHEN 082=>M<=Z5;WHEN 083=>M<=Z5;
WHEN 192=>M<=Z5;WHEN 193=>M<=Z5;WHEN 194=>M<=Z5;WHEN 195=>M<=Z5;
WHEN 196=>M<=Z3;WHEN 197=>M<=Z3;WHEN 198=>M<=Z3;WHEN 199=>M<=Z3;
END CASE;
END PROCESS THREE;
L5:="01011000110"; Z5:="10101100010"; H5:="11010110001";
L6:="01101011000"; Z6:="10110101100"; H6:="11011010101";
L7:="01111011010"; Z7:="10111101100"; H7:="11010010010";
ELSE QH<=QH+1;
END IF;
END IF;
END PROCESS;
Q<=QLL;
END ART;
VARIABLE Z1,Z2,Z3,Z4,Z5,Z6,Z7:STD_LOGIC_VECTOR(10 DOWNTO 0);
VARIABLE H1,H2,H3,H4,H5,H6,H7:STD_LOGIC_VECTOR(10 DOWNTO 0);
BEGIN
L1:="00000101110"; Z1:="10000010101"; H1:="11000001010";
Q:OUT STD_LOGIC);
END MUSIC;
ARCHITECTURE ART OF MUSIC IS
SIGNAL QL,QLL:STD_LOGIC;
SIGNAL COUNT:INTEGER RANGE 199 DOWNTO 0;
SIGNAL M,QH:STD_LOGIC_VECTOR(10 DOWNTO 0);
WHEN 084=>M<=Z3;WHEN 085=>M<=Z3;WHEN 086=>M<=Z2;WHEN 087=>M<=Z2;
WHEN 088=>M<=Z1;WHEN 089=>M<=Z1;WHEN 090=>M<=Z1;WHEN 091=>M<=Z1;
WHEN 092=>M<=Z2;WHEN 093=>M<=Z2;WHEN 094=>M<=Z5;WHEN 095=>M<=Z5;
WHEN 144=>M<=Z5;WHEN 145=>M<=Z5;WHEN 146=>M<=Z5;WHEN 147=>M<=Z5;
WHEN 148=>M<=Z3;WHEN 149=>M<=Z3;WHEN 150=>M<=Z3;WHEN 151=>M<=Z3;
相关文档
最新文档