欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    VHDL简易电子琴设计.doc

    • 资源ID:23961363       资源大小:304.50KB        全文页数:43页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VHDL简易电子琴设计.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateVHDL简易电子琴设计VHDL简易电子琴设计简易电子琴的设计摘 要 随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是简易电子琴的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,MAX + PLUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。通过老师的指导和自己的学习完成了预想的功能。1 引言1.1 课程设计的目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。1.2 课程设计的内容(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。2 开发工具简介2.1 EDA技术EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。2.2硬件描述语言VHDLVHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于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.3 VHDL的设计流程: (1) 设计输入根据电路设计所提出的要求,将程序输入到VHDL编辑器中去编辑。 (2) 功能级模拟用VHDL,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。 (3) 逻辑综合与优化 将通过功能模拟的程序放到VHDL编译器中,进行逻辑综合与优化。 (4) 门级模拟对电路用VHDL。仿真器仿真。可对门级电路的延时、定时状态、驱动能力等进行仿真。如不符合要求,可重复步骤(3),再门级模拟,直到符合要求止。 (5) 版图生成 用相应的软件处理后,就可以拿去制版。3 设计过程3.1设计规划 根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图3-1所示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。图3-1 系统的整体组装设计原理图3.2 各模块的原理及其程序(1)乐曲自动演奏模块乐曲自动演奏模块(AUTO.VHD)的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。VHDL源程序(AUTO.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY AUTO ISPORT ( CLK : IN STD_LOGIC; AUTO : IN STD_LOGIC;CLK2 : BUFFER STD_LOGIC;INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AUTO;ARCHITECTURE BEHAVIORAL OF AUTO ISSIGNAL COUNT0: INTEGER RANGE 0 TO 31;BEGIN PULSE0 :PROCESS(CLK,AUTO)VARIABLE COUNT :INTEGER RANGE 0 TO 8;BEGINIF AUTO ='1' THEN COUNT := 0;CLK2<='0'ELSIF(CLK'EVENT AND CLK ='1')THENCOUNT :=COUNT +1;IF COUNT =4 THEN CLK2 <='1'ELSIF COUNT =8 THEN CLK2<='0' COUNT:=0;END IF ;END IF ;END PROCESS;MUSIC:PROCESS(CLK2)BEGIN IF (CLK2'EVENT AND CLK2='1')THENIF (COUNT0=31)THEN COUNT0<=0;ELSECOUNT0<=COUNT0+1;END IF ;END IF ;END PROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGIN IF AUTO ='0' THEN CASE COUNT0 ISWHEN 0=>INDEX0<="00000100" -3WHEN 1=>INDEX0<="00000100" -3WHEN 2=>INDEX0<="00000100" -3WHEN 3=>INDEX0<="00000100" -3WHEN 4=>INDEX0<="00010000" -5WHEN 5=>INDEX0<="00010000" -5WHEN 6=>INDEX0<="00010000" -5WHEN 7=>INDEX0<="00100000" -6WHEN 8=>INDEX0<="10000000" -8WHEN 9=>INDEX0<="10000000" -8WHEN 10=>INDEX0<="10000000" -8WHEN 11=>INDEX0<="00000100" -3WHEN 12=>INDEX0<="00000010" -2WHEN 13=>INDEX0<="00000010" -2WHEN 14=>INDEX0<="00000001" -1WHEN 15=>INDEX0<="00000001" -1WHEN 16=>INDEX0<="00010000" -5WHEN 17=>INDEX0<="00010000" -5WHEN 18=>INDEX0<="00001000" -4WHEN 19=>INDEX0<="00001000" -4WHEN 20=>INDEX0<="00001000" -4WHEN 21=>INDEX0<="00000100" -3WHEN 22=>INDEX0<="00000010" -2WHEN 23=>INDEX0<="00000010" -2WHEN 24=>INDEX0<="00010000" -5WHEN 25=>INDEX0<="00010000" -5WHEN 26=>INDEX0<="00001000" -4WHEN 27=>INDEX0<="00001000" -4WHEN 28=>INDEX0<="00000100" -3WHEN 29=>INDEX0<="00000100" -3WHEN 30=>INDEX0<="00000010" -2WHEN 31=>INDEX0<="00000010" -2 WHEN OTHERS =>NULL;END CASE;ELSE INDEX0<=INDEX2;END IF;END PROCESS;END BEHAVIORAL;(2) 音调发生模块音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。VHDL源程序(TONE.VHD)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); HIGH: OUT STD_LOGIC; TONE0: OUT INTEGER RANGE 0 TO 2047);END TONE;ARCHITECTURE ART OF TONE IS BEGIN SEARCH : PROCESS(INDEX)BEGINCASE INDEX IS 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'WHEN OTHERS =>TONE0<=2047;CODE<="0000001"HIGH<='0' END CASE; END PROCESS;END ART;(3) 数控分频模块数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。VHDL源程序(FENPIN.VHD)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;ARCHITECTURE ART OF FENPIN ISSIGNAL PRECLK:STD_LOGIC;SIGNAL FULLSPKS:STD_LOGIC;BEGINPROCESS(CLK1) VARIABLE COUNT:INTEGER RANGE 0 TO 8;BEGIN IF (CLK1'EVENT AND CLK1='1')THENCOUNT:=COUNT +1;IF COUNT=2 THENPRECLK<='1'ELSIF COUNT =4 THEN PRECLK<='0'COUNT:=0;END IF ;END IF ;END PROCESS;PROCESS(PRECLK,TONE1)VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;BEGIN IF (PRECLK'EVENT AND PRECLK='1')THENIF COUNT11<TONE1 THEN COUNT11:=COUNT11+1;FULLSPKS<='1'ELSECOUNT11:=0;FULLSPKS<='0'END IF ;END IF ;END PROCESS;PROCESS(FULLSPKS)VARIABLE COUNT2 :STD_LOGIC:='0'BEGIN IF (FULLSPKS'EVENT AND FULLSPKS='1')THEN COUNT2:=NOT COUNT2;IF COUNT2='1'THENSPKS<='1'ELSE SPKS<='0'END IF ;END IF;END PROCESS;END ART;(4) 顶层设计VHDL源程序(DIANZIQIN.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DIANZIQIN ISPORT(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 ISCOMPONENT AUTOPORT(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 TONEPORT(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 FENPINPORT(CLK1: IN STD_LOGIC; TONE1:IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC);END COMPONENT;SIGNAL TONE2:INTEGER RANGE 0 TO 2047;SIGNAL INDX:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINU0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);U2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT);END ART;4 波形仿真(1)乐曲自动演奏模块的仿真(如图4-1所示)图4-1乐曲自动演奏模块的仿真图(2)音调发生模块的仿真(如图4-2)图4-2 音调发生模块的仿真图(3)数控分频模块的仿真(如图4-3)图4-3数控分频模块仿真图(4)简易电子琴整个系统的仿真(如图4-4)图4-4简易电子琴整个系统的仿真图5 结束语经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会:1) 这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。知识的接收速度在很大的程度上决定了动手的时间。2) VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。3) VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。4)通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。希望其他人在看再做类似设计时有所借鉴。通过几天的课程设计,我对数据库软件EDA技术、VHDL、等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。 在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在我此课程设计遇到问题时给我的帮助使我能够顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们。参考文献VHDL与数字电路设计.卢毅, 赖杰. 科学出版社VHDL语言100例详解北京理工大学ASIC研究所.北京理工大学ASIC研究所. 清华大学出版社VHDL 程序设计(第二版). 曾繁泰等. 清华大学出版社VHDL入门与应用陈雪松, 滕立中 .人民邮电出版社 VHDL简明教程.王小军 .清华大学出版社-

    注意事项

    本文(VHDL简易电子琴设计.doc)为本站会员(豆****)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开