专用集成电路课程设计简易电子琴通信工程学院011051班侯珂01105023目录1 引言 (1)1.1设计的目的 (1)1.2设计的基本内容 (2)2 EDA、VHDL简介 (2)2.1EDA技术 (2)2.2硬件描述语言——VHDL (3)2.2.1 VHDL的简介 (3)2.2.2 VHDL语言的特点 (3)2.2.3 VHDL的设计流程 (4)3 简易电子琴设计过程 (5)3.1简易电子琴的工作原理 (5)3.2简易电子琴的工作流程图 (5)3.3简易电子琴中各模块的设计 (6)3.3.1 乐曲自动演奏模块 (7)3.3.2 音调发生模块 (8)3.3.3 数控分频模块 (9)3.3.4 顶层设计 (10)4 系统仿真 (12)5 结束语 (14)收获和体会.................................................................................................. 错误!未定义书签。
参考文献 .. (15)附录 (16)1 引言我们生活在一个信息时代,各种电子产品层出不穷,作为一个计算机专业的学生,了解这些电子产品的基本组成和设计原理是十分必要的,我们学习的是计算机组成的理论知识,而课程设计正是对我们学习的理论的实践与巩固。
本设计主要介绍的是一个用超高速硬件描述语言VHDL设计的一个具有若干功能的简易电子琴,其理论基础来源于计算机组成原理的时钟分频器。
摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。
系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、整合。
本系统功能比较齐全,有一定的使用价值。
关键字电子琴、EDA、VHDL、音调发生1.1 设计的目的本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。
1.2 设计的基本内容基于MAX+PLUS平台,运用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。
本设计包含如下三个模块:乐曲自动演奏模块,音调发生模块,数控分频模块,最后把各个模块整合后,通过电路的输入输出对应关系连接起来。
2 EDA、VHDL简介2.1 EDA技术EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,有狭义与广义之分,本设计讨论的是狭义的EDA技术。
它是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直到对于特定目标芯片的适配编译、逻辑映射、逻辑下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
2.2 硬件描述语言——VHDL2.2.1 VHDL的简介VHDL是一种用来描述数字逻辑系统的“编程语言”它的全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。
1987年底,VHDL被IEEE(The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。
它源于美国政府于1980年开始启动的超高速集成电路计划,VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可是部分,即端口)和内部(或称不可视部分,既设计实体的内部功能和算法完成部分)两部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
VHDL的应用必将成为当前以及未来EDA解决方案的核心,更是整个电子逻辑系统设计的核心。
2.2.2 VHDL语言的特点(1)VHDL具有更强的行为描述能力,从而决定了他成为电子工程领域事实上通用的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL语句的行为描述能力和程序结构,决定了他具有支持大规模设计的分解和已有设计的再利用功能。
高效、高速完成符合市场需求的必须有多人甚至多个代发组共同并行工作才能实现的大规模系统设计。
VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。
(3)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对设计进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。
(4)用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表(根据不同的实现芯片)。
(5)VHDL对设计的描述具有相对独立性。
设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔的悬着范围。
(6)VHDL具有类属描述语句和子程序调用等程序,对于完成的设计,在不改变源程序的条件下,只需要改变类属参数量或者函数,就能轻易地改变设计的规模和结构。
2.2.3 VHDL的设计流程用VHDL语言设计电路的流程:在用VHDL语言来设计电路时,主要的过程是这样的:(1)创建VHDL设计工程及使用文本编辑器输入设计源文件。
(2)使用编译工具编译源文件。
VHDL的编译器有很多,ACTIVE公司,MODELSIM 公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。
(3)目标器件的选择和源程序的编译及综合。
(4)编辑测试文件及器件引脚的锁定和适配。
(5)系统的功能仿真。
对进入功能仿真,给测试向量赋值,再设置波形的观察格式。
作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。
(6)连接硬件测试系统,进行下载操作,再通过硬件系统进行测试。
(7)综合。
综合的目的是在于将设计的源文件由语言转换为实际的电路。
这一部分的最终目的是生成门电路级的网表(Netlist)。
(8)布局、布线。
这一步的目的是生成用于烧写的编程文件。
在这一步,将用到第(7)步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。
这就好像在设计PCB时的布局布线一样。
先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。
然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。
(9)后仿真。
这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。
3 简易电子琴设计过程3.1简易电子琴的工作原理音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,3.2简易电子琴的工作流程图开始TO初始化并开中断允放TO中断按键按下是否成功识别按键功能根据按键功能,装入音符T到TO中启动TO工作按键释放是否成功?停止TO工作TO中断入重装THO,TLO初值P1.0取反中断返回图3.2 简易电子琴的工作流程图3.3简易电子琴中各模块的设计为了更清楚的了解电子琴的工作过程,我们利用EDA工具(本课程设计Max+plus)对各个模块实施时序仿真(Timing Simulation),由自顶向下的设计方式,最后将三个模块进行整合,做出简易电子琴整个系统的时序仿真图。
3.3.1 乐曲自动演奏模块乐曲自动演奏模块的作用是产生8位发声控制输入信号。
当进行自动演奏时,由存储在此模块中的8位二进制作为发声控制输入,从而自动演奏乐曲。
这段模块的原理图如图3.3所示:CLKAUTO INDEX0[7.0]INDEX2[7.0]3.3 乐曲自动演奏模块原理图乐曲自动演奏模块可以由VHDL语言来实现,下面是一段主要代码:BEGINIF AUTO='0'THENCASE COUNT ISWHEN 0=>INDEX0<="00000100"; --3WHEN 1=>INDEX0<="00000100"; --3WHEN 2=>INDEX0<="00000100"; --3WHEN 3=>INDEX0<="00000100"; --3WHEN 29=>INDEX0<="00000100"; --3WHEN 30=>INDEX0<="00000010"; --2WHEN 31=>INDEX0<="00000010"; --2END CASE;ELSE INDEX0<=INDEX2;END IF;END PROCESS;3.3.2 音调发生模块音调发生模块的作用是产生音阶的分频预置值。