当前位置:首页 » 软件设计 » 电子琴的设计

电子琴的设计

发布时间: 2020-12-15 15:06:16

『壹』 简易电子琴设计

^网上的一个
http://blog.sina.com.cn/s/blog_49013b4801009rfc.html~type=v5_one&label=rela_prevarticle

其它问题网络回hi联系答( ^_^ )

『贰』 简易电子琴设计

它的原理是:简单的说就是按键触发信号发给处理器,再由处理器调用音色库音色通过功放电路输出或者通过数码接口进行数字输出。控制面板上的按钮来选择处理器对音色、音量、输出方式、伴奏的控制。

玩具和简单的老式电子琴就简单得多,按键做为开关接通内部发声单元,进行固定频率的发声。或者由初级的单片机处理发声频率。

电子琴的工作原理一般有FM(调频)模式和PCM(采样)模式。

现在常用的电子琴的常见品牌有YANMAHA 和CASIO,海南的乐手比较喜欢使用YAMAHA的产品,因为它的设置比较合理,现场使用非常

方便;音色比较真实,使用效果更佳。

单独用一具电子琴,就可以现场作出类似一支完整乐队的效果。所以现在一些演出场合中,比较流行一具电子琴(有些会再加上一具合成器)的单人编制(简称单编),或一具电子琴和一把吉他的双人编制(简称双编)。搞单编需要乐手具备较高的电子琴操作和演奏水平。本版中的“啊方十指琴魔”就是这样的单编高手之一。搞单编或双编对电子琴的要求也较高,在YAMAHA的电子琴系列中,一般要PSR 410以上级别的产品才能达到乐手们常说的“能用”的水平。

电振荡乐

以电振荡作为激励声源的乐器,称为电振荡乐器


目前人们能见到的各种电子琴、电子合成器、电子鼓机等都属于电振荡
乐器。
说明:当演奏者按下键盘中的某一琴键时,琴键下面的电路就将信号传
送给振荡器
1
和振荡器2,产生相应的音高振荡频率;手指触键的力度信号
也会同时传给包络发生器
1
和包络发生器2,并通知滤波器和放大器产生相
应的音量及音色的变化;最后,声音信号通过放大器输出。图中低频振荡器
的作用,是能够根据演奏者的需要,对所有其它部分——振荡器、滤波器和
放大器——进行调制,从而使合成器能够发出颤音的效果。

目前,国外生产的电子合成器以及较高档的电子琴都有MIDI
接口,相互
间可串接使用。目前较流行的使用方法是用一台计算机通过MIDI
接口来控制
所有相关的电子乐器和音响效果发生器,从而能够方便地产生丰富多彩的音
乐音响效果。

『叁』 电子琴的设计原理

用AT89C51单片机做比较简单配上按键键盘,三极管驱动一个喇叭就能实现,下面是我调试过的单片机程序供参考

;DIAN ZI QIN 电子琴
SPK EQU P1.0
FKEY EQU 20H.0
DI EQU 71H
GAO EQU 72H
KEY_NO EQU 73H
NO EQU 74H
TC EQU 75H
OUTBIT EQU 08002H
OUTSEG EQU 08004H
IN EQU 08001H

ORG 0000H
JMP BEGIN
ORG 0BH
JMP TO_INT

BEGIN:
MOV TMOD,#00000000B
MOV IE ,#10000010B
MOV R4,#1
MOV R3,#1
CALL PLAY

MOV R4,#2
MOV R3,#1
CALL PLAY

JMP RUN
JMP $

PLAY:
CALL LOAD_VALUE
CALL SOUND_ON
PL1:
MOV R5,#30
CALL DELAY
DJNZ R3,PL1
CALL SOUND_OFF
MOV R5,#3
CALL DELAY
RET

PLAY_SONG1:
MOV TC,#0
PA0:
MOV DPTR,#SONG1
MOV A,TC
MOVC A,@A+DPTR
MOV R4,A
CJNE A,#0FFH,PA1
RET
PA1:
MOV DPTR,#LEN
MOV A,TC
MOVC A,@A+DPTR
MOV R3,A
CALL PLAY
INC TC
JMP PA0
RET

PLAY_SONG2:
MOV TC,#0
PB0:
MOV DPTR,#SONG2
MOV A,TC
MOVC A,@A+DPTR
MOV R4,A
CJNE A,#0FFH,PB1
RET
PB1:
MOV DPTR,#LEN
MOV A,TC
MOVC A,@A+DPTR
MOV R3,A
CALL PLAY
INC TC
JMP PB0
RET

SOUND_ON:
SETB TR0
RET

SOUND_OFF:
CLR TR0
RET

LOAD_VALUE:
MOV DPTR,#HI_LIST
MOV A,R4
MOVC A,@A+DPTR
MOV GAO,A
MOV DPTR,#LO_LIST
MOV A,R4
MOVC A,@A+DPTR
MOV DI,A
RET

TO_INT:
MOV TL0,DI
MOV TH0,GAO
CPL SPK
RETI

HI_LIST:
DB 0,226,229,232,233,236,238,240
LO_LIST:
DB 0,4,13,10,20,3,8,6

SONG1: DB 1,2,3,4,5,6,7,0FFH
SONG2: DB 7,6,5,4,3,2,1,0FFH
LEN: DB 2,2,2,2,2,2,2,0FFH

DELAY:
MOV R6,#50
D1:MOV R7,#50
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,DELAY
RET

TABLE_DIG:
DB 16H,15H,14H,0FFH
DB 13H,12H,11H,10H
DB 0DH,0CH,09H,0AH
DB 0EH,03H,06H,0FH
DB 08H,02H,05H,0BH
DB 00H,01H,04H,07H

SCAN:
MOV DPTR ,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#IN
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET

GET_KEY:
MOV DPTR,#OUTBIT
MOV P2,DPH
MOV R0,#LOW(IN)
MOV R1,#00100000B
MOV R2,#6
KLOOP:
MOV A,R1
CPL A
MOVX @DPTR,A
CPL A
RR A
MOV R1,A
MOVX A,@R0
CPL A
ANL A,#0FH
JNZ GOON1
DJNZ R2,KLOOP
MOV R2,#0FFH
SJMP EXIT
GOON1:
MOV R1,A
MOV A,R2
DEC A
RL A
RL A
MOV R2,A
MOV A,R1
MOV R1,#4
LOOPC:
RRC A
JC EXIT
INC R2
DJNZ R1,LOOPC
EXIT:
MOV A,R2
MOV DPTR,#TABLE_DIG
MOVC A,@A+DPTR
MOV R2,A
MOV KEY_NO,A
RET

SO:
MOV R3,#1
CALL PLAY
RET

SOP:
CJNE A,#1,A1
MOV R4,#1
CALL SO
RET
A1:
CJNE A,#2,A2
MOV R4,#2
CALL SO
RET
A2:
CJNE A,#3,A3
MOV R4,#3
CALL SO
RET
A3:
CJNE A,#4,A4
MOV R4,#4
CALL SO
RET
A4:
CJNE A,#5,A5
MOV R4,#5
CALL SO
RET
A5:
CJNE A,#6,A6
MOV R4,#6
CALL SO
RET
A6:
CJNE A,#7,A7
MOV R4,#7
CALL SO
RET
A7:
CJNE A,#0FH,A8
CALL PLAY_SONG1
RET
A8:
CJNE A,#0BH,A9
CALL PLAY_SONG2
RET
A9:
RET

RUN:
LOOP:
CALL SCAN
JZ LOOP
CALL GET_KEY
MOV A,KEY_NO
CALL SOP
LJMP LOOP
END

『肆』 简易电子琴设计

它的原理是:简单的说就是按键触发信号发给处理器,再由处理器调用音色库音色通过功放电路输出或者通过数码接口进行数字输出。控制面板上的按钮来选择处理器对音色、音量、输出方式、伴奏的控制。

玩具和简单的老式电子琴就简单得多,按键做为开关接通内部发声单元,进行固定频率的发声。或者由初级的单片机处理发声频率。

电子琴的工作原理一般有FM(调频)模式和PCM(采样)模式。

现在常用的电子琴的常见品牌有YANMAHA 和CASIO,海南的乐手比较喜欢使用YAMAHA的产品,因为它的设置比较合理,现场使用非常

方便;音色比较真实,使用效果更佳。

单独用一具电子琴,就可以现场作出类似一支完整乐队的效果。所以现在一些演出场合中,比较流行一具电子琴(有些会再加上一具合成器)的单人编制(简称单编),或一具电子琴和一把吉他的双人编制(简称双编)。搞单编需要乐手具备较高的电子琴操作和演奏水平。本版中的“啊方十指琴魔”就是这样的单编高手之一。搞单编或双编对电子琴的要求也较高,在YAMAHA的电子琴系列中,一般要PSR 410以上级别的产品才能达到乐手们常说的“能用”的水平。

电振荡乐

以电振荡作为激励声源的乐器,称为电振荡乐器


目前人们能见到的各种电子琴、电子合成器、电子鼓机等都属于电振荡
乐器。
说明:当演奏者按下键盘中的某一琴键时,琴键下面的电路就将信号传
送给振荡器
1
和振荡器2,产生相应的音高振荡频率;手指触键的力度信号
也会同时传给包络发生器
1
和包络发生器2,并通知滤波器和放大器产生相
应的音量及音色的变化;最后,声音信号通过放大器输出。图中低频振荡器
的作用,是能够根据演奏者的需要,对所有其它部分——振荡器、滤波器和
放大器——进行调制,从而使合成器能够发出颤音的效果。

目前,国外生产的电子合成器以及较高档的电子琴都有MIDI
接口,相互
间可串接使用。目前较流行的使用方法是用一台计算机通过MIDI
接口来控制
所有相关的电子乐器和音响效果发生器,从而能够方便地产生丰富多彩的音
乐音响效果。
不知你用什么设计,即时单片机,也是个很大的项目,这里说不清

『伍』 基于单片机的电子琴设计

有个抄适袭用的:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d025718ab4fa7bdefc1f10b7.html

『陆』 简易8按键电子琴设计实验

简易电子琴的设计

摘 要 随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是简易电子琴的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,MAX + PLUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。通过老师的指导和自己的学习完成了预想的功能。

关键词 电子琴;课程设计;EDA;VHDL

1 引言

1.1 课程设计的目的
巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。
1.2 课程设计的内容
(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。
(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。

2 开发工具简介

2.1 EDA技术
EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
2.2硬件描述语言—VHDL
VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。
(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(4) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
2.3 VHDL的设计流程:
(1) 设计输入根据电路设计所提出的要求,将程序输入到VHDL编辑器中去编辑。
(2) 功能级模拟用VHDL,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。
(3) 逻辑综合与优化 将通过功能模拟的程序放到VHDL编译器中,进行逻辑综合与优化。
(4) 门级模拟对电路用VHDL。仿真器仿真。可对门级电路的延时、定时状态、驱动能力等进行仿真。如不符合要求,可重复步骤(3),再门级模拟,直到符合要求止。
(5) 版图生成 用相应的软件处理后,就可以拿去制版。

设计过程
3.1设计规划
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图3-1所示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。

图3-1 系统的整体组装设计原理图
3.2 各模块的原理及其程序
(1)乐曲自动演奏模块
乐曲自动演奏模块(AUTO.VHD)的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。
VHDL源程序(AUTO.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY AUTO IS
PORT ( CLK : IN STD_LOGIC;
AUTO : IN STD_LOGIC;
CLK2 : BUFFER STD_LOGIC;
INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END AUTO;
ARCHITECTURE BEHAVIORAL OF AUTO IS
SIGNAL COUNT0: INTEGER RANGE 0 TO 31;
BEGIN
PULSE0 :PROCESS(CLK,AUTO)
VARIABLE COUNT :INTEGER RANGE 0 TO 8;
BEGIN
IF AUTO ='1' THEN
COUNT := 0;CLK2<='0';
ELSIF(CLK'EVENT AND CLK ='1')THEN
COUNT :=COUNT +1;
IF COUNT =4 THEN
CLK2 <='1';
ELSIF COUNT =8 THEN
CLK2<='0'; COUNT:=0;
END IF ;
END IF ;
END PROCESS;
MUSIC:PROCESS(CLK2)
BEGIN
IF (CLK2'EVENT AND CLK2='1')THEN
IF (COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
END IF ;
END IF ;
END PROCESS;
COM1:PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IF AUTO ='0' THEN
CASE COUNT0 IS
WHEN 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 11=>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 21=>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"; --2
WHEN OTHERS =>NULL;
END CASE;
ELSE INDEX0<=INDEX2;
END IF;
END PROCESS;
END BEHAVIORAL;
(2) 音调发生模块
音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。

VHDL源程序(TONE.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TONE IS
PORT (INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
HIGH: OUT STD_LOGIC;
TONE0: OUT INTEGER RANGE 0 TO 2047);
END TONE;
ARCHITECTURE ART OF TONE IS
BEGIN
SEARCH : PROCESS(INDEX)
BEGIN
CASE INDEX IS
WHEN "00000001"=>TONE0 <=773;CODE<="1001111";HIGH<='1';
WHEN "00000010"=>TONE0 <=912;CODE<="0010010";HIGH<='1';
WHEN "00000100"=>TONE0 <=1036;CODE<="0000110";HIGH<='1';
WHEN "00001000"=>TONE0 <=1116;CODE<="1001100";HIGH<='1';
WHEN "00010000"=>TONE0 <=1197;CODE<="0100100";HIGH<='1';
WHEN "00100000"=>TONE0 <=1290;CODE<="0100000";HIGH<='0';
WHEN "01000000"=>TONE0 <=1372;CODE<="0001111";HIGH<='0';
WHEN "10000000"=>TONE0 <=1410;CODE<="0000000";HIGH<='0';
WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';
END CASE;
END PROCESS;
END ART;
(3) 数控分频模块
数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。

VHDL源程序(FENPIN.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FENPIN IS
PORT(CLK1: IN STD_LOGIC;
TONE1: IN INTEGER RANGE 0 TO 2047;
SPKS: OUT STD_LOGIC);
END ENTITY FENPIN;
ARCHITECTURE ART OF FENPIN IS
SIGNAL PRECLK:STD_LOGIC;
SIGNAL FULLSPKS:STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLE COUNT:INTEGER RANGE 0 TO 8;
BEGIN
IF (CLK1'EVENT AND CLK1='1')THEN
COUNT:=COUNT +1;
IF COUNT=2 THEN
PRECLK<='1';
ELSIF COUNT =4 THEN
PRECLK<='0';COUNT:=0;
END IF ;
END IF ;
END PROCESS;
PROCESS(PRECLK,TONE1)
VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;
BEGIN
IF (PRECLK'EVENT AND PRECLK='1')THEN
IF COUNT11<TONE1 THEN
COUNT11:=COUNT11+1;FULLSPKS<='1';
ELSE
COUNT11:=0;FULLSPKS<='0';
END IF ;
END IF ;
END PROCESS;
PROCESS(FULLSPKS)
VARIABLE COUNT2 :STD_LOGIC:='0';
BEGIN
IF (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 ART;
(4) 顶层设计
VHDL源程序(DIANZIQIN.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DIANZIQIN IS
PORT(CLK32MHZ: IN STD_LOGIC;
HANDTOAUTO:IN STD_LOGIC;
CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--音符显示信号
INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0);--键盘输入信号
HIGH1: OUT STD_LOGIC;--高低音节信号
SPKOUT: OUT STD_LOGIC);--音频信号
END;
ARCHITECTURE ART OF DIANZIQIN IS
COMPONENT AUTO
PORT(CLK: IN STD_LOGIC;
AUTO: IN STD_LOGIC;
INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
COMPONENT TONE
PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
HIGH: OUT STD_LOGIC;
TONE0: OUT INTEGER RANGE 0 TO 2047);
END COMPONENT;
COMPONENT FENPIN
PORT(CLK1: IN STD_LOGIC;
TONE1:IN INTEGER RANGE 0 TO 2047;
SPKS: OUT STD_LOGIC);
END COMPONENT;
SIGNAL TONE2:INTEGER RANGE 0 TO 2047;
SIGNAL INDX:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
U0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);
U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);
U2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT);
END ART;

4 波形仿真
(1)乐曲自动演奏模块的仿真(如图4-1所示)

图4-1乐曲自动演奏模块的仿真图
(2)音调发生模块的仿真(如图4-2)

图4-2 音调发生模块的仿真图
(3)数控分频模块的仿真(如图4-3)

图4-3数控分频模块仿真图
(4)简易电子琴整个系统的仿真(如图4-4)

图4-4简易电子琴整个系统的仿真图

5 结束语
经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会:
1) 这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。知识的接收速度在很大的程度上决定了动手的时间。
2) VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。
3) VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。
4)通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。希望其他人在看再做类似设计时有所借鉴。
通过几天的课程设计,我对数据库软件EDA技术、VHDL、等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。
在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在我此课程设计遇到问题时给我的帮助使我能够顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们。

参考文献
《VHDL与数字电路设计》.卢毅,赖杰.科学出版社
《VHDL语言100例详解——北京理工大学ASIC研究所》.北京理工大学ASIC研究所.清华大学出版社
《VHDL程序设计》(第二版). 曾繁泰等.清华大学出版社
《VHDL入门与应用》陈雪松,滕立中.人民邮电出版社
《VHDL简明教程》.王小军.清华大学出版社

『柒』 基于matlab的数字电子琴设计 要求实现1234567的音乐声

这个应该参考音频处理工具箱,仿真这几个信号

热点内容
美发店认证 发布:2021-03-16 21:43:38 浏览:443
物业纠纷原因 发布:2021-03-16 21:42:46 浏览:474
全国著名不孕不育医院 发布:2021-03-16 21:42:24 浏览:679
知名明星确诊 发布:2021-03-16 21:42:04 浏览:14
ipad大专有用吗 发布:2021-03-16 21:40:58 浏览:670
公务员协议班值得吗 发布:2021-03-16 21:40:00 浏览:21
知名书店品牌 发布:2021-03-16 21:39:09 浏览:949
q雷授权码在哪里买 发布:2021-03-16 21:38:44 浏览:852
图书天猫转让 发布:2021-03-16 21:38:26 浏览:707
宝宝水杯品牌 发布:2021-03-16 21:35:56 浏览:837