简易电子琴的设计

更新时间:2024-06-05 10:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

长沙理工大学

《计算机组成原理》课程设计报告

简易电子琴的设计

孟磊

学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 085010502 学 号 200550080227 学生姓名 孟磊 指导教师 肖晓丽 课程成绩 完成日期 2008年1月18日

课程设计任务书

计算机与通信工程学院 计算机科学与技术专业

课程名称 学生姓名 题 目 计算机组成原理课程时间 设计 孟磊 指导老师 简易电子琴的设计 2007~2008学年第一学期19~20周 肖晓丽 主要内容:本课程设计主要是利用硬件描述语言VHDL的设计思想,采用自顶向下的方法,划分模块来设计简易电子琴中的几个模块。通过课程设计深入理解和掌握计算机的基本知识,并且掌握课堂上所学到的理论知识,达到课程设计的目的。 要求: (1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义 及现状研究分析。 (2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。。 (3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。 (4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相 应文献以及实现,给出个人分析、设计以及实现。 应当提交的文件: (1)课程设计报告。 (2)课程设计附件(主要是源程序)。

课程设计成绩评定

学 院 计算机通信工程 专 业 计算机科学与技术

班 级 计05-02 班 学 号 200550080227 学生姓名 孟磊 指导教师 肖晓丽 课程成绩 完成日期 2008年1月18日

指导教师对学生在课程设计中的评价

评分项目 课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量

优 良 中 及格 不及格 指导教师对课程设计的评定意见

综合成绩 指导教师签字 年 月 日

简易电子琴的设计

学生姓名:孟磊 指导老师:肖晓丽

摘 要 本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机

中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、整合。本系统功能比较齐全,有一定的使用价值。

关键字 电子琴;EDA;VHDL;音调发生;

目录

1 引 言 ................................................................ 1 1.1 设计的目的 .......................................................... 1 1.2 设计的基本内容 ...................................................... 1 2 EDA、VHDL简介 ......................................................... 1 2.1 EDA技术 ............................................................ 1 2.2 硬件描述语言——VHDL ................................................ 2 2.2.1 VHDL的简介 ..................................................... 2 2.2.2 VHDL语言的特点 ................................................. 2 2.2.3 VHDL的设计流程 ................................................. 3 3 简易电子琴设计过程 .................................................... 3 3.1简易电子琴的工作原理 ................................................ 3 3.2简易电子琴的工作流程图 .............................................. 5 3.3简易电子琴中各模块的设计 ............................................ 6 3.3.1 乐曲自动演奏模块 ................................................ 6 3.3.2 音调发生模块 .................................................... 7 3.3.3 数控分频模块 .................................................... 8 3.3.4 顶层设计 ........................................................ 9 4 系统仿真 .............................................................. 10 5 结束语 ............................................................... 12 致谢 .................................................................... 13 参考文献 ................................................................ 14 附录 .................................................................... 15

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

1 引 言

我们生活在一个信息时代,各种电子产品层出不穷,作为一个计算机专业的学生,了解这些电子产品的基本组成和设计原理是十分必要的,我们学习的是计算机组成的理论知识,而课程设计正是对我们学习的理论的实践与巩固。本设计主要介绍的是一个用超高速硬件描述语言VHDL设计的一个具有若干功能的简易电子琴,其理论基础来源于计算机组成原理的时钟分频器。

1.1 设计的目的

本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。

1.2 设计的基本内容

基于MAX+PLUS平台,运用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。本设计包含如下三个模块:乐曲自动演奏模块,音调发生模块,数控分频模块,最后把各个模块整合后,通过电路的输入输出对应关系连接起来。

2 EDA、VHDL简介

2.1 EDA技术

EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设

1

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

计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。

2.2 硬件描述语言——VHDL

2.2.1 VHDL的简介

VHDL是一种用来描述数字逻辑系统的“编程语言”它的全名是Very-High-Speed Integrated Circuit HardwareDescription Language。它源于美国政府于1980年开始启动的超高速集成电路计划,VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。VHDL的应用必将成为当前以及未来EDA解决方案的核心,更是整个电子逻辑系统设计的核心。

2.2.2 VHDL语言的特点

(1)VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

(2)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

(3)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

2

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

(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 2.2.3 VHDL的设计流程 用VHDL语言设计电路的流程:

在用VHDL语言来设计电路时,主要的过程是这样的:

(1)使用文本编辑器输入设计源文件。

(2)使用编译工具编译源文件。VHDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。

(3)功能仿真。对于某些人而言,仿真这一步似乎是可有可无的。但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。

(4)综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。这一部分的最终目的是生成门电路级的网表(Netlist)。

(5)布局、布线。这一步的目的是生成用于烧写的编程文件。在这一步,将用到第(4)步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。这就好像在设计PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。

(6)后仿真。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。

3 简易电子琴设计过程

3.1简易电子琴的工作原理

音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产

3

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

生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率 ,那么根据不同的频率计算出应该赋给定时器的计数值,电子琴的具体工作原理图如图3.1所示。

图3.1简易电子琴的工作原理图

4

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

3.2简易电子琴的工作流程图

开始 TO初始化并开中断允放TO中断 按键按下是否成功 识别按键功能 根据按键功能,装入音符T到TO中 启动TO工作 按键释放是否成功? 停止TO工作

TO中断入重装THO,TLO初值 P1.0取反 中断返回

5

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

图3.2 简易电子琴的工作流程图

3.3简易电子琴中各模块的设计

为了更清楚的了解电子琴的工作过程,我们利用EDA工具(本课程设计Max+plus)对各个模块实施时序仿真(Timing Simulation),由自顶向下的设计方式,最后将三个模块进行整合,做出简易电子琴整个系统的时序仿真图。

3.3.1 乐曲自动演奏模块

乐曲自动演奏模块的作用是产生8位发声控制输入信号。当进行自动演奏时,由存储在此模块中的8位二进制作为发声控制输入,从而自动演奏乐曲。这段模块的原理图如图3.3所示:

CLK AUTO INDEX0[7.0] INDEX2[7.0] 3.3 乐曲自动演奏模块原理图

乐曲自动演奏模块可以由VHDL语言来实现,下面是一段主要代码:

BEGIN

IF AUTO='0'THEN CASE COUNT IS

WHEN 0=>INDEX0<=\ WHEN 1=>INDEX0<=\ WHEN 2=>INDEX0<=\ WHEN 3=>INDEX0<=\ . . .

WHEN 29=>INDEX0<=\ WHEN 30=>INDEX0<=\ WHEN 31=>INDEX0<=\

6

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

END CASE;

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

3.3.2 音调发生模块

音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。 图3.5是音调发生模块的原理图:

TONE[10.0] INDEX[7.0] HIGH CODE[6.0]

图 3.5 音调发生模块原理图

音调发生模块可以由VHDL语言来实现,下面是一段主要代码:

BEGIN CASE INDEX IS

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

7

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

END PROCESS;

3.3.3 数控分频模块

在对计算机组成原理的学习中,我们知道数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不同的分频比,输出不同频率的时钟,以改变输出信号的频率。本设计中数控分频模块是利用并行预置数的减法计数器对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。 数控分频模块原理图如图3.7所示:

CLK1 SPKS TONE1[10.0]

图3.7 数控分频模块原理图 其主要VHDL代码如下所示:

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

8

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

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;

3.3.4 顶层设计

把以上设计的各个模块进行整合,最后我们得到了系统的整个工作原理图,如图3.10:

3.10 简易电子琴的工作原理图

9

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

完成整个系统顶层设计的主要VHDL代码如下:

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)); 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;

4 系统仿真

乐曲自动演奏模块由VHDL语言实现后,其仿真图如图3.4所示。

10

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

图3.4 乐曲自动演奏模块的仿真

音调发生模块由VHDL实现后,其仿真图如图3.6所示。

图3.6 音调发生模块仿真图

数控分频模块由VHDL程序实现后,其仿真图如图3.8所示。

图3.8 数控分频模块仿真图

最后进一步利用VHDL完成对整个系统的顶层设计,其仿真图如3.9所示:

11

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

图3.9 简易电子琴整个系统的仿真图

5 结束语

通过两个多周的紧张工作,终于完成了简易电子琴的设计,这个课程设计使我受益匪浅,他使我了解了硬件设计的整个流程,并且加深了我对计算机组成原理这门的课内容的理解,通过这个课程设计,不仅使我了解了组成原理的脊髓,而且使我对VHDL语言从陌生到初步理解,扩充的我的知识面。

这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用。此课程设计也使我了解了VHDL设计的方便灵活性,这是我们跨入计算机硬件行业很好的一次锻炼。

在课程设计的整个过程中,得到了肖晓丽老师的大力支持,在此感谢肖老师的精心指点。

12

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

致谢

此课程设计从构思到最后完成的这两个周内,周围的很多同学和朋友给予了我善意的帮助,还有肖晓丽老师对我的不厌其烦的指导,使我对此类课程设计的设计流程以及脊髓有了很深的了解,通过你们的帮助,我把从计算机组成原理这门课上学到的理论第一次用到了实际设计上。在此,我深深的表示感谢,没有你们,我无法完成此课程设计。

13

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

参考文献

[1] 曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,2006 [2] 张亦华,延明. 数字电路EDA入门.北京:北京邮电大学出版社,2003 [3]王爱英.计算机组成与结构.北京:清华大学出版社,2007

[4] 杨刚,龙海燕.现代电子技术——VHDL与数字系统设计.北京:电子工业出版社,2004

14

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

附录

1. 乐曲自动演奏模块的源程序如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY AUTO IS

PORT ( CLK: INSTD_LOGIC;--系统时钟控制信号 AUTO: INSTD_LOGIC; CLK2: BUFFER STD_LOGIC;

INDEX2: INSTD_LOGIC)VECTOR( 7 DOWNTO 0 ); INDEX0: OUTSTD_LOGIC_VECTOR( 7 DOWNTO 0 )); END AUTO;

ARCHITECTURE BEHAVIORAL OF AUTO IS SIGNAL COUTTO:INTEGER RANGE 0 TO 31; BEGIN

PULSEO:PROCESS(CLK,AUTO)

VARIABLE COUNT:INTEGER RANGE 0 T0 8; BEGIN

IF AUTO = '1' THEN COUNT: = 0;CLK2 <='0';

ESLE(CLK'EVENT AND CLD = '1')THEN COUTN:=COUTN+1; IF COUTN = 4 THEN CLK2<='1';

ELSIF COUNT =8 THEN CLK2<='0';COUNT:=0; END IF; END IF;

15

孟磊 简易电子琴的设计 第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

孟磊 简易电子琴的设计 第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

本文来源:https://www.bwwdw.com/article/wvi6.html

Top