EDA设计模板1.docx
- 文档编号:12730573
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:31
- 大小:128.66KB
EDA设计模板1.docx
《EDA设计模板1.docx》由会员分享,可在线阅读,更多相关《EDA设计模板1.docx(31页珍藏版)》请在冰点文库上搜索。
EDA设计模板1
齐齐哈尔大学
EDA设计论文
题目简易的八音符电子琴
学院通信与电子工程学院
专业班级通信093班
学生姓名周志光
指导教师祁晓钰
2012年6月28日
摘要
随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。
作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。
本程序设计的是简易电子琴的设计。
采用EDA作为开发工具,VHDL语言为硬件描述语言,MAXPLUSII作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。
本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。
通过老师的指导和自己的学习完成了预想的功能。
关键词:
电子琴;课程设计;EDA;VHDL
Abstract
WiththetechnologybasedonCPLDEDAdevelopmentandapplicationdomainexpansionandin-depth,EDAtechnologyintheelectronicinformation,communication,automaticcontrolcomputerinthefieldsofgrowingimportance.Asastudyelectronicinformationprofessionalstudents,wemustcontinuetolearnmorenewproductsinformation,itismorerequireustohaveacomprehensiveunderstandingoftheEDA.Thisdesignprogramissimplekeyboarddesign.UsingEDAasdevelopmenttools,VHDLlanguageforhardwaredescriptionlanguage,MAXPLUSIIasaprogramoperationplatform,thedevelopmentoftheprogramthroughthepost-saleservice,thewaveformsimulationresults,andthenrealizedthedesigngoal.ThisprogramUSEShardwaredescriptionlanguageVHDL,cangreatlyreducethehardwarenumbersystemdesignofintroductorylevel,letapersonfeeliscloserelativesoftheClanguage.Throughtheteacher'sguidanceandhisstudycompletedthefunctionoftheexpected.
Keywords:
Keyboard;Coursedesign;EDA;VHDL
目录
摘要I
AbstractII
第1章绪论1
1.1课程设计的目的1
1.2课程设计内容1
1.3课程设计原理1
第2章开发工具简介3
2.1EDA技术3
2.2硬件描述语言—VHDL3
2.3VHDL的设计流程:
4
第3章设计过程5
3.1设计规划5
3.2各模块的原理及其程序5
3.2.1乐曲自动演奏模块5
3.2.2音调发生模块7
3.2.3数控分频模块8
3.2.4顶层设计10
第4章系统仿真11
4.1时序仿真11
4.1.1乐曲自动演奏模块的仿真12
4.1.2音调发生模块的仿真12
4.1.3数控分频模块的仿真12
4.1.4简易电子琴整个系统的仿真13
4.2原理图综合时序仿真13
4.3问题分析15
结论16
参考文献17
附录1:
乐曲自动演奏源程序清单18
附录2:
音调发生源程序清单20
附录3:
数控分频源程序清单21
附录4:
顶层设计源程序清单22
致谢24
第1章绪论
1.1课程设计的目的
本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。
系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。
该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。
1.2课程设计内容
(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)系统演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。
(3)能够自动演奏多首乐曲,且乐曲可重复演奏。
1.3课程设计原理
本课程设计目的在于灵活运用EDA技术编程实现一个简易电子琴的乐曲演奏,它要求在实验箱上构造一个电子琴电路,不同的音阶对应不同频率的正弦波。
按下每个代表不同音阶的按键时,能够发出对应频率的声音。
故系统可分为乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN)三部分。
系统的整体组装设计原理图如图1-1所示。
图1-1系统的整体组装设计原理图
由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。
如AUTO模块的音符信号输出就是TONE模块的音符信号输入。
另外,时钟脉冲信号在本课程设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。
第2章开发工具简介
2.1EDA技术
EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:
C、PASCAL而言的。
HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
2.2硬件描述语言—VHDL
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(4)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
2.3VHDL的设计流程:
(1)设计输入根据电路设计所提出的要求,将程序输入到VHDL编辑器中去编辑。
(2)功能级模拟用VHDL,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。
(3)逻辑综合与优化将通过功能模拟的程序放到VHDL编译器中,进行逻辑综合与优化。
(4)门级模拟对电路用VHDL。
仿真器仿真。
可对门级电路的延时、定时状态、驱动能力等进行仿真。
如不符合要求,可重复步骤(3),再门级模拟,直到符合要求止。
(5)版图生成用相应的软件处理后,就可以拿去制版。
第3章设计过程
3.1设计规划
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图3-1所示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。
3.2各模块的原理及其程序
3.2.1乐曲自动演奏模块
乐曲自动演奏模块(AUTO.VHD)的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。
VHDL源程序(AUTO.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYAUTOIS
PORT(CLK:
INSTD_LOGIC;
AUTO:
INSTD_LOGIC;
CLK2:
BUFFERSTD_LOGIC;
INDEX2:
INSTD_LOGIC_VECTOR(7DOWNTO0);
INDEX0:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDAUTO;
ARCHITECTUREBEHAVIORALOFAUTOIS
SIGNALCOUNT0:
INTEGERRANGE0TO31;
BEGIN
PULSE0:
PROCESS(CLK,AUTO)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IFAUTO='1'THEN
COUNT:
=0;CLK2<='0';
ELSIF(CLK'EVENTANDCLK='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=4THEN
CLK2<='1';
ELSIFCOUNT=8THEN
CLK2<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
MUSIC:
PROCESS(CLK2)
BEGIN
IF(CLK2'EVENTANDCLK2='1')THEN
IF(COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
ENDIF;
ENDIF;
ENDPROCESS;
COM1:
PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IFAUTO='0'THEN
CASECOUNT0IS
WHEN0=>INDEX0<="00000100";--3
WHEN1=>INDEX0<="00000100";--3
WHEN2=>INDEX0<="00000100";--3
WHEN3=>INDEX0<="00000100";--3
WHEN4=>INDEX0<="00010000";--5
WHEN5=>INDEX0<="00010000";--5
WHEN6=>INDEX0<="00010000";--5
WHEN7=>INDEX0<="00100000";--6
WHEN8=>INDEX0<="10000000";--8
WHEN9=>INDEX0<="10000000";--8
WHEN10=>INDEX0<="10000000";--8
WHEN11=>INDEX0<="00000100";--3
WHEN12=>INDEX0<="00000010";--2
WHEN13=>INDEX0<="00000010";--2
WHEN14=>INDEX0<="00000001";--1
WHEN15=>INDEX0<="00000001";--1
WHEN16=>INDEX0<="00010000";--5
WHEN17=>INDEX0<="00010000";--5
WHEN18=>INDEX0<="00001000";--4
WHEN19=>INDEX0<="00001000";--4
WHEN20=>INDEX0<="00001000";--4
WHEN21=>INDEX0<="00000100";--3
WHEN22=>INDEX0<="00000010";--2
WHEN23=>INDEX0<="00000010";--2
WHEN24=>INDEX0<="00010000";--5
WHEN25=>INDEX0<="00010000";--5
WHEN26=>INDEX0<="00001000";--4
WHEN27=>INDEX0<="00001000";--4
WHEN28=>INDEX0<="00000100";--3
WHEN29=>INDEX0<="00000100";--3
WHEN30=>INDEX0<="00000010";--2
WHEN31=>INDEX0<="00000010";--2
WHENOTHERS=>NULL;
ENDCASE;
ELSEINDEX0<=INDEX2;
ENDIF;
ENDPROCESS;
ENDBEHAVIORAL;
3.2.2音调发生模块
音调发生模块的作用是产生音阶的分频预置值。
当8位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。
VHDL源程序(TONE.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTONEIS
PORT(INDEX:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CODE:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
HIGH:
OUTSTD_LOGIC;
TONE0:
OUTINTEGERRANGE0TO2047);
ENDTONE;
ARCHITECTUREARTOFTONEIS
BEGIN
SEARCH:
PROCESS(INDEX)
BEGIN
CASEINDEXIS
WHEN"00000001"=>TONE0<=773;CODE<="1001111";HIGH<='1';
WHEN"00000010"=>TONE0<=912;CODE<="0010010";HIGH<='1';
WHEN"00000100"=>TONE0<=1036;CODE<="0000110";HIGH<='1';
WHEN"00001000"=>TONE0<=1116;CODE<="1001100";HIGH<='1';
WHEN"00010000"=>TONE0<=1197;CODE<="0100100";HIGH<='1';
WHEN"00100000"=>TONE0<=1290;CODE<="0100000";HIGH<='0';
WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';
WHEN"10000000"=>TONE0<=1410;CODE<="0000000";HIGH<='0';
WHENOTHERS=>TONE0<=2047;CODE<="0000001";HIGH<='0';
ENDCASE;
ENDPROCESS;
ENDART;
3.2.3数控分频模块
数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。
VHDL源程序(FENPIN.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFENPINIS
PORT(CLK1:
INSTD_LOGIC;
TONE1:
ININTEGERRANGE0TO2047;
SPKS:
OUTSTD_LOGIC);
ENDENTITYFENPIN;
ARCHITECTUREARTOFFENPINIS
SIGNALPRECLK:
STD_LOGIC;
SIGNALFULLSPKS:
STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLECOUNT:
INTEGERRANGE0TO8;
BEGIN
IF(CLK1'EVENTANDCLK1='1')THEN
COUNT:
=COUNT+1;
IFCOUNT=2THEN
PRECLK<='1';
ELSIFCOUNT=4THEN
PRECLK<='0';COUNT:
=0;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(PRECLK,TONE1)
VARIABLECOUNT11:
INTEGERRANGE0TO2047;
BEGIN
IF(PRECLK'EVENTANDPRECLK='1')THEN
IFCOUNT11 COUNT11: =COUNT11+1;FULLSPKS<='1'; ELSE COUNT11: =0;FULLSPKS<='0'; ENDIF; ENDIF; ENDPROCESS; PROCESS(FULLSPKS) VARIABLECOUNT2: STD_LOGIC: ='0'; BEGIN IF(FULLSPKS'EVENTANDFULLSPKS='1')THEN COUNT2: =NOTCOUNT2; IFCOUNT2='1'THEN SPKS<='1'; ELSE SPKS<='0'; ENDIF; ENDIF; ENDPROCESS; ENDART; 3.2.4顶层设计 VHDL源程序(DIANZIQIN.VHD) LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYDIANZIQINIS PORT(CLK32MHZ: INSTD_LOGIC; HANDTOAUTO: INSTD_LOGIC; CODE1: OUTSTD_LOGIC_VECTOR(6DOWNTO0);--音符显示信号 INDEX1: INSTD_LOGIC_VECTOR(7DOWNTO0);--键盘输入信号 HIGH1: OUTSTD_LOGIC;--高低音节信号 SPKOUT: OUTSTD_LOGIC);--音频信号 END; ARCHITECTUREARTOFDIANZIQINIS COMPONENTAUTO PORT(CLK: INSTD_LOGIC; AUTO: INSTD_LOGIC; INDEX2: INSTD_LOGIC_VECTOR(7DOWNTO0); INDEX0: OUTSTD_LOGIC_VECTOR(7DOWNTO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 设计 模板
![提示](https://static.bingdoc.com/images/bang_tan.gif)