EDA简易电子琴设计报告
EDA简易电子琴
EDA上机实验报告简易电子琴学院:电子工程学院班级:020831简易电子琴1.系统原理框图扬声器在不同频率的信号驱动下将发出不同的声音。
本实验是利用实验板上的8个按键产生不同的音阶信号,按键不同时,不同的音阶信号产生不同的频率信号去驱动扬声器,从而实现电子琴的功能。
根据音乐理论,每个8度音之间可分为12个半音,每个半音之间的频率相差(0599.1212 Hz )。
若C 调第一个音名的频率为261.63Hz ,则各音名与频率以及2MHz 时钟的分频系数的关系如表所示。
表1—1音名与频率以及2MHz 时钟的分频系数的关系器产生按键编码信号;时钟分频器产生不同的分频系数,将输入时钟频率分频至各音名对应的频率值,从而驱动扬声器发出该频率的声音。
键盘输入扬声器2MHz 时钟输入图1—2 简易电子琴的系统框图图1—3为实现简易电子琴的顶层原理图。
其中,KEYBOARD 模块实现对键盘的编码,K[7..0]为键盘输入,SEL[2..0]为3位二进制编码输出,EN 为使能输出信号(高电平有效);M_FREQ 模块实现分频功能,CLK 为时钟输入,当SEL[2..0]编码输入不同,且EN 输入为高电平时,分频器产生不同的频率值,当SPK 输出为1时扬声器响,否则静音。
图1—3实现简易电子琴的顶层原理图2.模块设计①键盘编码器VHDL描述文件keyboard.vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity keyboard isport(k: in std_logic_vector(7 downto 0); --8位键盘输入sel: out std_logic_vector(2 downto 0); --3位键盘编码输出en: out std_logic ---使能输出);end keyboard;architecture arc_keyboard of keyboard isbeginprocess(k)begincase k iswhen"11111110"=>sel<="001"; --按键,产生编码en<='1';when"11111101"=>sel<="010";en<='1';when"11111011"=>sel<="011";en<='1';when"11110111"=>sel<="100";en<='1';when"11101111"=>sel<="101";en<='1';when"11011111"=>sel<="110";en<='1';when"10111111"=>sel<="111";en<='1';when"01111110"=>sel<="000";en<='1';when others=> sel<="000";en<='0';end case;end process;end arc_keyboard;②时钟分频器VHDL描述文件m_freq,vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_freq isport(clk,en:in std_logic;sel: in std_logic_vector(2downto 0); --3位键盘编码输入spk: out std_logic --扬声器控制信号输出);end m_freq;architecture arc_m_freq of m_freq issignal count_ld,count:std_logic_vector(12 downto 0);beginprocess(sel)begincase sel iswhen "000" => count_ld <= "0111011101110"; --3822when "001" => count_ld <= "1110111011011"; --7643when "010" => count_ld <= "1101001010101"; --6809when "011" => count_ld <= "1011110110010"; --6066when "100" => count_ld <= "1011001011101"; --5725when "101" => count_ld <= "1001111101101"; --5101when "110" => count_ld <= "1000111000000"; --4544when "111" => count_ld <= "0111111010000"; --4048when others => count_ld <= "0111011101110"; --3822end case;end process;processbeginwait until clk'event and clk='1'; --计数器同步清零if en='0' thencount<=(others=>'0');spk<='1'; --当计数值小于count_ld/2时,spk=’1’,且加1计数elsif count<('0'&count_ld(12 downto 1)) thencount<=count+1;spk<='1';--当计数值大于count_ld/2且小于count_ld时,spk=’0’,且加1计数elsif count<count_ld thencount<=count+1;spk<='0';--当计数值小于count_ld时,计数器清零,spk=’1’else count<=(others=>'0');spk<='1';end if;end process;end arc_m_freq;3.原理图和波形仿真图①键盘编码器的.bsf图:②时钟分频器的.bsf图:③简易电子琴的顶层原理图.bdf:⑤波形仿真图:⑴按键编码为’11111110’时波形图:⑵按键编码为’11111101’时波形图:⑶按键编码为’01111111’时波形图:其它的波形图也和这差不多,只要分别改变k[7]到k[0]的高低电平达到和编码的高低电平相同,然后仿真再看波形图。
EDA电子琴课程设计(HDL)版
EDA与数字系统课程设计报告院、系:信息工程学院专业:电子信息科学与技术学号:200912411姓名:张海超同组人:孙国锐花卫东指导教师:段美霞郑辉二00一一年十二月三十日目录(空两行) 1………………………………………………………………页码2………………………………………………………………页码(要求:给出一级目录,宋体加粗,四号字,1.5倍行距。
)(报告正文部分):(要求:正文部分一律用小四号字,宋体,1.5倍行距。
一级大标题靠左,加粗。
二级大标题靠左,不加粗。
)课程设计的内容如下:1.课程设计目的(1)熟悉Quartus 2软件的使用。
(2)熟悉EDA实验箱的基本使用。
(3)学习HDL基本单元电路的设计应用。
进一步掌握EDA的多层次设计方法。
(4)熟悉频率发生器的的原理。
2.课程设计题目描述和要求设计一个简易的的电子琴,有1,2,3,4,5,6,7这几个音阶,当按对应的按键时,发出声音的同时显示所按的音符。
还有自动演奏的功能,当自动演奏的同时显示对应的高中低音符;3.课程设计报告内容3.1本设计由分频器,手动/自动演奏模块、频率发生器、乐谱3个模块组成。
分频器是产生4Hz频率的;手动/自动演奏模块的作用是实现手动和自动演奏音乐的控制;频率发生器是产生各种音阶对应频率的,得到与1,2,3,4,5,6,7,音符(包含高中低三种)对应的频率。
流程:1 产生4Hz的频率;2 由song产生控制信号song_on,当song改变时song_on取反并一直保持,直到song再次改变,也只有这样song_on才能控制手动和自动;3 如果song_on为低电平时,手动演奏,反之则自动演奏;4 手动演奏时,按照输入的按键in[n](对应1234567)产生对应频率speaker。
并在当时的状态(1234567)赋给high0让输出LED显示;5 自动演奏时,按照乐谱高中低产生对应的频率out,并把out赋值给speaker。
eda课程设计简易电子琴
eda课程设计简易电子琴一、课程目标知识目标:1. 让学生了解EDA(电子设计自动化)的基本概念,掌握简易电子琴的设计原理;2. 使学生掌握电子琴电路的组成、工作原理和编程方法;3. 帮助学生理解电子琴音调、音量调节的电路实现方式。
技能目标:1. 培养学生运用EDA工具进行电路设计和编程的能力;2. 提高学生动手实践、团队合作和问题解决的能力;3. 让学生学会使用电子琴演奏简单曲目,培养音乐素养。
情感态度价值观目标:1. 激发学生对电子设计的兴趣和热情,培养创新精神和实践能力;2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯;3. 引导学生关注科技发展,认识电子技术在生活中的应用,增强社会责任感。
课程性质:本课程为实践性较强的课程,结合理论知识,注重培养学生的动手能力和创新能力。
学生特点:学生处于初中阶段,具有一定的物理、数学基础,对新鲜事物充满好奇心,但可能缺乏实际操作经验。
教学要求:结合学生特点,采用任务驱动法,引导学生主动探究、实践,注重理论与实践相结合,提高学生的综合能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 理论知识:- 电子元件基本原理:电阻、电容、二极管、三极管等;- 电子琴工作原理:振荡器、分频器、放大器、键盘扫描电路等;- EDA软件使用:原理图绘制、PCB设计、仿真测试等。
2. 实践操作:- 简易电子琴电路搭建:指导学生动手搭建电子琴电路;- EDA软件操作:教授学生使用EDA软件进行原理图绘制和PCB设计;- 编程与调试:教授学生编程方法,对电子琴进行调试。
3. 教学大纲:- 第一周:电子元件基本原理学习;- 第二周:电子琴工作原理学习;- 第三周:EDA软件使用教学;- 第四周:简易电子琴电路搭建与调试;- 第五周:总结与展示,学生进行作品展示,分享心得。
4. 教材章节:- 《电子技术基础》中关于电子元件、电路原理的相关章节;- 《电子设计自动化》中关于EDA软件使用的相关章节;- 《电子琴设计与制作》中关于电子琴工作原理和制作过程的相关章节。
EDA简易电子琴设计报告
,、题目分析1、分析要求,确定总体方框图本设计基本部分是用VHDL语言设计一个简易的八音符电子琴,在Quartus II 平台下下载到Cyclone系列的EP1C12Q240C芯片中,该电路设计能够实现DO RE Ml、FA等八个音调的电子琴,发挥部分是设计一乐曲自动演奏器,用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏。
电子琴音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图1所示,它由乐曲自动演奏模块AUTO音调发生模块TONE和数控分频模块FENPIN三部分组成。
图1系统的整体组装设计原理图2、最终完成的技能指标(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲】、选择方案通过可编程逻辑器件(PLD和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。
对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得到各个音阶对应的频率最为输出。
当按下不同的键时发出不同的声音。
对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
方案一:由单片机来完成设计。
可用单片机控制键盘的输入,以及产生相应的频率信号作为输出。
目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。
但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。
数字电子EDA课程设计八音电子琴
数字电子EDA课程设计八音电子琴第一篇:数字电子EDA课程设计八音电子琴燕山大学EDA课程设计实验报告院系:信息科学与工程学院姓名:班级:学号:日期:[实验名称] 八音电子琴[实验要求] 1.能发出1.2.3.4.5.6.7.i八个音2.用按键作为键盘3.C调至B调对应频率如下表音调 C(高音)B A G F E D C频率(Hz)261.63x2 493.88 440.00 392.00 349.23 329.63 293.66 261.63 [实验电路设计] 1.命题分析根据命题的要求,要使扬声器发音,需要在其输入信号端连接一个对应频率的方波信号.实验使用的信号源可以提供从几Hz到几兆Hz不等的信号频率,自然可以想到本实验命题的关键是一个具有相应分频比的分频器.考虑到硬件(按钮)在实际工作过程中会因元件的接触产生一些不可避免的抖动脉冲电平,会对实验造成影响,因此需要在按键接入线路中安装防抖动电路.2.设计过程1>分频器为了取得合适的电路复杂度和可接受的误差范围,分频器的时钟信号选取为器件所提供的JPCK—1(3MHz音频信号).然后通过计算,用时钟信号频率除以各发音频率,得到的分频比如下表:分频比(16进制)5DEE 6384 6F84 7D62 8ADE 951C A760 BBDE频率(Hz)高C:261.63x2 B:493.88 A:440.00 G:392.00 F:349.23 E:329.63 D:293.66 C:261.63 利用四片十六进制计数器74LS161就可以连接成适用的分频器.分频器连接完成后会产生一个预定频率的周期脉冲.但是实验要求的方波其占空比应该为1:1,因此在输出脉冲端加装一个T触发器,每次脉冲到达触发器的时候输出便会跳变电平,这就达到了驱动扬声器的条件.但是在应用了T触发器后输出方波的周期比预定的扩大了一倍,也就是说频率减至原来的二分之一.此时应重新选择时钟信号,令其为原来2倍即可.根据实验指导书,最终确定选择的时钟信号为6MHz.2>防抖动电路利用D触发器的电压跟随特性可以用一个频率较低的时钟信号驱动,达到防止按键抖动的目的.电路较简单,见图3.图1.时钟分频电路(downway)图2.CP为375K时上图的B4输出波形由于设计的原因,本电路只能支持单音节输入.当同时键入两个以上的音阶时,分频比较小的(比较高的音阶)优先发声.图3.按键输入防抖动电路3>电路组合组合后的电路模块如图4.共有11个输入端和1个输出端.其中,CP_6M为整个电路的主频,使用电路板上的6MHz信号输出端;CP_1US为防抖动电路中触发器所使用的时钟,要求频率不高,选择电路板提供的CLK3-3(12Hz);KEYCa-B是电子琴的输入按键接口,依次是从低音到高音.Speaker是电路的输出端,接入扬声器,为其产生相应音阶的频率.实际电路如图4.连接完成后,对该电路进行仿真测试,如图5,令其CP_6M为6MHz,CP_1US为一个较低频率脉冲,设臵KEYB(音节B)为有效电平,在speaker上得到的输出频率为493,与实际音节的频率相同.图4.八音电子琴图5.电子琴完成品的仿真波形T触发器2分频电路[硬件测试] [实习心得] 第一感觉,数字电子技术EDA实习很有意思.我们可以有充分的时间去思考怎么做出一个东西,这个东西的用处也许不大甚至几乎没有,但重要的是思考的过程:从它的用途总结出它的特性,从它的特性构思出它的原理,从原理到构建模型,再到模型的实现,利用已有的知识,可用的元件,最终组合出一个具有高度逻辑性的组合电路,这和我们小时候玩搭积木差不多.把积木一块块的搭成一座城堡,中间缺少任何一层甚至任何一块,城堡都可能会倒塌.同理,在我们构建命题所给的元器件时任何一个逻辑错误都可能是致命的,导致最后无法出现正确结果或者干脆不能用.因此,实习,有意思的同时还不能大意.这是一个锻炼逻辑思维和思维严谨性的极好的机会,我和我的同学们在这次工作中受益非浅.大家都积极思思考,查找资料,集思广益来解决现有的问题。
音乐发生器及简单电子琴的eda设计 2
音乐发生器及简单电子琴的eda设计摘要本系统是采用EDA技术设计的一个简易的八音符电子琴和音乐发生器,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。
系统由乐曲自动演奏模块、乐器演示模块琴/乐功能选择模块、音调发生模块和数控分频模块五个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、整合。
本系统功能比较齐全,有一定的使用价值。
关键字电子琴;EDA;VHDL;音调发生;QuartusII;1 引言:1.1设计目的1)利用数控分频器设计一个电子琴硬件电路和音乐发生器2)演奏时可以选择是手演奏(键盘输入)或自动演奏已存入的乐曲,并且能自动重复演奏1.2设计的基本内容运用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。
本设计包含如下三个模块:乐曲自动演奏模块,音调发生模块,数控分频模块,最后把各个模块整合后,通过电路的输入输出对应关系连接起来2.1 EDA技术EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
2.2 硬件描述语言——VHDL2.2.1 VHDL的简介VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。
EDA实验报告_硬件电子琴电路设计
EDA实验报告课程名称:EDA技术实验名称:硬件电子琴电路设计班级:姓名:指导老师:签名:一、实验目的学习利用数控分频器设计硬件电子琴实验。
二、实验仪器计算机一台;Quartus Ⅱ软件;U盘。
三、实验内容与步骤在Quartus Ⅱ完成音阶发生器模块TONE和数控分频器模块Speaker的设计,然后完成硬件电子琴顶层文件的设计,最后检查设计是否正确。
1、数控分频器Speaker(1)完整的VHDL程序描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speaker ISPORT ( clk1 : 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(clk1)VARIABLE Count4 : INTEGER RANGE 0 TO 15;BEGINPreCLK <= '0'; -- 将CLK进 11分频,PreCLK为C L 11K 6分频IF Count4 > 11 THEN PreCLK <= '1'; Count4 := 0;ELSIF clk1'EVENT AND clk1='1' THEN Count4 := Count4 + 1; END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone1)VARIABLE Count11 : INTEGER RANGE 0 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;(2)模块图形符号及逻辑功能描述图1 数控分频器Speaker 模块DENAQPRE CLRA[3..0]B[3..0]OUT[3..0]ADDERA[10..0]B[10..0]OUT[10..0]ADDERA[10..0]B[10..0]OUTEQUALDENAQPRE CLRA[3..0]B[3..0]OUTLESS_THAND ENA QPRE CLRDQPRE ENA CLRDQ PRE ENA CLRSELDATAA DATABOUT0MUX21\DelaySpkS:Count2Add111' h001 --FullSpkSSpkS~reg0\GenSpkS:Count11[10..0]Count11~[10..0]clk1SpkSTone1[10..0]Add04' h1 --Equal011' h7FF --LessThan04' hB --\DivideCLK:Count4[3..0]图2 数控分频器Speaker 硬件电路2、端口TONE 的设计(1)完整的VHDL 程序描述 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY Tone ISPORT ( Index : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE : OUT INTEGER RANGE 0 TO 15; HIGH : OUT STD_LOGIC;Tone : OUT INTEGER RANGE 0 TO 16#7FF# );END;ARCHITECTURE one OF Tone ISBEGINSearch : PROCESS(Index)BEGINCASE Index IS -- 译码电路,查表方式,控制音调的预置数 WHEN "" => Tone <= 773; CODE <= 1; HIGH <= '0';WHEN "" => Tone <= 912; CODE <= 2; HIGH <= '0';WHEN "" => Tone <= 1036; CODE <= 3; HIGH <= '0';WHEN "" => Tone <= 1116; CODE <= 4; HIGH <= '0';WHEN "" => Tone <= 1197; CODE <= 5; HIGH <= '0';WHEN "" => Tone <= 1290; CODE <= 6; HIGH <= '0';WHEN "" => Tone <= 1372; CODE <= 7; HIGH <= '0';WHEN "" => Tone <= 1410; CODE <= 1; HIGH <= '1';WHEN OTHERS => Tone <= 2047; CODE <= 0; HIGH <= '0'; END CASE;END PROCESS;END;(2)模块图形符号及逻辑功能描述图3 tone模块图4 tone硬件电路3.顶层文件的设计将音阶发生器模块TONE和数控分频器模块Speaker打包之后,接下来进行顶层文件的设计。
EDA实现电子琴的程序文件
实验十五电子琴设计一、音名与频率的关系:音乐上的十二平均律规定:每两个八度音之间的频率相差一倍。
在这两个八度音之间,分成十二个半音,每两个相邻伴音的频率比为12 2。
另外还规定,音名A的频率为440Hz。
音名B到C、E到F之间为半音,其余为全音。
这样,可计算得从A(简谱的低音6)到a1(简谱的高音6)之间每个音名的频率为:A(6):440Hz a(6):880Hz a1(6):1760HzB(7):493.88Hz b(7):987.76Hzc(1):523.25Hz c1(1):1046.50Hzd(2):587.33Hz d1(2):1174.66Hze(3):659.25Hz e1(3):1318.51Hzf(4):698.46Hz f1(4):1396.92Hzg(5):783.99Hz g1(5):1567.98Hz二、设计要求:设计一个电子琴,要求能演奏音名A到a1之间的全部音阶。
按下一个键,则演奏该音名,并用数码管显示音名,用发光二极管指示高、中、低音。
三、设计提示:本实验由键盘编码,音频输出译码器、分频器组成。
取10MHz信号作为基准。
以基准频率除以上述频率,可得各音名频率的分频系数。
注意,为了减少输出的偶次谐波成分,最后输出应为对称方波。
音频输出译码器实质上是一个多路选择器,根据键盘编码的输出,选择音阶发生器的不同的预置数,分频后输出音频。
分频器可以为加法计数器,以可以为减法计数器,计算预置数时稍有不同,应加以注意。
另外,应根据基准频率和输出频率,来确定计数器的位数。
设计框图如下图所示:电子琴框图四、实验步骤1、启动ISE集成开发环境,创建工程并输入设计源文件。
2、对设计进行时序仿真,分析设计的正确性。
3、锁定引脚,完成设计实现过程。
并在实验箱上连线,利用iMPACT进行程序下载。
4、在实验箱上验证电子琴的功能,观察并记录实验结果.五、实验报告1.music的VHDL 源程序:library ieee;use ieee.std_logic_1164.all;entity music isport(kin: std_logic_vector(0 to 15);spk_out: out std_logic;led_out: out std_logic_vector(6 downto 0);index: out std_logic_vector(2 downto 0);clk: in std_logic);end music;architecture stru of music iscomponent tonetabport(index : in INTEGER range 0 to 15;tone : out INTEGER range 0 to 16#3fff#;code : out INTEGER range 0 to 15;high : out STD_LOGIC_VECTOR(2 DOWNTO 0));end component;component tonegenport(clk : in STD_LOGIC;tone : in integer range 0 to 16#3fff#;spks : out STD_LOGIC);end component;component hex2ledport(hex : in integer range 0 to 15;led : out STD_LOGIC_VECTOR(6 downto 0));end component;component keybordport(kin : in STD_LOGIC_VECTOR(0 to 15);kout : out INTEGER range 0 to 15);end component;signal kout: integer range 0 to 15;signal tone: INTEGER range 0 to 16#3fff#;signal digit: integer range 0 to 15;beginu1: keybord port map (kin=>kin,kout=>kout);u2: tonetab port map (index=>kout,tone=>tone,code=>digit,high=>index); u3: tonegen port map (clk=>clk,tone=>tone,spks=>spk_out);u4: hex2led port map (hex=>digit,led=>led_out);end stru;2. hex2led的VHDL 源程序library IEEE;use IEEE.STD_LOGIC_1164.all;entity hex2led isport(hex : in integer range 0 to 15;led : out STD_LOGIC_VECTOR(6 downto 0));end hex2led;architecture rtl of hex2led issignal data : std_logic_vector(6 downto 0);beginled<=not data;with hex selectdata<= "1111001" when 1, --1"0100100" when 2, --2"0110000" when 3, --3"0011001" when 4, --4"0010010" when 5, --5"0000010" when 6, --6"1111000" when 7, --7"0000000" when 8, --8"0010000" when 9, --9"0001000" when 10, --A"0000011" when 11, --b"1000110" when 12, --C"0100001" when 13, --d"0000110" when 14, --E"0001110" when 15, --F"1000000" when others; --0end rtl;3. keybord 的VHDL 源程序library IEEE;use IEEE.STD_LOGIC_1164.all;entity keybord isport(kin : in STD_LOGIC_VECTOR(0 to 15);kout : out INTEGER range 0 to 15 );end keybord;architecture rtl of keybord issignal data:std_logic_vector(0 to 15); begindata<=kin;process(data)beginif data(0)='0' then kout<=0;elsif data(1)='0' then kout<=1;elsif data(2)='0' then kout<=2;elsif data(3)='0' then kout<=3;elsif data(4)='0' then kout<=4;elsif data(5)='0' then kout<=5;elsif data(6)='0' then kout<=6;elsif data(7)='0' then kout<=7;elsif data(8)='0' then kout<=8;elsif data(9)='0' then kout<=9;elsif data(10)='0' then kout<=10;elsif data(11)='0' then kout<=11;elsif data(12)='0' then kout<=12;elsif data(13)='0' then kout<=13;elsif data(14)='0' then kout<=14;elsif data(15)='0' then kout<=15;else NULL;end if;end process;end rtl;4. tonegen的VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.all;entity tonegen isport(clk : in STD_LOGIC;tone : in integer range 0 to 16#3fff#;spks : out STD_LOGIC);end tonegen;architecture rtl of tonegen issignal fullspks:std_logic;begingenspks:process(clk,tone)variable count14: integer range 0 to 16#3fff#;--std_logic_vector(0 to 13);beginif clk'event and clk='1' thenif count14=16#3fff# then --"1111" thencount14:=tone;fullspks<='1';elsecount14:=count14+1;fullspks<='0';end if;end if;end process;delayspks:process(fullspks)variable count2:std_logic;beginif fullspks'event and fullspks='1' thencount2:=not count2;end if;spks<=count2;end process;end rtl;5. tonetab 的VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.all;entity tonetab isport(index : in INTEGER range 0 to 15;tone : out INTEGER range 0 to 16#3fff#;code : out INTEGER range 0 to 15;high : out STD_LOGIC_VECTOR(2 DOWNTO 0) );end tonetab;architecture rtl of tonetab isbeginprocess(index)begincase index iswhen 0 =>tone<=5021;code<=6;high<="100";when 1 =>tone<=6262;code<=7;high<="100";when 2 =>tone<=6829;code<=1;high<="010";when 3 =>tone<=7872;code<=2;high<="010";when 4 =>tone<=8801;code<=3;high<="010";when 5 =>tone<=9226;code<=4;high<="010";when 6 =>tone<=10007;code<=5;high<="010";when 7 =>tone<=10703;code<=6;high<="010";when 8 =>tone<=11323;code<=7;high<="010";when 9 =>tone<=11607;code<=1;high<="001";when 10 =>tone<=12129;code<=2;high<="001";when 11 =>tone<=12593;code<=3;high<="001";when 12 =>tone<=12805;code<=4;high<="001";when 13 =>tone<=13196;code<=5;high<="001";when 14 =>tone<=13544;code<=6;high<="001";when 15 =>tone<=16383;code<=0;high<="001";when OTHERS=>NULL;end case;end process;end rtl;实验记录:1、设计记录表,记录引脚锁定与连线情况。
数电EDA简易电子琴Verilog设计
数电EDA简易电子琴Verilog设计数字电子技术课程设计--简易电子琴设计专业班级:电子姓名:学号:一、日期:设计任务用Verilog HDL语言设计简易电子琴。
(1)单独从左至右按下S1-S7每个按键后能够各自对应发出“哆来咪发唆啦西”的音乐声;(2)按下最右边按键(S8),同时再配合按下S1-S7键后,发高八度的对应音;(3)按键需要进行“消抖”处理;(4)外部输入脉冲信号频率为1mhz;(5)扩展要求:自主设计(增加低8度功能)。
二、实验目的1、学习verilogHDL语言的基本运用,能够利用其进行简单编程;2、学习使用QuartusⅡ的基本操作,能够利用其进行简单的设计;3、结合实践加深对理论知识的理解。
三、设计原理1)喇叭的振动频率不同,导致产生不同的声音;振动频率越低,声音越低沉,振动频率越高,声音越尖锐。
题目中音乐基本音的“哆”对应频率为523Hz 、“来”对应频率为587Hz 、“咪”对应频率为659Hz 、“发”对应频率为698Hz 、“唆”对应频率为784Hz 、“啦”对应频率为880Hz 、“西”对应频率为998Hz。
低8度音:基本音频率/2,例如低音1的频率为523/2=。
高8度音:基本音频率×2,例如高音1的频率为523×2=1046Hz.。
不同的频率产生利用给定的时钟脉冲来进行分频实现。
(2)消抖的原理:按键默认输入逻辑‘1’,当有按键按下时对应的输入为逻辑‘0’(但会存在抖动),当FPGA开始检测到该引脚从‘1’变为‘0’后开始定时(按键抖动时间大约10ms),定时时间结束后若该引脚仍然为‘0’则表示确实发生按键按下,否则视为抖动而不予以理会;按键松开过程的消抖处理和按下时原理一样。
(3)原理框图四、程序设计消抖模块module xiaodou(key_in,key_out,clk);input key_in;input clk;output key_out;reg key_out;reg [2:0]presta;integer q;parameter s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101,s6=3'b110,s7=3'b111;always@(posedge clk)begincase(presta)s0:beginkey_out<=0;q<=0;if(key_in==1)presta<=s0; elsepresta<=s1; ends1:beginkey_out<=0; if(q>9999) presta<=s2; elseq<=q+1; ends2:beginkey_out<=0; q<=0;if(key_in==1) presta<=s0; elsepresta<=s3; ends3:beginkey_out<=1; q<=0;if(key_in==0) presta<=s3; elsepresta<=s4; ends4:beginkey_out<=1;if(q>44444)presta<=s5;elseq<=q+1;ends5:beginq<=0;if(key_in==1)presta<=s0;elsepresta<=s3;ends6:beginpresta<=s0;ends7:beginpresta<=s0;endendcaseendend module按键模块module anjian(a,b,c,d,e,f,g,h,i,qout); input a,b,c,d,e,f,g,h,i;output [10:0] qout;reg [8:0] q;reg [10:0] qout;always@(a or b or c or d or e or f or g or h or i) begin q[0]=i;q[1]=h;q[2]=g;q[3]=f;q[4]=e;q[5]=d;q[6]=c;q[7]=b;q[8]=a;endalways@(q)begincase(q)9'b000000011:qout<=11'b00000000000;9'b000000001:qout<=11'b00000000000;9'b000000000:qout<=11'b00000000000;9'b000000010:qout<=11'b00000000000;default:qout<=qout;endcaseendendmodule分频模块module fenpin(clk_1M,yuzhi,pl_out);input clk_1M;input [10:0]yuzhi;reg [10:0]q;output pl_out;reg pl_out;always@(posedge clk_1M)beginif(yuzhi>0)beginif(q<yuzhi)< p="">beginq<=q+1;pl_out<=0;endelsebeginq<=11'b00000000000;pl_out<=1;endendelsebeginq<=11'b00000000000;pl_out<=1;endendendmodule五、原理图及仿真波形图六、心得体会由于之前对本次设计所需知识了解较少,所以在实验过程中遇到了很多的困难,真的很难,但是同样在解决各种困难的过程中也有所收获。
Get清风EDA课程设计报告书八音电子琴
EDA课程设计报告书--八音电子琴燕山大学EDA课程设计报告书题目:八音电子琴姓名:张永义班级:11级电子卓越〔试点〕学号:学院:信息科学与工程学院日期:2013-11-12指导教师:常丹华成绩:一、设计题目及要求1.设计题目八音电子琴2.设计要求〔1〕能发出1,2,3,4,5,6,7,1八个音。
〔2〕用按键作为键盘。
〔3〕C调到B调对应频率为。
调频率〔Hz〕Ċ〔高音〕261.63*2BAGFEDC二、设计过程及内容〔包括○1总体设计的文字描述,即由哪几个局部构成的,各个局部的功能及如何实现方法;○2主要模块比拟详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多〕根据命题的要求,要使扬声器发音,需要在其输入信号端连接一个对应频率的方波信号.实验使用的信号源可以提供从几Hz到几MHz 不等的信号频率,自然可以想到本实验命题的关键是一个具有相应分频比的分频器。
考虑到硬件(按钮)在实际工作过程中会因元件的接触产生一些不可防止的抖动脉冲电平,会对实验造成影响,因此需要在按键接入线路中安装防抖动电路。
分频器连接完成后会产生一个预定频率的周期脉冲.但是实验要求的方波其占空比应该为1:1,因此在输出脉冲端加装一个T触发器,每次脉冲到达触发器的时候输出便会跳变电平,这就到达了驱动扬声器的条件。
〔1〕模块一:防抖电路模块。
作用:用来消除在按键接入线路时不可防止抖动脉冲电平对试验造成的影响。
〔2〕模块二:分频器模块。
作用:将高频时钟信号转化为试验所需要的低频时钟信号。
〔3〕模块三:利用T触发器实现占空比的改变,使输出方波占空比为1:1。
总的电路图如图1所示:图1八音电子琴总图实验箱上的按钮是常态输出为高电平,按下输出为低电平,所以在八个按钮接口的后面分别接入非门,实现常态输出为低电平,按下输出为高电平。
在其后接入或门,使满足至少一个按钮输入高电平时,就能控制扬声器发音,再T触发器的输出端和或门的输出端接与门,以此来实现相应的按钮来控制相应频率的音阶通过扬声器发音。
课程设计【简易电子琴设计】报告书
课程设计报告题目课程名称院部名称专业班级学生姓名学号课程设计地点课程设计学时指导教师简易电子琴电路制作一实验目的1.学习调试电子电路的方法,提高实际动手能力。
2.了解由振荡电路与功率放大电路结合构成简易电子琴的电路及原理。
二实验内容【实验原理】1.简易电子琴电路是将振荡电路与功率放大电路结合的产物。
(1)RC振荡电路(如图1所示)是由RC选频网络和同向比例运算电路组成,对不同频率的输入信号产生不同的响应。
1、RC桥式振荡电路1.1、电路图RC桥式振荡电路如图1所示。
1.2、RC串并联选频网络RC桥式振荡电路可以选出特定频率的信号。
具体实现过程的关键是RC串并联选频网络,其理论推导如下:可得选频特性:即当f0=1/(2πRC)时,输出电压的幅值最大,并且输出电压是输入电压的1/3,同时输出电压与输出电压同相。
通过该RC串并联选频网络,可以选出频率稳定的正弦波信号,也可通过改变R,C的取值,选出不同频率的信号。
2、振荡条件2.1、自激振荡条件图2所示为含外加信号的正弦波振荡电路,其中A,F分别为放大器回路和反馈网络的放大系数。
图2中若去掉Xi,由于反馈信号的补偿作用,仍有信号输出,如图3所示Xf=Xi,可得自激振荡电路。
自激振荡必须满足以下条件:2.2、起振条件自激振荡的初始信号一般较小,为了得到较大强度的稳定波形,起振条件需满足|A·F|>1。
在输出稳定频率的波形前,信号经过了选频和放大两个阶段。
具体来说,是对于选定的频率进行不断放大,非选定频率的信号进行不断衰减,结果就是得到特定频率的稳定波形。
设计方案1、设计电路图设计电路图如图4所示。
图4即是八音阶微型电子琴的原理电路图,8个开关对应着电子琴8个音阶琴键,使用时只能同时闭合一个开关。
在实际电路中,为达到起振条件AF>1,常用两个二极管与电阻并联,可实现类似于热敏电阻的功效。
另外需要说明的是,理论上电路的初始信号是由环境噪声及电路本身的电压提供的。
eda简易电子琴课程设计
eda简易电子琴课程设计一、课程目标知识目标:1. 学生能理解并掌握EDA简易电子琴的基本组成结构及其工作原理。
2. 学生能掌握基础电子元件的使用,如电阻、电容、二极管、三极管等,并能运用到电子琴的制作中。
3. 学生能理解并运用基础的电子音乐理论知识,如音符、音阶、和弦等。
技能目标:1. 学生能够独立完成EDA简易电子琴的组装和调试。
2. 学生能够通过编程实现对电子琴音调的控制,具备初步的编程能力。
3. 学生能够运用所学的电子琴知识创作简单的音乐作品,提高动手实践能力。
情感态度价值观目标:1. 学生通过动手实践,培养对电子科技的兴趣,提高创新意识和团队合作精神。
2. 学生在创作过程中,体验科技与艺术的结合,培养审美观念和艺术修养。
3. 学生在课程学习过程中,树立正确的价值观,认识到科技发展对生活的改善,增强社会责任感。
课程性质:本课程为实践性较强的课程,结合电子技术与音乐艺术,旨在培养学生的动手能力、创新意识和团队合作精神。
学生特点:六年级学生具备一定的认知能力和动手能力,对新鲜事物充满好奇,喜欢动手实践。
教学要求:教师需注重理论与实践相结合,关注学生的个体差异,鼓励学生主动探究,培养学生的创新思维和解决问题的能力。
同时,注重课程目标的分解与落实,确保学生能够达到预期学习成果。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. 电子琴基础知识- 了解EDA简易电子琴的组成结构,包括键盘、主控板、音源、功放等。
- 学习基础电子元件(电阻、电容、二极管、三极管等)的功能和选型。
- 掌握基础的电子音乐理论知识,如音符、音阶、和弦等。
教学内容关联教材章节:第二章 电子元件与电路基础2. 电子琴制作与调试- 学习使用面包板进行电路搭建,掌握EDA简易电子琴的组装方法。
- 学习编程控制电子琴音调,实现不同音符的演奏。
- 学习调试电子琴,解决制作过程中遇到的问题。
教学内容关联教材章节:第三章 数字电路与编程基础、第四章 电子琴设计与制作3. 音乐创作与展示- 运用所学知识创作简单的音乐作品,进行小组内分享与评价。
EDA设计电子琴设计
湖南人文科技学院课程设计报告课程名称:EDA技术与VHDL设计题目:简易电子琴系别:通信与控制工程系专业:电子信息工程班级: 2010 级1班学生姓名: 刘滨蒋卓学号: 10409121 10409123起止日期: 2013年6月13日~2013年6月27日指导教师:田汉平岳舟教研室主任:侯海良指导教师评语:指导教师签名:年月日成绩评定项目权重成绩刘滨蒋卓1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总成绩教研室审核意见:教研室主任签字:年月日教学系审核意见:主任签字:年月日摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。
系统由频率选择模块、分频模块和扬声器输出模块三个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、整合。
本系统功能比较齐全,有一定的使用价值。
关键词:电子琴;EDA;VHDL目录.课程设计的目的 (1).设计要求 (1).开发工具简介 (1)(1) EDA技术 (1)(2)硬件描述语言—VHDL (2)1、方案论证与对比 (4)1.1方案一 (4)1.2方案二 (4)1.3方案三 (4)2、各功能块电路及工作原理 (6)2.1实体部分 (6)2.2节拍显示 (6)2.3频率选择模块 (6)2.4分频模块 (7)2.5扬声器输出模块 (8)2.6 波形仿真 (8)3、心得与总结 (10)4、参考文献 (11)5、附录 (12)简易电子琴设计·课程设计的目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。
EDA 电子琴课程设计.
EDA课程设计基于VHDL文本输入法的乐曲演奏电路的设计摘要本课程设计主要采用EDA技术设计一个简易的八音符电子琴,它可通过按键输入来控制音响从而演奏出已存入的乐曲。
在课程设计中,系统开发平台为Windows XP,程序设计采用VHDL语言,程序运行平台为MAX+plusⅡ。
然后编写程序实现电子琴的各项功能,使不同的音阶对应不同频率的正弦波,按下不同的键时发出对应频率的声音。
程序通过调试运行,时序仿真,电路功能验证,顺利地实现了设计目标。
关键词电子琴;EDA;VHDL;音阶;频率Abstract The main use of this curriculum design EDA technology to design a simple eight-note organ, it can be key to control the audio input so as to have been deposited in a concert of music. In the course design, system development platform for Windows 2000, the procedures VHDL design language, platform for running MAX + plus Ⅱ. And then program to achieve the various functions of the organ, so that different scale corresponds to a different frequency sine wave, press different keys when the voice of the corresponding frequency. Running through the debugging process, timing simulation, functional verification circuit, successfully achieved the goal of the design. Key Words Electric piano; EDA; VHDL; scale; frequency1 引言随着信息科学的进步,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快,电子技术的发展进入了划时代的阶段。
EDA_电子琴课程设计
EDA_电子琴课程设计第一篇:EDA_电子琴课程设计基于VHDL原理图及文本输入法的简单电子琴电路的设计1.1 课程设计目的本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。
系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。
该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。
1.2 课程设计内容(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)系统演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。
(3)能够自动演奏多首乐曲,且乐曲可重复演奏。
1.3 课程设计原理本课程设计目的在于灵活运用EDA技术编程实现一个简易电子琴的乐曲演奏,它要求在实验箱上构造一个电子琴电路,不同的音阶对应不同频率的正弦波。
按下每个代表不同音阶的按键时,能够发出对应频率的声音。
故系统可分为乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN)三部分。
系统的整体组装设计原理图如图1-1所示。
图1-1 系统的整体组装设计原理图由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。
如AUTO模块的音符信号输出就是TONE模块的音符信号输入。
另外,时钟脉冲信号在本课程设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。
简易电子琴的设计过程根据系统设计要求,系统该系统基于计算机中时钟分频器的原理,设计采用自顶向下的设计方法,通过按键输入来控制音响或者自动演奏已存入的歌曲。
简易电子琴设计实验报告
简易电子琴设计实验报告
本次实验是针对简易电子琴的设计,主要使用以下几种器件完成:
ADC(数模转换器):
ADC是将模拟量转换成数值的重要器件,它的输入具有模拟量,而输出是一组数字量。
在本次实验中,用ADC读取我们设计的电路上的按键电压,以便得到正确的音符。
示波器:
示波器有助于直观地观察器件输出的数字和模拟信号,以诊断出电路中可能存在的故障,也能方便排除效果中的干扰信号。
本次实验主要实现电子琴的播放,首先通过电阻组等元器件来设计一组ADC电路,可
以正确测量到不同键盘上按键时的电压和电流值,读取到的电压值将被转换成十六进制数值,然后根据不同的数值,带入不同的DAC电路,电路会产生不同的模拟信号电压,最后
通过功放芯片,放大成足以听到的电子琴音乐。
在实验制作过程中,使用示波器可以实时地可视化观察我们的设计,检查出是否有任
何可能的故障,以便根据电路图维修,再次检查组装的电路输出是否正常,排除是否有任
何问题电路没有检查出来。
通过综合以上器件,一台不用太多复杂器件,而只要合理连接,即可以让简易电子琴
发出优美的音乐。
由于组装过程及晶体振荡器及ADC,DAC在电路设计上的影响,使得电子
琴的播放声音非常流畅,而且没有太多的驱动电路。
eda电子琴课程设计
eda电子琴课程设计一、课程目标知识目标:1. 学生能理解EDA电子琴的基本工作原理,掌握电子琴的构造及各部分功能。
2. 学生能掌握基本的电子琴演奏技巧,如音阶、和弦的演奏。
3. 学生能了解并运用电子琴的音色、节奏变化进行创作。
技能目标:1. 学生能运用电子琴进行简单的曲目演奏,提高演奏技能。
2. 学生能通过电子琴进行音乐创作,培养创新意识和动手能力。
3. 学生能通过小组合作,与他人协作完成一首乐曲的演奏。
情感态度价值观目标:1. 学生培养对音乐的热爱,提高音乐素养,增强审美能力。
2. 学生在课程中培养耐心、细心和团队协作精神,提升个人品质。
3. 学生通过音乐表达自己的情感,学会尊重他人,培养良好的人际交往能力。
课程性质:本课程以实践操作为主,理论讲解为辅,注重培养学生的动手能力和创新能力。
学生特点:五年级学生,对新鲜事物充满好奇心,具备一定的音乐基础,喜欢动手实践。
教学要求:结合学生特点,注重课程趣味性,激发学生学习兴趣,鼓励学生积极参与,培养创新意识和团队协作精神。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. 电子琴基础知识:- 电子琴的构造及各部分功能- 电子琴的基本工作原理- 音色、节奏的选择与运用关联教材章节:第一章 电子琴概述2. 电子琴演奏技巧:- 音阶、和弦的演奏方法- 基本指法训练- 简单曲目的演奏关联教材章节:第二章 电子琴演奏技巧3. 音乐创作与团队协作:- 运用电子琴进行音乐创作- 小组合作完成乐曲的演奏- 舞台表现与情感表达关联教材章节:第三章 音乐创作与团队协作教学进度安排:1. 电子琴基础知识(2课时)2. 电子琴演奏技巧(4课时)3. 音乐创作与团队协作(4课时)教学内容注重科学性和系统性,结合教材章节,由浅入深地展开。
在教学过程中,教师需根据学生的接受程度,适时调整教学进度,确保学生充分掌握所学知识。
eda电子设计使用verilog语言电子琴实验报告
电子设计自动化课程设计报告院系:信息工程学院专业:电子信息工程学号:姓名:指导教师:2013 年月日目录1设计目的 (3)2题目描述与要求 (3)3课程设计报告内容 (3)3.1设计原理与思路 (3)3.2操作过程 (4)3.3设计和调试过程中出现的问题及解决方法 (7)4设计总结和心得体会 (8)一、课程设计目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在实验箱上实现仿真,实现硬件电子琴。
电子琴要求有8个音阶,使用外部时钟信号32MHz,能同步显示音阶。
二、课程设计题目描述和要求题目:简易电子琴的设计主要功能:(1)设计一个八音电子琴。
(2)由键盘输入控制音响,同时可自动演奏乐曲。
(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。
三、课程设计报告内容3.1设计原理与思路系统由数控分频器、乐曲存储模块以及发声模块组成。
数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。
乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。
由发声模块产生音符对应的频率的信号来使扬声器发音。
(1)模块automusic模块automsic由auto信号来选择发声的方式,auto=0时系统自动播放内置的音乐,auto=1时由键盘来手动演奏音乐。
(2)模块TONE模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。
(3)模块Speaker模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,、题目分析1、分析要求,确定总体方框图本设计基本部分是用VHDL语言设计一个简易的八音符电子琴,在Quartus II 平台下下载到Cyclone系列的EP1C12Q240C芯片中,该电路设计能够实现DO RE Ml、FA等八个音调的电子琴,发挥部分是设计一乐曲自动演奏器,用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏。
电子琴音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图1所示,它由乐曲自动演奏模块AUTO音调发生模块TONE和数控分频模块FENPIN三部分组成。
图1系统的整体组装设计原理图2、最终完成的技能指标(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲】、选择方案通过可编程逻辑器件(PLD和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。
对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得到各个音阶对应的频率最为输出。
当按下不同的键时发出不同的声音。
对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
方案一:由单片机来完成设计。
可用单片机控制键盘的输入,以及产生相应的频率信号作为输出。
目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。
但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。
方案二:利用PLC来完成设计。
目前利用PLC的技术已经比较成熟。
PLC有其优点,其性能优异,体积小,可靠性和精度都比较好,在电子琴的设计中可采用PLC来完成硬件的控制,但是用PLC实现编程相对比较复杂,对于电子琴这种小型设计来说成本过高。
方案三:利用可编程逻辑器件PLD来完成该设计。
利用PLD可以很好的解决上述的问题。
它的成品体积小,适合电子琴这种小型设计。
其性能稳定,控制精度高(Xili nx公司的高密度,高速可预测延时,高性能系列芯片),易于管理和屏蔽,抗干扰能力强,可靠性高。
综上,在本设计中选择第三种方案最优。
三、各模块原理及其程序1、乐曲自动演奏模块乐曲自动演奏模块(AUTO.VHD的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。
为了实现扩展部分的设计,便需要多加上一个音乐存储模块,该模块的作用是产生8位发声控制输入index,auto为0或1时可以选择自动演奏或者键盘输入,如果auto为0,则而由存储在此模块中的8位二进制数来作为发声控制输入,由此便可自动演奏乐曲。
此模块的VHDL语言中包括两个进程,首先是对基准脉冲进行分频得到4Hz 的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间,此处便是1/4=0.25s,第二个进程是音乐的存储,可根据需要编写不同的乐曲。
这段模块的原理图如图2所示:CLKAUTOINDEX0[7.0]图2乐曲自动演奏模块原理图乐曲自动演奏模块可以由VHDL语言来实现,下面是一段主要代码:BEGINIF AUTO ='0' THENCASE COUNT0 ISWHEN 0=>INDEX0<="00000100"; --3 WHEN 1=>INDEX0<="00000100"; --3 WHEN 2=>INDEX0<="00000100"; --3 WHEN 3=>INDEX0<="00000100"; --3 WHEN 4=>INDEX0<="00010000"; --5 WHEN 5=>INDEX0<="00010000"; --5 WHEN 6=>INDEX0<="00010000"; --5 WHEN 7=>INDEX0<="00100000"; --6 WHEN 8=>INDEX0<="10000000"; --8 WHEN 9=>INDEX0<="10000000"; --8 WHEN 10=>INDEX0<="10000000"; --8 WHEN 1仁>INDEX0<="00000100"; --3 WHEN 12=>INDEX0<="00000010"; --2 WHEN 13=>INDEX0<="00000010"; --2 WHEN 14=>INDEX0<="00000001"; --1 WHEN 15=>INDEX0<="00000001"; --1 WHEN 16=>INDEX0<="00010000"; --5 WHEN 17=>INDEX0<="00010000"; --5 WHEN 18=>INDEX0<="00001000"; --4 WHEN 19=>INDEX0<="00001000"; --4 WHEN 20=>INDEX0<="00001000"; --4 WHEN 2仁>INDEX0<="00000100"; --3 WHEN 22=>INDEX0<="00000010"; --2 WHEN 23=>INDEX0<="00000010"; --2 WHEN 24=>INDEX0<="00010000"; --5 WHEN 25=>INDEX0<="00010000"; --5 WHEN 26=>INDEX0<="00001000"; --4 WHEN 27=>INDEX0<="00001000"; --4 WHEN 28=>INDEX0<="00000100"; --3 WHEN 29=>INDEX0<="00000100"; --3 WHEN 30=>INDEX0<="00000010"; --2 WHEN 31=>INDEX0<="00000010"; --2WHEN OTHERS =>NULL; END CASE; ELSE INDEX0<=INDEX2; END IF;END PROCESS; END BEHAVIORAL;2、音调发生模块音调发生模块(TONE.VD )的作用是产生获得音阶的分频预置值。
当8位发 声控制输入index 中的某一位为高电平时,则对应某一音阶的数值将以端口 tone 输出,作为获得该音阶的分频预置值,该值作为数控分频器的输入,来对 4MHz 的脉冲进行分频,由此得到每个音阶相应的频率,例如输入 index="00000010", 即对应的按键是2,产生的分频系数便是6809;由code 输出对应该音阶简谱的 显示数码;由high 输出指示音阶高8度的显示,低电平有效。
这段模块的原理图如图3所示:图3音调发生模块原理图音调发生模块可以由VHDL 语言来实现,下面是一段主要代码:BEGINCASE INDEX ISWHEN "00000001"=>T0NE0 <=773;CODE<="1001111";HIGH<='1'; WHEN "00000010"=>T0NE0 <=912;CODE<="0010010";HIGH<='1'; WHEN "00000100"=>T0NE0 <=1036;CODE<="0000110";HIGH<='1'; WHEN "00001000"=>T0NE0 <=1116;CODE<="1001100";HIGH<='1'; WHEN "00010000"=>T0NE0 <=1197;CODE<="0100100";HIGH<='1'; WHEN "00100000"=>T0NE0 <=1290;C0DE<="0100000";HIGH<='0'; WHEN "01000000"=>T0NE0 <=1372;C0DE<="0001111";HIGH<='0'; WHEN "10000000"=>T0NE0 <=1410;C0DE<="0000000";HIGH<='0'; WHEN OTHERS =>T0NE0<=2047;C0DE<="0000001";HIGH<='0'; END CASE; END PROCESS;3、数控分频模块在对EDA 的学习中,我们知道数控分频器的功能是在输入端输入不同数据 时,对输入时钟产生不同的分频比,输出不同频率的时钟,以改变输出信号的频 率。