北邮数字逻辑课程设计_简易电子琴

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易电子琴实验报告

综合设计:

程序编写:

实验报告撰写:北京邮电大学计算机学院某人

一.实验目的

1.掌握较复杂逻辑的设计和调试。

2.掌握用VHDL语言设计数字逻辑电路。

3.掌握ispLEVER软件的使用方法。

4.掌握ISP器件的使用。

5.用途: 有电子琴的基本功能,可弹奏出简单的乐曲。

二.实验器材

1.在系统可编程逻辑器件1032E

2.示波器

3.逻辑测试笔

4.TEC-5实验系统

三.实验容

设计一个简易电子琴,有两种模式,既可以音阶弹奏,也可以自动播放乐曲。要求音阶弹奏的时候,可以弹奏高音低音一共14个不同音符,自动播放乐曲的时候,要求可以按一定节奏自动播放一首预存在系统中的乐曲。

四.实验设计原理

从试验系统外部接入一个时钟信号,对时钟信号进行分频,可以得到不同分频的脉冲信号。当这个分频值设定为一定的数值时,就可以使试验系统的喇叭发出不同的音符,从而完成音阶演奏。自动演奏时,除了对外部时钟进行分频得到不同的音符外,还需要通过时钟信号对节拍进行控制,设置该音乐最短的音符为基本单位,一步一步往后执行,根据某个音符的节拍数来确定执行时间,从而可以按照节奏将一段音乐自动演奏出来。

五.设计方案

1.一共有14个琴键,表示中音的1-7到低音的1-7,按照电子琴的排列布局来

安排琴键位置。

2.根据不同音符的频率,用多模计数器对时钟信号进行分频,得到特定的脉冲信号,为了使信号稳定,需要对其进行翻转得到2分频信号再输出。

3.综合原理图

4.外部输入50kHz的时钟信号,根据下表用多模计数器对时钟信号进行分频,得到分频系数。

六.程序实现

*********************************实体部分************************************* library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity Orgen is

port

(

moderm:in std_logic;--模式选择,0为音阶自演奏模式,1为自动播放模式

clk:in std_logic;--时钟信号

Index:in std_logic_vector(13 downto 0);--琴键选择信号,1表示选择摸个琴

键,共有14个琴键,可以选择14

个音,分别是低音1-7和中音1-7 Code:out std_logic_vector(6 downto 0);--七段发光二极管编码,用于显示弹

奏的音符

high:out std_logic;--如果是中音,小灯亮,反之不亮

tone0:inout integer range 0 to 2047;--分频系数

result:inout std_logic--输出音频信号

);

end Orgen;

*******************************结构体部分************************************

architecture Orgen_Player of Orgen is--程序使用的是50kHz的时钟信号

begin

Search:process(Index,clk,moderm)--Search进程,根据琴键选择信号得到不同的分频系数

variable step:integer range 0 to 2000;

variable count2:integer range 0 to 2000;

begin

***************************音阶演奏模式部分********************************** if Moderm='0' then--手动音阶演奏模式

case Index is

when "00000000000001"=> tone0<=96;Code<="0000110";high<='0';--1 when "00000000000010"=> tone0<=85;Code<="1011011";high<='0';--2 when "00000000000100"=> tone0<=76;Code<="1001111";high<='0';--3 when "00000000001000"=> tone0<=72;Code<="1100110";high<='0';--4 when "00000000010000"=> tone0<=64;Code<="1101101";high<='0';--5 when "00000000100000"=> tone0<=57;Code<="1111101";high<='0';--6 when "00000001000000"=> tone0<=51;Code<="0000111";high<='0';--7 when "00000010000000"=> tone0<=48;Code<="0000110";high<='1';--1 when "00000100000000"=> tone0<=43;Code<="1011011";high<='1';--2 when "00001000000000"=> tone0<=38;Code<="1001111";high<='1';--3 when "00010000000000"=> tone0<=36;Code<="1100110";high<='1';--4 when "00100000000000"=> tone0<=32;Code<="1101101";high<='1';--5 when "01000000000000"=> tone0<=28;Code<="1111101";high<='1';--6 when "10000000000000"=> tone0<=25;Code<="0000111";high<='1';--7 when others=> tone0<=0;Code<="0000000";high<='0';--根据不同的琴

键信号,分配

了不同的分

频系数,为不

同音名的发

光二极管编

码,同时调整

相关文档
最新文档