基于FPGA简易乐器演奏器设计

合集下载

FPGA设计简易电子琴

FPGA设计简易电子琴

简易电子琴电路设计一、设计要求:(1) 设计一个简易电子琴。

(2) 利用实验箱的脉冲源产生1,2,3,……共7 个或14 个音阶信号。

(3) 用指示灯显示节拍。

(4) 能产生颤音效果。

二、原理说明:简易电子琴实现自动播放和手动弹奏两种模式,由一个开头选择。

自动播放功能可以预置多首乐曲,可以通过手动选择,本设计预置了两首乐曲《梁祝》和《两只老虎》。

手动弹奏设置了7个按键做琴键,分别对应7个音阶。

系统由8个模块组成,图1是顶层设计文件,其内部有7个功能模块:Speakera.v(例2) 和ToneTaba.v (例3),NoteTabs.v (例4),div_27.v,div-50.v,Keyboard.v,Dir.v。

模块ToneTaba音阶发生器,当4位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的LED显示,音阶越高,LED亮的数目越多。

模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout 向扬声器输出发声。

模块NoteTabs用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置两个乐曲曲谱真值表,通过song来选择播放的音乐,00代表复位,01选乐曲《梁祝》,10选《两只老虎》,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

模块div-27和div_50是分频模块,通过计数的方式进行分频。

div_27是由板上27M时钟分频产生4Hz的频率用于节拍控制,div_50是板上50M时钟产生12.5MHz用于Sperkera模块。

基于FPGA的简易电子琴设计

基于FPGA的简易电子琴设计

课程设计任务书开题报告皖西学院本科毕业论文(设计)中期检查表简易电子琴的设计学生姓名:王春指导老师:郑大腾摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。

多功能电子琴的设计是在原有普通电子琴的基础上进行扩充的一个设计。

该电子琴的设计大体可以由三个模块构成,分别是电子琴发声模块、存储器模块和选择控制模块。

用超高速硬件描述语言VHDL编程可以实现各个模块的功能。

不仅能实现弹琴和演奏的功能,它还能实现“复读”的功能,就是可以存储任意一段音乐,并且可以即时的播放出来。

系统实现是用硬件描述语言VHDL 按照模块化方式进行设计,然后进行编程、时序仿真、总体整合。

本系统的功能比较齐全,有一定的现实使用的价值。

本文中介绍了电子琴系统的整体的设计,并基于超高速硬件描述语言VHDL在相关的芯片上编程实现的。

关键字电子琴;EDA;VHDL;音调发生;现场可编程逻辑器件FPGA;超高速硬件描述语言VHDL;电子琴系统;AbstractThis system is designed using EDA technology a simple eight-note keyboard, the system clock divider based on the principle of the computer, using top-down design methodology to implement, it can be controlled through the key input audio. Multi-function keyboard is designed to be an ordinary keyboard in the original expansion on the basis of a design. The design of the keyboard in general consists of three modules, namely the keyboard soundmodules, memory modules and select the control module. Ultra high-speed hardware description language VHDL programming function of each module. Not only can realize the function of playing and playing, it can achieve "repeat" function, which can store any piece of music, and real-time play out. System implementation is to use hardware description language VHDL modular way by design, then programming, timing simulation, integration. The system features a relatively complete, there is a certain value. This paper introduces the overall design of the keyboard system, and based on high speed hardware description language VHDL in Xilinx's Spartan Ⅱ series 2sc200PQ208-5 chip programming.KeywordKeyboard; EDA; VHDL; tone occurred;field programmable logic device FPGA;ultra high-speed hardware description language VHDL; organ systems;目录1 引言..................................................................1.1设计的目的...........................................................1.2设计的基本内容.......................................................2 FPGA、EDA、VHDL简介....................................................2.1FPGA工作原理 ........................................................2.1.2 FPGA的基本特点....................................................2.2EDA技术...............................................................2.3硬件描述语言——VHDL ...................................................2.3.1 VHDL的简介.......................................................2.3.2 VHDL语言的特点...................................................2.3.3VHDL语言上机操作条件.............................................2.3.4 VHDL的设计流程...................................................3 音乐知识介绍............................................................4 简易电子琴设计..........................................................4.1系统设计的总思路.....................................................4.2程序设计的流程图.....................................................4.3简易电子琴的工作流程图...............................................4.4简易电子琴中各模块的设计.............................................4.4.1 乐曲自动演奏模块...................................................4.4.2 音调发生模块.......................................................4.4.3 数控分频模块.......................................................4.4.4 顶层设计...........................................................5 系统仿真.................................................................6 结束语..................................................................致谢..................................................................... 参考文献................................................................. 附录.....................................................................1 引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。

基于FPGA的简易电子琴实现

基于FPGA的简易电子琴实现

基于FPGA的简易电子琴实现李全摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。

多功能电子琴的设计是在原有普通电子琴的基础上进行扩充的一个设计。

该电子琴的设计大体可以由三个模块构成,分别是电子琴音调发生器模块、数控分频模块和自动演奏模块。

用超高速硬件描述语言VHDL编程可以实现各个模块的功能。

能够实现弹琴和自动演奏的功能。

系统实现是用硬件描述语言VHDL按照模块化方式进行设计,然后进行编程、时序仿真、总体整合。

本系统的功能比较齐全,有一定的现实使用的价值。

本文中介绍了电子琴系统的整体的设计,并基于超高速硬件描述语言VHDL在相关的芯片上编程实现的。

关键字电子琴;EDA;现场可编程逻辑器件FPGA;超高速硬件描述语言VHDL;音调发生;数控分频;1引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。

对于广大老百姓来说,电子琴可以说已经不再是什么“新鲜玩意”了,它现在作为一种休闲和娱乐的产品早就推出市面,面向百姓,进入了我们的生活。

作为一个电子信息科学与技术专业的学生,了解这些电子产品的基本的组成和设计原理是十分必要的,我们学习过了计算机组成的理论知识,而我所做的课程设计正是对我学习的理论进行实践和巩固。

本设计主要介绍的是一个用超高速硬件描述语言VHDL设计的一个具有若干功能的简易电子琴;集科学性,先进性,创新性,实用性于一体,其理论基础源自于计算机组成原理的时钟分频器。

1.1 设计的目的本次设计的目的就是在掌握计算机组成原理理论相关的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL 语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机相关的实际问题的能力。

基于FPGA的简易电子琴设计

基于FPGA的简易电子琴设计

简易电子琴的设计学生姓名:王春指导老师:郑大腾摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。

多功能电子琴的设计是在原有普通电子琴的基础上进行扩充的一个设计。

该电子琴的设计大体可以由三个模块构成,分别是电子琴发声模块、存储器模块和选择控制模块。

用超高速硬件描述语言VHDL编程可以实现各个模块的功能。

不仅能实现弹琴和演奏的功能,它还能实现“复读”的功能,就是可以存储任意一段音乐,并且可以即时的播放出来。

系统实现是用硬件描述语言VHDL 按照模块化方式进行设计,然后进行编程、时序仿真、总体整合。

本系统的功能比较齐全,有一定的现实使用的价值。

本文中介绍了电子琴系统的整体的设计,并基于超高速硬件描述语言VHDL在相关的芯片上编程实现的。

关键字电子琴;EDA;VHDL;音调发生;现场可编程逻辑器件FPGA;超高速硬件描述语言VHDL;电子琴系统;AbstractThis system is designed using EDA technology a simple eight-note keyboard, the system clock divider based on the principle of the computer, using top-down design methodology to implement, it can be controlled through the key input audio. Multi-function keyboard is designed to be an ordinary keyboard in the original expansion on the basis of a design. The design of the keyboard in general consists of three modules, namely the keyboard soundmodules, memory modules and select the control module. Ultra high-speed hardware description language VHDL programming function of each module. Not only can realize the function of playing and playing, it can achieve "repeat" function, which can store any piece of music, and real-time play out. System implementation is to use hardware description language VHDL modular way by design, then programming, timing simulation, integration. The system features a relatively complete, there is a certain value. This paper introduces the overall design of the keyboard system, and based on high speed hardware description language VHDL in Xilinx's Spartan Ⅱ series 2sc200PQ208-5 chip programming.KeywordKeyboard; EDA; VHDL; tone occurred;field programmable logic device FPGA;ultra high-speed hardware description language VHDL; organ systems;皖西学院毕业论文设计第3页共36页目录1 引言..................................................................1.1设计的目的...........................................................1.2设计的基本内容.......................................................2 FPGA、EDA、VHDL简介....................................................2.1FPGA工作原理 ........................................................2.1.2 FPGA的基本特点....................................................2.2EDA技术...............................................................2.3硬件描述语言——VHDL ...................................................2.3.1 VHDL的简介.......................................................2.3.2 VHDL语言的特点...................................................2.3.3VHDL语言上机操作条件.............................................2.3.4 VHDL的设计流程...................................................3 音乐知识介绍............................................................4 简易电子琴设计..........................................................4.1系统设计的总思路.....................................................4.2程序设计的流程图.....................................................4.3简易电子琴的工作流程图...............................................4.4简易电子琴中各模块的设计.............................................4.4.1 乐曲自动演奏模块...................................................4.4.2 音调发生模块.......................................................4.4.3 数控分频模块.......................................................4.4.4 顶层设计...........................................................5 系统仿真.................................................................6 结束语..................................................................第3页致谢..................................................................... 参考文献................................................................. 附录.....................................................................1 引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。

基于FPGA的乐曲演奏电路设计_毕业设计论文

基于FPGA的乐曲演奏电路设计_毕业设计论文

毕业设计基于FPGA的乐曲演奏电路设计摘要设计了一种基于FPGA的电子琴,该电子琴由用VHDL硬件描述语言设计的核心部件和适当的外围电路构成,可从琴键上进行演奏也可自动进行乐曲演奏。

基于FPGA(现场可编程门阵列)芯片,利用VHDL语言,介绍了一种通用乐曲演奏电路的设计,可实现多个八度音阶的乐曲演奏,与简谱的对应关系简单,编程方便,占用资源少,通用性好,可作为IP core模块引用,构成复杂的SOPC系统.关键词:电子琴;现场可编程门阵列(FPGA);智力产权核(IP core);超高速集成电路硬件描述语言(VHDL);乐曲AbstractAn electronic piano is designed based on FPGA,which consists of core paris that designed by using VHDL 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 VHDL 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(VHDL);music目录1.简易电子琴与音乐发生器设计的介绍 (4)1.1简易电子琴设计介绍 (4)1.2音乐发生器设计介绍 (4)2.F P G A功能与使用简介 (6)2.1F P G A简介 (6)2.1.1F P G A的产生 (6)2.1.2F P G A的基本结构 (7)2.1. 3 MAX+PLUSII (7)2.2硬件描述语言V H D L (10)2.2.1V H D L语言的优点 (10)2.2.2利用V H D L语言设计数字系统的特点 (11)2.2.3V H D L语言的基本结构 (13)2.2.4V H D L的设计流3.简易电子琴设计及程序 (16)3.1简易电子琴设计总体框图 (16)3.2模块设计 (16)3.2.1模块Q I N设计 (16)3.2.2模块F A N A设计 (17)4.音乐发生器设计及程序 (20)4.1使用的乐谱 (20)4.2音乐发生器设计及程序 (20)4.2.1音乐发生器总框图 (20)4.2.2可变分频器设计 (20)4.2.3到计时模块设计 (31)5.仿真 (3)45.1概述 (34)5.2仿真验证与实5.2.1电子琴电路的仿真 (35)5.2.2音乐发生器仿真 (35)6.结论 (3)77.致谢 (3)88.参考文献 (39)1.简易电子琴与音乐发生器设计的介绍1.1简易电子琴设计介绍电子琴因其操作简单,且能模拟各种传统乐器的音色,而深受消费者喜爱。

基于FPGA的电子琴设计

基于FPGA的电子琴设计

基于FPGA的电子琴设计电子琴由于操作相对比较简单,并且能够模拟几乎所有传统乐器的音色,因而深受广大消费者的喜爱。

近年来,在数字系统的设计领域融入了一种新型的设计技术:数字系统设计的自动化技术EDA (Electronic Design Automation)。

该技术优越之处在于系统设计的效率高、保密性强、集成度好、易于修改和实现等。

因此,一跃成为当下数字系统设计领域的主流技术,并被越来越广泛地应用到相关领域中,其中,被应用到电子琴的设计与实现中去就是一个相当重要的尝试及应用。

本文所设计的电子琴基于一种可编程逻辑控制器件:FPGA(Field Programmable Logical Device)芯片,首先采用Visual Basic来设计上位机琴键的控制界面程序,再利用VHDL硬件描述语言设计系统的核心部件(演奏电路)以及配合使用一些适当和必要的外围电路,并且,核心部件的模块通过QUARTUS II这个平台,自顶而下地进行下载到Altera芯片上,其中,上位机经RS232串行口能够直接和FPGA进行通信,从而完成数据的交换工作。

该演奏电路由琴键控制界面直接进行音调的输入,并通过RS232的通信方式来控制从而可以发出DO、RE、MI等共计8个音调,经由蜂鸣器出声,顺利行使完成演奏功能。

可从琴键上手动直接进行演奏各种电路,亦可自动开始乐曲演奏,而且能够模拟笛子、小号、风琴、单簧和双簧等传统乐器。

同通常所见到的电了琴的设计一样,该电子琴采用总计61个按键,共划分为5个音区,每个音区包含12个琴键,即7个白色的琴键与5个黑色的琴键(为半音键),在进行演奏的时候能够动态显示各音名。

1 系统设计为了使电子琴的演奏电路完美实现8个音键的控制和顺利播放已经编好的音乐,对系统的设计就应有所要求。

根据各个音调的频率差异来实现当演奏者按不同的音键时从而发出的声音又了差别。

当八位发声控制键的输入中有一位是高电平时,那么,对应这一音阶其初始计数值被作为获得此音阶分频的预置值而将送至预制数计数器,而后预制数计数器就会输出相应的频率,同时输出的还有对应音阶简谱的显示代码,然后,该频率通过二分频器被送至扬声器,在扬声器处能够发出相对应该音符的声音,与此同时,该音名将显示在数码管上。

基于FPGA的电子琴设计课程设计

基于FPGA的电子琴设计课程设计

基于FPGA的电子琴设计课程设计摘要乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。

实现方法有许多种。

现用可编程逻辑器件(PLD)来完成该设计。

核心是一数控分频器,对输入的脉冲进行分频,得到每个音阶对应的频率,由此实现简易电子琴的发音功能。

电子琴可演奏由键盘输入的音阶,同时在数码管上显示对应音节的频率。

本设计基于超高速硬件描述语言VHDL在Altera公司的CycloneⅡ系列的EP2C5T144C8芯片上编程实现;经仿真,调试基本能够达到技术指标,仿真结果基本正确。

关键词音乐译码电路模块,VHDL,数控分频,电子琴AbstractMusic performances are widely used in automatic answering devices, cell phone ring tones, the Group phones, smart instrumentation and equipment。

The design is accomplished using a programmable logic device (PLD). The core is a numerical control frequency divider, the input pulse frequency, the frequency of each scale corresponding to the frequency, thus achieving the function of simple electronic piano. The electronic piano can be played by the keyboard input of the scale, while in the digital tube display the corresponding syllable frequency. The design based on ultra high speed hardware description language VHDL on Altera's cyclone II Series ep2c5t144c8 chip programming; the simulation and debugging can basically meet the technical indicators, and the result of simulation is correct.Keywords Music decoder circuit module,VHDL,Numerical control pointing frequency modules,electronic organ目录摘要 (I)Abstract (II)1 引言 (1)2 VHDL简述及应用 (2)2.1VHDL简述 (2)2.2 VHDL的应用 (2)3 FPGA的简述 (3)3.1 FPGA的介绍 (3)3.2 FPGA的整体结构 (3)3.3 Altera公司的FPGA (3)4 电子琴演奏系统设计原理分析 (4)4.1电子琴演奏设计的基本要求 (4)4.2电子琴演奏原理 (4)4.3音名与频率的关系 (5)4.4控制音长的节拍发生器 (6)5 电子琴硬件演奏电路的层次化设计方案 (8)5.1按键控制模块 (8)5.2自动演奏模块 (8)5.3自动播放控制模块 (9)5.4数控分频模块设计 (9)5.5数码管译码显示 (10)5.6音频驱动模块 (10)结论 (11)致谢 (12)参考文献 (13)附录1 (14)附录2 (15)1 引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。

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

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

1引言1.1关于EDA技术随着科学技术的进步,电子器件和电子系统设计方法日新月异,电子设计自动化(Electronics Design Automation,EDA)技术正是适应了现代电子产品设计的要求,吸收了多学科最新成果而形成的一门新技术。

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

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

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

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

EDA技术的发展大致经历了三个阶段:20世纪70年代的CAD(计算机辅助设计)阶段、20世纪80年代的CAE(计算机辅助工程)阶段、20世纪90年代后的EDA(电子设计自动化)阶段。

以下主要介绍第三个阶段。

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

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

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

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

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

FPGA课程设计报告--简易电子琴的设计

FPGA课程设计报告--简易电子琴的设计

FPGA课程设计报告题目:简易电子琴设计及FPGA功能验证院系:专业班级:学生姓名: XX导师姓名: XX起止时间: 2012、6、18至2012、6、29一、课程设计任务:本设计一个简易电子琴,具体功能如下:1、具有手动弹奏和自动播放功能;2、以按键或开关作为电子琴的琴键,输出7个音节的音阶;3、可以自动播放曲目至少两首。

二、课程设计目的:1、培养综合运用知识和独立开展实践创新的能力;2、深入学习Verilog HDL,了解其编程环境;3、学会运用Modelsim和Quartus II等编程仿真软件;4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习;三、使用环境:1、软件:Modelsim和Quartus II等编程仿真软件;2、硬件:FPGA开发板。

四、课程设计详细方案及功能验证:1、总体实现方案:1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。

电子琴有按键代替琴键的弹奏功能和自动播放功能。

2、整个程序总共分5个模块:主模块,按键模块,曲目1模块,曲目2模块,曲目3模块。

整个方案总共用了9个按键(key1~key9),按键key1~key7作为琴键,通过这七个按键键入不同的音阶。

主模块中key8、key9两个按键用于选择是自动播放还是弹奏曲目,令mm=(key8、key9),用mm值的不同选择调用不同模块。

如果mm=00,则程序调用按键模块;如果mm=01,则调用曲目1模块,播放曲目1;如果mm=10,则调用曲目2模块,播放曲目2;如果mm11,则调用曲目3模块,播放曲目3。

本次设计的框图:2、输入输出信号描述:3、顶层划分:key1.key2.key3.key4.key5.key6.key7.key8.key94、主要模块:主模块:功能描述:是四个子模块的核心,通过主模块分别调用四个不同的子模块。

基于FPGA的乐曲演奏电路设计

基于FPGA的乐曲演奏电路设计

基于FPGA的乐曲演奏电路设计自1985年Xilinx公司推出第一片现场可编程逻辑器件(FPGA)至今,FPGA 已经历了十几年的发展历史。

纵观现场可编程逻辑器件的发展历史,其之所以具有巨大的市场吸引力,根本在于;FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场,特别是对小批量、多品种的产品需求,使FPGA成为首选。

目前,FPGA的主要发展动向是:随着大规模现场可编程逻辑器件的发展,系统设计进入“片上可编程系统”(SOPC)的新纪元:芯片朝着高密度、低压、低功耗方向挺进;国际各大公司都在积极扩充其IP库,优化的资源更好的满足用户的需求,以扩大市场;特别是引人注目的所谓FPGA动态可重构技术的开拓,将推动数字系统设计观念的巨大转变。

本文使用MaxPlusⅡ设计基于FPGA的乐曲演奏电路。

1.硬件发声的原理声音的频谱范围约在几十到几千赫兹,只要利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。

乐曲中的每一音符对应着一个确定的频率,因此,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,要想让硬件电路准确地演奏出一首乐曲,不仅要控制电路能按照乐曲的乐谱依次输出这些音符所对应的频率,还必须准确地控制乐曲的节奏,即每个音符的持续时间。

因此,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。

2.音符频率的获得在FPGA设计中,多个不同频率的信号,一般是通过对某个基准频率进行分频获得的。

由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频系数四舍五入取整。

若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。

若基准频率过高,虽然可以减少频率的相对误差,但分频电路耗用的资源会增加。

FPGA简易电子琴设计

FPGA简易电子琴设计

西安邮电大学FPGA课程设计报告题目:简易电子琴设计及FPGA功能验证院系:电子工程学院专业班级:学生姓名:导师姓名:黄海生起止时间: 2012-6-18 至 2012-6-292012年 6 月29 日目录1.任务 (2)2.目的 (2)3.使用环境 (2)4.FPGA课程设计详细内容 (2)4.1 技术规范 (2)4.1.1 总体描述 (2)4.1.2 结构框图.............................................................. 错误!未定义书签。

4.1.3 引脚描述.............................................................. 错误!未定义书签。

4.1.3 应用范围 (5)4.2 设计方案 (5)4.2.1 顶层方案设计 (5)4.2.2 顶层模块程序 (7)4.3 功能验证方案及源程序 (7)4.3.1按键输入控制模块方案设计及源程序 (7)4.3.2控制模块方案设计及源程序 (8)4.3.3LCD驱动模块方案设计及源程序 (11)4.4 电路设计及功能仿真报告 (30)4.5 综合及布局布线报告和引脚分布报告 (21)4.6 硬件测试结果报告 (21)5.课程设计的心得体会 (22)6.参考资料 (22)1.任务:a、设计一个简单电子琴。

(内置2~4首简单音调曲)b、用FPGA开发板的按键可选择演奏内置曲调,用数码管显示当前演奏的哪个演奏曲目或停止。

c、要求电子琴具有自主选择,自动播放所选曲目或停止曲目。

2.目的:a、在掌握计算机组成原理理论相关的基础上,了解 EDA技术,掌握Verilog HDL 硬件描述语言的设计方法和思想,通过学习的 Verilog HDL 语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识;b、深入学习Verilog H DL、FPGA,了解其编程环境;c、学会运用Modelsim和Quartus II等编程仿真软件;d、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL、FPGA的学习;3.使用环境(软件/硬件环境,设备等)软硬件环境:软件:Quartus II 7.2, Modelsim6.1;硬件环境:DEII开发板;设备:PC一台,USB下载线,FPGA开发板及电源。

FPGA设计简易音乐播放器

FPGA设计简易音乐播放器

FPGA设计简易音乐播放器————————————————————————————————作者:————————————————————————————————日期:课程设计报告题目:FPGA简易音乐播放器设计学院: 电子信息学院班级: 08041301学生(学号):汪顺 2013302011学生(学号):叶尔达·叶尔丁巴图 2013302014 日期: 2015 年 12 月摘要利用EDA软件设计一个简易硬件播放器并能播放多首音乐(最少四首),可通过按键手动控制音乐播放。

在播放音乐的同时可实现音谱与音高的显示,并通过10 个LED小灯显示不同音调的变化。

使用硬件描述语言设计音调发生模块,音调编码模块,乐曲存储模块,控制模块,小灯控制模块,数字显示模块,音谱与音高输出模块等各个模块。

并下载到DE0—CV上实现。

关键词:EDA、音乐播放器、音调编码、数字显示、DE0-CV目录摘要 (1)目录 (2)一、课程设计目的 (3)二、设计任务与要求 (3)三、方案设计与论证 (4)四、单元电路设计与参数计算 (5)4。

1音频发生模块 (6)音频编码模块 (7) (7)控制模块 (10)4。

5小灯显示模块 (10) (11)4。

7分频模块 (12)4。

8总体设计 (13)五、电路的安装与调试 (14)5.1音频编码模块 (14)5.2乐曲储存模块 (14)5.3 控制模块 (14)5.4 小灯控制模块(led) (15)5.5 音谱与音高输出模块 (16)六、遇到问题的解决方法 (16)七、结论与心得 (17)八、参考文献 (17)简易音乐播放器设计一、课程设计目的《模拟、数字电路课程设计》是继《模拟电子技术基础》、《数字电子技术基础》、《电子技术基础实验》课程后,电气类、自控类和电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目的和任务是通过二周的时间,让学生掌握EDA 的基本方法,熟悉一种EDA 软件,并能利用EDA 软件设计一个电子技术综合问题,并在实验箱上成功下载,为以后进行工程实际问题的研究打下设计基础。

基于FPGA简易乐器演奏器设计

基于FPGA简易乐器演奏器设计

目录1 引言 (1)2 EDA及QUARTUSII软件简介 (2)2.1EDA简介 (2)2.2硬件描述语言VHDL (2)2.3VHDL的设计流程 (2)2.4软件介绍 (3)3总体设计 (4)3.1乐曲演奏电路原理 (4)3.2整体设计思想 (4)3.3乐曲演奏电路模块 (4)3.3.1 乐曲选择模块 (4)3.3.2数码显示模块 (5)3.3.3 模式选择模块 (6)3.3.4 手动输入电路模块 (7)3.3.5 蜂鸣器模块 (7)3.4顶层文件 (8)3.5硬件下载 (9)4总结 (10)参考文献 (11)附录 (12)1 引言VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

VHDL主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

本文基于FPGA开发系统,在QuartusII 9.0软件平台上,完成了简易乐曲演奏器电路的设计和与仿真,并下载到试验箱进行硬件实现。

首先,本文介绍了QuartusII 9.0软件的基本使用方法和VHDL硬件描述语言的特点,采用VHDL 硬件描述语言描述简易信号发生器,完成对电路的功能仿真。

在设计过程中,重点探讨了简易信号发生器设计思路和功能模块划分。

然后,初步探讨了电路逻辑综合的原理,该软件对简易多功能信号发生器电路进行了逻辑综合。

基于FPGA的乐曲演奏电路设计

基于FPGA的乐曲演奏电路设计

目录1、EDA技术发展及介绍..................................... 错误!未定义书签。

1.1 EDA技术的介绍................................ 错误!未定义书签。

1.2 EDA技术的发展................................ 错误!未定义书签。

1.3 EDA技术的发展趋势............................ 错误!未定义书签。

1.4 乐曲演奏电路简介 ............................. 错误!未定义书签。

2、总体方案设计.......................................... 错误!未定义书签。

2.1 设计内容..................................... 错误!未定义书签。

2.1 设计方案比较 (3)2.3 方案论证..................................... 错误!未定义书签。

2.3 方案选择..................................... 错误!未定义书签。

3、单元模块设计 (4)3.1稳压电源电路................................... 错误!未定义书签。

3.2有源晶振电路 (5)3.3蜂鸣器 (6)3.4七段数码管显示电路 (7)4、特殊器件的介绍 (8)4.1 CPLD器件介绍 (8)4.2 FPGA器件介绍 (8)4.3 MAX||EPM240T100C5器件 (9)5、最小系统原理 (10)6、软件实现 (11)6.1音调的控制 (11)6.2音长的控制 (12)6.3软件设计 (12)7、系统仿真及调试 (16)7.1仿真 (16)7.2 调试 (18)8、总结 (19)8.1设计小结 (19)8.2设计收获 (19)8.3设计改进 (19)8.4 致谢 (19)9 、参考文献 (20)1、EDA技术发展及介绍1.1 EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

基于FPGA简易乐器演奏器设计

基于FPGA简易乐器演奏器设计

目录1 引言 (1)2 EDA及QUARTUSII软件简介 (2)2.1EDA简介 (2)2.2硬件描述语言VHDL (2)2.3VHDL的设计流程 (2)2.4软件介绍 (3)3总体设计 (4)3.1乐曲演奏电路原理 (4)3.2整体设计思想 (4)3.3乐曲演奏电路模块 (4)3.3.1 乐曲选择模块 (4)3.3.2数码显示模块 (5)3.3.3 模式选择模块 (6)3.3.4 手动输入电路模块 (7)3.3.5 蜂鸣器模块 (7)3.4顶层文件 (8)3.5硬件下载 (9)4总结 (10)参考文献 (11)附录 (12)1 引言VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

VHDL主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

本文基于FPGA开发系统,在QuartusII 9.0软件平台上,完成了简易乐曲演奏器电路的设计和与仿真,并下载到试验箱进行硬件实现。

首先,本文介绍了QuartusII 9.0软件的基本使用方法和VHDL硬件描述语言的特点,采用VHDL 硬件描述语言描述简易信号发生器,完成对电路的功能仿真。

在设计过程中,重点探讨了简易信号发生器设计思路和功能模块划分。

然后,初步探讨了电路逻辑综合的原理,该软件对简易多功能信号发生器电路进行了逻辑综合。

基于FPGA的简易电子琴的设计

基于FPGA的简易电子琴的设计
第一章
1.1
FPGA(Field Programmable Gate Array)即现场可编程门阵列,它是在PAL等可编程器件的基础上实现的。FPGA是在集成领域中通过普通电路的连接而实现的,FPGA模块它可以解决像PAL等其他可编程控制器件的对电路数点的限制,这样对于设计者和使用者在使用FPGA时就会感觉到它的敏捷与快捷。对于相同的PGA如果对设计来说,使用不同的编程数据或者不同编程原则,FPGA就会根据设计的思路产生不同的效果。FPGA适用于各种领域,尤其在通信、网络、军事、化石油等诸多领域都得到了广泛的应用于发展。由于FPGA具有功耗低和成本降低,所以FPGA还将进入的应用领域将会更多。由于FPGA应用领域越来越广所以对熟练掌握FPGA开发的工程师的需求会越来越多。
本系统是采用EDA技术设计的一个简易电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制扬声器,同时也可以有自动播放歌曲的功能。该电子琴的设计大体可以由三个模块构成,分别是控制输入电路,FPGA和扬声器电路。用超高速硬件描述语言VHDL编程可以实现各个模块的功能。可以实现按键的输入和自动演奏的功能,同时可以即时的播放出来
我们生活在一个信息时代,各种电子产品层出不穷,电子琴作为音乐与科技的产物,在电子化和信息化的时代,FPGA技术的出现对那些喜欢音乐的人做出了很大的贡献,各种音乐的制作大多数情况都需要由电子琴来完成,然后通过某种传媒来传播。我们了解这些电子产品的基本组成和设计原理是十分必要的,同时我们学习了EDA相关的理论知识,而该课题的设计正是对我们学习的理论的实践与巩固的结合。
本系统设计包含了:有用户控制的控制输入电路的模块,核心的FPGA模块和发声器电路模块。能够实现不同的键的输入就能发出不同的音调以及乐曲自动的播放的功能,它内部包含自动存储模块,音乐节拍发生模块,数控分频模块主要实现的是对FPGA的提供的基准频率进行分频,得到与各个音阶对应的频率进行输出。乐曲存储模块主要是有用户事先在此模块中可存放一个音乐的乐谱,有一个计数器来控制此真值表的输出。最后主要的是把各个模块整合后,通过相关电路的输入输出对应关系连接起来。

基于FPGA的简易电子琴的设计.doc

基于FPGA的简易电子琴的设计.doc

基于FPGA的简易电子琴的设计..学校代码:学号:本科毕业设计说明书题目:基于FPGA的简易电子琴的设计学生姓名:学院:系别:专业:班级:指导教师:摘要我们都知道的当物体在振动或者在晃动的时候,能够发生声音。

并且如果振动的频率不同,而物体发出的声音就不同,因此音调也会不同。

在简易的电子琴的设计时候虽然没有振动的物体,比如簧,管,弦等,但是电子琴的内部却有很多电子类的装置,而这些电子类的装置只要开始工作就能使扬声器发出像振动的物体那样发出不同的声音。

当按动某个琴键,就会是相应的电子装置工作,从而使扬声器发出不同的音调。

本系统是采用EDA技术设计的一个简易电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制扬声器,同时也可以有自动播放歌曲的功能。

该电子琴的设计大体可以由三个模块构成,分别是控制输入电路,FPGA和扬声器电路。

用超高速硬件描述语言VHDL 编程可以实现各个模块的功能。

可以实现按键的输入和自动演奏的功能,同时可以即时的播放出来关键词:EDA;VHDL;FPGA;电子琴系统AbstractWe all know that when the vibration of an object that can happen to sound.And the frequency of the vibration is different, the object the sound is different, the tone will be different.Simple design of the keyboard when the vibrating object.Such as reed, tube, string, etc., but the keyboard's internal has a lot of electronic devices.These electronic devices to work can make the speakers like the vibration of objects that make different sounds.When pressing a key, the corresponding electronic devices work, so that speakers of different tones.This system is designed using EDA technology a simple eight- 学号:本科毕业设计说明书题目:基于FPGA的简易电子琴的设计学生姓名:学院:系别:专业:班级:指导教师:摘要我们都知道的当物体在振动或者在晃动的时候,能够发生声音。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

乐曲演奏设计实验任务:采用VHDL来实现的简易乐曲演奏器。

它能实现自动演奏已存歌曲。

且要求实现如下功能:(1)演奏时可以通过按键选择是自动演奏,自动演奏则是演奏已存入的固定乐曲;(2)至少保存一首自动演奏的乐曲,且自动演奏的乐曲能重复播放;(3)进行自动演奏时,数码管上要同时能显示演奏乐曲的乐谱;(4)自动播放时,设置低速,中速,快速控制键,能实现乐曲不同速度的播放。

1乐曲演奏电路原理声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。

乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。

而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。

当一个20MHz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数,将分频系数送给数控分频器模块,当20MHz的时钟脉冲来到时,数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz 的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。

曲子也就流畅的播放出来了。

2 整体设计思想根据设计要求,系统组成方框图3-1所示,它由乐曲选择模块、数码显示模块、蜂鸣器模块、模式选择模块组成。

3 乐曲演奏电路模块3.1 乐曲选择模块1 乐曲选择模块在此模块中设置了一个9位二进制计数器((计数最大值为511),作为音符数据ROM 的地址发生器。

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

同时为了实现对歌曲选择得控制以及对播放速度的要求,可以多分出几个频率,然后由控制开关来选择歌曲和播放频率。

随着音调发生器模块中的计数器按不同的时钟速率作加法 计数时,乐曲就开始连续自然地依据不同的速度演奏起来了。

2 乐曲选择模块的仿真图通过仿真图可以清楚的看到,时钟clk 由0开始计数,每计一次数输出toneindex 的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。

由于选择开关的控制可以看出,在不同模式下播放的歌曲是不同的,实现了选歌的功能。

3 乐曲选择模块生成的逻辑符号图基准时钟20MHz 模式选择选歌,控制FPGA 时钟电路峰鸣器电路 乐曲选择电路 数码显示电路 4Hz20MHz扬声器 数码管图3-1乐曲演奏电路结构方框图 图3-3乐曲选择模块逻辑符号图图3-2乐曲选择模块仿真图3.2数码显示模块1 数码显示模块该编码模块的作用为将输入的音符数据翻译为音乐产生模块的所需要的分频系数,并且显示音符的数字码型和高音阶,通过对照表各音名对应的分频系数值及初始值,根据输入得到初始值,从而得到分频系数以便进行分频,得到所需的频率。

2音数码显示模块的仿真图图3-4数码显示模块仿真图在此程序中index为音乐节拍产生模块输出的音符数据,经过翻译后将tone输出到数控分频模块为其提供分频系数的初始值,code为数码管显示的字符数,high1为高音显示,当乐谱中有高音时,就会相应地以二进制的形式表现出来。

3数码显示模块生成的逻辑符号图图3-5数码显示生模块逻辑符号图3.3 模式选择模块1 模式选择模块根据设计的要求,该简易乐曲演奏器能实现自动演奏乐曲的功能。

与此同时,还需要一个整体复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。

2 模式选择模块仿真图由仿真图可以看出,当rst为1时,输出为0,电路停止工作。

图3-6模式选择模块仿真图3 模式选择模块生成的逻辑符号图图3-7模式模块逻辑符号图3.4 蜂鸣器模块1 蜂鸣器模块该模块的clk端输入一个具有较高频率(本实验为20MHz)的信号,通过分频后由spks输出。

由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲信号,为了便于驱动喇叭,需另加一个D触发器均衡其占空比,也即作二分频处理。

speak 对clk输入信号的分频比由11位预置数tone[10..0]决定。

spks的输出频率将决定每一音符的音调,这样分频计数器的预置数tone[10..0]与spks的输出频率就有了对应关系。

2 蜂鸣器模块的仿真图图3-10蜂鸣器模块仿真图在此仿真图中,输入clk 是一个频率较大的时钟信号,输入tone 代表着某个音符的分频初始值,输出spks 则代表将输入clk 先经过12次分频,再经过(预置数终值2048-tone )次分频,最终再进行二分频处理,而这个信号的频率就是我们需要演奏的音谱的频率,根据频率的不同,从而能通过喇叭听到不同的声音,实现音乐的播放。

3 蜂鸣器模块生成的逻辑符号图4 顶层文件 利用元件例化把各个子模块组合起来,进行编译、下载,从而实现整体功能。

它将音调发生器模块、音调编码器模块、分频器模块、模式选择模块,手动输入模块及数控分频器模块连接起来。

5 硬件下载 输入程序并且编译无误,并且仿真无误后,便进行引脚锁定及程序下载,在进行引脚锁定时必须对照引脚锁定图进行锁定。

引脚锁定图如图3-13所示:CLK 为20M 时钟输入,RST 为整体复位开关,CODE1为数码管显示,HIGH1为高音显示,SEL 速度控制开关,SPKS 为蜂鸣器输入。

引脚锁定后下载到FPGA 试验箱的EP3C40Q240C8芯片中,通过开关及按键的控制,试验箱的蜂鸣器就会根据选择演奏优美的音乐,经验证本次设计完全达到了预先的设计要求。

图3-11蜂鸣器模块逻辑符号图图3-12顶层文件仿真图硬件锁引脚图总结通过本次课程设计,深刻体会了VHDL设计的优势,通过强大的EDA工具和硬件描述语言使演奏电路很易实现。

并且通过此次设计让我们把课本中的知识系统的联系起来,更加体会到模块式设计的方法所带来的方便和明了化。

通过模块式的方法,可以将复杂的总程序分成几个模块各自分工执行,独立工作互不干扰。

然后通过原理图将各个模块直接相连,或者用元件例化的方式,用VHDL语言进行描述,达到了统一化管理各个模块的作用。

通过查找资料,与同学交流增强了我们自主学习的能力;了解到了声音音谱的发生规律,信号的频率与声音的关系,并且通过对基准频率的分频,来生成不同的声谱。

从设计方面得知,在进行设计时,应首先对各方面的资料进行综合,在基本原理的范围内进行模块式的分解和综合,最后达到设计的需求。

这次设计使我对quartusⅡ的运用更加灵活,熟悉了对该软件从工程建立到程序下载执行各个步骤的操作,对以前学习上的不足得到了补充。

总之,这次设计让我们学到了很多知识,为我们以后的学习奠定了基础。

在课设的过程当中,不知不觉中增添了对专业课的学习兴趣,感觉我们学的东西终于与实际真正得结合起来了,学习的知识不再感觉枯燥乏味。

尤其是当自己设计的音乐播放器发出声音的时候,心中的喜悦与自豪油然而生。

最后,感谢老师的辛勤指导和严格要求。

真诚地说一声:老师,您辛苦了!还有帮助过我的同学,谢谢你们。

附录全部程序如下:library ieee;use ieee.std_logic_1164.all;entity yuepu ISport( clk:in std_logic;sel:in std_logic_vector(0 to 1);sel2: in std_logic_vector(0 to 1);toneindex:out integer range 0 TO 15);end yuepu;architecture bhv of yuepu IStype yinyue1 is array(0 to 369) of integer range 0 to 15;type yinyue2 is array(0 to 498) of integer range 0 to 15;type yinyue3 is array(0 to 198) of integer range 0 to 15;type yinyue4 is array(0 to 159) of integer range 0 to 15; constant memory1:yinyue1:=(12,12,13,13,1,1,1,1,1,1,5,5,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,3,3,3,12, 12,13,13,1,1,1,1,1,1,5,5,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,5, 5,6,6,6,6,6,6,6,6,6,6,6,6,3,3,5,5,1,1,1,1,1,1,3,3,2,2,14,14,13,13,13,13 ,0,0,2,2,2,2,3,3,2,2,2,2,14,14,13,13,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,3,3,15,15,7,7,7 ,7,7,7,6,6,7,7,7,7,7,7,7,7,7,7,7,7,6,6,3,3,2,2,2,2,2,2,2,2,3,3,7,7,7,7, 6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,15,15,15,15,15,15,6,6,15,15,15,15,1 5,15,15,15,15,15,15,15,3,3,15,15,7,7,7,7,7,7,6,6,7,7,7,7,7,7,7,7,7,7,7, 7,6,6,3,3,2,2,2,2,3,3,5,5,5,5,5,5,5,5,0,0,2,2,2,2,13,13,1,1,1,1,1,1,1,1 ,1,1,1,1,5,5,6,6,1,1,1,1,1,1,1,1,1,1,1,1,6,6,3,3,2,2,2,2,2,2,3,3,5,5,5,5,5,5,5,5,0,0,2,2,2,2,13,13,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 ,0,0,0,0,0,0,0,0,0,0); --《牧羊曲》constant memory2:yinyue2:=(12,12,13,13,1,1,1,1,1,1,1,1,1,1,1,1,13,13,12,12,1,1,1,1,1,1,2,2,1,1,1,1 ,13,13,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,13,13,2,2,2,2,2,2,3,3,2,2,2,2,3,3, 5,5,6,6,5,5,5,5,5,5,6,6,6,6,5,5,3,3,2,2,3,3,2,2,1,1,13,13,13,13,12,12,1 3,13,12,12,13,13,1,1,1,1,1,1,1,1,1,1,1,1,13,13,12,12,1,1,1,1,1,1,2,2,1, 1,1,1,13,13,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,13,13,2,2,2,2,2,2,3,3,2,2,2,2 ,3,3,5,5,6,6,5,5,5,5,5,5,6,6,6,6,5,5,3,3,2,2,3,3,2,2,1,1,13,13,13,13,12 ,12,13,13,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,5 ,5,6,6,6,6,6,6,6,6,6,6,6,6,15,15,6,6,5,5,5,5,5,5,6,6,5,5,5,5,3,3,2,2,1, 1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,1,1,1,1 ,1,1,1,1,1,1,1,15,15,6,6,5,5,5,5,5,5,6,6,5,5,5,5,3,3,5,5,6,6,6,6,6,6,15 ,15,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,6,6,6,6,6,6,6,6,6,6,6,6,15, 15,6,6,5,5,5,5,5,5,6,6,5,5,5,5,3,3,2,2,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5, 5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,5,5,5 ,5,5,5,3,3,5,5,5,5,3,3,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0, 13,13,3,3,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1); --《大海》constant memory3:yinyue3:=(3,5,5,5,6,15,6,5,5,5,5,5,5,5,5,5,3,5,5,5,6,15,8,9,9,9,9,9,9,9,9,9,9,9,9 ,9,9,9,9,9,5,6,5,5,5,5,5,5,9,9,9,9,9,9,15,15,15,15,8,8,8,8,8,8,8,8,8,8, 8,8,9,8,15,6,6,6,6,6,6,6,9,8,15,6,8,15,15,3,5,6,5,5,5,5,5,5,8,8,8,8,8,8 ,9,8,15,6,6,6,6,6,6,6,9,8,9,8,9,6,9,9,9,9,10,15,8,9,9,10,10,10,10,11,11 ,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,9,9,9,10,10,10,10,15,8,9,9, 10,10,10,10,11,11,9,9,10,10,10,10,10,10,10,15,8,9,8,15,6,8,15,6,5,5,6,1 5,8,9,910,10,10,10, 11,11,15,15,15,15); --《欢乐颂》constant memory4:yinyue4:=(3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,5,5,6,6,5,5,5,5,0,0,0,0,6,6,6,6 ,6,6,5,5,4,4,4,4,4,4,4,4,2,2,3,3,2,2,1,1,2,2,2,2,0,0,0,0,3,3,3,3,1,1,0,0,3,3,3,3,1,1,0,0,3,3,3,3,5,5,6,6,6,6,6,6,0,0,0,0,15,15,15,15,5,5,5,5,6 ,6,6,6,3,3,3,3,2,2,1,1,2,2,3,3,5,5,5,5,5,5,5,5,15,15,15,15,5,5,5,5,6,6, 6,6,3,3,3,3,2,2,1,1,2,2,3,3,1,1,1,1,1,1,1,1); --《数鸭子》signal counter1:integer range 0 to 500;signal counter2:integer range 0 to 500;signal counter3:integer range 0 to 500;signal counter4:integer range 0 to 500;signal clk2:std_logic;signal clk3:std_logic;signal clk4:std_logic;signal clk1:std_logic;beginprocess (clk)variable count1:integer range 0 to 10000000;variable count2:integer range 0 to 10000000;variable count3:integer range 0 to 10000000;beginif (clk'event and clk='1') then count1:=count1+1;if( count1=625000) then clk2<=not clk2;count1:=0;end if;end if;if (clk'event and clk='1') then count2:=count2+1;if( count2=2500000) then clk3<=not clk3;count2:=0;end if;end if;if (clk'event and clk='1') then count3:=count3+1;if( count3=1250000) then clk4<=not clk4;count3:=0;end if;end if;end process ;process(sel,clk2,clk3,clk4)begincase sel iswhen"11"=>clk1<=clk3;when"10"=>clk1<=clk4;when"01"=>clk1<=clk2;when others=>null;end case;end process;process(clk1)beginif(clk1'event and clk1='1')then counter1<=counter1+1; if (counter1>369) then counter1<=0;end if;end if;if(clk1'event and clk1='1')then counter2<=counter2+1; if (counter2>498) then counter2<=0;end if;end if;if(clk1'event and clk1='1')then counter3<=counter3+1; if (counter3>198) then counter3<=0;end if;end if;if(clk1'event and clk1='1')then counter4<=counter4+1; if (counter4>159) then counter4<=0;end if;end if;end process;process(sel2,counter1,counter2,counter3,counter4)begincase sel2 iswhen"11" =>toneindex<=memory3(counter3);when"10" =>toneindex<=memory2(counter2);when"01" =>toneindex<=memory1(counter1);when"00" =>toneindex<=memory4(counter4);when others=>null;end case;end process;end bhv;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tonetaba isport (index: in integer range 0 to 15;code: out std_logic_vector(7 downto 0);high1: out std_logic_vector(2 downto 0); tone: out integer range 0 to 2047);end tonetaba;architecture bhv of tonetaba isbeginprocess(index)begincase index iswhen 0 =>tone<=2047;code<="11000000"; high1<="000"; --0when 1 =>tone<=1091;code<="11111001"; high1<="000"; --1(中) when 2 =>tone<=1196;code<="10100100"; high1<="000"; --2(中)when 3 =>tone<=1289;code<="10110000"; high1<="000"; --3(中) when 4 =>tone<=1331;code<="10011001"; high1<="000"; --4(中) when 5 =>tone<=1409;code<="10010010"; high1<="000"; --5(中) when 6 =>tone<=1479;code<="10000010"; high1<="000"; --6(中) when 7 =>tone<=1541;code<="11111000"; high1<="000"; --7(中) when 8 =>tone<=1621;code<="10100100"; high1<="010"; --2(高) when 9 =>tone<=1668;code<="10110000"; high1<="011"; --3(高) when 10=>tone<=1728;code<="10010010"; high1<="101"; --5(高) when 11=>tone<=1763;code<="10000010"; high1<="110"; --6(高) when 12=>tone<=772; code<="10010010"; high1<="000"; --5(低) when 13=>tone<=911; code<="10000010"; high1<="000"; --6(低) when 14=>tone<=911; code<="11111000"; high1<="000"; --7(低) when 15=>tone<=1569;code<="11111001"; high1<="001"; --1(高) when others =>null;end case;end process;end bhv;library ieee;use ieee.std_logic_1164.all;entity bmux is port(index2:in integer range 0 to 15;rst:in std_logic;toneindex:out integer range 0 to 15);end;architecture bhv of bmux isbeginprocess(rst,index2)beginif (rst='0')then toneindex<=0;else toneindex<=index2;end if;end process;end bhv;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity speak isport(clk:in std_logic;tone:in integer range 0 to 2047; spks:out std_logic); end speak;architecture bhv of speak issignal preclk,fullspks:std_logic;beginprocess(clk)variable count: integer range 0 to 5;variable ff:std_logic;beginif (clk'event and clk='1' )thenif count<=5 thencount:=count+1;elsecount:=0;ff:=not ff;end if;end if;preclk<=not ff;end process;process(preclk,tone)variable count11:integer range 0 to 2047;beginif (preclk'event and preclk='1') thenif (count11=2047) then count11:=tone;fullspks<='1'; else count11:=count11+1;fullspks<='0';end if;end if;end process;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 bhv;library ieee;use ieee.std_logic_1164.all;entity top ISport (clk20MHZ:in std_logic;rst:in std_logic;sel:in std_logic_vector(0 to 1);sel2: in std_logic_vector(0 to 1);code1:out std_logic_vector(7 DOWNTO 0);high1: out std_logic_vector(2 downto 0);spkout: out std_logic);end top;architecture bhv OF top IScomponent yuepuport(clk:in std_logic;sel:in std_logic_vector(0 to 1);sel2: in std_logic_vector(0 to 1);toneindex:out integer range 0 TO 15);end component;component tonetabaport( index: in integer range 0 TO 15;code: out std_logic_vector(7 DOWNTO 0); high1: out std_logic_vector(2 downto 0); tone:out integer range 0 TO 2047);end component;component speakport( clk: in std_logic;tone:in integer range 0 TO 2047;spks: out std_logic);end component;component bmuxport(index2:in integer range 0 to 15;rst:in std_logic;toneindex:out integer range 0 to 15); end component;signal tone:integer range 0 TO 2047;signal toneindex:integer range 0 TO 15;signal toneindex2:integer range 0 TO 15;beginU1:yuepport map(clk=>clk20MHZ,sel=>sel,sel2=>sel2,toneindex=>toneindex); U2:tonetabaport map(index=>toneindex2,tone=>tone,code=>code1,high1=>high1);U3:speak port map(clk=>clk20MHZ,tone=>tone,spks=>spkout);U4:bmux port map(index2=>toneindex,rst=>rst,toneindex=>toneindex2); end bhv;。

相关文档
最新文档