简易电子琴的设计(5)

2019-04-14 16:45

孟磊 简易电子琴的设计 第16页 共21页

END PROCESS;

MUSIC:PROCESS(CLK2) BEGIN

IF(CLK2'EVENT AND CLK2='1')THEN IF(COUNT0 =31)THEN COUNT<=0; ELSE

COUNT<=COUNT0 + 1; END IF; END IF; END PROCESS;

COM1:PROCESS(COUNT,AUTO,INDEX2) BEGIN

IF AUTO='0'THEN CASE COUNT IS

WHEN 0=>INDEX0<=\ WHEN 1=>INDEX0<=\ WHEN 2=>INDEX0<=\ WHEN 3=>INDEX0<=\ WHEN 4=>INDEX0<=\ WHEN 5=>INDEX0<=\ WHEN 6=>INDEX0<=\

WHEN 7=>INDEX0<=\ WHEN 8=>INDEX0<=\ WHEN 9=>INDEX0<=\ WHEN 10=>INDEX0<=\ WHEN 11=>INDEX0<=\ WHEN 12=>INDEX0<=\ WHEN 13=>INDEX0<=\ WHEN 14=>INDEX0<=\

16

孟磊 简易电子琴的设计 第17页 共21页

WHEN 15=>INDEX0<=\ WHEN 16=>INDEX0<=\ WHEN 17=>INDEX0<=\ WHEN 18=>INDEX0<=\ WHEN 19=>INDEX0<=\

WHEN 20=>INDEX0<=\ WHEN 21=>INDEX0<=\ WHEN 22=>INDEX0<=\ WHEN 23=>INDEX0<=\ WHEN 24=>INDEX0<=\ WHEN 25=>INDEX0<=\ WHEN 26=>INDEX0<=\ WHEN 27=>INDEX0<=\ WHEN 28=>INDEX0<=\ WHEN 29=>INDEX0<=\ WHEN 30=>INDEX0<=\ WHEN 31=>INDEX0<=\ END CASE;

ELSE INDEX0<=INDEX2; END IF; END PROCESS; END BEHAVIORAL;

2. 音调发生模块的源程序如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TONE IS

PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

17

孟磊 简易电子琴的设计 第18页 共21页

HIGH: OUT STD_LOGIC;

TONE0: OUT INTEGER RANGE 0 TO 2047); END TONE;

ARCHITECTURE ART OF TONE IS BEGIN

SEARCH:PROCESS(INDEX) BEGIN CASE INDEX IS

WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN OTHERS=>TONE<=2047;CODE<=\ END CASE; END PROCESS; END ART;

3. 数控分频模块的源程序如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FENPIN IS

PORT( CLK1: IN STD_LOGIC;

TONE1: IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC); END ENTITY FENPIN;

18

孟磊 简易电子琴的设计 第19页 共21页

ARCHITECTURE ART OF FENPIN IS SIGNAL PRECLK:STD_LOGIC; SIGNAL FULLSPKS:STD_LOGIC; BEGIN PROCESS(CLK1)

VARIABLE COUNT:INTEGER RANGE 0 TO 8; BEGIN

IF(CLK'EVENT AND CLK1='1')THEN COUTNT:=COUNT +1; IF COUNT=2 THEN PRECLK<='1'; ELSE COUNT=4 THEN PRECLK<='0';COUTN:=0; END IF; END IF; END PROCESS;

PROCESS(PRECLK,TONE1)

VARIABLE COUNT11:INTEGER RANGE 0 TO 2047; BEGIN

IF(PRECLK'EVENT AND PRECLK='1')THEN IF COUNT11

COUNT11:=COUNT11 +1;FULLSPKS<='1'; ELSE

COUNT11:=0;FULLSPKS<='0'; END IF; END IF; END PROCESS; PROCESS(FULLSPKS)

VARIABLE COUNT2:STD_LOGIC:='0'; BEGIN

19

孟磊 简易电子琴的设计 第20页 共21页

IF(FULLSPKS'EVENT AND FULLSPKS='1')THEN COUNT2:=NOT COUNT2; IF COUNT2='1'THEN SPKS<='1'; ELSE SPKS<='0'; END IF; END IF; END PROCESS; END PROCESS; END ART;

4. 顶层设计的源代码如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIANZIQIN IS

PORT(CLK32MHZ: IN STD_LOGIC; HANDTOAUTO: IN STD_LOGIC;

CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0); HIGH1: OUT STD_LOGIC; SPKOUT: OUT STD_LOGIC); END;

ARCHITECTURE ART OF DIANZIQIN IS COMPONENT AUTO PORT(CLK: IN STD_LOGIC; AUTO: IN STD_LOGIC;

INDEX2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); INDEX0:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

20

孟磊 简易电子琴的设计 第21页 共21页

END COMPONENT; COMPONENT TONE

PORT ( INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); HIGH: OUT STD_LOGIC;

TONE0:OUT INTEGER RANGE 0 TO 2047); END COMPONENT; COMPONENT FENPIN PORT(CLK1: IN STD_LOGIC;

TONE1: IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC); END COMPONET;

SIGNAL TONE2: INTEGER RANGE 0 TO 2047; SIGNAL INDX: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN U0:AUTO

PORT

MAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO); U1:TONE

PORT

MAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1); U2:FENPIN

MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT); END ART;

PORT

21


简易电子琴的设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:行政法期末考试试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: