21按键简易电子琴可自动播放乐曲.doc_第1页
21按键简易电子琴可自动播放乐曲.doc_第2页
21按键简易电子琴可自动播放乐曲.doc_第3页
21按键简易电子琴可自动播放乐曲.doc_第4页
21按键简易电子琴可自动播放乐曲.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物理与电子工程学院课程设计技术报告课程设计报告课程名称:FPGA课程设计 (EDA技术及应用) 题 目:基于FPGA的简易电子琴设计学 院: 物理与电子工程学院 专 业: 电 子 信 息 工 程班 级: 学 号: 学生姓名:指导教师: 起讫日期: 1 设计目的任务及要求2设计要求(简易电子琴的功能)21.1 设计目的21.2 设计要求42、设计内容(实现过程)2一)、设计思路1二)、设计实现21)按键输入的判断5A.代码2B.波形仿真图62)按键去抖动6A.代码6B.波形仿真图73)音乐自动播放7A.代码7B.波形仿真图94)二选一选择器9A.代码9B.波形仿真图95)按键的输出10A.代码10B.波形仿真图116)分频预置数的产生11A.代码12B.波形仿真图147)分频器14A.代码14B.波形仿真图163、系统仿真与调试24、结束语(感想和心得等)205、主要参考文献2基于FPGA的简易电子琴设计物理与电子工程学院 电子信息工程 1 设计目的任务及要求1 简易电子琴1) 设计一个能发出7个音阶的系统并能多种模式播放歌曲(歌曲可自定,至少3首)2) 利用一基准脉冲产生1,2,3,。共7个音阶信号,进行弹奏;3) 用指示灯显示节拍;4) *能对弹奏乐曲存储并回放。1.1设计目的1、熟悉VHDL语言2、学习电子琴的设计,调试,仿真以及对仿真波形的调试1.2设计要求(简易电子琴的功能)1、设计一个能发出7个音阶的系统并能多种模式播放歌曲(歌曲可自定,至少首)2、 利用一基准脉冲产生1,2,3,。共7个音阶信号,进行弹奏;3、 用指示灯显示节拍;4、 *能对弹奏乐曲存储并回放。2、设计内容分频预置数ToneTabs二选一选择器mux21c自动播放Notetabs一)、设计思路分频器SPEAKER按 键 输 出SWI按键去抖动FEN按键输入判断ceshi按 键 输 入发出音乐spkout二)、设计实现本设计实现了能发出底、中、高三个节拍的7个音阶的系统,整个系统共有3首歌曲,这三首歌曲具有顺序播放和随机切换歌曲的播放功能。能随意弹奏每首歌曲,同时具有数码管显示每个音阶所对应的阿拉伯数字,不同的节拍我们也有相应的指示灯作为区分,在低音时无指示灯亮,中音时有一个亮,高音时有两个指示灯亮。1)按键输入的判断:a.代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ceshi ISPORT(s: IN STD_LOGIC; Y:out std_logic);END ENTITY ceshi;ARCHITECTURE FUN OF ceshi ISbeginPROCESS(s)BEGIN IF s=1 THEN Y =1; ELSE y=0; end if; end process; END ARCHITECTURE FUN;b.波形仿真图2)按键去抖动a.代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FEN ISPORT(CLK,KIN:IN STD_LOGIC; KOUT:OUT STD_LOGIC);END;ARCHITECTURE BHV OF FEN ISSIGNAL KL,KH:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,KIN,KL,KH) BEGINIF CLKEVENT AND CLK=1 THENIF(KIN=0) THEN KL=KL+1;ELSE KL=0000;END IF;IF(KIN=1) THEN KH=KH+1;ELSE KH1100) THEN KOUT0111) THEN KOUT=0;END IF;END IF;END PROCESS;END;b.波形仿真图3)产生节拍控制和音阶选择信号a.代码3)音乐自动播放LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NOTETABS ISPORT(CLK : IN STD_LOGIC;S : IN STD_LOGIC_VECTOR(1 DOWNTO 0);TONEINDEX : OUT STD_LOGIC_VECTOR( 4 DOWNTO 0);END ENTITY NOTETABS;ARCHITECTURE FUN OF NOTETABS ISCOMPONENT MUSIC PORT(address: IN STD_LOGIC_VECTOR (8 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (4 DOWNTO 0);END COMPONENT;SIGNAL COUNTER : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINPROCESS(CLK,COUNTER)BEGIN IF (COUNTER=432) THEN COUNTER=000000000; ELSIF (CLKEVENT AND CLK =1) THEN COUNTER144) THEN COUNTER=000000000;ELSIF(S=10 AND (COUNTER 288) THEN COUNTER=010010000;ELSIF (S=01 AND (COUNTER 432) THEN COUNTERCOUNTER,q=TONEINDEX,clock=CLK); END ARCHITECTURE FUN;b.波形仿真图4)二选一选择器a.代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21c IS PORT(k_code,toneindex:IN STD_LOGIC_VECTOR(4 DOWNTO 0); key:IN STD_LOGIC; index:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END;ARCHITECTURE five OF mux21c IS BEGIN PROCESS(k_code,toneindex,key) BEGIN IF key=1 THEN index=k_code; ELSE index=toneindex; END IF; END PROCESS; END five;b.波形仿真图5)按键的输出a.代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SWI ISPORT(A,B,C,D,E,F,G ,H,I,K,L,M,N,O,P,Q,R,S,T,U: IN STD_LOGIC;Y : OUT STD_LOGIC_VECTOR( 4 DOWNTO 0);END ENTITY SWI;ARCHITECTURE FUN OF SWI ISSIGNAL J : STD_LOGIC_VECTOR( 19 DOWNTO 0);BEGINJ Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y NULL;END CASE;END PROCESS P1;END ARCHITECTURE FUN;b.波形仿真图6)分频预置数的产生a.代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (4 DOWNTO 0); CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); HIGH1,HIGH2 : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0);END; ARCHITECTURE one OF ToneTaba IS BEGIN Search : PROCESS(Index) BEGIN CASE Index IS WHEN 00000 = Tone=11111111111; CODE=0000; HIGH1 =0;HIGH2 Tone=01100000101; CODE=0001; HIGH1 =0;HIGH2 Tone=01110010000; CODE=0010; HIGH1 =0;HIGH2 Tone=10000001100; CODE=0011; HIGH1 =0;HIGH2 Tone=10001000100; CODE=0100; HIGH1 =0;HIGH2 Tone=10010101101; CODE=0101; HIGH1 =0;HIGH2 Tone=10100001010; CODE=0110; HIGH1 =0;HIGH2 Tone=10101011100; CODE=0111; HIGH1 =0;HIGH2 Tone=10110000010; CODE=0001; HIGH1 =1;HIGH2 Tone=10111001000; CODE=0010; HIGH1 =1;HIGH2 Tone=11000000110; CODE=0011; HIGH1 =1;HIGH2 Tone=11000100010; CODE=0100; HIGH1 =1;HIGH2 Tone=11001010110; CODE=0101; HIGH1 =1;HIGH2 Tone=11010000100; CODE=0110; HIGH1 =1;HIGH2 Tone=11010011010; CODE=0111; HIGH1 =1;HIGH2 Tone=11011000000; CODE=0001; HIGH1 =1;HIGH2 Tone=11011100100; CODE=0010; HIGH1 =1;HIGH2 Tone=11100000011; CODE=0011; HIGH1 =1;HIGH2 Tone=11100010001; CODE=0100; HIGH1 =1;HIGH2 Tone=11100001011; CODE=0101; HIGH1 =1;HIGH2 Tone=11101000010; CODE=0110; HIGH1 =1;HIGH2 Tone=11101001100; CODE=0111; HIGH1 =1;HIGH2 NULL; END CASE; END PROCESS; END;b.波形仿真图7)分频器a.代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SPEAKER ISPORT(CLK : IN STD_LOGIC;TONE : IN STD_LOGIC_VECTOR(10 DOWNTO 0);SPKS : OUT STD_LOGIC);END ENTITY SPEAKER;ARCHITECTURE FUN OF SPEAKER ISSIGNAL PRECLK,FULLSPKS : STD_LOGIC; BEGIN PROCESS(CLK) VARIABLE COUNT4 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PRECLK11 THEN PRECLK=1;COUNT4 :=0000; ELSIF CLKEVENT AND CLK = 1 THEN COUNT4:=COUNT4+1; END IF; END PROCESS; PROCESS(PRECLK,TONE) VARIABLE COUNT11 : STD_LOGIC_VECTOR(10 DOWNTO 0); BEGIN IF PRECLKEVENT AND PRECLK =1 THEN IF COUNT11 = 16#7FF# THEN COUNT11 := TONE ;FULLSPKS=1;ELSE COUNT11 := COUNT11+1;FULLSPKS=0;END IF;END IF;END PROCESS;PROCESS(FULLSPKS) VARIABLE COUNT2 : STD_LOGIC; BEGIN IF FULLSPKSEVENT AND FULLS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论