8.18 电子琴程序设计与仿真
- 格式:doc
- 大小:105.50 KB
- 文档页数:6
目录1 Pspice的简介 (1)1.1 PSPICE的起源与发展 (1)1.2 PSPICE的组成 (1)1.3 PSPICE的模拟功能 (2)2 设计原理及电路选取 (4)2.1 基本乐理知识 (4)2.2 设计原理 (4)3 设计方案 (7)3.1设计电路图 (7)3.2参数推导 (8)3.3仿真参数和仿真电路图 (8)4.仿真曲线 (10)5.仿真结果分析 (13)6.硬件焊接与调试 (14)6.1元器件的选择 (14)6.2焊接过程与调试 (15)7.课程设计心得 (16)8.参考文献 (18)本科生课程设计成绩评定表 (19)1 Pspice的简介1.1 PSPICE的起源与发展用于模拟电路仿真的SPICE软件于1972年由美国加州大学伯克利分校的计算机辅助设计小组利用FORTR AN语言开发而成,主要用于大规模集成电路的计算机辅助设计。
SPICE 的正式版SPICE 2G在1975年正式推出,但是该程序的运行环境至少为小型机。
1985年,加州大学伯克利分校用C语言对SPICE软件进行了改写,并由MICROSIM公司推出。
1988年SPICE被定为美国国家工业标准。
与此同时,各种以SPICE为核心的商用模拟电路仿真软件,在SPICE的基础上做了大量实用化工作,从而使SPICE成为最为流行的电子电路仿真软件。
PSPICE是较早出现的EDA软件之一,在电路仿真方它的功能可以说是最为强大,在国内被普遍使用。
1.2 PSPICE的组成1.2.1 电路原理图编辑程序SchematicsPSPICE的输入有两种形式,一种是网单文件形式,一种是电路原理图形式,相对而言后者比前者较简单直观,它既可以生成新的电路原理图文件,又可以打开已有的原理图文件。
电路元器件符号库中备有各种原器件符号,除了电阻,电容,电感,晶体管,电源等基本器件及符号外,还有运算放大器,比较器等宏观模型级符号,组成电路图,原理图文件后缀为.sch。
电子琴的仿真设计课程设计一、课程目标知识目标:1. 学生能理解电子琴的基本原理,掌握仿真设计的基本概念。
2. 学生能描述电子琴音色、节奏及演奏效果的产生过程。
3. 学生了解电子琴仿真设计中所涉及的电子元件和电路。
技能目标:1. 学生能运用所学的电子琴仿真设计知识,独立设计简单的电子琴音色。
2. 学生能通过实践操作,熟练使用仿真软件进行电子琴设计。
3. 学生具备分析电子琴仿真设计问题,并提出解决方案的能力。
情感态度价值观目标:1. 学生对电子琴仿真设计产生兴趣,培养对音乐和电子技术的热爱。
2. 学生在团队协作中学会相互尊重、沟通与协作,培养集体荣誉感。
3. 学生通过课程学习,认识到科技发展对音乐领域的影响,增强创新意识。
课程性质:本课程为实践性较强的电子技术课程,旨在让学生通过动手实践,掌握电子琴仿真设计的基本技能。
学生特点:学生处于高中阶段,具有一定的电子技术基础,好奇心强,喜欢动手实践。
教学要求:注重理论与实践相结合,关注学生的个体差异,引导他们主动探索、积极实践,提高电子琴仿真设计能力。
在教学过程中,关注学生的情感态度价值观培养,帮助他们形成良好的学习习惯和团队合作精神。
通过具体的学习成果分解,为后续教学设计和评估提供依据。
二、教学内容1. 电子琴基本原理:电子琴的工作原理、音色生成、节奏控制及演奏效果。
- 教材章节:第1章 电子琴概述2. 电子琴仿真设计基础:仿真设计概念、仿真软件使用、基本电子元件及电路。
- 教材章节:第2章 电子琴仿真设计基础3. 电子琴音色设计:音色合成原理、音色参数调整、音色库应用。
- 教材章节:第3章 电子琴音色设计4. 电子琴演奏功能设计:演奏控制、节奏编程、音效处理。
- 教材章节:第4章 电子琴演奏功能设计5. 实践操作:使用仿真软件进行电子琴设计,包括音色设计、演奏功能设计等。
- 教材章节:第5章 实践操作教学内容安排和进度:第1周:电子琴基本原理学习第2周:电子琴仿真设计基础学习第3-4周:音色设计理论与实践第5-6周:演奏功能设计理论与实践第7-8周:实践操作,完成电子琴仿真设计作品教学内容注重科学性和系统性,结合教材章节安排,循序渐进地引导学生学习电子琴仿真设计知识。
c语言电子钢琴课程设计一、课程目标知识目标:1. 学生能理解C语言在电子钢琴程序设计中的应用,掌握基础编程语法和结构。
2. 学生能运用C语言中的函数、循环和条件语句等编写简单的电子钢琴程序。
3. 学生了解声音产生原理,掌握利用C语言模拟生成不同音调的方法。
技能目标:1. 学生能够运用所学的C语言知识,独立设计并编写出具有基本功能的电子钢琴程序。
2. 学生通过实践操作,培养解决问题的能力和逻辑思维能力。
3. 学生能够进行程序调试,优化程序性能,提高代码质量。
情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,树立编程改变生活的观念。
2. 学生通过团队合作,培养沟通协作能力和团队精神。
3. 学生在创作电子钢琴程序的过程中,体验创新乐趣,提高自信心和成就感。
课程性质:本课程为实践性较强的课程,结合C语言编程和电子钢琴知识,培养学生编程技能和实际应用能力。
学生特点:学生处于高中年级,具备一定的逻辑思维能力和编程基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:教师应注重理论与实践相结合,引导学生主动参与,激发学生兴趣,提高学生的编程能力和创新能力。
在教学过程中,关注学生的个体差异,给予个性化指导。
通过课程目标的设定,使学生在学习过程中有明确的成果导向,便于教学设计和评估。
二、教学内容1. C语言基础语法复习:变量定义、数据类型、运算符、控制结构(循环、条件语句)。
相关教材章节:第一章至第三章。
2. 函数的定义与调用:理解函数的作用,掌握函数的定义、调用和参数传递。
相关教材章节:第四章。
3. 数组与指针:了解数组的使用,认识指针的概念,学会指针操作。
相关教材章节:第五章、第六章。
4. 声音产生原理:介绍声音的基本概念,理解音频信号的产生与处理。
相关教材章节:附录部分或拓展资料。
5. 电子钢琴程序设计:利用C语言编写电子钢琴程序,实现不同音调的模拟。
教学安排:5.1 设计电子琴界面,实现键盘与音调的对应关系。
8.18.4程序设计与仿真电子琴VHDL程序包含有:顶层程序、音阶发生器程序、数控分频模块程序和自动演奏模块程序。
1.顶层程序与仿真(1)顶层VHDL程序--文件名:top.vhd--功能:顶层文件--最后修改日期:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk32MHz :in std_logic; --32MHz系统时钟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 top;architecture Behavioral of top iscomponent automusicPort ( 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 tonePort ( 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 speakerPort ( 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);beginu0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);end Behavioral;(2)仿真顶层文件仿真图如图8.18.2所示。
基于Multisim八音阶电子笨的设计与仿真兰羽;周茜【摘要】介绍了以RC串并联选频网络为主振电路的电子琴设计方法,给出了八音阶电子琴电路参数的设计方法和一组参数值。
并采用MultisimlO对RC串并联正弦波振荡电路进行了设计仿真。
结果证明,用模拟电路方法制作电子琴结构简单,而且成本低廉,符合C音调基准音标准。
%The design method of an electronic piano is introduced, which works selection frequency RC network with series and parallel collection as its oscillator circuit. It gives the design method of circuit parameters and a set of values of eight-scale electronic piano. And there is a simulation design to RC series and parallel sine wave oscillator circuit with multisim10. The resuhs show that it is simple to make electronic piano with the approaches of analogue circuits, and the cost is low, it can accord with the standard of C-tone as its datum tone.【期刊名称】《电子设计工程》【年(卷),期】2012(020)012【总页数】3页(P52-54)【关键词】电子琴;RC振荡电路;电路参数设计;Muhisim仿真【作者】兰羽;周茜【作者单位】陕西工业职业技术学院,陕西咸阳712000;陕西工业职业技术学院,陕西咸阳712000【正文语种】中文【中图分类】TN75Multisim10是加拿大图像交互技术公司推出最新版电子仿真软件,它提供了强大元件库、虚拟仪器库,设计界面简洁,适合模拟/数字电路的设计仿真。
简易电子琴的VHDL仿真与实现电子琴是一种应用广泛的乐器,而现在,电子琴的制造已经从纯硬件逐渐过渡到硬件加软件的方式。
VHDL是一种硬件描述语言,它可以方便地描述各种硬件逻辑功能,而且还可以帮助设计者实现FPGA的目标硬件。
本文主要介绍简易电子琴的VHDL仿真与实现。
一、设计思路简易电子琴的设计基本上就是将钢琴的琴键和生产声音的部件(如电子光电元件或电子开关等)结合在一起。
琴键的设计分为两个部分:按下和弹起。
按下部分是由一个简单的开关连接到FPGA引脚的输入端。
当琴键被按下时,开关闭合,产生一个低电平信号,这个信号作为FPGA的输入。
弹起部分用一个气压传感器检测琴键是否已经弹起。
生产声音的部件由一个数字-模拟转换器(Digital-to-Analog Converter,简称DAC)处理FPGA通过一个计数器输出的数字信号,将它转换成模拟信号。
这样,设计思路就非常清晰明了。
二、VHDL仿真的步骤1. 创建虚拟设计:在仿真之前,我们需要创建一个虚拟的设计,包括引脚、组件、实体、测试模块,以及其他必需的部件。
这些将精确地模拟真实世界中的电路元素。
2. 创建设计模块:VHDL仿真涉及到多个模块。
在这种情况下,我们有两个模块:数字模块和组件模块。
我们将数字模块设计为接收一个8位的计数器并输出模拟信号。
组件模块包括DAC芯片和琴键开关,这些组件分别接收输入信号,经过逻辑处理后,通过计数器和气压传感器输出压缩后的模拟信号。
3. 配置实体接口:为了确保VHDL仿真的准确性,我们必须配置模块实体接口,这里有两个实体:数值模块和组件模块。
它们需要定义数据量和接收输入端口。
4. 定义测试激励波形:这些波形定义从测试模块输入到仿真环境中的数字信号序列。
因此,我们需要定义输入数据以及时钟信号。
5. 编写测试模块:测试模块是用来检测VHDL仿真环境的激励波形。
它包括测试模块、实体、配置、激励波形和仿真模块。
三、VHDL实现的步骤1. 设计和构建硬件:在这一阶段,我们将实现FPGA硬件。
电子琴程序的设计一、设计内容与要求编写一实现电子琴的程序,并实现假设干扩展功能。
差不多功能:用8257键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能: 1.录音:记录所弹奏曲目2.放录音:任意时刻重放最新记录曲目3.在程序中可预设一曲目,按一键实现播放该曲目。
4.在播放录制曲目或预设曲目时,按8279键盘上任意键能够暂停播放,再按一次从暂停处连续播放。
5.程序运行时有友好的用户介面二、硬件电路框图1.设计原理〔1〕关于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。
给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。
关于音乐,每个音阶都有确定的频率。
各音阶标称频率值:〔2〕产生一个正弦波的数据可取32个〔小于亦可〕,不同频率的区别,可通过调剂向D/A转换器输出数据的时刻间隔,例如:发"1"频率为261。
1HZ,周期为1/261.1=3.83ms,输出数据的时刻间隔为3.83ms/32=0.12ms. 定时时刻能够由8253配合8255来实现。
按下某键后发音时刻的长短能够由发出的正弦波的个数多少来操纵。
2. 硬件电路连接三、软件设计1.主程序流程图开始显示缓存区,初始化8279初始化调用发音子程序调用键盘子程序键盘码送缓存区是否9键是否0键是否S键是否R键录音子程序放录音子程序放歌子程序返回DOS YNN N Y Y YN2. 键盘显示子程序流程图3.显示子程序流程图4.部分参考程序KEYBORD PROC NEAR ;键盘子程序MOV DX,PORT1MOV AL,0D1HOUT DX,AL ;CLEAR DISPLAYWREP: CALL DISPMOV DX,PORT1IN AL,DX ;读状态AND AL,07H ;判定是否有按键JZ WREPKEYN: MOV DX,PORT0 ;下一次的按键IN AL,DX ;读数据MOV BL,ALAND AL,07HAND BL,38HMOV CL,03SHR BL,CLCMP BL,00HJNZ LINE1ADD AL,08HJMP QUIT1LINE1: CMP BL,01HJNZ LINE2JMP QUIT1LINE2: ADD AL,10HQUIT1: RETKEYBORD ENDPDISP PROC NEAR ;显示子程序PUSH SIPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV DX,PORT1MOV AL,90HOUT DX,AL ;写地址为0000的显示缓存区命令,每次写入后地址自动加1指向下一次写入地址MOV SI,OFFSET SEC1MOV CX,0001MOV BX,OFFSET LEDDISP1: CLDLODSBMOV AH,ALXLAT ;键盘码转显示码MOV DX,PORT0OUT DX,AL ;显示LOOP DISP1POP DXPOP CXPOP SIQ:RETDISP ENDP。
简易电子琴的VHDL仿真与实现随着科技的发展,电子琴已成为一种十分普及的音乐乐器。
除了可以通过购买市面上的电子琴来使用外,我们还可以自己动手制作一台简易的电子琴。
本文将介绍使用VHDL仿真与实现一台简易电子琴的方法。
首先,我们需要了解VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。
VHDL可以描述数字电路和系统的行为、结构和时间性质,并且可以转化为硬件和软件实现。
因此,我们可以使用VHDL来描述电子琴的结构和行为,然后将其实现在FPGA上。
在电子琴的设计中,我们需要考虑最基础的功能:音符的产生和声音的输出。
因此,我们需要将电子琴拆分成两部分来考虑:输入和输出。
输入部分主要负责产生音符,音符的产生需要考虑按键的位置、按键的压力等因素。
由于VHDL主要用来描述数字电路,我们可以将输入部分简化为一组称为“开关矩阵”的二维数组。
在这个开关矩阵中,我们可以设置每个按键的位置和状态(即是否按下),并通过数字电路来判断按键状态的变化。
输出部分则负责将产生的声音输出到扬声器上。
在FPGA 中,我们可以通过PWM(Pulse-Width Modulation)技术来实现声音的输出。
PWM技术可以将模拟信号转化为数字信号,然后通过FPGA输出数字信号的高低电平来模拟模拟信号的频率和幅度,从而实现声音的输出。
接下来,我们需要考虑如何将输入和输出部分结合起来。
我们可以将输入部分和输出部分放在同一个模块中,并通过端口来连接。
在这个模块中,我们可以设置一个时钟,根据时钟的脉冲来判断按键状态是否改变,并且触发PWM来输出声音。
在设计完成后,我们需要进行VHDL仿真来验证我们的电子琴是否正确。
仿真可以模拟电路的行为和输出,以验证电路是否按照预期工作。
我们可以通过仿真来测试输入部分的工作状态,例如测试按键是否可以正确响应。
同时,我们也可以测试输出部分的工作状态,例如测试声音的频率和幅度是否符合预期。
摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。
本次设计的主要内容是用AT89S51单片机为核心控制元件,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,可构成我们想要的音乐,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。
本系统运行稳定,硬件电路简单,软件功能完善,控制系统可靠,所开发的程序通过调试运行、仿真验证,实现了设计目标,具有一定的实用和参考价值。
关键词:单片机、按键、扬声器、音阶目录1 课题描述 (1)2问题分析和任务定义 (2)3硬件电路设计 (3)4 程序设计 (4)4.1 程序流程图 (4)4.2 程序代码 (4)5电路仿真与分析 (10)5.1 仿真软件 (10)5.2仿真过程 (10)6调试、测试与结果分析 (11)6.1调试与测试 (11)6.2结果分析 (11)7总结 (12)参考文献 (13)课题描述一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们所想要的音乐了,对于单片机,可以利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。
本次设计主要应用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴,通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲。
开发环境:微机WINdows XP系统VisuAL BaSIc 6.0环境2问题分析和任务定义本次设计主要通过对AT89C51的基本认识,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。
基于单片机的电子琴设计与仿真作者:任振环专业名称:电子科学与技术指导教师:兰英讲师摘要当今世界,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。
电子琴是我们常见的电子产品,它是一种键盘乐器,是现代电子科技与音乐的结合。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
该系统是以51系列单片机为主控制器,附有矩阵键盘、LED数码管、扬声器等。
系统完成显示输入信息、播放相应音符等基本功能。
本文设计的电子琴,体积小,重量轻,使用方便,并有一定的商业价值。
关键词:STC89C52单片机矩阵键盘LED数码管扬声器AbstractIn today's world, electronic technology electronic products into almost every field of the society, a strong impetus to the development of social productivity and the improvement of social information-based degree. Electronic organ is our common electronic products, it is a keyboard instrument, is combined with modern electronic technology and music.At present, SCM is a , small volume, large capacity, several aspects of development. Microcontroller penetrated into every aspect of our lives, which is almost difficult to find traces of the field without mcu. Missile navigation equipment, aircraft control on a variety of instruments, computer network communications and data transmission, real-time control and data processing of industrial automation process, extensive use of various smart IC card, civilian luxury car security system, video recorder, camera control, full automatic washing machine, and program-controlled toys, electronic pet and so on, these all cannot do without mcu.The system is based on the 51 Series MCU based controller, a matrix keyboard, LED digital tube, speakers, etc.. To complete the system shows the input information, the basic function such as play corresponding notes. Electronic organ, this design commercial value.Keywords:STC89C52 microcontroller,matrix keyboard,digital tube LED ,speaker目录摘要 (I)Abstract (II)目录 (IV)前言 (1)1 总体方案介绍 (2)1.1 方案一 (2)1.2 方案二 (3)1.3 系统设计概述 (4)2 系统硬件介绍 (6)2.1主控模块(STC89C52) (6)2.1.1 STC89C52的主要特性 (7)2.1.2 STC89C52的中断系统 (10)2.1.3 STC89C52的系统介绍 (11)2.2显示模块 (12)2.2.1 数码管原理 (12)2.2.2 显示模块电路设计 (13)2.3 矩阵键盘模块 (14)2.4 功率放大模块(LM386) (15)2.4.1 LM386内部原理 (16)2.4.2 功率放大器使用事项 (17)3 系统软件介绍 (19)3.1 系统软件整体设计 (19)3.2 定时器产生音乐信号原理 (20)3.3 程序设计原理 (21)4 调试结果与仿真 (22)4.1 调试结果 (22)4.2 仿真结果 (22)总结 (23)致谢 (23)参考文献 (25)附件1 系统整体原理图 (26)附件2 元件清单 (27)附件3 系统PCB设计图 (28)附件4 系统源程序 (29)附件5 实物图片 (37)前言近几十年来,单片机技术迅猛发展,在工农业生产,交通运输,国防建设和航空、航天事业等领域中获得广泛的应用。
简易电子琴的VHDL 设计与实现一.设计课题与任务要求:设计制作一个简易电子琴演奏器。
原理概述:依据声乐知识,产生音乐的两个因素是音乐频率的持续时刻,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。
每两个半音的频率比为4。
另外,音名A〔乐谱中的低音6〕的频率为440HZ,音名B到C之间,E到F 之间为半音,其余为全音。
由此能够计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。
全然要求:1、用8×8点阵显示“1234567”七个音符构成的电子琴键盘。
其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如以如下面图所示。
图1点阵显示的电子琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。
当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂喊器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂喊器停止声音的输出。
以如下面图所示为按下BTN3按键时点阵的显示情况。
图2按键按下后的点阵显示3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。
4、通过按键BTN0进行复位,操纵点阵显示图1的初始状态。
提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折的功能。
2、增加手动演奏的音符存储、播放功能。
二.系统设计〔包括设计思路、总体框图、分块设计〕1.设计思路讲明:电子琴的设计包括七个模块:弹奏模块keyplay、自动演奏模块autoplay、查表及显示模块table、分频模块fenpin、存储模块store、七段数码管显示模块seg7和点阵的显示模块lattice。
弹奏模块keyplay依据按键动作key,和高中低模式选择mode产生指示音调的index_key。
电子琴程序设计与仿真顶层程序与仿真,音阶发生器程序与仿真,数控分频模块程序与仿真,自动演奏模块程序与仿真设计例1.顶层程序与仿真(1)顶层VHDL程序--文件名:top.vhd--功能:顶层文件--最后修改日期:2004.3.20library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk32MHz :in std_logic; --32MHz系统时钟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 top;architecture Behavioral of top iscomponent automusicPort ( 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 tonePort ( 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 speakerPort ( 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);beginu0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);end Behavioral;(2)仿真顶层文件仿真图如图8.17.2所示。
简易电子琴电路的设计仿真与实现课程设计课程设计任务书学生姓名:专业班级:指导教师:工作单位: 信息工程学院题目: 简易电子琴电路的设计仿真与实现初始条件:可选元件:集成运算放大器LM324、电阻、电位器、电容若干,直流电源,或自备元器件。
可用仪器:示波器,万用表,直流稳压源,函数发生器要求完成的主要任务:(1)设计任务根据要求,完成对简易电子琴电路的仿真设计、装配与调试,鼓励自制稳压电源。
(2)设计要求①设计一简易电子琴电路,按下不同琴键即改变 RC值,能发出C调的八个基本音阶, 采用运算放大器构成振荡电路,用集成功放电路输出。
已知八个基本音阶在C调时所对应的频率如下表所列C调 1 2 3 4 5 6 7 if 0 /H Z 264 297 330 352 396 440 495 528②选择电路方案,完成对确定方案电路的设计。
③利用Proteus或Multisim仿真设计电路原理图,确定电路元件参数、掌握电路工作原理并仿真实现系统功能。
④安装调试并按规范要求格式完成课程设计报告书。
⑤选做:利用仿真软件的PCB设计功能进行PCB设计。
时间安排:1、前半周,完成仿真设计调试;并制作实物。
2、后半周,硬件调试,撰写、提交课程设计报告,进行验收和答辩。
指导教师签名: 年月日系主任(或责任教师)签名: 年月日目录1.模电课设概述..............................................................................1)1.1设计背景..............................................................................1)1.2设计目的及意义.....................................................................11.3开发环境proteus简介 (1)2.电路原理....................................................................................32.1 RC桥式振荡电路及频率选择......................................................32.2振荡条件 (4)3.总体方案设计……………………………………………………………………53.1实验电路设计思路…………………………………………………………53.2设计电路图...........................................................................63.3实验参数选择 (6)4.仿真曲线及结果分析.....................................................................74.1仿真操作过程及曲线...............................................................74.2仿真结果分析 (14)5.实物制作及仿真、实物的差异......................................................155.1实物制作过程和调试过程......................................................155.2 仿真、实物的差异 (16)6.心得体会………………………………………………………………………(17)7.元件清单………………………………………………………………………(18)8.参考文献………………………………………………………………………(19)1模电课设概述1.1 设计背景电子琴是一种键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。
课程设计报告简易电子琴的设计与仿真1、设计原理:1.1 音阶的产生由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片来产生这计数器T0机来产生不同的频率非常方便,我们可以利用单片机的定时/ 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
,假如选择1MHZ本次设计中单片机晶振为12MHZ,那么定时器的计数周期为,那么根据不同的频率计算﹡105/相应的频率1工作方式,那T值便为T= 216--5相关的计数值如下出应该赋给定时器的计数值,列出不同音符与单片机计数T0表所示:实验环境1.2Keil uVision3proteus 7功能设计描述1.3k1—k7音调输出按音频逆向输出k7k8按一下。
在按k1—键后会在音频输出歌曲,k1键停止+k1k8先按着再主要知识点1.4Keil uVision3的使用及调试proteus 7的使用及调试定时器、中断、键盘接口数字电路、模拟电路的相关知识2、实现及编程程序框图2.1 ) 2.2电路原理图程序内容2.3 个音调的产生方法7 k2让音调逆向输出按和如何让音乐停止如何按k8+k2放出音乐汇编源程序2.4BUZZ EQU P2BUZZ1 EQU P1.7ORG 0000HLJMP MAINORG 000BHLJMP INT_T0 ORG 001BH LJMP TIME1 ORG 8000H MAIN: MOV SP,#90H MOVBUZZ,#0FFHMOV TMOD,#11H SETB ET0 SETB ET1 SETB EA CLR TR0 START:MOV R0, BUZZ CJNE R0,#0FFH,KEY1 CLR TR0 SJMP START KEY1:CJNE R0,#0FEH,KEY2 MOV 30H,#0FBH MOV 31H,#0E9H LJMP SET_TIMER KEY2:CJNE R0,#0FDH,KEY3 MOV 30H,#0FCH MOV 31H,#5CH LJMP SET_TIMER KEY3:CJNE R0,#0FBH,KEY4MOV 30H,#0FCH MOV 31H,#0C1H LJMP SET_TIMER KEY4:CJNE R0,#0F7H,KEY5 MOV 30H,#0FCH MOV 31H,#0EFH LJMP SET_TIMER KEY5:CJNE R0,#0EFH,KEY6 MOV 30H,#0FDH MOV 31H,#045H LJMP SET_TIMER KEY6:CJNE R0,#0DFH,KEY7 MOV 30H,#0FDH MOV 31H,#92H LJMP SET_TIMERKEY7:CJNE R0,#0BFH,KEY8 MOV 30H,#0FDH MOV 31H,#0D6HLJMP SET_TIMER KEY8:CJNE R0,#7FH,NOKEY LOOP1:MOV R0, BUZZ CJNE R0,#7DH,LOOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OSTART:MOV R0, BUZZ CJNE R0,#0FFH,OKEY1LJMP MAIN1LOOP:R0,#0FFH,LOOP1LJMP OSTARTSET_TIMER: SETB TR0 SJMP START NOKEY: CLR TR0 SJMP START INT_T0: MOV TH0,30H MOV TL0,31H CPL BUZZ1 RETICJNECLR TR0 SJMP OSTART OKEY1:CJNE R0,#0BFH,OKEY2 MOV 30H,#0FBH MOV 31H,#0E9H LJMPOSET_TIMEROKEY2:CJNE R0,#0DFH,OKEY3 MOV 30H,#0FCH MOV 31H,#5CH LJMP OSET_TIMER OKEY3:CJNE R0,#0EFH,OKEY4 MOV 30H,#0FCH MOV 31H,#0C1H LJMPOSET_TIMEROKEY4:CJNE R0,#0F7H,OKEY5 MOV 30H,#0FCH MOV 31H,#0EFH LJMPOSET_TIMEROKEY5:CJNE R0,#0FBH,OKEY6 MOV 30H,#0FDH MOV 31H,#045H LJMPOSET_TIMEROKEY6:CJNE R0,#0FDH,OKEY7 MOV 30H,#0FDH MOV 31H,#92H LJMP OSET_TIMER OKEY7:CJNE R0,#0FEH,OKEY8 MOV 30H,#0FDH MOV 31H,#0D6H LJMPOSET_TIMEROKEY8:CJNE R0,#07FH,ONOKEYLOOP2:MOV R0, BUZZ CJNE R0,#7DH,LOOP3LJMP MAIN1LOOP3:CJNER0,#0FFH,LOOP2LJMP START OSET_TIMER: SETB TR0 SJMP OSTART ONOKEY: CLR TR0 LJMP OSTART ;;;;; ;;;;;;;;;;;;;;;;;;;;;;MAIN1: MOV 40H,#00HNEXT: MOV R0, BUZZ MOV 41H,R0 ORL 41H ,#0FEH MOV R0,41HCJNE R0,#0FFH,STOPMOV A,40HMOV DPTR,#SONG INC A MOVC A,@A+DPTRMOVC A,@A+DPTRCJNE A,#00H,PLAY MOV TL1,A LJMP STOPMOV 20H,APLAY: MOV R1,A SETB TR1 ANL A,#0FH MOV R2,A MOV A,R1ANL A,#0F0H CJNE A,#00H,MUSIC CLR TR1 LJMP DEL MUSIC:SWAP A DEC AMOV 22H,A ADD A,22H MOV R3,AMOV DPTR,#SONG1 MOVC A,@A+DPTR MOV TH1,A MOV 21H,A MOV A,R3 DEL: LCALL DELAY INC 40H LJMP NEXTSTOP: CLR TR1 LJMP STARTTIME1:PUSH ACC PUSH PSWCPL BUZZ1 MOV TL1,20H MOV TH1,21HPOP PSWPOP ACC RETIDELAY:MOV R7,#02H DELA1:MOV R6,#125 DELA2:MOV R5,#248DJNZ R5,$DJNZ R6,DELA2 DJNZ R7,DELA1 DJNZ R2,DELAY RET SONG1:DW 64580,64684,64777,64820 DW64898,64968,65030,64260 DW64400,64524,65058,63835,64021 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DB 02H,82H DB 月亮代表我的心SONG :;;;;;;;;;;;;;;;;;;16H,32H,54H,02H,52H DB 0A6H,32H,54H,02H,52H DB64H,74H,0B6H,64H DB52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32H DB 26H,12H,94H,22H,32H DB 2CH DB 32H,52H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 96H,0A2H,96H,82H DB 3CH,54H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 16H,12H,14H,22H,32H DB2CH,02H,82H DB 16H,32H,56H,12H DB 0A6H,32H,56H,52H DB66H,72H,0B6H,62H DB 62H,52H,58H,32H,22H DB 16H,12H,14H,32H,22H DB16H,12H,14H,22H,32H DB 26H,92H,0A4H,12H,22H DB 1CH DB 00;END3、调试及测试1调试(按实际做的步奏)3.k5后显示如下图:如按下音调输出k1—k7 k1—k7音频逆向输出按一下k8。
电子行业电子琴程序的设计简介电子琴是一种可以模拟各种乐器音色的电子乐器。
在电子行业中,电子琴被广泛应用于音乐制作、教育培训和娱乐等领域。
本文将介绍电子行业电子琴程序的设计。
硬件需求为了实现电子行业电子琴程序的设计,我们需要以下硬件设备:1. 控制器:可以是计算机键盘、MIDI控制器或其他输入设备。
2. 音频接口:用于将电子琴的音频信号输出到音响设备或录音设备。
软件需求要设计一个电子琴程序,需要以下软件工具和库: 1. 开发环境:一般使用集成开发环境(IDE)如Visual Studio、Eclipse等。
2. 编程语言:可以使用C++、Java、Python等编程语言。
3. 音频处理库:如PortAudio、PyAudio等,用于录制和播放音频。
4. 图形用户界面(GUI)库:如Qt、Tkinter等,用于设计电子琴的界面。
设计思路电子琴程序的设计需要考虑以下方面:1. 音频处理电子琴需要处理音频信号,包括生成音调、调整音量等功能。
可以使用音频处理库来实现这些功能。
2. 键盘输入用户可以使用键盘或其他输入设备演奏电子琴。
通过监听键盘输入,并将输入映射到相应的音符,可以实现电子琴的演奏功能。
3. 音色输出电子琴可以模拟各种乐器的音色。
可以通过选择合适的音色样本,并进行音频合成来实现电子琴的音色输出功能。
4. 用户界面为了方便用户操作,设计一个直观友好的用户界面是很重要的。
可以使用GUI库来设计电子琴的界面,包括音符显示、控制按钮、音色选择等功能。
5. 存储和读取为了方便用户保存和读取已演奏的曲目,可以设计存储和读取功能,将曲目保存为文件,并在需要时进行读取。
实现步骤根据以上设计思路,我们可以按照以下步骤来实现电子琴程序:1.搭建开发环境:安装IDE和所需的库。
2.创建音频处理模块:使用音频处理库实现音调生成、音量调整等功能。
3.创建键盘输入模块:监听键盘输入,并将输入映射到相应的音符。
4.创建音色输出模块:选择合适的音色样本,并实现音频合成功能。
目录一.模电课设概述 (1)1.1设计背景 (1)1.2设计目的及意义 (1)二.Proteus软件简介 (2)三.简易电子琴基本原理 (3)3.1音乐产生原理 (3)3.2设计原理 (3)3.3方案设计 (8)四.Proteus 原理图绘制 (12)4.1选取元件 (12)4.2放置元件及排版 (13)4.3模拟及仿真 (14)五.Proteus 电路仿真 (15)六仿真结果分析 (19)6.1频率及放大倍数测量 (19)6.2理论比较 (19)6.3误差分析 (19)七心得体会 (20)八.参考文献 (21)九.元器件清单 (22)十.本科生课程设计成绩评定表 (24),•模电课设概述1.1设计背景电子琴是一种键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。
现在的电子琴一般使用PCM或AWM采样音源所谓采样就是录制乐器的声音,将其数字化后存入ROM里,然后按下键时CPU回放该音。
甚至有一些高级编曲键盘可以使用外置采样(比如Tyros 3的硬盘音色)。
现代电子琴并非“模仿”乐器音色。
它使用的就是真实乐器音色。
当然,现在力度触感在电子琴里是必备的。
而且现代电子琴还加上了老式电子琴的滤波器,振荡器,包络线控制来制造和编辑音色。
甚至也带上了老式电子琴的FM 合成机构。
本次课程设计主要是通过对电子琴主体部分的电路进行模仿设计,按下不同琴键改变RC值,发出C调的八个基本音阶,采用运算放大器构成振荡电路,用集成功放电路输出音调,从而达到电子琴固有的基本功能。
1.2设计目的及意义(1)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。
⑵锻炼学生自学软件的能力及分析问题、解决问题的能力。
(3) 通过课程设计,使学生在理论计算、结构设计、工程绘图、查阅设计资料、标准与规范(4) 巩固、深化和扩展学生的理论知识与初步的专业技能。
(6)为今后从事电子技术领域的工程设计打好基础基本要求。
八音电子琴设计流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 需求分析。
确定电子琴的功能和性能要求,例如音符范围、音色、音量控制等。
verilog简易电子琴课程设计一、课程目标知识目标:1. 理解Verilog硬件描述语言的基本概念和语法结构;2. 掌握利用Verilog设计简易电子琴的基本原理和方法;3. 学习并掌握数字信号处理中音调生成的基础知识;4. 了解电子琴音阶与频率的关系,能够运用Verilog进行编码实现。
技能目标:1. 能够运用Verilog编写程序代码,实现简易电子琴的基本功能;2. 能够利用仿真工具对Verilog代码进行测试和验证,确保电子琴设计的正确性;3. 能够运用已学知识解决实际电子琴设计中的问题,具备一定的创新和实际操作能力。
情感态度价值观目标:1. 培养学生对数字电路设计和硬件描述语言的兴趣,激发学习热情;2. 培养学生的团队协作能力,提高沟通与交流技巧;3. 培养学生面对问题时的耐心和毅力,形成积极向上的学习态度;4. 增强学生的创新意识,培养敢于尝试、勇于实践的精神。
课程性质:本课程为电子信息技术专业高年级选修课,旨在让学生在实际操作中掌握Verilog硬件描述语言,提高数字电路设计能力。
学生特点:学生具备一定的电子基础和编程能力,对硬件描述语言有一定了解,具有较强的学习能力和实践欲望。
教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的主观能动性,提高学生的实际操作能力。
通过本课程的学习,使学生能够独立完成简易电子琴的设计与实现。
二、教学内容1. Verilog基础知识回顾:- 数据类型与运算符;- 顺序与并行语句;- 模块与端口定义;- 基本时序控制。
2. 简易电子琴设计原理:- 电子琴音阶与频率关系;- 音色生成与合成方法;- MIDI协议简介;- 电子琴硬件架构。
3. Verilog代码编写与实现:- 音符产生模块设计;- 音调控制模块设计;- 声音合成与输出模块设计;- 整体程序框架搭建。
4. 仿真与测试:- ModelSim仿真工具使用;- 仿真测试用例编写;- 功能验证与调试;- 性能评估与优化。
8.18电子琴程序设计与仿真顶层程序与仿真,音阶发生器程序与仿真,数控分频模块程序与仿真,自动演奏模块程序与仿真设计例见随书所附光盘中文件:8.17电子琴VHDL程序与仿真。
1.顶层程序与仿真(1)顶层VHDL程序--文件名:top.vhd--功能:顶层文件--最后修改日期:2004.3.20library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk32MHz :in std_logic; --32MHz系统时钟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 top;architecture Behavioral of top iscomponent automusicPort ( 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 tonePort ( 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 speakerPort ( 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);beginu0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);end Behavioral;(2)仿真顶层文件仿真图如图8.17.2所示。
图8.17.2 顶层文件仿真图2. 音阶发生器程序与仿真(1)音阶发生器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 isPort ( 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 Behavioral of tone isbeginsearch :process(index) --此进程完成音符到音符的分频系数译码,音符的显示,高低音阶begincase index iswhen "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 Behavioral;(2)音阶发生器程序仿真音阶发生器程序仿真图如图8.17.3所示。
图8.17.3 音阶发生器仿真图3. 数控分频模块程序与仿真(1)数控分频模块VHDL程序--文件名:speaker.vhd。
--功能:实现数控分频。
--最后修改日期:20004.3.19。
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity speaker isPort ( clk1 : in std_logic; --系统时钟tone1 : in integer range 0 to 30624; --音符分频系数spks : out std_logic); --驱动扬声器的音频信号end speaker;architecture Behavioral of speaker issignal preclk,fullspks:std_logic;beginpulse1:process(clk1) --此进程对系统时钟进行4分频variable count:integer range 0 to 8;beginif 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 pulse1;genspks:process(preclk,tone1)--此进程按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率variable count11:integer range 0 to 30624;beginif preclk'event and preclk='1' thenif count11<tone1 then count11:=count11+1;fullspks<='1';else count11:=0;fullspks<='0';end if;end if;end process;delaysps:process(fullspks) --此进程对fullspks进行2分频variable count2 :std_logic:='0';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 Behavioral;(2)数控分频模块程序仿真数控分频模块程序仿真图如图8.17.4所示。
图8.17.4 数控分频模块仿真图4. 自动演奏模块程序与仿真(1)自动演奏模块VHDL程序--文件名:automusic.vhd--功能:实现自动演奏功能。
--最后修改日期:2004.3.19。
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity automusic isPort ( clk,Auto : in std_logic; --系统时钟;键盘输入/自动演奏index2 : in std_logic_vector(7 downto 0); --键盘输入信号index0 : out std_logic_vector(7 downto 0)); --音符信号输出end automusic;architecture Behavioral of automusic issignal count0:integer range 0 to 31;--changesignal clk2:std_logic;beginpulse0:process(clk,Auto) --此进程完成对系统时钟8M的分频,得到4Hz的信号clk2 variable count:integer range 0 to 8000000;beginif Auto='1' then count:=0;clk2<='0';elsif clk'event and clk='1' then count:=count+1;if count=4000000(4)then clk2<='1';elsif count=8000000 (8)then clk2<='0';count:=0;end if;end if;end process;music:process(clk2) --此进程完成自动演奏部分曲的地址累加beginif clk2'event and clk2='1' thenif count0=31 then count0<=0;else count0<=count0+1;end if;end if;end process;com1:process(count0,Auto,index2)beginif Auto='0' thencase count0 is --此case语句:存储自动演奏部分的曲when 0 => index0<="00000100"; --3when 1 => index0<="00000100"; --3when 2 => index0<="00000100"; --3when 3 => index0<="00000100"; --3when 4 => index0<="00010000"; --5when 5 => index0<="00010000"; --5when 6 => index0<="00010000"; --5when 7 => index0<="00100000"; --6when 8 => index0<="10000000"; --8when 9 => index0<="10000000"; --8when 10 =>index0<="10000000"; --8when 11=> index0<="00000100"; --3when 12=> index0<="00000010"; --2when 13=> index0<="00000010"; --2when 14=> index0<="00000001"; --1when 15=> index0<="00000001"; --1when 16=> index0<="00010000"; --5when 17=> index0<="00010000"; --5when 18=> index0<="00001000"; --4when 19=> index0<="00001000"; --4when 20=> index0<="00001000"; --4when 21=> index0<="00000100"; --3when 22=> index0<="00000010"; --2when 23=> index0<="00000010"; --2when 24=> index0<="00010000"; --5when 25=> index0<="00010000"; --5when 26=> index0<="00001000"; --4when 27=> index0<="00001000"; --4when 28=> index0<="00000100"; --3when 29=> index0<="00000100"; --3when 30=> index0<="00000010"; --2when 31=> index0<="00000010"; --2when others => null;end case;else index0<=index2; --键盘输入音符信号输出end if;end process;end Behavioral;(2)自动演奏模块程序仿真自动演奏模块仿真图如图8.17.5所示。