欢迎来到天天文库
浏览记录
ID:8855387
大小:41.01 KB
页数:4页
时间:2018-04-09
《西安工业大学北方信息工程学院中期报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、西安工业大学北方信息工程学院毕业设计(论文)中期报告题目:简单电子琴电路设计系别电子信息系专业通信工程班级B100308姓名董又银学号B10030802导师张学智杨丽娟2014年3月22日一、设计(论文)进展状况系统设计分三个模块:乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN),系统的整体组装设计原理图如下:CODE[6..0]INDEX[7..0]HIGHTONE0[10..0]TONE0[10..0]CLKCLK2AUTOINDEX0[7..0]INDEX2[7..0]CLK1SPKSTONE1[10..0]FENPINI
2、NPUTOUTPUTCLKSPEAKERVCCAUTOTONEHANDAUTOoutputNOTE[6..0]outputHIGH1KEYBOARD[7..0]由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。如AUTO模块的音符信号输出就是TONE模块的音符信号输入。另外,时钟脉冲信号在本课程设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。1.乐曲自动演奏模块乐曲自动演奏模块的作用是产生8位发生控制输入信号。当进行自动演奏时
3、,由存储在此模块的8位二进制数作为发声控制输入,从而自动演奏乐曲。该模块的VHDL源程序主要由3个工作进程组成,分别为PULSE0,MUSIC和COM1。PULSE0的作用是根据键盘输入(自动演奏)的值(0或1)来判断计数器COUNT以及脉冲CLK2的输出值。部分源程序如下:PULSE0:PROCESS(CLK,AUTO)--工作进程开始VARIABLECOUNT:INTEGERRANGE0TO8;--定义计数器变量,值从0到8IFAUTO='1'THEN--键盘输入为1COUNT:=0;CLK2<='0';--计数器值指0,时钟信号为0ELSIF(CLK'EVE
4、NTANDCLK='1')THEN--时钟输入信号为1COUNT:=COUNT+1;--计数器加1当确定了时钟信号输出的值后,在第二个PROCESS中就可以由它控制8位发声控制输入信号了。即CLK2的值为0时,COUNT0为1。最后的COM1便是由前两个PROCESS所确定的COUNT0、AUTO和键盘输入信号值INDEX2将8位的二进制数转化为音符信号的输出,达到自动演奏的目的。部分源程序如下:IFAUTO='0'THENCASECOUNT0ISWHEN0=>INDEX0<="00000100";--3WHEN4=>INDEX0<="00010000";--5该
5、模块最主要的用途就是将输入二进制数转化为发声控制输入,是产生音符的重要步骤.2.音调发生模块音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此得到每个音阶对应的频率。该模块的唯一输入信号INDEX对应就是自动模块中最后的输出INDEX0,音符显示信号CODE,高低音显示信号HIGH和音符分频系数都是根据音符输入确定的。该模块最主要的作用就是给音符输入预设频率值,因为,电子琴最终实现乐曲演奏就是输出不同频率的正弦波,此模块就是将二进制
6、发声信号转化为对应的频率。3.数控分频模块数控分频模块是对时基脉冲进行分频,得到与0、1、2、3、4、5、6、7八个音符相对应的频率。该模块主要由4个工作进程组成。首先,根据系统时钟信号的输入得到时基脉冲以及计数器的值,而时钟信号在AUTO模块中便已给出,两者之间的设置关系类似于AUTO模块中第一个工作进程的设置。第二个PROCESS是此模块的核心,即由时基脉冲值转化为音符的频率。部分源程序如下:VARIABLECOUNT11:INTEGERRANGE0TO2047;--定义频率计数器,从0到2047HzIF(PRECLK'EVENTANDPRECLK='1')T
7、HEN--时基脉冲为1时IFCOUNT118、OUNT2
8、OUNT2
此文档下载收益归作者所有