5-2-1 项目六 简易电子琴(1).docx

上传人:大米 文档编号:548076243 上传时间:2022-10-27 格式:DOCX 页数:8 大小:16.10KB
返回 下载 相关 举报
5-2-1 项目六 简易电子琴(1).docx_第1页
第1页 / 共8页
5-2-1 项目六 简易电子琴(1).docx_第2页
第2页 / 共8页
5-2-1 项目六 简易电子琴(1).docx_第3页
第3页 / 共8页
5-2-1 项目六 简易电子琴(1).docx_第4页
第4页 / 共8页
5-2-1 项目六 简易电子琴(1).docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《5-2-1 项目六 简易电子琴(1).docx》由会员分享,可在线阅读,更多相关《5-2-1 项目六 简易电子琴(1).docx(8页珍藏版)》请在金锄头文库上搜索。

1、5-2-1 项目六 简易电子琴(1)简易电子琴一、项目要求:设计一个简单的硬件电子琴,当按下某键时发该键对应的音,并显示对应的音名。二、实训目的:学习使用数控分频器设计实用电路。三、硬件要求:主芯片EPF10K10LC84-4。可变时钟源。8位按键开关。两位7段数码管。扬声器。四、相关原理:1音名与频率的关系:音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可分为十二个半音,每两个半音的频率比为。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名的

2、频率,如表所示。简谱中音名与频率的关系音名频率(HZ)音名频率(HZ)音名频率(HZ)低音1 26163 中音1 52325 高音1 104650低音2 29367 中音2 58733 高音2 117466低音3 32963 中音3 65925 高音3 131851低音4 34923 中音4 69846 高音4 139692低音5 39199 中音5 78399 高音5 156798低音6 440 中音6 880 高音6 1760低音7 49388 中音7 98776 高音7 197552表:5由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低

3、,则由于分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。本例中选取5MHZ的基准频率。若无5MHz的时钟频率,则可以先分频得到4MHz或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,C作1与D作1演奏出的音乐昕起来都不会“走调”。图:222系统设计:主系统如图所示,其内部有4个功能模块预制数计数器、初始计数值、二分频器和音名译码电路。当8位发声控制键输入中某一位为高电平时,则对应某一音阶的初始计数值作为获得该音阶的分频预置值将送入预制数计数器;预制数计数器输出

4、相应的频率同时输出对应该音阶简谱的显示数码;该频率经二分频器后送入扬声器,同时在数码管上显示该音名的键码。五、项目内容:1.示例程序顶层文件如图所示。模块DZQS是音阶发生器,当8位发声控制输入DAIN中某一位为高电平时,则对应某一音阶的数值将从端口DOUT输出,作为获得该音阶的分频预置值;同时由CODE输出对应该音阶简谱的显示数码,如5,并由HIGH输出指示音阶高8度显示。图:23 硬件电子琴电路结构模块DZQC中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块DZQC由端口DIN获得一个2进制数后,将以此值为计数器的预置数,对端口CLK输入的频率进行分频,之后由SP向

5、扬声器输出发声。编译适配以上3个示例文件,给出仿真波形,最后进行下载和硬件测试实验。建议用8位拨码开关作为DA7.0输入信号控制各音阶;选择2个数码管分别显示显示琴音简谱码和高8度。建议CLK接5MHz时钟,CP接1KHz时钟,SP接扬声器输入端,DA7.0接8位拨码开关,SEL2.0和SEG6.0分别接7段码对应的SEL2.0和GA。注:示例程序在文件夹EXAMPLE13中,DZQ.GDF文件是示例程序的顶层文件。参考程序1:DZQC.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IE

6、EE.STD_LOGIC_UNSIGNED.ALL;ENTITY DZQC ISPORT (CLK : IN STD_LOGIC;DIN : IN INTEGER RANGE 0 TO 16#1FFF#;SP : OUT STD_LOGIC );END;ARCHITECTURE A OF DZQC ISSIGNAL SPK : STD_LOGIC;BEGINPROCESS(CLK)V ARIABLE COUNT : INTEGER RANGE 0 TO 16#1FFF#;BEGINIF CLK EVENT AND CLK = 1 THENIF COUNT = 16#1FFF# THENCOUN

7、T := DIN;SPK ELSECOUNT := COUNT + 1; SPK END IF;END IF;END PROCESS;PROCESS(SPK)V ARIABLE C : STD_LOGIC;BEGINIF SPK EVENT AND SPK = 1 THENC := NOT C;IF C = 1 THEN SP ELSE SP END IF;END IF;END PROCESS;END;参考程序2:DZQS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_

8、LOGIC_UNSIGNED.ALL;ENTITY DZQS ISPORT (DAIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CODE,HIGH : OUT INTEGER RANGE 0 TO 15;DOUT : OUT INTEGER RANGE 0 TO 16#1FFF# );END;ARCHITECTURE A OF DZQS ISBEGINPROCESS(DAIN)BEGINCASE DAIN ISWHEN 00000001 = DOUT WHEN 00000010 = DOUT WHEN 00000100 = DOUT WHEN 00001000 =

9、DOUT WHEN 00010000 = DOUT WHEN 01000000 = DOUT WHEN 10000000 = DOUT END CASE;END PROCESS;END;参考程序3:SEG.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SEG ISPORT(CP : IN STD_LOGIC;DATA1,DATA2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SEL : OUT

10、 STD_LOGIC_VECTOR(2 DOWNTO 0);SEG7 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END;ARCHITECTURE A OF SEG ISSIGNAL SE : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL DOUT : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CP)BEGINIF SE = 010 THENSE ELSIF CP EVENT AND CP = 1 THENSE END IF;END PROCESS;SEL DOUT DATA2 ;SEG7 0000110 WHEN DOUT = 1 ELSE1011011 WHEN DOUT = 2 ELSE1001111 WHEN DOUT = 3 ELSE1100110 WHEN DOUT = 4 ELSE1101101 WHEN DOUT = 5 ELSE1111101 WHEN DOUT = 6 ELSE0000111 WHEN DOUT = 7 ELSE1111111 WHEN DOUT = 8 ELSE1101111 WHEN DOUT = 9 ELSE0000000;END ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号