音乐彩灯控制电路数电FPGA设计(含代码)
- 格式:doc
- 大小:653.00 KB
- 文档页数:30
音乐播放器控制电路课程设计报告班级:学号:姓名:指导老师:一、设计目的将《断桥残雪》简谱按照要求进行编码并将其写入只读存储器ROM之中,然后通过设计的电路读出ROM的内容,进行解码后驱动蜂鸣器播放。
二、开发环境采用Altera Quartus II 9.0软件设计环境。
它提供了全面的逻辑设计能力,包括电路图、文本和波形的设计输入以及编译、逻辑综合、仿真和定时分析以及器件编程等诸多功能。
特别是在原理图输入等方面,Altera Quartus II 9.0被公认为是最易使用、人机界面最友好开发软件。
并采用FPGALP-2900开发装置硬件实现,给人们带来极大的方便。
三、设计过程概述1、数字简谱简介数字简谱用不同的点和线段配合8个阿拉伯数字0~7构成音符,记录表示千变万化的音乐曲子及其基本音乐元素。
乐音是由三个要素决定的:频率决定了乐音的音高,频谱决定过了乐音的音色,音形标志着演奏方式。
乐曲的基本元素是:音的高低(音高)、音的长短(时值)、音的力度和音质(音色)。
音的高低和长短不同决定了乐曲的不同,因此构成了音乐的最重要的基础元素。
音乐用1、2、3、4、5、6、7分别表示同一调式7个不同的音高:多、来、米、法、索、拉、西。
这七个数字上、下标注的点表示音调升高8度音程或降低8度音程。
数字0为休止符,表示停止发音。
数字下或数字上的线段表示因的持续时间的长短。
没有线段的数字为4分音符,器时值为音长的基本度量单元,成为一拍。
数字下面标注的线段表示时间减短,没增加一条线段,表示时值减少一半,音符相应的成为8分音、16分音……数字后面的线段称为延长线,表示前一个音符的市场的增加,每条延长线的时值增量为1拍。
音长是一个相对的时间概念,一拍的时间长度没有限制,可以是1s,也可以是2s或是0.5s,。
若将4分音符的时长定为1s,其他音符的时值长度以其为基本参照度量,半拍为0.5s,2拍为2s,以此类推。
2、音高与频率关系20Hz至20KHz的音频脉冲信号控制蜂鸣器,可以使其根据控制信号的频率发出不同的音调。
摘要本设计应用数字电子技术的逻辑器件设计电路原理图以及编写VHDL语言来进行分析也编写,并在QUATURS II软件上实现编译,调试,波形仿真与分析,以及下载到FPGA上运行,实现彩灯功能,并能自由控制彩灯循环点亮的快慢,从而实现出现实中彩灯的原理。
最终完成的是灯光装饰中的彩灯循环点亮,数字计数以及频率调节等功能的设计。
通过本实训,能够初步学会与理解QUATURS II 软件与FPGA芯片的综合运用,还能有效地了解与实现现在生活中用到的与看到的,更深入地了解理论与生活的联系,从而更能了解社会,寻求发展方向。
利用控制电路可使彩灯按一定的规律不断的改变状态,不仅可以获得良好的观赏效果,而且可以省电。
循环彩灯的电路很多,循环方式更是五花八门。
通过程序调试及运行仿真,结果表明,本程序可以完成:8个灯的循环、8个灯的可控制循环以及8个灯的不同花样的循环。
本设计对更高层次的电子自动循环彩灯设计具有一定的拓展性。
关键词:VHDL;彩灯控制;QUATURS II软件;FPGA芯片目录引言 (1)第一章功能及要求 (2)1.1设计目的 (2)1.2 设计要求 (2)第二章设计方案................................... 错误!未定义书签。
2.1PLC技术电子彩灯自动循环设计 (2)2.2EDA的电子自动循环彩灯设计方案 (3)第三章 EDA技术 (4)3.1EDA的概念 (4)3.2EDA的发展历程 (4)3.4EDA技术的应用发展 (5)第四章 VHDL语言 (7)4.1VHDL的结构 (7)4.1.1 实体 (7)4.1.2 结构体 (7)4.1.3 库 (8)4.2VHDL的基本语句 (8)4.2.1 顺序语句 (8)4.2.2 并行语句 (9)第五章自动循环彩灯的设计 (12)第六章波形仿真、下载、测试 (18)6.1下载与测试 (18)6.2仿真波形 (18)总结 (23)致谢 (24)参考文献 (25)引言生活中小型的彩灯多为采用霓虹灯管做成各种各样和多种色彩的灯管,或是以日光灯、白炽灯作为光源,另配大型广告语、宣传画来达到效果。
学号:课程设计题目音乐数字彩灯控制器设计学院自动化专业自动化班级姓名指导教师李彬杨莉2013年7月3日目录引言1 设计意义及要求 (1)1.1 设计意义 (1)1.2 设计要求 (1)2 方案设计 (2)2.1 设计思路 (2)2.2 方案设计 (3)2.2.1设计方案一电路图 (3)2.2.2设计方案二电路图简单说明 (4)2.3 方案比较 (5)3 部分电路设计 (6)3.1 脉冲输出电路 (6)3.3实现循环序列显示功能的逻辑电路 (10)3.3.1 奇数数列显示电路的设计 (10)3.3.2偶数数列显示的电路设计 (11)3.3.3音乐数列显示电路的设计 (12)3.3.4 二分频电路的设计 (13)3.3.5七段显示数码管 (14)4 调试与检测 (16)4.1 调试中故障及解决办法 (16)4.2 调试与运行结果 (16)5 仿真操作步骤及使用说明 (17)体会和总结 (18)参考文献 (19)本科生课程设计成绩评定表引言当今社会电子设计发展很快,而通过一学期对数字电子技术的学习,学校安排了这次的数电实习,目的在与让学生综合运用所学的知识,对各基本器件的运用更加熟练,也更好的锻炼学生的设计思维和动手设计能力。
联系实际和运用所学的电子技术知识,设计出一个音乐数字彩灯控制器。
使数码管自动依次显示自然数列,奇数列,偶数列,然后又依次显示同上数列,不断循环。
这次设计中共采用了两种有效方案,思路各不相同。
方案一(个人方案)中采用了两片74LS90,四片74LS138,一片555定时器构成的多谐振荡器和少许门电路,方案较简单。
方案二(小组方案)主要是由74LS90和74LS153芯片组成的数列计数和显示电路,同时还有诸多门电路组成的循环电路。
音乐数字彩灯控制器设计1.设计意义及要求1.1设计意义数字电子技术在日常生活中的应用无处不在,数字音乐数字彩灯在节日装饰中起着十分重要的作用。
数字电子技术在实际应用中已经有相当纯熟的技术。
模拟电子技术课程设计报告书课题名称 姓 名学 号 院、系、部 专 业 指导教师年 月日※※※※※※※※※ ※※※※ ※※※※※※※※※※※2011级模拟电子技术课程设计目录1. 绪论 (2)1.1设计要求 (2)2. 音乐彩灯控制器设计 (2)2.1设计思路 (2)2.2音乐大小控制彩灯的设计及原理 (3)2.3音乐大小控制彩灯的电路实现 (3)2.3.1电源电路设计 (3)2.3.2音乐大小控制电路 (4)2.4音乐节奏控制电路 (4)2.4.1音乐节奏控制原理 (4)2.5总电路图 (5)3. 设计总结 (5)参考文献 (6)1.绪论音乐彩灯控制器是用音乐信号控制多组颜色的彩灯,利用其亮度变化反映音乐信号的强弱。
从而使灯的变化规律与音频信号的规律及电平大小相对应,是一种将听信号转换为视信号的装置.用来调节听众欣赏音乐时候的气氛和情绪。
随着科学的发展,人们生活水平的提高,人们不满足于吃饱穿暖,而要有更高的精神享受。
不论是思想,还是视觉,人们都在追求更高的美。
特别使在视觉方面,人们不满足于一种光,彩灯的诞生让人们是视觉对美有了更深的认识。
但现在市面上的音乐彩灯只是按照一定的方式闪烁,让人们感觉到十分的粗糙无味,更没有声音那样用震撼力,音乐彩灯的出现让我们既有了听觉上的享受,更有了精神上的享受。
但现在市面上的音乐彩灯只是按照音乐的一种方式闪烁,和音乐没多大关系,根本不能称为音乐彩灯。
本设计是一个音乐彩灯控制器,使其实用于家庭、商场、橱窗、舞厅、咖啡厅、公共广场等场所的摆设、装饰、广告、环境净化与美化,本电路的最大优点是可以实现音乐以三种方式控制彩灯的闪亮。
实现了音乐大小、节奏的控制。
1.1设计要求设计一种组合式彩灯控制电路,该电路没由两路不同控制方法的彩灯组成,彩灯可采用不同颜色的发光二极管组成不同的图案来实现。
(1)第一路按话筒输出信号的音量的强弱(信号幅度的大小)控制彩灯。
音强时,彩灯的亮度加大,反之,亮度减弱。
数电课程设计--彩灯循环控制电路设计《数字电子技术课程设计》报告——彩灯循环控制电路设计1.课程设计目的1.1巩固和加强“数字电子技术”课程的理论知识的理解和应用。
1.2独立设计出比较复杂的实用数字电子线路。
1.3提高电子电路实验技能及Multisim10仿真软件的使用能力。
1.4通过数字电子线路的设计、安装和调试,初步掌握数字电子线路单元电路的分析与设计方法。
1.5巩固所学理论,提高动手能力、创新能力和综合设计能力2.课程设计要求2.1所设计彩灯要能够自动循环点亮。
2.2彩灯循环显示且频率快慢可调。
3.3控制电路具有8路以上输出。
3.电路组成框图电源接入↓555定时电路↓计数器电路↓译码器电路↓彩灯演示电路4.元器件清单器材数量555 time rated 174HC163D_6V 174HC154DW_6V 1彩色发光二极管 8100Ω电阻 1800k电阻 25V电压源 1100nF可变电容 110nF电容 15.各功能块电路图5.1时钟信号产生电路通过调节C1来调节555定时器输出频率。
VCCOUTU3555_TIMER_RATEDGNDDIS RSTTHR CONTRI R41mΩR51mΩC210nF 14C1100nF Key=A45%1620VCC5.2计数电路使74HC163D 计数器实现000至111的计数循环。
U174HC163D_6VQA 14QB 13QC 12QD 11RCO15A 3B 4C 5D 6ENP 7ENT 10~LOAD 9~CLR 1CLK2U274HC154DW_6VO23O34O56O45O67O12O78O01O89O910O1011O1113O1214O1315O1416O1517A 23B 22C 21D20~G118~G219VCCOUTU3555_TIMER_RATEDGNDDIS RST THR CONTRI 13910115.3译码显示电路用100Ω连接在5V 电源与LED 灯之间,来保证LED 灯上通过的电流处于最大电流内,用74HC154来实现计数器输出数字的译码,从而使对应灯亮起。
郑州轻工业学院可编程数字系统设计题目基于FPGA的彩灯控制器设计学生姓名张焕焕专业班级电子信息工程10-2班学号541001030249院(系)电气信息工程学院指导教师胡智宏石军完成时间2013年6月21日郑州轻工业学院课程设计任务书题目基于FPGA的彩灯控制器设计专业、班级电信10-02班学号541001030249姓名张焕焕主要内容、基本要求、主要参考资料等:主要内容:要求学生使用硬件描述语言设计彩灯控制器的FPGA源程序,实现如下功能:设计一个彩灯控制器,使彩灯(LED管)可以实现四种花样循环变化及两种不同频率的闪烁,有复位开关。
整个系统有七个输入信号CLK,CLR,A,B,C,D,OPT,六个输出信号控制六个彩灯。
OPT的高低电平控制彩灯闪烁的快慢,A,B,C,D控制各种不同花样彩灯的变换。
此彩灯控制系统设定有四种花样变化。
四种花样分别为:a.彩灯从左到右逐次亮起,再逐次从右到左熄灭;b.彩灯两边同时亮两个,再逐次向中间亮;c.彩灯从左到右两个两个的亮,再从右到左两个两个逐次的亮;d.彩灯中间两个亮,再同时向两边散开。
基本要求:1、掌握FPGA 的程序设计方法。
2、掌握硬件描述语言语法。
3、程序设计完成后要求在软件中实现功能仿真。
主要参考资料:1、周润景.基于QuartusⅡ的FPGA/CPLD数字系统设计实例[M].电子工业出版社.2007,82、潘松黄继业. EDA技术实用教程(第二版).北京:科学出版社,2006.9完成期限:2013.6.21—2013.6.25指导教师签名:课程负责人签名:目录摘要 (I)中文摘要 (I)英文摘要 (II)1、概述 (1)1.1、设计目的 (1)1.2、设计要求 (1)2、系统设计 (1)2.1、设计原理 (1)2.1.1 系统原理设计图 (2)2.2、设计方案 (2)3、程序仿真过程 (3)3.1仿真图 (3)4、实验结果分析 (4)5、心得体会 (4)6、致谢 (5)7、参考文献 (5)8、附录 (6)基于FPGA的彩灯控制器设计摘要中文摘要随着科技的发展, 在现代生活中, 彩灯作为一种景观应用越来越多。
音乐彩灯控制电路1、申请题目:音乐彩灯控制电路采用4×4矩阵式键盘作为电子琴按键输入,用FPGA设计一个既可以区分不同音高和音阶进行乐曲的弹奏,又可以自动播放乐曲的音乐电路。
同时,在播放音乐的同时,点阵板上的彩灯会随着不同的音乐、不同的音阶、音调而出先不同的花型变化。
按键音符可以通过数码管显示出来。
2、项目规划:音乐演奏电路,既有通过键盘自由弹奏,又可以播放内存乐曲(播放的乐曲由设计者自由编辑,以简谱二进制码方式存放在ROM的数据文件中)。
彩灯显示电路,在音乐播放的同时,根据音乐节拍的不同,16路彩灯进行各种花型的变化,彩灯的亮灭有多种不同的模式,可以根据八个拨码开关来进行设计,进行自由组合搭配。
不同的音乐对应不同的彩灯模式,每种模式执行16拍后依次循环改变,当音乐停止时,彩灯的变化也停止。
设置启动、停止控制键,可以结束音乐的播放和彩灯变化。
设置选择音乐播放键,共存储了3首音乐,可以通过选择键进行选择播放具体不同的音乐。
设置了彩灯变化选择按钮,有普通彩灯和动感彩灯两种方式进行选择,可以通过按键进行选择。
设计采用音乐引入控制彩灯变化方式。
用4×4矩阵式键盘作为按键输入,16×16的LED 点阵板作为彩灯输出。
可以通过按键选择弹奏乐曲和播放乐曲两种模式。
点阵板上彩灯的变化随着乐曲的不同而进行不同的变化。
在播放过程中可以按键进行系统的停止和启动运行。
同时也可以通过扬声器将音乐播放出来。
3、实现方案:问题1:乐曲的发声原理组成乐曲的2个基本要素是每个音符的发声频率值和它持续的时间,可以利用程序控制FPGA某个引脚输出一定频率的矩形波,便可以得到某个音符的音调,也可以再接上扬声器之后,就能发出相应频率的声音。
同时,若能控制每个音符的持续时间,也就控制了乐曲的节奏,因此只需要控制输出到引脚的信号频率的高低以及每个信号持续的时间长短,即可实现乐曲的产生。
问题2:音符的获得方法和乐曲节奏的控制所有不同的频率信号都可以从同一个系统基准频率分频而来,可以通过预置不同频率的音符信号,通过系统基准频率值计算得到分频系数,提供给之后的节奏使用。
数电课程设计报告,,,音乐彩灯控制器电子技术课程设计题目名称:音乐彩灯控制器1. 设计任务和要求(1) 任务设计一种组合式彩灯控制电路,该电路由三路不同控制方法的彩灯所组成,采用不同颜色的发光二极管作设计实验。
(2) 要求① 第一路为音乐节奏控制彩灯,按音乐节拍变换彩灯花样。
② 第二路按音量的强弱(信号幅度大小)控制彩灯。
强音时,灯的亮度加大,且灯被点亮的数目增多。
③ 第三路按音调高低(信号频率高低)控制彩灯。
低音时,某一部分灯点亮;高音时,另一部分灯点亮。
摘要随着现代社会经济的飞速发展和夜市的兴起,各种彩灯装饰层出不穷,给城市的夜间带来绚丽的色彩。
夜间漫步于城市的每一个角落,触目可及变幻莫测、摇曳生姿的各式彩灯,无一不诱惑着人们好奇的双眼。
门面店铺灯光装潢大都采用时明时暗或部分循环点亮的流水模式,有新意的要属那些旋转上升变化的广告装饰灯。
在公园里有树状的彩灯,它从底部开始亮起,然后快速沿枝干向上窜升,到达顶端后向各处散开,远远望去犹如仙女散花,煞是好看。
有音乐的娱乐场所,比如说舞厅,酒吧间和咖啡厅的彩灯会随着悠扬的音乐闪烁生辉,这些场所的灯光一般比较幽暗,更加显得彩灯扑朔迷离、捉摸不定,一如可望而不可即的魑魅。
而气势磅礴、规模宏大的当然是大型的节日彩灯,把许多组彩灯进行不同的组合,便得到花样众多的主题字型或代表喜庆吉祥的图案。
这些彩灯不仅增添了节日的气氛,而且丰富了人们多姿多彩的生活。
本文介绍的彩灯控制器是一种组合式彩灯控制电路。
声控彩灯是音乐声响与彩灯灯光的相互组合,使音乐的旋律伴以亮度、颜色和图案不断变换的灯光,使人的视觉和听觉结合在一起获得综合的艺术享受。
本设计伴随音乐的节奏、大小、音调而变化的彩灯控制器。
使彩灯在艺术上有了很大的提高,本文的主要内容有以下几点:设计音乐信号放大电路;设计滤波电路,实现音乐的音调控制彩灯;555基本电路构成单稳态实现音乐大小控制彩灯;555基本电路构成多谐电路实现音乐节奏控制彩灯。
摘要电力电子技术产业作为当代高新技术尤其是信息技术产业与传统产业的接口,在国民经济中扮演着越来越重要的角色。
此设计论述了彩灯的总体控制,彩灯将会随着音乐的节奏闪亮,大大的改善了人们的娱乐环境,人们将在音乐和灯光当中消除工作一天的疲惫,并且彩灯的控制不需要人为的操作控制,将会完全自动的运行,使人们感受到了娱乐场所的智能化,人性化。
此设计采用了平时常用的集成电路,包括时钟电路、阶梯波电路、滤波器等等,将会很清晰的呈现出它的工作原理,它是电子技术的实例应用。
关键词:电子技术音乐彩灯集成电路。
II Abstract As the joint between the present hi-Tech industry especially the informationtechnology industry and tradition industry, power electronics industry has been playing amore and more important role in the country economy. Although this industry in Chinahas made some progress through developing more than 30 years, compared with thedeveloped countries the gap is still quite big. This industry can"t meet the demands of thecountry economy development in china. Constituting a series of systemic and scientificdeveloping strategy to speed this industry is the purpose of this paper. The importanteffects of this industry on country economy are discussed, the shaping and developingcondition of this industry is analyzed, and the advantages and disadvantages of thisindustry in China are pointed in this paper. On the basis of referring the advancedexperience of developed countries.keyword: electronic technique music illumination unicircuit目录一、设计方案简介 (03)设计内容、设计要求、软件学习、实验原理图、电力系统概述、试验结构分块二、设计条件及主要参数表 (07)电源电路、语音信号的输入、放大部分、滤波选频部分、整流器的工作原理与设计、阶梯波与同步脉冲实现幅度控制、输出显示部分三、设计主要参数计算 (15)音乐彩灯控制器原理电路图四、设计结果 (16)仿真电路图及仿真结果五、实验结果分析 (17)实验工作原理六、设计评述 (19)心得体会七、参考文献 (20)一、设计方案简介音乐彩灯控制器是用音乐信号控制多组颜色的彩灯,利用其亮度变化反映音乐信号的强弱,从而使灯的变化规律与音频信号的规律及点评大小相对应,是一种将听信号转换为是信号的装置,用来调节听众欣赏音乐时候的气氛和情绪。
基于FPGA的可遥控智能彩灯控制器设计与实现摘要电子设计自动化(EDA,Electronic Design Automation)技术的应用引起电子产品及系统开发的革命性变革,本系统实现以V erilog-HDL为基础的十六路彩灯控制系统。
当外面是白天的时候,灯全部熄灭;当黑夜降临,十六路发光二极管(LED,Light Emitting Diode)灯全亮,等待花色选择。
同时也可以选择彩灯花色变化的频率,十六路彩灯共有七种不同花色选择。
本次设计采用了自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
现场可编程门阵列(FPGA ,Field Programmable Gata Array)具有集成度高、通用性好、设计灵活、编程方便、可以实现芯片的动态重构等特点,因此可以快速地完成复杂的数字系统。
本文介绍了基于EDA技术的多路彩灯控制器的设计与分析。
在Quartus II环境下采用V erilog语言实现,论述了基于V erilog语言和FPGA芯片的数字系统设计思想和实现过程。
在具体实现上,设计模块包括:时序控制分模块,显示控制模块,发射接收模块,光线感知模块四部分组成。
最后在ModelSim中完成了功能仿真。
本项目的实施,不仅要求学生数字系统设计流程的合理性,而且要求用电阻晶体管逻辑(RTL,Resistor Transistor Logic)级Verilog描述数字电路以及EDA开发工具的熟练使用。
关键词:V erilog,彩灯,控制,仿真大连东软信息学院毕业设计(论文) Abstract Design and Iplementation of Remote Intelligent Lights Controller Based on FPGAAbstractElectronic Design Automation (EDA, Electronic Design Automation) technology application cause the revolutionary change of Electronic products and systems development, the system implementation based on V erilog HDL - ten all lights control system.When the day is outside, lights all out, when night came, ten all led lights all light, waiting for design and color choice. At the same time, also can choose design and color of lights change frequency, ten all lights a total of seven different colors to choose.The design has adopted the top-down design method, namely from the overall system requirements, from top to bottom of the design task decomposition into the different function module, finally each function module is connected to form the top module, the overall design of system hardware.Field Programmable gate Array (FPGA, Field Programmable Gata Array) with high integration, good generality, flexible design, programming, convenient, can realize the dynamic reconfiguration of chips and other characteristics, so you can quickly complete the complex digital system.This paper introduces the design and analysis of multiple lights controller based on the EDA technique.In the QuartusII environment using V erilog language, discusses the digital system design idea of V erilog language and the FPGA chip and the implementation process based on.On the concrete realization,Design modules include: Sequential control module, display control module, launch receiving module, light perception module four parts.Finally complete functional simulation in ModelSim.The implementation of this project, not only requests the student to the rationality of the digital system design process, and asked to use resistance Transistor Logic (RTL, Resistor Transistor Logic) level V erilog digital circuit and skilled use of EDA tools.Key words: V erilog, Lantern, Control, Simulation目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1 课题研究背景与意义 (1)1.2 课题研究内容与方法 (2)第2章关键技术介绍 (3)2.1 VERILOG HDL (3)2.2 自上而下设计 (4)2.3 有限状态机 (5)第3章系统需求分析 (8)3.1 系统设计目标 (8)3.2 系统功能需求 (8)3.3 系统非功能需求 (8)3.4 系统开发环境 (8)3.4.1 硬件环境 (8)3.4.2 软件环境 (9)3.5 系统可行性分析 (11)3.6 外围电路分析 (12)3.6.1 控制电路 (12)3.6.2 显示电路 (12)3.6.3 系统流程图 (12)第4章系统设计 (14)4.1 系统设计指导原则 (14)4.2.1 数据通道模块设计 (16)4.2.2 控制单元模块设计 (17)第5章系统实现 (19)5.1 控制单元的部分实现 (19)5.2 数据通道中的部分实现 (20)第6章系统测试 (21)6.1 控制单元仿真 (21)6.2 数据通道仿真 (21)6.3 分频模块仿真 (21)6.4 显示模块仿真 (22)6.5 系统整体仿真 (22)第7章结论 (23)致谢 (25)第1章绪论1.1 课题研究背景与意义科学技术的无限发展,人民生活水平的不断提高,都使得彩灯装饰在现代生活中变为一种可增强人们的美感饰具,同时也可作为广告宣传,不仅增添节日的气氛,也为着人们的生活增添亮丽。
声控音乐彩灯控制器的设计与制作摘要当您在欣赏音乐时,若能伴随着乐曲的旋律,彩灯同步闪烁变换,不仅能增添欢乐的气氛,是一种美的享受。
电路简单,成本低,尤其是适合家庭或工作单位节日欢聚之用,增加节日的欢快气氛。
本次设计运用声控电路的原理,声控电路是指以击掌声,口哨声,敲击物体声以及走步声等声响来控制电路开、关的电路。
本设计给出了声控音乐彩灯控制器的方案设计,还对元器件的构成及功能进行了较为详细的分析,运用protel软件,绘制了电路图,并完成了PCB设计。
最终通过电路板的焊接与调试后制作出来了实物。
关键词:声控电路,音乐彩灯,控制器Sonic music lights controller design and productionAuthor: AdilaiTutor: Tang hailingAbstractWhen you enjoy music, if can with music melody, flashing lights synchronization, not only can add joy change the atmosphere, it is a kind of beautiful enjoyment. Circuit is simple, low cost, especially suitable for home or work together with, the unit festival holiday lively atmosphere increase.The design principle of using sonic circuits, sonic circuits refers to strike applause, whistles, percussive sound and sound to stop such objects noise control circuit opening or closing the circuit. This design gives music lights controller scheme sonic design, but also the composition and function of components for a more detailed analysis, use of protel software, mapped the circuit diagram, and finished PCB design. Eventually the welding and debugging by circuit after produced real.Key words: Sonic circuits, music lights, controller目录1 绪论 (1)2 声控音乐彩灯控制器控制器的方案设计 (2)2.1声控电路的原理 (2)2.2声控音乐彩灯控制器的电路设计 (2)2.2.1设计思路 (2)2.2.2电路设计 (3)3 元器件构成及功能分析 (4)3.1单向可控硅 (4)3.1.1晶闸管(SCR) (4)3.1.2 普通晶闸管的结构和工作原理 (4)3.2 光耦 (6)3.2.1光耦定义和工作原理 (6)3.2.2光耦的结构与种类 (8)3.3半导体二极管 (10)3.3.1二极管的定义和分类 (10)3.3.2整流二极管 (10)3.3.3开关二极管 (11)3.4扬声器 (12)3.4.1扬声器定义和分类 (12)3.4.2扬声器的工作原理 (12)4 制作PCB板及电路板 (14)4.1制作PCB板 (14)4.2制作电路板 (15)5 电路板的焊接与调试 (16)5.1元器件焊接 (16)5.2电路调试 (17)结论 (19)致谢 (20)参考文献 (21)附录 (22)附录A 声控音乐彩灯控制器电路原理图 (22)附录B 声控音乐彩灯控制器电路PCB板图 (23)附录C 原器件清单表 (24)1 绪论近年来,随着人们生活水平的较大提高,人们对于物质生活的要求也在逐渐提高,不光是对各种各样的生活电器的需要,也开始在环境的幽雅方面有了更高的要求。
基于fpga的毕业设计题目FPGA全称为Field-Programmable Gate Array,是一种基于实现了数百万个门电路的可编程逻辑器件,可用于实现各种数字电路功能。
FPGA对于毕业设计来说是一种非常优秀的选择,笔者将在下面的文章中介绍一种基于FPGA的毕业设计题目,并分步骤阐述其实现过程。
题目:基于FPGA的音乐舞台灯光控制器设计思路:1. 功能设计:本设计的主要功能是通过FPGA控制LED灯光的颜色、亮度和闪烁效果,同时控制舞台上与音乐的节拍相同的灯光变化。
因此,该设计需要实现音频采集、音乐分析、音乐控制灯光、舞台灯光控制等多种功能。
2. 硬件设计:本设计需要FPGA、音频采集模块、灯光控制模块等硬件部分。
其中,音频采集模块使用声卡购买或自行制作,灯光控制模块可以使用MOS管或者二极管。
FPGA需要选择性价比高的型号,同时需要考虑IO口资源的数量,以便控制舞台上的灯光。
3. 软件设计:软件部分需要进行音频采集、音乐分析、灯光控制数据的处理和传输等方面的编程设计。
软件设计中需要选择选用VHDL或Verilog进行FPGA的开发与调试,使用相关的软件工具进行音乐分析的预处理与处理,使用Verilog-HDL的设计软件Quartus进行核心程序的实现。
具体实现:1. 音频采集部分:如前所述,可以通过声卡购买或自行制作。
采集到音频信号后,将其从声卡中解码出数字信号,并通过DSP的处理,提取出所需要的信号数据,如采样率,频率等。
2. 音乐分析:在采集完音频信号后,需要进行预处理。
理论上,音乐的频谱在FFT变换后得到会随时间在一个平面内移动。
因此,可以在FFT之后得到一个时间和频率坐标系的数据。
然后再选择想要控制的频率区间,提取信号数据,如频率、振幅等作为控制灯光的参考源。
3. 灯光控制:基于分析得到的音乐信号,将其作为变化引擎进行舞台灯光的控制。
将选定的信号参考源输入到SPİ输出,连接到控制器的输入通道,对应输出通道连接的相应亮度与闪烁相应的MOS管。
电子技术课程设计题目名称:班级:学号:姓名:指导教师:日期:1. 引言音乐彩灯控制器是用音乐信号控制多组颜色的灯泡,利用其亮度变化来反映音乐信号,一种将听信号转化为视信号的装置。
该控制器具有渲染气氛的作用,增强人们欣赏能力。
2 设计任务与要求:2.1任务:1. 设计一种组合式彩灯控制电路,该电路由不同控制方法的彩灯所组成,采用不同颜色的发光二极管作课题。
2.第一路为音乐节奏控制彩灯,按音乐节拍变换彩灯花样。
3.第二按音律的强弱(信号幅度大小)控制彩灯。
强音时,灯的亮度加大,且被点亮的数目增多。
4.第三路按音调高低(信号频率高低)控制彩灯。
低音时,某一部分灯点亮;高音时,另一部分点亮。
2.2要求:1、综合运用电子技术课程中所学的理论知识完成课程设计。
2、通过查阅手册和文献资料,提高独立分析和解决实际问题的能力。
3、熟悉常用电子器件的类型和特征,并掌握合理选用的原则。
4、学会电子电路的安装与调试技能。
5、进一步熟悉电子仪器的正确使用。
3 设计思路:根据课题要求,可将控制器分为三部分来实现:(1)由于音乐的节奏是具有一定时间间隔的节拍脉冲信号。
因此,可采用计数、译码驱动电路构成节拍脉冲信号发生器,使相应的彩灯按节奏点亮和熄灭。
(2)将声音信号变成电信号,经过放大、整流滤波,来点亮彩灯,以实现声音信号强弱的控制。
(3)采用高、低通有源滤波电路来实现高、低音对彩灯的控制。
4 设计原理:如图2.1所示,控制器包括声、电转换和放大电路、时钟脉冲发生器、记数电路和控制电路等。
它控制四路彩灯伴随乐曲而闪烁发光。
拾音话筒控制MIC将乐曲声响转变为电信号,经VT1~VT4加至四路模拟开关IC3(CD4066)。
555和RP1、R1、R2、D1、C1等组成无稳态多谐振荡器t(通)=0.693(RP1+R1)C1t(放)=0.693R2C1T=0.693(RP1+R1+R2)C1图示参数的振荡周期T在0.5~5秒范围内变化。
引言这次的课程设计主要是通过计数器,译码器来实现的,这个音乐数字彩灯控制电路实质上就是循环发出一系列的有规律的数列,并通过数码管显示出来。
这里主要使用的就是计数器,计数器在时序电路中应用很广泛,它不仅可以用于对脉冲进行计数,还可以用于定时等其他功能。
运用计数器的不同功能和不同接法就可以实现不同的序列输出。
这次的实验内容需要是数码管能够按照要求依次输出自然数序列,计数序列,偶数序列还有音乐序列。
为了实现这个循环输出的功能,经过分析可以用2线—4线译码器和四进制加计数器来控制四个计数器来实现对数列循环输出。
脉冲信号可根据555定时器来设计一个多谐振荡器来产生方波,通过方波来驱动计数器工作。
由于自然数序列和音乐序列与计数序列和偶数序列的频率有2倍的关系,为了使数字显示时间根本相等所以需要用JK触发器来设计一个分频电路。
通过以上的准备分析,这次的实际的原理电路那么可以根据以上绘出。
音乐数字彩灯彩灯控制器1 设计意义及要求1.1设计意义音乐数字彩灯控制器在现实生活中有很广泛的商业用途,常用于商业广告等各个领域,随着时代的进步也对音乐数字彩灯控制器有了更高的要求。
通过本次音乐数字彩灯控制器的设计与制作是自己有时机将自己所学的知识应用到生活实践中,增强学生理论联系实践的能力。
进一步学习掌握组合逻辑电路与时序逻辑电路的设计、组装与调试的方法。
熟悉各种重用芯片的功能与使用的技巧。
通过本次小组合作,学会与团队成员相互学习,相互帮助的方法。
同时锻炼了自己分析电路以几查找问题的能力。
1.2 设计要求设计要求1.运用所学的模电知识和数字电路知识;2.用到的原件:实验板、电源、连接导线、74系列芯片、555芯片或微处理器等。
初始条件1.数码管自动一次显示数字列队0,1,2,3,4,5,6,7,8,9〔自然数列〕;1,3,5,7,9〔奇数列〕;0,2,4,6,8〔偶数列〕;0,1,2,3,4,5,6,7,0,1〔音乐数列〕。
音乐彩灯控制电路1、申请题目:音乐彩灯控制电路采用4×4矩阵式键盘作为电子琴按键输入,用FPGA设计一个既可以区分不同音高和音阶进行乐曲的弹奏,又可以自动播放乐曲的音乐电路。
同时,在播放音乐的同时,点阵板上的彩灯会随着不同的音乐、不同的音阶、音调而出先不同的花型变化。
按键音符可以通过数码管显示出来。
2、项目规划:音乐演奏电路,既有通过键盘自由弹奏,又可以播放内存乐曲(播放的乐曲由设计者自由编辑,以简谱二进制码方式存放在ROM的数据文件中)。
彩灯显示电路,在音乐播放的同时,根据音乐节拍的不同,16路彩灯进行各种花型的变化,彩灯的亮灭有多种不同的模式,可以根据八个拨码开关来进行设计,进行自由组合搭配。
不同的音乐对应不同的彩灯模式,每种模式执行16拍后依次循环改变,当音乐停止时,彩灯的变化也停止。
设置启动、停止控制键,可以结束音乐的播放和彩灯变化。
设置选择音乐播放键,共存储了3首音乐,可以通过选择键进行选择播放具体不同的音乐。
设置了彩灯变化选择按钮,有普通彩灯和动感彩灯两种方式进行选择,可以通过按键进行选择。
设计采用音乐引入控制彩灯变化方式。
用4×4矩阵式键盘作为按键输入,16×16的LED 点阵板作为彩灯输出。
可以通过按键选择弹奏乐曲和播放乐曲两种模式。
点阵板上彩灯的变化随着乐曲的不同而进行不同的变化。
在播放过程中可以按键进行系统的停止和启动运行。
同时也可以通过扬声器将音乐播放出来。
3、实现方案:问题1:乐曲的发声原理组成乐曲的2个基本要素是每个音符的发声频率值和它持续的时间,可以利用程序控制FPGA某个引脚输出一定频率的矩形波,便可以得到某个音符的音调,也可以再接上扬声器之后,就能发出相应频率的声音。
同时,若能控制每个音符的持续时间,也就控制了乐曲的节奏,因此只需要控制输出到引脚的信号频率的高低以及每个信号持续的时间长短,即可实现乐曲的产生。
问题2:音符的获得方法和乐曲节奏的控制所有不同的频率信号都可以从同一个系统基准频率分频而来,可以通过预置不同频率的音符信号,通过系统基准频率值计算得到分频系数,提供给之后的节奏使用。
每个音符持续的时间是乐曲能连续播放的另一个要素。
设全音符的持续时间为1s,则2分音符的持续时间为0.5s,4分音符的持续时间为0.25s。
如果采用1MHz的频率作为系统基准频率,则需要对1MHz信号进行250000次分频,得到4Hz信号作为一个4分音符的频率。
对于其他占用时间较长的节拍,则只需要将该音符连续输出相应遍数即可。
问题3:16路彩灯控制原理根据系统设计要求,整个模块分为控制彩灯节奏的输入信号和16个输出信号,分别用于控制十六路彩灯。
利用状态机实现了7种花型的变化,同时利用六十六位常数的设计,可方便地设置和修改花型。
解决方案:1.乐曲播放功能设计根据乐曲发声的基本原理,乐曲播放模块的设计思路是通过1MHz时钟分频获得音符节拍频率,通过查音符频率表获得音符分频系数,作为音频分频模块分频的依据,将1MHz 时钟频率分频获得合适的音符频率,输出至音频播放模块。
节拍控制分频模块主要用于产生乐曲节拍,控制乐曲播放的节奏,1MHz的系统频率经过250000次分频,可以得到4分音符持续时间的频率。
乐曲长度计数器在节拍控制频率信号的作用下进行乐曲音符的顺序计数。
乐曲模块中存放的是各个乐曲音符的分频值。
音符分频器根据乐曲模块中存储的各个音符的分频系数来完成对1MHz系统频率的分频,输出相应的音频信号。
2.乐曲弹奏功能设计根据乐曲弹奏的工作原理,乐曲弹奏主要由键盘扫描模块、分频置数模块、音符分频器、输出模块构成。
其中,键盘扫描模块的设计思路是在系统时钟控制下循环给出键盘扫描信号,然后根据扫描信号和对应的键盘响应信号确定键盘按键位置,再将相应的值送到下一个处理模块。
这里采用列扫描方式,由FPGA输出键盘的列输入信号,采集键盘的行输出信号。
键盘扫描模块可以采用状态机的设计方法,用四个状态完成对键盘的四列扫描,确定每一列的输入;第五个状态用于键值处理状态,根据扫描结果判断按键是音符输入还是高低音的选择,以及长时间无按键时停止音频输出,对长时间按同一键按一次键处理等。
3.彩灯电路功能设计系统的工作原理是,通过时序控制电路根据输入信号产生符合一定要求的、供显示控制电路使用的控制时钟信号,而显示控制电路则根据时序控制电路输入的控制时钟信号,输出六种花型循环变化的、控制十六路彩灯工作的控制信号,这些控制信号加上驱动电路一起控制彩灯工作。
4、系统结构:系统结构框图:模块功能描述:根据设计要求,要求系统既可以播放乐曲,又可以弹奏乐曲,同时彩灯的变化都是随着音乐的变化而显现不同的花型,可以通过设置一个功能选择键将两者分开。
其中乐曲播放模块应包含节拍控制分频模块、音符频率输出模块、乐曲存储模块;乐曲弹奏模块应包含键盘扫描模块、音符频率输出模块。
还有一个彩灯显示模块。
乐曲播放模块乐曲播放模块的设计思路是通过1MHz时钟分频得到音符节拍频率,通过查表方式获取音符节拍频率分频系数,作为音符分频器的依据,将1MHz时钟分频获得合适的音符频率,输出至音频输出。
节拍控制分频模块主要用于产生乐曲节拍,控制乐曲的播放节奏。
乐曲长度计数器在节拍控制频率信号的作用下进行乐曲音符的顺序计数。
乐曲模块中存放的是乐曲各个音符的分频值。
音符分频器根据乐曲模块中存储的各个音符的分频系数完成对1MHz系统频率的分频,输出相应的音频信号。
乐曲弹奏模块和彩灯显示模块乐曲弹奏和彩灯显示主要有键盘扫描模块、分频系数模块、音符分频器和彩灯显示电路构成。
其中,键盘扫描模块的设计思路是在系统时钟控制下循环给出键盘扫瞄信号,然后根据扫描信号和对应键盘响应信号确定键盘按键位置,再将相应键值的段码输出。
分频系数模块用于确定输入音符对应的分频数。
音符分频器根据分频系数模块提供的分频系数完成对1MHz系统频率的分频,输出相应的频率信号。
彩灯显示模块根据输入的信号,对应输出不同花型的彩灯信号。
模块接口标注:5、状态流程图:系统工作状态流程6、各主要模块仿真结果波形各模块的仿真波形,详细注释输入输出功能端口1.乐曲播放模块仿真电路设计中,系统时钟clk采用1MHz的工作频率。
为了便于观察仿真的结果,这里将节拍控制分频模块4分音符的分频数由250000暂时调整为16,循环播放3个音符,且这三个音符的分频系数一次为2、4、8。
仿真波形如下,从图中可以看出,节拍控制分频模块的4分音符频率输出clk_4Hz确为系统基准频率clk的16分频,且在clk_4Hz信号节拍的控制下,out_sound依次输出为对clk的2分频、4分频和8分频信号。
2.键盘扫描及显示模块仿真为了便于观察仿真结果,将键盘扫描频率暂时调整为8个时钟信号clk,仿真前设定行输入信号KBcol为“1110”,仿真结果如图所示,可以看出当列扫描信号KBrow一次扫描输出“1110”、“1101”、“1011”、“0111”,及对应这3、2、1、0行各个按键信息。
3.乐曲弹奏模块仿真为了便于观察仿真的结果,键盘扫描频率采取上述加键盘扫描及显示模块仿真中的扫描频率,这里取中音1和低音1的仿真来验证模块的功能。
4.彩灯显示电路模块仿真彩灯显示电路是随着音乐的播放而出现不同变化花型的电路,这里仿真用的是自动循环播放乐曲来验证模块的功能。
7、课程设计总结通过此次数字系统课程设计自己觉得最大的体会是体会了独立设计一个小型系统的整个过程,为今后自己在实际应用于开发系统的发展方向提供了一个很好的锻炼的机会。
这次我设计的题目是音乐彩灯控制电路。
就如同题目所涵盖的意思一样,我的设计系统是一个可以随着音乐的播放而彩灯自动变化花型的数字电路系统。
这个系统是通过FPGA 来设计实现的。
系统分为两大部分,一部分是音乐产生电路,一部分是彩灯显示电路。
音乐产生电路又有两种区分,一种是自动播放音乐,一种是可以通过键盘来弹奏音乐。
最终实现的设计已经大部分实现了我设计中谈及到的功能。
系统中设计了开始按钮,可以开启系统运行。
可以有音乐播放的选择按钮,通过不同的选择,可以播放不同的音乐。
同时也可以通过键盘按键来弹奏乐曲。
键盘设计了A、B、C分别代表高音、中音和低音。
用数字1-7代表7个音符。
在播放音乐的同时,可以选择是否开启彩灯变化电路,开启电路时,彩灯的变化是随着音乐的变化而呈现缤纷多彩的变化的。
当然彩灯的变化也有两种选择方式:普通模式与动感模式。
总体来说,最终完成的设计和预期的目标基本相同。
在设计中还可以提高和改进的地方主要有彩灯变化的方式。
在最终完成的设计成品中彩灯的变化花型还是过于单一。
在设计中可以试着将列选进行扫描,最终使得彩灯的变化可以实现输出字或者图案等花型。
相信在以后的过程中,可以在这个方面进行更多的设计思考。
最后谈一点设计体会。
通过此次的课程设计,最直接的受益是学会了一门数字电路设计语言—VHDL语言。
通过在设计的过程中的整个立项和实施过程的体会是最重要的。
可以说从对VHDL语言的不了解到通过查阅各种资料来学习VHDL语言的语法和编程技术,这本身便是一个挑战与学习的过程,也正是有了这样一个课程设计,才使得我能够迅速地掌握了VHDL语言的编程入门。
当然令我映像深刻的还有的是调试的过程。
因为也许程序编写没有问题,但是在调试的过程中也许会出现很多意想不到的问题,正是在这种不断调试中才能发现更多的问题。
所以通过这一次的数字系统课程设计,使我受益匪浅。
8、参考文献1.电子设计自动化(EDA)课程设计与项目实例李莉路而红编著2.数字逻辑EDA设计与实践刘昌华编著3.EDA及技术实验与课程设计曹昕燕周凤臣聂春燕编著9.源程序Music.vhdllibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity music isgeneric(mid1 : integer range 1000 to 4000 :=1911;--mid1 : integer range 0 to 10 :=1;mid2 : integer range 1000 to 4000 :=1703;--mid2 : integer range 0 to 10 :=3;mid3 : integer range 1000 to 4000 :=1517; --mid3 : integer range 0 to 10 :=7;mid4 : integer range 1000 to 4000 :=1432; mid5 : integer range 1000 to 4000 :=1276; mid6 : integer range 1000 to 4000 :=1137; mid7 : integer range 1000 to 4000 :=1012;low1 : integer range 1000 to 4000 :=3823; low2 : integer range 1000 to 4000 :=3405; low3 : integer range 1000 to 4000 :=3034; low4 : integer range 1000 to 4000 :=2863; low5 : integer range 1000 to 4000 :=2551; low6 : integer range 1000 to 4000 :=2273; low7 : integer range 1000 to 4000 :=2025;high1 : integer range 100 to 4000 :=956; high2 : integer range 100 to 4000 :=851; high3 : integer range 100 to 4000 :=758; high4 : integer range 100 to 4000 :=716; high5 : integer range 100 to 4000 :=638; high6 : integer range 100 to 4000 :=568;high7 : integer range 100 to 4000 :=506);port(clk : in std_logic;start : in std_logic;out_sound : out std_logic;sel : in std_logic;sound : out std_logic_vector(2 downto 0));end music;architecture behav of music issignal clk_4Hz : std_logic;signal count : integer range 0 to 4096;signal freq : integer range 0 to 4096;signal counter : integer range 0 to 100;signal max_250000 : std_logic_vector(17 downto 0); --signal max_250000 : std_logic_vector(3 downto 0);beginprocess(start,clk)beginif start='0' thenclk_4Hz<='0';max_250000<="000000000000000000";--max_250000<="0000";elsif clk'event and clk='1' thenif max_250000>="111101000010001111" then--if max_250000>="1111" thenmax_250000<="000000000000000000";--max_250000<="0000";else max_250000<=max_250000+1;end if;if max_250000="000000000000000000" then--if max_250000="0000" thenclk_4Hz<='1';else clk_4Hz<='0';end if;end if;end process;process(clk_4Hz,start)beginif start='0' thencounter<=0;elsif clk_4Hz'event and clk_4Hz='1' then if counter>=21 then--if counter>=7 thencounter<=0;elsecounter<=counter+1;end if;end if;end process;process(counter)begincase counter is--when 0=>freq<=mid1;sound<="001"; --when 1=>freq<=mid2;sound<="010";--when 3=>freq<=mid4;sound<="100"; --when 4=>freq<=mid5;sound<="101"; --when 5=>freq<=mid6;sound<="110"; --when 6=>freq<=mid7;sound<="111"; --when 7=>freq<=high1;sound<="001";when 0=>freq<=low5;sound<="101"; when 1=>freq<=mid1;sound<="001"; when 2=>freq<=mid1;sound<="001"; when 3=>freq<=mid1;sound<="001"; when 4=>freq<=mid1;sound<="001"; when 5=>freq<=mid3;sound<="011"; when 6=>freq<=mid2;sound<="010"; when 7=>freq<=mid1;sound<="001"; when 8=>freq<=mid2;sound<="010"; when 9=>freq<=mid3;sound<="011"; when 10=>freq<=mid1;sound<="001"; when 11=>freq<=mid1;sound<="001"; when 12=>freq<=mid3;sound<="011"; when 13=>freq<=mid5;sound<="101"; when 14=>freq<=mid6;sound<="110";when 16=>freq<=mid6;sound<="110"; when 17=>freq<=mid5;sound<="101"; when 18=>freq<=mid3;sound<="011"; when 19=>freq<=mid3;sound<="011"; when 20=>freq<=mid1;sound<="001";when others=>freq<=0;sound<="000"; end case;end process;process(clk,start,sel)beginif sel='0' then out_sound<='0';elseif start='0' thencount<=0;out_sound<='0';elsif clk'event and clk='1' thenif freq=0 then out_sound<='0';elsif count=0 thencount<=freq;out_sound<='1';elsecount<=count-1;out_sound<='0';end if;end if;end if;end process;end behav;piano.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity piano isport(clk,start : in std_logic;KBCol : in std_logic_vector(3 downto 0);KBRow : out std_logic_vector(3 downto 0);out_sound : out std_logic;seg4 : out std_logic_vector(3 downto 0);sel : in std_logic;--key : out std_logic_vector(4 downto 0); sound : out std_logic_vector(2 downto 0));end entity;architecture behav of piano issignal state : std_logic_vector(2 downto 0);signal clk1 : std_logic;signal d : std_logic_vector(4 downto 0);signal d0,d1,d2,d3,d_reg : std_logic_vector(4 downto 0);signal snote : std_logic_vector(4 downto 0);signal sscal : std_logic_vector(1 downto 0);signal cnt,scnt : std_logic_vector(13downto 0); signal ctrln : std_logic_vector(2 downto 0);signal count,freq : integer range 0 to 4096;constant low1 : integer :=3822; constant low2 : integer :=3405; constant low3 : integer :=3034; constant low4 : integer :=2863; constant low5 : integer :=2551; constant low6 : integer :=2273; constant low7 : integer :=2025; --constant mid1 : integer :=2; constant mid1 : integer :=1911; constant mid2 : integer :=1703; constant mid3 : integer :=1517; constant mid4 : integer :=1432; constant mid5 : integer :=1276; constant mid6 : integer :=1137; constant mid7 : integer :=1012; constant high1 : integer :=956; constant high2 : integer :=851; constant high3 : integer :=758; constant high4 : integer :=716; constant high5 : integer :=638; constant high6 : integer :=568;constant stop : integer :=0;begin--clk1<=cnt(9);--process(clk)--begin--if clk'event and clk='1' then--cnt<=cnt+1;--end if;--end process;process(start,clk)--扫描时钟100Hz,由1MHz分频beginif start='0' thenclk1<='0';cnt<="00000000000000";elsif clk'event and clk='1' thenif cnt>="10011100001111" thencnt<="00000000000000";elsecnt<=cnt+1;end if;if cnt="00000000000000" thenclk1<='1';else clk1<='0';end if;end if;end process;d<=d0 or d1 or d2 or d3;process(clk1)beginif clk1'event and clk1='1' thencase state iswhen "000"=>KBRow<="1110";state<="001"; case KBCol iswhen "1110"=>d0<="11111";seg4<="1111";--Fwhen "1101"=>d0<="11011";seg4<="1011";--B when "1011"=>d0<="10111";seg4<="0111";--7 when "0111"=>d0<="10011";seg4<="0011";--3 when others=>d0<="00000";end case;when "001"=>KBRow<="1101";state<="010"; case KBCol iswhen "1110"=>d1<="11110";seg4<="1110";--Ewhen "1101"=>d1<="11010";seg4<="1010";--A when "1011"=>d1<="10110";seg4<="0110";--6 when "0111"=>d1<="10010";seg4<="0010";--2 when others=>d1<="00000";end case;when "010"=>KBRow<="1011";state<="011"; case KBCol iswhen "1110"=>d2<="11101";seg4<="1101";when "1101"=>d2<="11001";seg4<="1001";when "1011"=>d2<="10101";seg4<="0101";when "0111"=>d2<="10001";seg4<="0001";when others=>d2<="00000";end case;when "011"=>KBRow<="0111";state<="100"; case KBCol iswhen "1110"=>d3<="11100";seg4<="1100";when "1101"=>d3<="11000";seg4<="1000";when "1011"=>d3<="10100";seg4<="0100";when "0111"=>d3<="10000";seg4<="0000";when others=>d3<="00000";end case;when "100"=>state<="000";if d="00000" thend_reg<=d;if scnt=200 thensnote<="00000";elsescnt<=scnt+1;end if;elsescnt<="00000000000000";if d/=d_reg thend_reg<=d;if d>="10001" and d<="10111" thensnote<=sscal&d(2 downto 0);elsif d="11010" thensscal<="11";elsif d="11011" thensscal<="10";elsif d="11100" thensscal<="01";end if;end if;end if;when others=>state<="000";end case;end if;end process;process(snote)begincase snote iswhen "01001"=>freq<=low1;sound<="001";when "01010"=>freq<=low2;sound<="010";when "01011"=>freq<=low3;sound<="011";when "01100"=>freq<=low4;sound<="100";when "01101"=>freq<=low5;sound<="101";when "01110"=>freq<=low6;sound<="110";when "01111"=>freq<=low7;sound<="111";when "10001"=>freq<=mid1;sound<="001";when "10010"=>freq<=mid2;sound<="010";when "10011"=>freq<=mid3;sound<="011";when "10100"=>freq<=mid4;sound<="100";when "10101"=>freq<=mid5;sound<="101";when "10110"=>freq<=mid6;sound<="110";when "10111"=>freq<=mid7;sound<="111";when "11001"=>freq<=high1;sound<="001";when "11010"=>freq<=high2;sound<="010";when "11011"=>freq<=high3;sound<="011";when "11100"=>freq<=high4;sound<="100";when "11101"=>freq<=high5;sound<="101";when "11110"=>freq<=high6;sound<="110";when "11111"=>freq<=high7;sound<="111";when others =>freq<=stop;sound<="111"; end case;--key<=snote;end process;process(clk,sel,start)beginif sel='1' or start='0' thenout_sound<='0';elseif clk'event and clk='1' then if freq=0 thenout_sound<='0';elsif count=0 thencount<=freq;out_sound<='1';elsecount<=count-1;out_sound<='0';end if;end if;end if;end process;end behav;flower.vhdlibrary ieee;use ieee.std_logic_1164.all; entity flower isport(--clk : in std_logic;clr : in std_logic;--led : out std_logic_vector(15 downto 0);led : out std_logic_vector(6 downto 0);state : in std_logic_vector(2 downto 0));end flower;architecture behav of flower issignal current_state : std_logic_vector(2 downto 0);--signal flower : std_logic_vector(15 downto 0);signal flower : std_logic_vector(6 downto 0);begin--process(clr,clk)process(clr,state)--constant f1 : std_logic_vector(15 downto 0):="0001000100010001";--constant f2 : std_logic_vector(15 downto 0):="1010101010101010";--constant f3 : std_logic_vector(15 downto 0):="0011001100110011";--constant f4 : std_logic_vector(15 downto 0):="0100100100100100";--constant f5 : std_logic_vector(15 downto 0):="1001010010100101";--constant f6 : std_logic_vector(15 downto 0):="1101101101100110";--constant f7 : std_logic_vector(15 downto 0):="0111011101110111";constant f1 : std_logic_vector(6 downto 0):="0000001";constant f2 : std_logic_vector(6 downto 0):="0000011";constant f3 : std_logic_vector(6 downto 0):="0000111";constant f4 : std_logic_vector(6 downto 0):="0001111";constant f5 : std_logic_vector(6 downto 0):="0011111";constant f6 : std_logic_vector(6 downto 0):="0111111";constant f7 : std_logic_vector(6 downto 0):="1111111";begincurrent_state<=state;if clr='1' then--flower<="0000000000000000";flower<="0000000";--elsif rising_edge(clk) thenelsecase current_state is--when "000" =>flower<="0000000000000000";when "000" =>flower<="0000000";when "001" =>flower<=f1;when "010" =>flower<=f2;when "011" =>flower<=f3;when "100" =>flower<=f4;when "101" =>flower<=f5;when "110" =>flower<=f6;when "111" =>flower<=f7;--when others =>flower<="0000000000000000";when others =>flower<="0000000";end case;end if;end process;led<=flower;end behav;连接图。