EDA函数发生器--绝对不用改版_第1页
EDA函数发生器--绝对不用改版_第2页
EDA函数发生器--绝对不用改版_第3页
EDA函数发生器--绝对不用改版_第4页
EDA函数发生器--绝对不用改版_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录摘要IAbstractII1绪论12实验方案22.1设计要求22.2设计思路23函数发生器模块设计33.1分频模块33.2递增斜波产生模块33.3递减斜波产生模块33.4三角波模块33.5递增阶梯波模块33.6输出波形选择模块43.7 D/A转换模块43.7.1 D/A转换器工作原理43.7.2 TLC5620工作原理44系统联调测试分析75实验小结8参考文献9附录10武汉理工大学EDA课程设计说明书摘要应用EDA技术完成一个电子产品的设计,以 CPLD芯片中集成一个在电子生产或检测中通常用到函数波形发生器。在QUARTERS软件开发平台,输入原理图或硬件描述语言VHDL完成的D/A接口的设计文件,系统将自动地完成逻辑编译、综合、仿真、目标芯片的适配编译、下载等的工作。设计的工作是利用编程的方式来进行对系统的功能的描述,在EDA工具的帮助下,应用相应的可编程器件,实现设计的最终结果。使常用到的波形发生器微型化,设计简单化,使用简单化。关键词:VHDL ;D/A接口;函数发生器AbstractApplication of EDA technology for complete a electronic product design, with FPGA chip in electronics manufacturing or integrated a testing usually use function waveform generator. In software development platform, QUARTERS input principle chart or hardware description language VHDL completed D/A interface design documents, the system will automatically logic compilation, comprehensive, simulation, target chip adaptive compilation, download, etc. Design work is to make use of programming approach to the function of the system are described, and the EDA tools help, application of corresponding programmable devices, realization design the final result. So that commonly used to the waveform generator miniaturization, design simplicity, use simplified.Keyword:VHDL, D/A interface; Function generatorI1绪论EDA(electronic design automation,电子设计自动化)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发展和推广应用极大地推动了电子工业的发展,随着EDA技术的发展,硬件电子电路的设计几乎全部可以依靠计算机来完成。这样就大大缩短了硬件电子电路设计的周期从而使制造商可以快速开发出品种多批量小的产品,以满足市的众多需求。EDA技术的推广是当今世界的一个技术热点。EDA技术是现代电子工业中不可缺少的一项技术。传统设计应用分立元件或通用数字电路芯片,设计周期长,花费大,而且往往局部功能优化,而整体功能较差。EDA 以计算机为平台,根据硬件描述语言,如VHDL自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。其方法简单,频率稳定度高,易于程控。随着EDA技术的深入发展,基于硬件描述语言的方法将有取代传统手工设计方法的趋势。尝试用VHDL设计来产生正弦波,其频率切换非常便捷,调试、修改也非常节省时间。CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。TLC5620是串行8位D/A转换芯片,应用CPLD可以完成对TLC5620的控制。TLC5620与CPLD结合之后可以完成函数发生器的基本功能:波形输出。通过合适的VHDL语言程序可以完成递增斜波、递减斜波、三角波、递增阶梯波的输出。2实验方案2.1设计要求要求用CPLD控制AD558完成设计一个函数发生器,该函数发生器能够产生递增斜波、递减斜波、三角波以及阶梯波,并且可以通过选择开关选择相应的波形输出;系统具有复位的功能;通过按键确定输出的波形及确定是否输出波形。CPLD是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。2.2设计思路通过以上分析设计要求完成的功能,确定函数发生器可由递增斜波产生模块、递减斜波产生模块、三角波产生模块、阶梯波产生模块、波形选择模块、TLC5620转换模块组成,以及按键复位控制和时钟输入。由此可确定系统的总体原理框图为:选 择复 位波形产生时 钟波形输出选择TLC5620图2.1 设计原理框图其中时钟脉冲由试验箱内部自带的频率为20M的脉冲周期波提供,根据要求的波形周期,通过分频器可以方便的改变产生波形的周期;4个选择按钮和复位功能按钮采用实验箱的拨码开关;波形产生以及波形选择模块通过VHDL语言输入CPLD中控制波形的产生和选择;TLC5620集成在实验箱上,通过QUARTUS 上的管脚定义可以关联,并通过CPLD控制输入输出。3函数发生器模块设计根据自上而下的思路进行项目设计。明确每个模块的功能以后,开始编写各个模块的程序。3.1分频模块分频模块的VHDL程序如附录中所示,clk是实验箱时钟的输入端,通过调节x的值改变输出频率的大小,调节y值获得D/A转换器的频率0.5MHz,小于限定最大频率1MHz。3.2递增斜波产生模块递增斜波的VHDL程序如附录所示,其中count是计数信号。程序设计中每当检测到时钟上升沿时,计数器值加1,当增加到最大后清零。计数值增加呈现线性关系,因此输出的波形是递增的斜波。3.3递减斜波产生模块递减斜波的VHDL程序如附录所示,其中count是计数信号。程序设计中每当检测到时钟上升沿时,计数器值减1,当减小到0后赋值255。计数值减小呈现线性关系,因此输出的波形是递减的斜波。3.4三角波模块三角波的VHDL程序如附录所示,其中sen为信号发生辅助信号,当计数的数据不是最大值时,数值做递增运算,当增大到最大时,然后再做递减运算。因此输出的波形便呈现出三角波的形状。3.5递增阶梯波模块递增阶梯波的VHDL程序如附录所示,阶梯波设计的是数据的递增是以一定的阶梯常数向上增加,所以输出的波形呈现是成阶梯状的,而不是,完全呈现是直线增长。3.6输出波形选择模块波形选择模块通过对端口值a、b、c、d分别置1来实现4种波形的选择。3.7 D/A转换模块3.7.1 D/A转换器工作原理D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。在D/A参数中一个最重要的参数就是分辨率。它是指输入数字量发生单位数码变化时,所对应输出模拟量(电压或电流)的变化量。实验要求在此次设计中采用的是D/A转换器AD558,但试验箱上芯片为TLC5620,故在本次课程设计中采用串行D/A转换器TLC5620。3.7.2 TLC5620工作原理D/A转换器TLC5620是EDA试验箱上自带的4通道串行8位电压输出D/A转换芯片,接入电压在4.75V到5.25V之间。它与CPLD器件联合使用可以产生几种波形。其芯片管脚如图3.7所示:图3.7 TLC5620芯片管脚外形图其中,DACA、DACB、DACC、DACD为模拟信号输出,REFA、REFB、REFC、REFD为其对应的参考电压,DATA为存放数字量的串行接口,数据范围为0255。VDD、GND分别是芯片输入电压端与接地端,CLK为芯片时钟,其最大时钟频率为1MHz。LDAC、LOAD为时序控制端口。其时序控制如图3.8所示:图3.8 TLC5620时序控制图数据在每个时钟下降沿输出DATA端,数据输入过程中,LOAD始终处于高电平,LDAC处于低电平,一旦数据输入完成,LOAD置低,则转换输出,把数据从串行输入寄存器传送到所选择的DAC。当LDAC引脚从高电平变为低电平时DAC输出更新,随后输出端产生模拟电压。数据输入时最高有效位(MSB)在前,其中,tw(LDAC)和tw(LOAD)最小值为250ns。对TLC5620的数字控制是通过一根简单的3路串行总线实现的,其11位命令字包括8位数据位,2位DAC选择位和一位范围位RNG,后者用来选择输出范围是1倍还是2倍。DAC输出通道的选择由A1和A0控制,如图3.9所示:图3.9 TLC5620输出通道选择图4系统联调测试分析通过对以上各模块的细化和分析,最终在QUARTUS 中完成了整个系统的联合调试,编译通过(源程序见附录)。由clk端输入20M的周期脉冲,根据要求的波形周期经分频器输入合适频率的脉冲波。分频后脉冲波clkms分别接入4个波形发生器作为同步时钟,clkus作为D/A转换器TLC5620的串行接口时钟。锁定管脚后再次编译,编译成功后就可以把程序下载到实验箱上进行功能验证,通过对端口值a、b、c、d分别置1来实现4种波形的选择,继而可以用示波器在VOUT端测到输出波形。5实验小结通过这次EDA课程设计,我对课堂上所学到的理论知识的理解加深了许多,自己动脑、动手设计的能力也得到了较大提高。虽然我们上学期学习了EDA这门课,但是由于学时十分有限,当时学的有些不系统。在此次课程设计之前,有许多细节我已经不是很清楚了,为此我特意花了两天的时间提前再次学习了EDA技术与VHDL这本教材。我想这和课堂上的学习一样是我能顺利完成本次课程设计的一个重要原因。在这次课程设计的过程中,我对VHDL语言有了更深的认识。通过查阅相关资料和动手设计我发现我以前对VHDL语言的认识太过肤浅,认为VHDL语言只能用于设计小型的电路系统。但有了更深刻的认识之后我发现学好VHDL语言可以设计出大规模的、功能复杂的电路系统。以前之所以会有错误的认识是因为自己对VHDL语言的了解和掌握还不够。现在仔细想想,这次课程设计使得我对VHDL语言的理解与应用能力得到了较大的提升,也让我认识到只要升入学习,提升的空间永远的存在的。在设计的过程中我遇到了一些问题,如:编写源程序中出现了语法错误,TLC5620时序控制错误,限制频率大小不对和通道利用不当等。通过查阅书本和以前设计的程序我发现了产生错误的原因并解决了问题完成了设计。经过反思我发现较大一部分错误时因为操作的不熟练照成的,这也让我明白了要保持设计的高效率及必须经常练习。另一方面我也发现了动手实践的重要性。动手实践是理论知识得以灵活运用的必要前提,也是今后今后走上工作岗位之后能够很好的完成设计工作的技术保证。只有遇到实际问题并根据自己对课堂上获得的专业知识的理解来解决它才能真正的提高自己的能力。这也提醒我在平时的学习生活中不能一味埋头于课本知识,当今社会竞争越来越激烈,社会对人才的要求越来越全面,只有理论知识是远远不够的,必须靠动手能力做支撑。因此在学习之余我们应该积极参加各种与专业知识有关的实践活动和知识竞赛,巩固所学的理论知识,多注重培养实际动手能力和专业技术能力,这样才能在以后的工作岗位上有所作为。参考文献1潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2007.92徐守堂刘艳惠,李娜,孔旭梅.EDA技术教程.西北师范大学知行学院计算机与电子信科学系3潭会生,张昌凡.EDA技术及应用.西安电子科技大学出版社,2001.94李洋. EDA技术使用教程.机械工业出版社,2002.35赵刚.EDA技术简明教程.成都:四川大学出版社,2004.6附录-源程序-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rom isport (clk,a,b,c,d:in std_logic;dout:out std_logic;load:out std_logic;loac:out std_logic; clkout :out std_logic);end rom;architecture behave of rom iscomponent tlc5620 isport (clk:in std_logic;sen :in std_logic;din:in integer range 0 to 255;dout :out std_logic; clkout :out std_logic; load :buffer std_logic;loac :out std_logic);end component;signal count:integer range 0 to 255;signal clkms,clkus,sen:std_logic:=0;beginm1:tlc5620 port map(clk=clkus,sen=clkms,din=count,dout=dout,clkout=clkout,load=load,loac=loac);process(clk)variable x:integer range 0 to 9999;variable y:integer range 0 to 19;beginif rising_edge(clk) then-频率调整if x9999 then x:=x+1;else x:=0;clkms= NOT clkms;-波形时钟end if;if y19 then y:=y+1;else y:=0;clkus= NOT clkus; -D/A时钟end if;end if;end process;process(clkms)variable x:integer range 0 to 499;beginif rising_edge(clkms) thenif a=1 then-阶梯波if x100 then count=0;x:=x+1;elsif x200 then count=63;x:=x+1;elsif x300 then count=127;x:=x+1;elsif x400 then count=191;x:=x+1;elsif x499 then count=255;x:=x+1;else x:=0;end if;elsif b=1 then-递增波if count=255 then count=0;else count=count+1;end if;elsif c=1 then-递减波if count=0 then count=255;else count=count-1;end if;elsif d=1 then-三角波if sen=0 then if count255 then count=count+1;else sen0 then count=count-1;else sen=0;end if;end if;end if;end if;end process;end behave;library ieee;-tlc5620控制程序use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity tlc5620 isport (clk:in std_logic;sen :in std_logic;din:in integer range 0 to 255;dout :out std_logic; clkout :out std_logic; load :buffer std_logic;loac :out std_logic);end tlc5620;architecture behave of tlc5620 issignal cur_st:integer range 0 to 2;signal clk_delay,load_1,load_2:std_logic:=0;signal data_buff:std_logic_vector(10 downto 0);beginload=load_1 xor load_2;loac=0;process(clk,sen)variable

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论