EDA 电子琴课程设计

EDA课程设计
基于VHDL文本输入法的乐曲演奏电路的设计
    本课程设计主要采用EDA技术设计一个简易的八音符电子琴,它可通过按键输入来控制音响从而演奏出已存入的乐曲。在课程设计中,系统开发平台为Windows XP,程序设计采用VHDL语言,程序运行平台为MAX+plusⅡ。然后编写程序实现电子琴的各项功能,使不同的音阶对应不同频率的正弦波,按下不同的键时发出对应频率的声音。程序通过调试运行,时序仿真,电路功能验证,顺利地实现了设计目标。
关键词 受机 电子琴;EDAVHDL;音阶;频率
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 t
o 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; frequency

1  
  随着信息科学的进步,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快,电子技术的发展进入了划时代的阶段。其中电子技术的核心便是电子设计自动化EDAElectronic Design Automatic)技术。EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。本课程设计就是采用EDA技术描述语言VHDL编程实现简易电子琴的各项功能,是EDA技术应用于实际的一个很好的例子。
1.1 课程设计目的
  本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。
1.2 课程设计内容
1设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
2系统演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。
3)能够自动演奏多首乐曲,且乐曲可重复演奏。
1.3 课程设计原理
本课程设计目的在于灵活运用EDA技术编程实现一个简易电子琴的乐曲演奏,它要求在实验箱上构造一个电子琴电路,不同的音阶对应不同频率的正弦波。按下每个代表不同音阶的按键时,能够发出对应频率的声音。故系统可分为乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN)三部分。系统的整体组装设计原理图如图1-1所示。
                    1-1  系统的整体组装设计原理图
由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。AUTO模块的音符信号输出就是TONE模块的音符信号输入。另外,时钟脉冲信号在本课程
设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。
2 EDAVHDL简介
  EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。EDA可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。
2.1 EDA技术塑料破碎机刀片
汽车软管  EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CADCAMCATCAE的概念发展而来的。EDA技术是电子设计的发展趋势,利用EDA工具可以代替设计者完成电子系统设计中的大部分工作。EDA工具从数字系统设计的单一领域,发展到今天,应用范围已涉及模拟、微波等多个领域,可以实现各个领域电子系统设计的测试、设计方针和布局布线等。
    现在对EDA的概念或范畴用得很宽,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA主要辅助进行三个方面的设计工作:IC设计、电子电路设计和PCB设计。
2.2 VHDL语言
常用硬件描述语言有VHDLVerilogABEL语言,而VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外VHDL的结构特点是将设计实体的内部功能和算法完成部分。
相对于其他硬件语言,VHDL有许多优点。比如霹雳鞭VHDL的行为描述能力更强,而且具有丰富的仿真语句和库函数,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断;另外,由于具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量和函数,就能轻易地改变设计的规模和结构。
3 简易电子琴的设计过程
根据系统设计要求,系统该系统基于计算机中时钟分频器的原理,设计采用自顶向下的设
计方法,通过按键输入来控制音响或者自动演奏已存入的歌曲。它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。
3.1 乐曲自动演奏模块
乐曲自动演奏模块的作用是产生8位发生控制输入信号。当进行自动演奏时,由存储在此模块的8位二进制数作为发声控制输入,从而自动演奏乐曲。
该模块的VHDL源程序主要由3个工作进程组成,分别为PULSE0MUSICCOM1PULSE0的作用是根据键盘输入(自动演奏)的值(01)来判断计数器COUNT以及脉冲CLK2的输出值。部分源程序如下:
  PULSE0:PROCESS(CLK,AUTO)                  --工作进程开始
  VARIABLE COUNT:INTEGER RANGE 0 TO 8;      --定义计数器变量,值从08
      IF AUTO='1'THEN                        --键盘输入为1
        COUNT:=0;CLK2<='0';                  --计数器值指0,时钟信号为0
      ELSIF(CLK'EVENT AND CLK='1')THEN       --时钟输入信号为1
        COUNT:=COUNT+1;                      --计数器加1
当确定了时钟信号输出的值后,在第二个PROCESS中就可以由它控制8位发声控制输入信号了。即CLK2的值为0时,COUNT01。最后的COM1行为监控便是由前两个PROCESS所确定的COUNT0AUTO和键盘输入信号值INDEX28位的二进制数转化为音符信号的输出,达到自动演奏的目的。部分源程序如下:
IF AUTO='0'THEN
CASE COUNT0 IS
WHEN 0=>INDEX0<="00000100";  --3
    WHEN 4=>INDEX0<="00010000";  --5
该模块最主要的用途就是将输入二进制数转化为发声控制输入,是产生音符的重要步骤, AUTO模块的源程序符号编辑图如图3-1
3-1  AUTO模块的符号编辑图
3.2 音调发生模块
调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此得到每个音阶对应的频率。
该模块的唯一输入信号INDEX对应就是自动模块中最后的输出INDEX0,音符显示信号CODE,高低音显示信号HIGH和音符分频系数都是根据音符输入确定的。比如我们自定义INDEX8位为高电平时,它的分频系数则为773Hz,音符显示信号为1001111,即是773的二进制表示,此时高低音显示1表示高音。部分源程序如下:
CASE INDEX IS
WHEN"00000010"=>TONE0<=912;CODE<="0010010";HIGH<='1'; 
--音符第7位为1,分频数912Hz,音符显示为0010010,属高音
WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';
WHEN  OTHERS  =>TONE0<=2047;CODE<="0000001";HIGH<='0';
显然,该模块最主要的作用就是给音符输入预设频率值,因为,电子琴最终实现乐曲演奏就是输出不同频率的正弦波,此模块就是将二进制发声信号转化为对应的频率。
3.3 数控分频模块
数控分频模块是对时基脉冲进行分频,得到与012345猪肉精67八个音符相对应的频率FENPIN模块的源程序符号编辑图如图3-3
该模块主要由4个工作进程组成。首先,根据系统时钟信号的输入得到时基脉冲以及计数器的值,而时钟信号在AUTO模块中便已给出,两者之间的设置关系类似于AUTO模块中第一个工作进程的设置。第二个PROCESS是此模块的核心,即由时基脉冲值转化为音符的频率。部分源程序如下:

本文发布于:2024-09-23 06:23:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/119508.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设计   模块   演奏   系统   输入   自动   信号   技术
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议