简易电子琴专用集成电路设计.doc

上传人:星星 文档编号:1050687 上传时间:2024-04-01 格式:DOC 页数:22 大小:290.62KB
下载 相关 举报
简易电子琴专用集成电路设计.doc_第1页
第1页 / 共22页
简易电子琴专用集成电路设计.doc_第2页
第2页 / 共22页
简易电子琴专用集成电路设计.doc_第3页
第3页 / 共22页
简易电子琴专用集成电路设计.doc_第4页
第4页 / 共22页
简易电子琴专用集成电路设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、 专用集成电路课程设计 简易电子琴 通信工程学院 011051班 侯 珂 01105023目 录1 引 言11.1 设计的目的11.2 设计的基本内容12 EDA、VHDL简介12.1 EDA技术12.2 硬件描述语言VHDL22.2.1 VHDL的简介22.2.2 VHDL语言的特点22.2.3 VHDL的设计流程33 简易电子琴设计过程33.1简易电子琴的工作原理33.2简易电子琴的工作流程图53.3简易电子琴中各模块的设计63.3.1 乐曲自动演奏模块63.3.2 音调发生模块73.3.3 数控分频模块83.3.4 顶层设计94 系统仿真105 结束语12收获和体会13参考文献14附录1

2、5 1 引 言我们生活在一个信息时代,各种电子产品层出不穷,作为一个计算机专业的学生,了解这些电子产品的基本组成和设计原理是十分必要的,我们学习的是计算机组成的理论知识,而课程设计正是对我们学习的理论的实践与巩固。本设计主要介绍的是一个用超高速硬件描述语言VHDL设计的一个具有若干功能的简易电子琴,其理论基础来源于计算机组成原理的时钟分频器。摘 要 本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言VHDL按模

3、块化方式进行设计,然后进行编程、时序仿真、整合。本系统功能比较齐全,有一定的使用价值。关键字 电子琴、EDA、VHDL、音调发生1.1 设计的目的本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。1.2 设计的基本内容基于MAX+PLUS平台,运

4、用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。本设计包含如下三个模块:乐曲自动演奏模块,音调发生模块,数控分频模块,最后把各个模块整合后,通过电路的输入输出对应关系连接起来。2 EDA、VHDL简介2.1 EDA技术 EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,有狭义与广义之分,本设计讨论的是狭义的EDA技术。它是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、

5、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直到对于特定目标芯片的适配编译、逻辑映射、逻辑下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,

6、都可能涉及到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主要用于

7、描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可是部分,即端口)和内部(或称不可视部分,既设计实体的内部功能和算法完成部分)两部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。VHDL的应用必将成为当前以及未来EDA解决方案的核心,更是整个电子逻辑系

8、统设计的核心。2.2.2 VHDL语言的特点(1)VHDL具有更强的行为描述能力,从而决定了他成为电子工程领域事实上通用的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL语句的行为描述能力和程序结构,决定了他具有支持大规模设计的分解和已有设计的再利用功能。高效、高速完成符合市场需求的必须有多人甚至多个代发组共同并行工作才能实现的大规模系统设计。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。(3)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性

9、,随时可对设计进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。(4)用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表(根据不同的实现芯片)。(5)VHDL对设计的描述具有相对独立性。设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔的悬着范围。(6)VHDL具有类属描述语句和子程序调用等程序,对于完成的设计,在不改变源程序的条件下,只需要改变类属参数量或者函数,就能轻易地改变设计的规模和结

10、构。2.2.3 VHDL的设计流程用VHDL语言设计电路的流程:在用VHDL语言来设计电路时,主要的过程是这样的:(1)创建VHDL设计工程及使用文本编辑器输入设计源文件。(2)使用编译工具编译源文件。VHDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。(3)目标器件的选择和源程序的编译及综合。(4)编辑测试文件及器件引脚的锁定和适配。(5)系统的功能仿真。对进入功能仿真,给测试向量赋值,再设置波形的观察格式。作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。 (6)连接硬件测

11、试系统,进行下载操作,再通过硬件系统进行测试。(7)综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。这一部分的最终目的是生成门电路级的网表(Netlist)。(8)布局、布线。这一步的目的是生成用于烧写的编程文件。在这一步,将用到第(7)步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。这就好像在设计PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。(9)后仿真。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。3 简易电子琴设计过程3

12、.1简易电子琴的工作原理音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了, 3.2简易电子琴的工作流程图开始按键按下是否成功TO初始化并开中断允放TO中断识别按键功能根据按键功能,装入音符T到TO中启动TO工作按键释放是否成功?停止TO工作 TO中断入口重装THO,TLO初值P1.0取反中断返回图3.2 简易电子琴的工作流程图3.3简易电子琴中各模块的设计为了更清楚的了解电子琴的工作过程,我们利用EDA工具(本课程设计Max+plus)对各个模块实施时序仿真(Timing Simulation)

13、,由自顶向下的设计方式,最后将三个模块进行整合,做出简易电子琴整个系统的时序仿真图。3.3.1 乐曲自动演奏模块乐曲自动演奏模块的作用是产生8位发声控制输入信号。当进行自动演奏时,由存储在此模块中的8位二进制作为发声控制输入,从而自动演奏乐曲。这段模块的原理图如图3.3所示:CLKAUTO INDEX07.0INDEX27.0 3.3 乐曲自动演奏模块原理图乐曲自动演奏模块可以由VHDL语言来实现,下面是一段主要代码:BEGIN IF AUTO=0THEN CASE COUNT IS WHEN 0=INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0=00000

14、010; -2 END CASE; ELSE INDEX0TONE0=773;CODE=1001111;HIGHTONE0=912;CODE=0010010;HIGHTONE0=1036;CODE=0000110;HIGHTONE0=1116;CODE=1001100;HIGHTONE0=1197;CODE=0100100;HIGHTONE0=1290;CODE=0100000;HIGHTONE0=1372;CODE=0001111;HIGHTONE0=1410;CODE=0000000;HIGHTONE=2047;CODE=0000001;HIGH=0; END CASE; END PROC

15、ESS; 3.3.3 数控分频模块在对计算机组成原理的学习中,我们知道数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不同的分频比,输出不同频率的时钟,以改变输出信号的频率。本设计中数控分频模块是利用并行预置数的减法计数器对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。数控分频模块原理图如图3.7所示:CLK1 SPKSTONE110.0 图3.7 数控分频模块原理图其主要VHDL代码如下所示: BEGINPROCESS(CLK1) VARIABLE COUNT:INTEGER RANGE 0 TO 8;BEGIN IF(CLKEVENT AND CLK1=1

16、)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(PRECLKEVENT AND PRECLK=1)THEN IF COUNT11TONE1 THEN COUNT11:=COUNT11 +1;FULLSPKS=1; ELSE COUNT11:=0;FULLSPKS=0; EN

17、D IF; END IF; END PROCESS;3.3.4 顶层设计把以上设计的各个模块进行整合,最后我们得到了系统的整个工作原理图,如图3.10: 310 简易电子琴的工作原理图完成整个系统顶层设计的主要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 COMPONEN

18、T; 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 系统仿真乐曲自动

19、演奏模块由VHDL语言实现后,其仿真图如图3.4所示。图3.4 乐曲自动演奏模块的仿真音调发生模块由VHDL实现后,其仿真图如图3.6所示。图3.6 音调发生模块仿真图数控分频模块由VHDL程序实现后,其仿真图如图3.8所示。 图3.8 数控分频模块仿真图最后进一步利用VHDL完成对整个系统的顶层设计,其仿真图如3.9所示: 图3.9 简易电子琴整个系统的仿真图 5 结束语通过两个多周的紧张工作,终于完成了简易电子琴的设计,这个课程设计使我受益匪浅,他使我了解了硬件设计的整个流程,并且加深了我对这门的课内容的理解,通过这个课程设计,不仅使我了解了这门课的脊髓,而且使我对VHDL语言从陌生到初步

20、理解,扩充的我的知识面。这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用。此课程设计也使我了解了VHDL设计的方便灵活性,这是我们跨入计算机硬件行业很好的一次锻炼。收获和体会简易电子琴这个题目难度适中,但是我们对我们这些初学者来说还是有点难度的,毕竟平时学的都是书本上的理论知识,很少有机会把他们用到真正的设计中去,而我们自己并没有真正地去用VHDL语言写程序,没有去做实际的东西。课程设计刚开始,拿着选定的题目不知如何入手。毕竟课程设计不同于实验课,电

21、路图和程序都要自己设计。静下心来,仔细分析题目,再加上指导老师的说明与提示和同组成员的帮助,心中才有了谱。将整个系统根据不同的功能化分成模块,再分别进行设计,逐个攻破,最后再将其整合即可。用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。但是试验中也出现了一些不熟练的操作问题和一些复杂程序的不能完全理解都需要我在平时多学习,进一步的完善自己。在实习中经常会遇到

22、一些自己可能暂时无法想明白的问题,请教同学或老师是很好的做法,节省时间也会从别人上上学到更多。在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的思路,其他人的设计一定有比你出色的地方,很好的借鉴,并在大家的商讨中选择最优方案最终一定会得到最好的设计方法。电子技术课程设计是配合电子技术基础课程与实验教学的一个非常重要的教学环节。它不但能巩固我们已所学的电子技术的理论知识,而且能提高我们的电子电路的设计水平,还能加强我们综合分析问题和解决问题的能力,进一步培养我们的实验技能和动手能力,启发我们的创新意识几创新思维。通过这次课程设计,使我受益颇多。

23、了解到课程实习设计是开端,连接是关键,测试是必须。既巩固了课堂上学到的理论知识,又掌握了常用集成电路芯片的使用。在此基础上学习了数字系统设计的基本思想和方法,学会了科学地分析实际问题,通过查资料、分析资料及请教老师和同学等多种途径,独立解决问题。同时,也培养了我认真严谨的态度。完成了自己这个题目,发现我们很多时候,都是没有好好地把知识学扎实,特别是细节知识方面更是模棱两可,当实际编程时就会出现问题,所以自己要仔细看书本的内容,何况我们的课本自己都还有好多内容没有认真地看。以上就是我的收获和体会。参考文献1 曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,20062张亦华,延明.

24、 数字电路EDA入门.北京:北京邮电大学出版社,20033王爱英.计算机组成与结构.北京:清华大学出版社,20074 杨刚,龙海燕.现代电子技术VHDL与数字系统设计.北京:电子工业出版社,20045 侯伯亨,顾 新.VHDL 硬件描述语言与数字逻辑电路设计M.西安:西安电子科技大学出版社,2000附录(源代码)1. 乐曲自动演奏模块的源程序如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY AUTO IS PORT ( CLK: INSTD_LOGIC;-系统时钟控制信号 A

25、UTO: 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 CO

26、UNT: = 0;CLK2 =0; ESLE(CLKEVENT 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;END PROCESS;MUSIC:PROCESS(CLK2) BEGIN IF(CLK2EVENT AND CLK2=1)THEN IF(COUNT0 =31)THEN COUNT=0; ELSE COUNTINDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDE

27、X0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0INDEX0=00000010; -2 END CASE; ELSE INDEX0TONE0=773;CODE=1001111;HIGHTONE0=912;CODE=0010010;HIGHTONE0=1036;CODE=0000110;HIGHTONE0=1116;CODE=1001100;HIGHTONE0=1197;CODE

28、=0100100;HIGHTONE0=1290;CODE=0100000;HIGHTONE0=1372;CODE=0001111;HIGHTONE0=1410;CODE=0000000;HIGHTONE=2047;CODE=0000001;HIGH=0; 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(

29、 CLK1: IN STD_LOGIC; TONE1: IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC);END ENTITY FENPIN;ARCHITECTURE ART OF FENPIN IS SIGNAL PRECLK:STD_LOGIC; SIGNAL FULLSPKS:STD_LOGIC; BEGINPROCESS(CLK1) VARIABLE COUNT:INTEGER RANGE 0 TO 8;BEGIN IF(CLKEVENT AND CLK1=1)THEN COUTNT:=COUNT +1; IF COUNT=2 THEN

30、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(PRECLKEVENT AND PRECLK=1)THEN IF COUNT11TONE1 THEN COUNT11:=COUNT11 +1;FULLSPKS=1; ELSE COUNT11:=0;FULLSPKS=0; END IF; END IF; END PROCESS; PROCESS(FULLS

31、PKS) VARIABLE COUNT2:STD_LOGIC:=0; BEGIN IF(FULLSPKSEVENT AND FULLSPKS=1)THEN COUNT2:=NOT COUNT2; IF COUNT2=1THEN 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.AL

32、L;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); END COMPONENT; COMPONENT TONE PORT ( INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922