教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

电子琴课程设计

来源:网络收集 时间:2026-08-23
导读: 电子信息专业暑假课程设计,电子琴 EDA课程设计 设计题目: 专 业: 电子信息工程 班 级:姓 名:学 号: 2014 年 6 月 20 日 电子信息专业暑假课程设计,电子琴 基于VHDL原理图及文本输入法 的简单电子琴电路的设计 一.课程设计 1.1 课程设计目的 本课程设计

电子信息专业暑假课程设计,电子琴

EDA课程设计

设计题目:

专 业: 电子信息工程

班 级:姓 名:学 号:

2014 年 6 月 20 日

电子信息专业暑假课程设计,电子琴

基于VHDL原理图及文本输入法

的简单电子琴电路的设计

一.课程设计

1.1 课程设计目的

本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。

1.2 课程设计内容

(1)设计一个简易的二十四音符电子琴,它可通过按键输入来控制音响。

(2)系统演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。

(3)能够自动演奏乐曲,且乐曲可重复演奏。

1.3 课程设计原理

本课程设计目的在于灵活运用EDA技术编程实现一个简易电子琴的乐曲演奏,它要求在实验箱上构造一个电子琴电路,不同的音阶对应不同频率的正弦波。按下每个代表不同音阶的按键时,能够发出对应频率的声音。故系统可分为乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN)三部分。

每一个模块由一个或者多个PROCESS组成,最后形成一个完整的程序。上一个模块的输出传送到下一个模块作为输入,并行结构形成一个完整的系统。另外,时钟脉冲信号在本课程设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。

1.4 设计框图

电子信息专业暑假课程设计,电子琴

二. 简易电子琴的设计过程

根据系统设计要求,系统该系统基于计算机中时钟分频器的原理,设计采用自顶向下的设计方法,通过按键输入来控制音响或者自动演奏已存入的歌曲。它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。

2.1 乐曲自动演奏模块

乐曲自动演奏模块的作用是产生8位发生控制输入信号以及选择高低中三个八度的音。当进行自动演奏时,由存储在此模块的三个拨码开关的数据选择高低中音和8位二进制数作为发声控制输入,从而自动演奏乐曲。

该模块的VHDL源程序主要由3个工作进程组成,分别为FP,JISHU和COM1。PULSE0的作用是根据键盘输入(自动演奏)的值(0或1)来判断计数器COUNT以及脉冲CLK2的输出值。部分源程序如下:

FP:process(clk,auto)

begin

if(auto='1') then --键盘输入为1

count<="0000000000000000000000000"; --计数器值指0,时钟信号为0 elsif(clk'event and clk='1') then --时钟信号到来

count<=count+1; --计数器+1

if(count="111111111111111111111111") then

clk2<='1'; --计数次数到 分频 分为1s左右时钟

count<="0000000000000000000000000";

else

clk2<='0';

end if;

end if;

end process; --结束分频

当确定了时钟信号输出的值后,在第二个PROCESS用于计数中,可以由它控制8位发声控制输入信号,对所要进行演奏的音符进行顺序发声。

JISHU:process(clk2) --开始进程

begin

if(clk2'event and clk2='1') then --1S的分频信号到来

if(count0="100100") then

count0<="000000"; --计数到达最后一个音符,从头开始

电子信息专业暑假课程设计,电子琴

else

count0<=count0+1;

end if;

end if;

end process; --每一个信号进行一次计数和输出 --结束

最后的MUSIC便是由前两个PROCESS所确定的count0、auto和键盘输入信号值index0将8位的二进制数转化为音符信号的输出,同时使用一排LED灯进行演示 有音符过来就循环移动,达到自动演奏的目的。部分源程序如下:

MUSIC:process(count0,auto,index0)

begin

if(auto='0') then

case count0 is

when"000000"=>index0<="00000001";LCD<="00000001"; --1 音符1的编码 when"000001"=>index0<="00000001";LCD<="00000001"; --1

when"000010"=>index0<="00010000";LCD<="00000100"; --5

when"000011"=>index0<="00010000";LCD<="00001000"; --5

--------------

end case;

else

index0<=index;

end if;

end process; --如果auto为1 这是选择手动演奏,跳过自动演奏模块

该模块最主要的用途就是将输入二进制数转化为发声控制输入和led管示意是否正常工作,是产生音符的重要步骤

2.2音调发生模块:

首先把前一个模块的设定的高中低音符选择的二进制数传过来,以及index0 的数据,为音符的正确发声做准备。

mid2<=mid;

low2<=low;

hig2<=hig; --选择高低中音符的数的传输

index1<=index0; --音符编码的传输

yd<=hig2&mid2&low2; --高中低三个数进行合并判断

SH:process(index1,yd)

begin

if(yd="001") then --选择为低音部

case index1 is

when "00000001"=>tone0<="0000010111001";code<="11111001";--音符1 when "00000010"=>tone0<="0010000100010";code<="10100100";

when "00000100"=>tone0<="0011100101100";code<="10110000";

when "00001000"=>tone0<="0100010010001";code<="10011001";

when "00010000"=>tone0<="0101100011111";code<="10010010";

电子信息专业暑假课程设计,电子琴

when "00100000"=>tone0<="0110101100111";code<="10000010";

when "01000000"=>tone0<="0111101101110";code<="11111000";

when "10000000"=>tone0<="1000001011100";code<="10000000";

when others=>tone0<="1111111111111";code<="00000000";--选择音符的不同的频率,为下一步的发声做准备,以及在数码管上显示出当前选择的音符。

elsif(yd="010") then --选择为中音部

case index1 is

when "00000001"=>to …… 此处隐藏:10119字,全部文档内容请下载后查看。喜欢就下载吧 ……

电子琴课程设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1415035.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)