硬件电子琴电路设计
-用555制作简易电子琴

555简易电子琴电路制作一设计要求与任务1.学习调试电子电路的方法,提高实际动手能力。
2.了解由555定时器构成简易电子琴的电路及原理。
二总体框图、【模块功能】该电路包括按钮开关,定值电阻,555振荡器和扬声器三部分组成,1输入端:由八个按钮开关与各自的定值电阻串联在并联组成输入端2频率产生端:根据定值电阻的不同输入,由555产生不同的信号频率3扬声器端口: 接受信号频率发出特定的频率【设计方案】555定时器本实验采用两个555集成定时器组成简易电子琴。
整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。
主振荡器由555定时器,七个琴键按钮S1~S7,外接电容C1、C2,外接电阻R8以及R1~R7等元件组成,颤音振荡器由555定时器,电容C5及R9、R10等元件组成,颤音振荡器振荡频率较低为64Hz,若将其输出电压U连接到主振荡器555定时器复位端4,则主振荡器输出端出现颤音。
按图接线后闭合不同开关即可令喇叭发出不同频率的声响,从而模拟出电子琴的工作。
三选择器件【实验器材】555定时器是一种中规模集成电路,外形为双列直插8脚结构,体积很小,使用起来方便。
只要在外部配上几个适当的阻容元件,就可以构成史密特触发器、单稳态触发器及自激多谐振荡器等脉冲信号产生与变换电路。
它在波形的产生与变换、测量与控制、定时电路、家用电器、电子玩具、电子乐器等方面有广泛的应用。
多谐振荡器的工作原理多谐振荡器是能产生矩形波的一种自激振荡器电路,由于矩形波中除基波外还含有丰富的高次谐波,故称为多谐振荡器。
多谐振荡器没有稳态,只有两个暂稳态,在自身因素的作用下,电路就在两个暂稳态之间来回转换,故又称它为无稳态电路。
由555定时器构成的多谐振荡器如图1所示,R1,R2和C是外接定时元件,电路中将高电平触发端(6脚)和低电平触发端(2脚)并接后接到R2和C的连接处,将放电端(7脚)接到R1,R2的连接处。
由于接通电源瞬间,电容C来不及充电,电容器两端电压uc为低电平,小于(1/3)Vcc,故高电平触发端与低电平触发端均为低电平,输出uo为高电平,放电管VT截止。
硬件电子琴电路模块方案设计

硬件电子琴电路模块方案设计一、引言在现代电子音乐和音乐教学中,电子琴作为一种重要的乐器,其电路设计模块方案对于音质和功能的实现至关重要。
本文将针对硬件电子琴的电路模块进行设计方案的探讨和分析。
二、电子琴基本原理电子琴是通过触摸电容器的方式来产生声音的电子乐器。
其基本原理是将触碰电容器时产生的电压信号转化为声音,通过数字信号处理和控制实现音符的发声和音色的调节。
三、硬件电子琴电路模块设计1. 键盘模块键盘模块是电子琴中最基本的部分,主要包括键盘、扫描电路和触发电路。
其设计需要考虑触摸的准确性和稳定性,以及声音的快速响应。
2. 音源电路音源电路是决定音色和声音质量的关键部分,包括振荡器、放大器和滤波器等。
设计时需考虑选择合适的集成电路和元件,以及调节参数来实现丰富的音色效果。
3. 控制模块控制模块是电子琴功能设置和音色调节的关键,包括按键控制、音色切换、音量调节等功能。
设计时需考虑电路稳定性和响应速度,以提供良好的操作体验。
4. 输出模块输出模块是将电子琴产生的声音信号转化为可听到的声音的部分,包括音箱、耳机接口和音频输出接口等。
设计时需考虑输出信号的清晰度和音质保真度。
四、电路模块整合与调试在设计完成各模块后,需要将各个电路模块整合起来,并进行功能调试和性能测试。
需要注意信号传输的稳定性和干扰抑制,以确保电子琴的正常使用和音质表现。
五、结论硬件电子琴的电路模块设计是实现音质和功能的重要环节,通过合理选择元件和参数设置,可以实现丰富的音色和稳定的声音表现。
本文基于键盘模块、音源电路、控制模块和输出模块等方面对电子琴的电路模块进行了设计方案的讨论,希望对相关技术人员提供一定的参考和指导。
以上就是关于硬件电子琴电路模块方案设计的相关内容,希望对您有所帮助。
以上是本文的初步构思,根据实际情况和要求,可以结合具体电子琴设计项目继续拓展内容。
简易电子琴电路的设计

1. 技术指标 (1)2. 设计方案及其比较 (1)2.1 方案一 (1)2.2 方案二 (3)2.3 方案比较 (6)3. 实现方案 (6)4. 调试过程及结论 (10)5. 心得体会 (16)6. 参考文献 (16)简易电子琴电路的设计1.技术指标设计一个玩具电子琴,设8个琴键,分别代表1、2、3、4、5、6、7、į八个不同音符,每按下一个琴键,扬声器发出一个音符的声音。
演奏时的音量和节拍可以调节。
2.设计方案及其比较2.1 方案一选用RC振荡电路和运算放大器构成简易电子琴电路。
RC振荡电路的具体电路为文氏桥正弦振荡电路。
电路原理图如下图1。
图1 简易电子琴电路原理图其中1C和按键电阻并联,2C和12R串联,两者共同构成RC串并联选频网络。
由于选频网络的相移为零,这样RC串并联选频网络送到运算放大器同相输入端的信号电压与输出电压同相,所以RC反馈网络形成正反馈,满足相位平衡条件,因而可以形成振荡。
由于振荡的能量是电源,激励信号源是电路中的噪声,它的频谱丰富,包含频率成分f;但由于噪声信号极其微弱,在振荡期间应使信号做增幅振荡,为此合理选择电阻使0ω信号就会通过正反馈而使得输出信号不断增大,使输出幅环路增益大于1,这样频率为0度越来越大,最后受电路中非线性元件的限制,使振荡幅度自动稳定下来,电路进入等幅振荡。
频率0f之外的信号由于不满足振荡平衡条件,将不会在输出信号中出现,RC选频网络实现了信号频率的选择功能。
按键电阻的选择:查阅资料得知八个音阶的频率如下表1:表1 八个音阶的频率由于1C的值确定为0.1uF,由公式:fπ2/1=(1)fRC0=并结合表一计算可得电阻阻值分别为(单位:欧姆):36kR3.1=(2)28R7.k2=(3)23R3.k3=(4)20kR4.4=(5)16kR2.5=(6)k13R1.6=(7)R3.10k7=(8)R1.9k8=(9)通过阻值选择电阻器件。
电路要求不仅能够振荡,而且能够稳幅。
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打包之后,接下来进行顶层文件的设计。
4-0电子琴电路制作与调试

3个10芯插座输出 个键信号,任一 个 芯插座输出 个键信号, 芯插座输出24个键信号 键按下, 键按下,对应的信号变为低电平
电子琴电路制作与调试
电子琴-琴键编码控制电路 电子琴 琴键编码控制电路
接EPROM地址输入口 地址输入口 接音符显示控制板
度音8键信号输入口 高8度音 键信号输入口 度音
度音8键信号输入口 中8度音 键信号输入口 度音
7种单片逻辑器件实验测 康芯科技 试板1块:74LS191、 、 X 74HC393、74LS48、 、 、 74HC148、74LS83、 、 、 74LS74、74HC139 、
K
W27C512一片
基于FPGA的 SOC单片式设 计电路 5个曲目自 动演奏硬件 电路:
1、梁祝 2、敖包相会 3、采茶舞曲 4、社会主义好 5、十送红军
数控分 频板 音频驱 动板 3通道音频 驱动板
电子琴完成24键模型电子琴单片式设计 电子琴 用FPGA完成 键模型电子琴单片式设计 完成
电子琴电路制作与调试
基于 FPGA 的 SOC 单片式 设计电 路 “梁祝” 单曲目 自动演 奏硬件 电路
基于传统逻 辑器件的 “板上系统 SOB”电子琴 电路模块
琴键编码 控制板 音符显示 译码板
时钟发生器 模块
74LS148优先编码器3片; 74LS244三态总线控制器2片; 74LS244 74LS02四二输入或非门1片 74LS02 74LS83四位全加器1片; 74LS48二十进制七段译码器1片; 74LS48 74LS00四二输入与非门1片; 74LS00 74HC04六反相器1片; 74HC04 74LS32四二输入或门1片; 74LS32 74HC139二四译码器1片; 74HC245八位总线驱动器1片; 共阴数码管1个,发光管3个 74HC393二4位二进制计数器1片; 20MHz有源晶体振荡器1片 74LS191可预置型加/减计数器2片; 74LS74 D型触发器22片; 74LS02四二输入或非门1片 74LS02 74HC04六反相器1片; 蜂鸣器1个,LED发光管1个 9013三极管1片 9013
简易电子琴电路的设计

目1.系统的概述 (2)1.1系统开发背景 (2)1.2系统开发意义 (2)1.3 EWB在数字电子电路综合课程设计中的应用 (2)2.555简易电子琴的设计 (4)2.1设计题目 (4)2.2 设计要求 (4)2.3.1 电路工作原理 (4)2.3.2 系统方框图 (5)2.3.3 电路原理总图(见附录一) (5)2.3.4 电路PCB图(见附录二) (5)2.3.5 电路PCB实物图(见附录三) (5)2.3.6 NE555单元模块 (5)2.3.7 LM386功放单元模块 (11)3.实验调试 (12)4.电路测试及测试结果 (12)5.总结 (12)6.元器件清单(见附录四) (13)7.参考文献 (13)附录一 (14)附录二 (15)附录三 (16)附录四 (17)1.系统的概述1.1系统开发背景随着电子技术的不断发展,模拟电子技术的缺点和局限性越发明显,模拟电子技术的不稳定性、易干扰性等大大限制了其应用,且有阻碍电子技术发展的趋势。
19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
随着集成技术的进一步提高,各种新技术的出现和应用,人类历史横跨数码时代向更进一步发展已出现在各大型相关企业的宏伟蓝图中。
新世纪里谁掌握了新技术谁就得到了获胜的资本,也仅仅是资本而矣。
新世纪里电子行业的发展速度令人窒息,闻名的摩尔定律更把许多人威吓在门外。
1.2系统开发意义555简易电子琴是一种用数字电路技术实现数字显示装置,与机械式数字显示装置相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
实验硬件乐曲自动演奏电路实施方案

验十硬件乐曲自动演奏电路设计1、实验目地:学习利用数控分频器设计硬件电子琴实验.实验仪器:PC机,操作系统为Windows2000/xp,Quartus II 5.1 设计平台,GW48系列SOPE/EDA实验开发系统.3、实验原理:本设计乐曲选取《梁祝》中化蝶部分,其简谱如图1所示.图1 《梁祝》中化蝶部分简谱组成乐曲地每个音符地发音频率值及其持续地时间是乐曲能连续演奏所需地2个基本要素,首先让我们来了解音符与频率地关系.乐曲地12平均率规定:每2个八度音(如简谱中地中音1与高音1)之间地频率相差1倍.在2个八度音之间,又可分为12个半音,每2个半音地频率比为.另外,音符A(简谱中地低音6)地频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音.由此可以计算出简谱中从低音1至高音1之间每个音符地频率,如表1所示.表1 简谱中音符与频率地关系主系统由4个模块组成;例1-1是顶层设计文件,其内部有三个功能模块(如图2所示):Tone.VHD(例1-2)和Speaker.VHD(例1-3)及Notetabs.VHD(例1-4).模块TONE是音阶发生器,当4位发声控制输入INDEX中某一位为高电平时,则对应某一音阶地数值将从端口TONE输出,作为获得该音阶地分频预置值;同时由CODE输出对应该音阶简谱地显示数码,如‘5’,并由HIGH输出指示音阶高8度显示.由例6-28可见,其语句结构只是类似与真值表地纯组合电路描述,其中地音阶分频预置值,如Tone <= 1290是根据产生该音阶频率所对应地分频比获得地.图2 硬件电子琴电路结构模块SPEAKER中地主要电路是一个数控分频器,它由一个初值可预置地加法计数器构成,当模块SPEAKER由端口TONE获得一个2进制数后,将以此值为计数器地预置数,对端口CLK12MHZ输入地频率进行分频,之后由SPKOUT向扬声器输出发声.模块NOTETABS,用于产生节拍控制(INDEX数据存留时间)和音阶选择信号,即在NOTETABS模块放置一个乐曲曲谱真值表,由一个计数器地计数值来控制此真值表地输出,而由此计数器地计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件地乐曲自动演奏电路.试完成此项设计,并在EDA实验系统上地FPGA目标器件中实现之.5、实验内容:编译适配以上4个示例文件,给出仿真波形,最后进行下载和硬件测试实验.建议使用实验电路模式“3”(附图2-5),用短路帽选择“CLOCK9”地输入频率选择12MHz,此信号作为系统输入信号CLK12MHZ;CLK8HZ与clock2相接,接受4Hz频率;键8至键1 作为INDEX输入信号控制各音阶;选择数码管1显示琴音简谱码,发光管D1显示高8度.6、思考题1:例1-3中地进程DelaySpkS对扬声器发声有什么影响?7、思考题2:电路上应该满足哪些条件,才能用数字器件直接输出地方波驱动扬声器发声?8、实验报告:用仿真波形和电路原理图,详细叙述硬件电子琴地工作原理及其4个VHDL 文件中相关语句地功能,叙述硬件实验情况..附录;【例10-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TOP IS -- 顶层设计PORT ( CLK12MHZ : IN STD_LOGIC;CLK8HZ : IN STD_LOGIC;CODE1 : OUTINTEGERRANGE 0 TO 15;HIGH1,SPKOUT : OUT STD_LOGIC);END;ARCHITECTURE one OF TOP ISCOMPONENT TonePORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); --11位2进制数 END COMPONENT;COMPONENT SpeakerPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#; --11位2进制数 SpkS : OUT STD_LOGIC );END COMPONENT;component NotetabsPort ( clk :in std_logic;index0 : out INTEGERRANGE 0 TO 15);end component;SIGNAL Tone2 : INTEGERRANGE0 TO 16#7FF#;SIGNAL Indx: INTEGERRANGE 0 TO 15;BEGIN -- 安装U1, U2, U3u1 : Tone PORT MAP (Index=>Indx, Tone=>Tone2,CODE=>CODE1,HIGH=>HIGH1); u2 : Speaker PORT MAP (clk=>CLK12MHZ,Tone1=>Tone2, SpkS=>SPKOUT );u3 : Notetabs PORT MAP(clk=>CLK8HZ,Index0=>Indx);END;【例10-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tone ISPORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUTINTEGERRANGE0 TO 16#7FF# );END;ARCHITECTURE one OF Tone ISBEGINSearch : PROCESS(Index)BEGINCASE Index IS -- 译码电路,查表方式,控制音调地预置数 WHEN 0=>Tone <= 2047; CODE <= 0; HIGH <= '0';WHEN 1=>Tone <= 773; CODE <= 1; HIGH <= '0';WHEN 2=>Tone <= 912; CODE <= 2; HIGH <= '0';WHEN 3=>Tone <= 1036; CODE <= 3; HIGH <= '0';WHEN 5=>Tone <= 1197; CODE <= 5; HIGH <= '0';WHEN 6=>Tone <= 1290; CODE <= 6; HIGH <= '0';WHEN 7=>Tone <= 1372; CODE <= 7; HIGH <= '0';WHEN 8=>Tone <= 1410; CODE <= 1; HIGH <= '1';WHEN 9=>Tone <= 1480; CODE <= 2; HIGH <= '1';WHEN 10=>Tone <= 1542; CODE <= 3; HIGH <= '1';WHEN 12=>Tone <= 1622; CODE <= 5; HIGH <= '1';WHEN 13=>Tone <=1668; CODE <= 6; HIGH <= '1';WHEN 15=>Tone <= 1728; CODE <= 1; HIGH <= '1';WHEN OTHERS =>NULL;END CASE;END PROCESS;END;【例10-3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speaker ISPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#;SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speaker ISSIGNAL PreCLK , FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk) -- 将CLK进 11分频,PreCLK为C L 11K 6分频VARIABLE Count4 : INTEGERRANGE 0 TO 15;BEGINPreCLK <= '0';IF Count4 > 11 THEN PreCLK <= '1'; Count4 := 0;ELSIF clk'EVENT AND clk='1' THEN Count4 := Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone1)VARIABLE Count11 : INTEGERRANGE0 TO 16#7FF#;BEGIN -- 11位可预置计数器IF PreCLK'EVENT AND PreCLK = '1' THENIF Count11=16#7FF# THEN Count11 := Tone1; FullSpkS <= '1'; ELSE Count11:=Count11 + 1; FullSpkS <= '0';END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkS'EVENT AND FullSpkS = '1' THEN Count2 := NOT Count2;IF Count2 = '1' THEN SpkS <= '1';ELSE SpkS <= '0';END IF;END IF;END PROCESS;END;【例10-4】library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Notetabs isPort ( clk: in std_logic; --系统时钟;键盘输入/自动演奏 index0 : out INTEGER RANGE 0 TO 15); --音符信号输出end NOTETABS;architecture Behavioral of Notetabs issignal count0:integer range 0 to 138;--changebeginmusic:process(clk) --此进程完成自动演奏部分曲地地址累加beginif clk'event and clk='1' thenif count0=138 then count0<=0;else count0<=count0+1;end if;end if;end process;com1:process(count0)begincase count0 is --此case语句:存储自动演奏部分地曲when 00 =>index0<=3;when 01 =>index0<=3;when 02 =>index0<=3;when 03 =>index0<=3;when 04 =>index0<=5;when 05 =>index0<=5;when 06 =>index0<=3;when 07 =>index0<=6;when 08 =>index0<=8;when 09 =>index0<=8;when 10 =>index0<=8;when 11 =>index0<=9;when 12 =>index0<=6;when 13 =>index0<=8;when 14 =>index0<=5;when 15 =>index0<=5;when 16 =>index0<=12;when 17 =>index0<=12;when 18 =>index0<=12;when 19 =>index0<=15;when 20 =>index0<=13;when 21 =>index0<=12;when 22 =>index0<=10;when 23 =>index0<=12;when 25 =>index0<=9; when 26 =>index0<=9; when 27 =>index0<=9; when 28 =>index0<=9; when 29 =>index0<=9; when 30 =>index0<=9; when 31 =>index0<=0; when 32 =>index0<=9; when 33 =>index0<=9; when 34 =>index0<=9; when 35 =>index0<=10; when 36 =>index0<=7; when 37 =>index0<=7; when 38 =>index0<=6; when 39 =>index0<=6; when 40 =>index0<=5; when 41 =>index0<=5; when 42 =>index0<=5; when 43 =>index0<=6; when 44 =>index0<=8; when 45 =>index0<=8; when 46 =>index0<=9; when 47 =>index0<=9; when 48 =>index0<=3; when 49 =>index0<=3; when 50 =>index0<=8; when 51 =>index0<=8; when 52 =>index0<=6; when 53 =>index0<=5; when 54 =>index0<=6; when 55 =>index0<=8; when 56 =>index0<=5; when 57 =>index0<=5; when 58 =>index0<=5; when 59 =>index0<=5; when 60 =>index0<=5; when 61 =>index0<=5; when 62 =>index0<=5; when 63 =>index0<=5; when 64 =>index0<=10; when 65 =>index0<=10; when 66 =>index0<=10; when 67 =>index0<=12;when 69 =>index0<=7; when 70 =>index0<=9; when 71 =>index0<=9; when 72 =>index0<=6; when 73 =>index0<=8; when 74 =>index0<=5; when 75 =>index0<=5; when 76 =>index0<=5; when 77 =>index0<=5; when 78 =>index0<=5; when 79 =>index0<=5; when 80 =>index0<=3; when 81 =>index0<=5; when 82 =>index0<=3; when 83 =>index0<=3; when 84 =>index0<=5; when 85 =>index0<=6; when 86 =>index0<=7; when 87 =>index0<=9; when 88 =>index0<=6; when 89 =>index0<=6; when 90 =>index0<=6; when 91 =>index0<=6; when 92 =>index0<=6; when 93 =>index0<=6; when 94 =>index0<=5; when 95 =>index0<=6; when 96 =>index0<=8; when 97 =>index0<=8; when 98 =>index0<=8; when 99 =>index0<=9; when 100=>index0<=12; when 101=>index0<=12; when 102=>index0<=12; when 103=>index0<=10; when 104=>index0<=9; when 105=>index0<=9; when 106=>index0<=10; when 107=>index0<=9; when 108=>index0<=8; when 109=>index0<=8; when 110=>index0<=6; when 111=>index0<=5;when 113=>index0<=3;when 114=>index0<=3;when 115=>index0<=3;when 116=>index0<=8;when 117=>index0<=8;when 118=>index0<=8;when 119=>index0<=8;when 120=>index0<=6;when 121=>index0<=8;when 122=>index0<=6;when 123=>index0<=5;when 124=>index0<=3;when 125=>index0<=5;when 126=>index0<=6;when 127=>index0<=8;when 128=>index0<=5;when 129=>index0<=5;when 130=>index0<=5;when 131=>index0<=5;when 132=>index0<=5;when 133=>index0<=5;when 134=>index0<=5;when 135=>index0<=5;when 136=>index0<=0;when 137=>index0<=0;when 138=>index0<=0;when others => null;end case;end process;end Behavioral;版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.Zzz6Z。
学士学位论文—-电子琴实验报告乐曲硬件演奏电路设计

武夷学院实验报告课程名称:逻辑设计与FPGA 项目名称:乐曲硬件演奏电路设计姓名:专业:微电子学班级: 14微电子学号: 04 实验日期实验预习成绩(百分制)实验指导教师签字:二、 实验过程记录部分:1.实验过程记录:1.1 输入信号锁相环PLL0调节: 图2.1 锁相环 管脚clk_50m (设置为B12)接入FPGA 内部的50mhz 的时钟信号,C0口为得到数控分屏器模块的输入时钟750KHZ ,将分频比设置为1/67,即50000000HZ/67=74.6K约等于75K ;c1口为2KHZ (配合下级的500分频模块),设置为:c1=50000000HZ/25000=2KHZ 。
1.2 500分频模块count500(即500进制的计数器):图2.2 分频电路程序设计 如图2.2,因为梁祝歌曲只用低音和中音来演奏,为1/4拍,即四分之一拍,每个音符持续0.25秒的时间。
因为前级电路已经实现了从50MHZ 到2KHZ 的转换,要得到4HZ 的频率,则用500进制的计数器(0到499的计数)产生的进位信号对2KHZ 实现500分频(输出波形分析见后)。
1.3 乐曲长度控制计数器cnt138设计:图2.3 乐曲长度控制计数器程序及元件图经查阅《EDA技术实用教程(第五版)》可知,《梁祝》这首歌曲总共有139个音符,其中包含末尾的3个休止符。
如图2.3,因此为了产生这139音符,因此想到开发一个139进制的计数器(计数值:0到138),实现用139状态代表139个音符。
又因为要配合下一级音符谱码存储模块的输入(ROM的输入一般为偶数位),因此将原本用7路线就可以表示完成的输出端cnt8增加一位线宽。
注:在本程序中,输出端cnt8由于定义成integer整型,在Quartus中被自动分配成了7根;也可以定义成vector型,而此时需要注意配合下级电路的权位最好写成cnt8: out std_logic_vector(7 downto 0).1.4 音符谱码存储模块设计构建:1.4.1 ROM的设置:图2.4 音符谱码存储模块ROM音符谱码存储模的主体构想,是为了让前级模块所产生的139个状态与实际音符(Do Re Mi Fa So La Si)构成映射。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江西理工大学应用科学学院SOPC/EDA综合课程设计报告设计题目:硬件电子琴电路设计设计者:学号:班级:指导老师:***完成时间:2011-1-04设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)目录一、设计任务与要求 (1)二、总体框图 (2)三、选择器件 (5)四、功能模块 (6)1.Songer模块 (6)1.1NoteTabs模块 (6)1.2ToneTaba模块 (11)1.3Speakera模块 (13)2.div模块 (16)3.七段译码器模块 (18)五、总体设计电路图 (21)1.顶层设计的电路原理图 (21)2.顶层设计的仿真结果 (23)3.电路的管脚图 (23)六、结束语 (24)七、心得体会 (25)硬件电子琴电路设计一、设计任务与要求使用FPGA设计一模拟电子琴键,实现电子琴按键的DO,Re,Mi,Fa,Sol,La,Si等中音以及相应的高音。
二、总体框图系统设计方案:方案一:采用单个的逻辑器件组合实现。
这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然。
但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。
例如八个不同的音符是由八个不同的频率来控制发出的,而采用方案一就需要运用不同的分频器来对信号进行不同程度的分频。
所用仪器之多显而易见。
方案二:采用VHDL语言编程来实现电子琴的各项功能。
系统主要由电子琴发声模块、选择控制模块和储存器模块组成。
和方案一相比较,方案二就显得比较笼统,只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。
但是我们必须看到用超高速硬件描述语言VHDL的优势,它不仅具有良好的电路行为描述和系统描述的能力而且通俗易懂。
经过对以上两种方案的分析、比较和总结,我们选用方案二来进行八音符电子琴的设计。
”(2). ToneTaba模块:是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs 的CLK的输入频率决定,这些值由对应于ToneTaba的4位输入值Index[3..0]确定,最多有16种可选值。
输向ToneTaba中Index[3..0]的值ToneIndex[3..0]的输出值与持续的时间由模块NoteTabs决定。
(3). Speakera模块:是一个数控分频器,音符的频率可由此模块获得。
由CLK端输入一具有较高频率的信号,通过Speakera分频后由SPKOUT输出。
由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号。
为了利用驱动扬声器,需加一个D触发器以均衡其占空比,频率将是原来的1/2。
Speakera对CLK输入信号的分频比由预置数Tone决定。
SPKOUT的输出频率将决定每一音符的音调。
2. Div模块:由于所使用的硬件设备不能满足设计所需要的两个CLK输出的频率,所以使用一个分频器来实现把一个50MHz的晶体振荡频率分成一个12MHz,一个8Hz两个分频率,再把两个频率分别给所需的两个模块。
3. EG7模块:SEG7 模块是一个七段译码器,作用是在硬件上显示音频的高低,用0到7分别对应空节拍do、ri、mi、fa、suo、la、xi,高音时,LED灯亮,数码管显示对应数字。
发音原理:(1). 乐曲演奏的原理组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续时间,就可以使扬声器发出连续的乐曲声。
(2).音调的控制: 频率的高低决定了音调的高低。
2.1 基准频率f0的选取所有不同频率的信号都是从同一个基准频率f0分频而得到的。
由于音节频率多为非整数,而分频系数又不能为小数,因此必须将计算所得的分频数四舍五入取整。
若基准频率过高,则分频比太小,取整后误差较大。
若基准频率过高,虽然误差减小,但分频数变大。
综合这两方面因素,在尽量减小频率误差的前提下取合适的基准频率,在此取f0=12MHz。
2.2 分频系数,二进制计数器计数的容量N和预置数的选取 :分频系数A=f0/音名频率分频系数n=f0/音名频率/2N〉=MAX{分频系数n}由表1可得最大分频系数为1274,因此N=2048为2的11次方。
因此二进制计数器设为11位二进制加法计数器,其计数容量为2048,计数的最大值为2047。
预置数=N-分频系数n表1为各音阶的频率、对应的分频系数及预置数:(3). 音长的控制:音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定的。
《采茶舞曲》中最短的音符为四分音符,如果全音符的持续时间为1s,则四分音符的持续时间为0.25s,二分音符持续的时间为0.5s等等,只需再提供一个4Hz的时钟频率。
每来一个脉冲计一次数,每一计数值的停留时间为0.25s,即要输入一个全音符时需要计四次数才行,则应在Rom表格中输出相应音符四次,表示一个全音符的持续时间。
三、选择器件1.装有QuartusII软件的计算机一台;2.外置扬声器;3.7段数码管;4.LED灯一个;5.芯片:使用altera公司生产的Cyclone系列芯片,如EP1C12Q240C8芯片;6.EDA实验箱一个;7.下载接口是数字芯片的下载接口(JTAG),主要用于FPGA芯片的数据下载。
Cyclone器件的配置器件:此次设计实验采用ALTERA公司的cyclone系列的FPGA芯片EP1C12,设计和仿真采用ALTERA公司的QUARTUS II软件,EP1C12各项参数参照表2。
表2 EP1C12参数表Cyclone的性能特性:1、新的可编程体系结构,实现低成本设计。
2、嵌入式存储器资源支持多种存储器应用和数字信号处理(DSP)实现3、专用外部存储器接口电路,支持与DDR FCRAM和SDRAM器件以及SDR SDRAM存储器的连接。
4、支持串行总线和网络接口以及多种通信协议片内和片外系统时序管理使用嵌入式PLL5、支持单端I/O标准和差分I/O技术,LVDS信号数据速率高达640Mbps。
6、处理功耗支持Nios II 系列嵌入式处理器7、采用新的串行配置器件的低成本配置方案8、Quartus II 软件OpenCore评估特性支持免费的IP功能评估四、功能模块1)、Songer模块如图3:图3 Songer模块Songer模块由三个模块组成:Note Tabs模块,ToneTaba模块和Speakera模块。
Notetabs模块类似于弹琴人的手指,Tonetaba类似于琴键,Speakera类似于琴弦或音调发生器。
1.NoteTabs模块:原理:在这个模块中设置了一个8位二进制计数器,作为音符数据 ROM的地址发生器。
这个计数器的计数频率选为4HZ,即每一计数值的停留时间为0.25秒,当全音符设为1秒时,4分音符持续时间为0.25s, 2分音符持续的时间为0.5s等等。
每来一个脉冲计一次数,每一计数值的停留时间为0.25s,即要输入一个全音符时需要计数4次才行,则应在Rom表格中输出相应音符四次,表示一个全音符的持续时间,要输入一个2分音符则需要计数2次,依次类推。
NoteTabs模块图如图4:图4 NoteTabs模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NOTETABS ISPORT (CLK1: IN STD_LOGIC;TONEINDEX: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE ONE OF NOTETABS ISCOMPONENT MUSICPORT (ADDRESS: IN STD_LOGIC_VECTOR (7 DOWNTO 0);CLOCK: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END COMPONENT;SIGNAL COUNTER:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINCNT8:PROCESS (CLK1,COUNTER)BEGINIF COUNTER=336 THEN COUNTER<="00000000";ELSIF (CLK1'EVENT AND CLK1='1')THENCOUNTER<=COUNTER+1;END IF;END PROCESS;END;NoteTabs模块波形仿真图如图5:(注:每来一个时钟clk,输出一个相应的数,每个音符的拍子不一样所记次数也不一样)图5 Notetabs的波形仿真图《采茶舞曲》简谱如图6图6 《采茶舞曲》简谱下表7是ROM表格:(即为此程序中调用的MUSIC模块)。
表7 ROM表格ROM模块图如图8:2.ToneTaba模块:原理:ToneTaba是乐曲简谱码对应的分频预置数查表电路。
音符的持续时间需要根据乐曲的速度及每个音符的节拍数来确定,Tonetaba的功能首先是为Speakera提供决定所发音符的分频预置数,而此数在Speakera输入口停留的时间为此音符的节拍值。
模块Tonetaba是乐曲简码对应的分频预置数查表电路,其中设置了《采茶舞曲》乐曲全部音符所对应的分频预置数,共16 个,每一音符的停留时间由音乐节拍和音调发生器模块Notetabs的clk的输入频率决定,在此为4Hz。
这16个值得输出由对应于Tonetaba的4位输入值Index[3..0]确定。
输向Tonetaba中Index[3..0]的值,ToneIndex[3..0]的输出值与持续的时间由模块Notetabs决定。
如图9:图9 ToneTab模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TONETABA ISPORT ( INDEX : IN STD_LOGIC_VECTOR(3 DOWNTO 0);CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH : OUT STD_LOGIC;TONE : OUT STD_LOGIC_VECTOR(10 DOWNTO 0));END;ARCHITECTURE ONE OF TONETABA ISBEGINSEARCH: PROCESS (INDEX)BEGINCASE INDEX ISWHEN"0000"=>TONE<="11111111111";CODE<="0100";HIGH<='0';--1077 WHEN"0101"=>TONE<="10010101101";CODE<="0101";HIGH<='0';--1197 WHEN"0110"=>TONE<="10100001010";CODE<="0110";HIGH<='0';--1290 WHEN"0111"=>TONE<="10101011100";CODE<="0111";HIGH<='0';--1372 WHEN"1000"=>TONE<="10110000010";CODE<="0001";HIGH<='1';--1410 WHEN"1001"=>TONE<="10111001000";CODE<="0010";HIGH<='1';--1480 WHEN"1010"=>TONE<="11000000110";CODE<="0011";HIGH<='1';--1542 WHEN"1011"=>TONE<="11000101000";CODE<="0100";HIGH<='1';--1576 WHEN"1100"=>TONE<="11001010110";CODE<="0101";HIGH<='1';--1622 WHEN"1101"=>TONE<="11010000100";CODE<="0110";HIGH<='1';--1668 WHEN"1110"=>TONE<="11011000000";CODE<="0001";HIGH<='1';--1728 WHEN"1111"=>TONE<="11011101010";CODE<="0010";HIGH<='1';--1770 WHEN OTHERS => NULL;END CASE;END PROCESS;END;(注:每一个index的值都对应一个code,tone值,index的值从0000到0111对应的high为低电,从1000到1111对应的high 为高电。