欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    函数信号发生器的设计 EDA课程设计.doc

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

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

    函数信号发生器的设计 EDA课程设计.doc

    1、摘 要本说明书首先介绍了VHDL语言的特点及发展史;接着简要说明了D/A接口(函数发生器)的工作原理及设计思想和设计方案的确定;然后着重解释了使用VHDL语言设计D/A接口(函数发生器)的具体操作步骤及主要流程。为了更加详细的解释清楚主要流程在本课程设计说明书中还附加了相应的图片。最后还附加了实现设计的VHDL源程序。关键词:VHDL D/A接口 设计绪论EDA是电子设计自动化(Electronic Design Automation)的缩写。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻

    2、辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。EDA技术使设计者的工作仅局限于利用软件的方式来完成对系统硬件功能的实现,可以说EDA技术的产生与发展是电子设计技术的一个巨大进步。EDA技术融合了众多电子设计技术和计算机辅助技术,使得它在现代电子学方面的应用越来越广泛,也成为电子、电气类大学生必须熟练掌握的一种设计工具。硬件描述性语言HDL是EDA技术的重要组成部分,常见HDL的有VHDL、HDL、ABEL、Verilog、AHDL、SystemC等。其中VHDL、Verilog在现在的EDA设计中使用的最多,也拥

    3、有了几乎所有主流EDA工具的支持,而相对于其他语言VHDL更加完善。VHDL是英文全名是VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,是硬件描述语言的业界标准之一。它作为一个规范语言和建模语言,具有与具体硬件电路无关及设计平台无关的特性,而且还有很强的电路行为描述和建模能力,能从多个层次的数字系统进行建模和描述,从而大大简化了硬件设计的任务,提高了设计效率和可靠性。D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。AD558是并行8位D/A转换芯片,应用CPLD可以完成对AD55

    4、8的控制。CPLD与CPLD结合之后可以完成函数发生器的基本功能:波形输出。要实现这种结合就需要应用VHDL语言完成D/A接口的设计。通过合适的VHDL语言可以完成递增斜波、递减斜波、三角波、递增阶梯波的输出。1.VHDL简介1.1 VHDL的特点VHDL语言功能强大、设计灵活。VHDL语言可以用简洁明确的源代码来描述复杂的逻辑控制,它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。VHDL还支持多种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。由于VHD

    5、L已经成为IEEE标准所规定的硬件描述性语言,目前大多数EDA工具几乎都支持VHDL。因为VHDL易读和结构化且易于修改设计所以在硬件电路设计过程中, VHDL语言得到广泛应用。VHDL语言独立于器件的设计与工艺无关。因而设计人员用VHDL进行设计时,不需要考虑选择器件得问题,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。VHDL语言易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进

    6、行交流和共享,减少硬件电路设计。VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。这个特点很好的符合了市场需求。对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述的设计转变成门级网表。总之,由于VHDL语言有的这些优良的特点,它被广泛的应用在电子线路和电子系统的设计中。2.设计方案的确定2.1AD558工作原理A/D转换器和D/A转换器是把微型计算机的应用领域扩展到检测和过程控制的必要装置,是把

    7、计算机和生产过程、科学实验过程联系起来的重要桥梁。D/A转换器的功能是把二进制数字信号转换为与其数值成正比的模拟信号。D/A转换器相对于A/D转换器在时序上要求较低。在D/A参数中一个最重要的参数就是分辨率,它是指输入数字量发生单位数码变化时,所对应输出模拟量(电压或电流)的变化量。分辨率是指输入数字量最低有效位为1时,对应输出可分辨的电压变化量U与最大输出电压Um之比。D/A转换器AD558是EDA实验箱上自带的并行8位D/A转换芯片,它可以把输入的8位数字量转化为02.56V的电压量,它与CPLD器件联合使用可以产生几种波形。其芯片管脚外形和内部结构框图分别如图1、图2所示:图1 AD55

    8、8芯片管脚外形图图2 AD558内部结构框图AD558的真值表如图3所示。由真值表可知:当CS为低电平、CE为电平时,AD558保持上次的转换结果;当CS和CE同时为电平时,通过数据总线D7.0读入数据,同时讲转换结果输出。图3. AD558真值表2.2 设计方案本次D/A接口(函数发生器)的设计中,转换结果是时时输出的。根据对AD558真值表的分析可知:当CE和CS同时置0时AD558的工作模式为时时输出。因此在本次设计中我只需要将CE和CS同时置0即可。根据对AD558功能的分析可知:利用VHDL语言编写源程序通过CPLD完成对AD558的控制,并与AD558结合可以完成四种波形的产生。具

    9、体设计方案如下:利用VHDL语言设计0255循环加法计数器、2550循环减法计数器、01280循环加减计数器、0224等梯度循环加法计数器便可分别完成递增斜波、递减斜波、三角波、递增阶梯波的输出。每个计数器还设计了片选端和清零端。当清零端为0时计数器恢复为初始状态。为了实现输出波形模式的选择,在本次设计中我使用了一个四选一选择器:输入为2位逻辑数组输出为4个一位逻辑量。每一种输入状态对于于一种输出状态,每个状态有且仅有一位为1,其余3位皆为0,每个输出量与一种计数器的片选端相连接,即每个输入状态都只选中一种输出状态。由于CPLD实验箱上没有D/A转换器,为了显示设计结果检验设计成果我决定使用7

    10、段数码管显示产生波形的数字量。由于输出范围为0255,在十六进制数0HEEH的范围内,而且实验箱上只有8个7段数码管因此我各用2个7段数码管显示4种波形的输出。在每个计数器输出端口和7段译码器中间添加一个输入频率为1000HZ的4选1数据选择器,并利用两个拨码开关实现输入数据的选择。由于实验箱上自带的时钟源频率为20MHZ,为了得到1000HZ的频率,我还设计了一个分频器。以上即为本次D/A接口(函数发生器)的主要设计方案。3.设计流程首先启动Quartus II软件如图4所示:图4 Quartus II启动界面接着利用向导,建立一个新的工程。在File菜单中选择New Project Wiz

    11、ard选项启动项目向导。如图5所示,分别指定创建工程的路径,工程名和顶层文件名。工程名和顶层文件可以一致也可以不同。一个工程中可以有多个文件,但只能有一个顶层文件。这里我将工程名取为:keshe,顶层文件名取为zhuanhuan。如图5所示。图5 创建工程界面图在图5所示界面点击NEXT按钮出现对话框如图6所示直接点Finish按钮然后在出现的界面中依次点击File/new出现如图7所示界面。点击创建VHDL编辑界面中VHDLFile按钮即进入VHDL语言编辑区如图8所示。图6 创建工程的结束界面图7创建VHDLFile对话框图8 VHDL语言编辑框在图8所示的VHDL语言编辑框中依次输入分频

    12、器、四选一选择器、循环加法计数器等4钟计数器、七段译码器等功能模块的VHDL语言源程序。输入完成之后单击保存图标并输入相应的文件名。保存之后即可对源程序进行编译。如果编译成功则源程序完全正确,否则应该返回到出错处改正错误直至编译成功为止。编译成功之后选中源程序依次单击File、NEW、create/update、create symbol file for current file便可对相应的模块生产元器件。本次设计中对顶层文件采取原理图输入法,利用前期设计的各模块的元器件图连接成整体电路图。修改设计直至编译成功为止,电路原理图如图9所示:图9 整体电路图原理图设计成功之后,根据实验箱上相应的

    13、管教,锁定管教之后再次编译,编译成功之后就可以把程序下载到实验箱上进行功能验证了。若功能验证结果符合设计要求则设计至此结束。结束语通过这次EDA课程设计,我对课堂上所学到的理论知识的理解加深了许多,自己动脑、动手设计的能力也得到了较大提高。虽然我们这学期学习了EDA这门课,但是由于学时十分有限,当时学的有些不系统。而且在第八周课程及结束了,十一周考完考试之后就几乎没有再接触EDA的知识了。在此次课程设计之前,有许多细节我已经不是很清楚了,为此我特意花了两天的时间提前再次学习了EDA技术与VHDL这本教材。我想这和课堂上的学习一样是我能顺利完成本次课程设计的一个重要原因。在这次课程设计的过程中,

    14、我对VHDL语言有了更深的认识。通过查阅相关资料和动手设计我发现我以前对VHDL语言的认识太过肤浅,认为VHDL语言只能用于设计小型的电路系统。但有了更深刻的认识之后我发现学好VHDL语言可以设计出大规模的、功能复杂的电路系统。以前之所以会有错误的认识是因为自己对VHDL语言的了解和掌握还不够。现在仔细想想,这次课程设计使得我对VHDL语言的理解与应用能力得到了较大的提升,也让我认识到只要升入学习,提升的空间永远的存在的。在设计的过程中我遇到了一些问题,如:编写源程序中出现了语法错误,使用原理图设计顶层文件是对输入输入输出端口的位数选择错误和端口命名错误等。通过查阅书本和以前设计的程序我发现了

    15、产生错误的原因并解决了问题完成了设计。经过反思我发现较大一部分错误时因为操作的不熟练照成的,这也让我明白了要保持设计的高效率及必须经常练习。另一方面我也发现了动手实践的重要性。动手实践是理论知识得以灵活运用的必要前提,也是今后今后走上工作岗位之后能够很好的完成设计工作的技术保证。只有遇到实际问题并根据自己对课堂上获得的专业知识的理解来解决它才能真正的提高自己的能力。这也提醒我在平时的学习生活中不能一味埋头于课本知识,当今社会竞争越来越激烈,社会对人才的要求越来越全面,只有理论知识是远远不够的,必须靠动手能力做支撑。因此在学习之余我们应该积极参加各种与专业知识有关的实践活动和知识竞赛,巩固所学的

    16、理论知识,多注重培养实际动手能力和专业技术能力,这样才能在以后的工作岗位上有所作为。附录分频器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fpq isport(clk: in std_logic; f_out:out std_logic);end entity;architecture bhv of fpq issignal b:integer range 0 to 200000;beginprocess(clk)begin if clkevent and clk=1 t

    17、hen if b=20000 then b=0;f_out=1;elsif b20000 then b=b+1;f_out=0; end if;end if;end process;end bhv;4选1选择器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xuanze4_1 isport(a1:in std_logic; a2:in std_logic; q1:out std_logic; q2:out std_logic; q3:out std_logic; q4:out

    18、 std_logic);end entity xuanze4_1;architecture bhv of xuanze4_1 issignal q:std_logic_vector(3 downto 0);signal a:std_logic_vector(1 downto 0);beginprocess(a)begina q q q q=1000;end case;q1=q(0);q2=q(1);q3=q(2);q4=q(3);end process;end bhv;递增计数器源程序:llibrary ieee;use ieee.std_logic_1164.all;use ieee.std

    19、_logic_unsigned.all;entity dizeng isport(clk,cs,ret:in std_logic; q1:buffer integer range 0 to 256);end entity dizeng;architecture bhv of dizeng isbeginprocess(clk,cs,ret)beginif cs=1 then if ret=0 then q1=0; elsif ret=1 then if clkevent and clk=1 then if q1=255 then q1=0; elsif q1255 then q1=q1+1;

    20、end if; end if; end if; end if;end process;end bhv;递减计数器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dijian isport(clk,cs,ret:in std_logic; q1:buffer integer range 0 to 256);end entity dijian;architecture bhv of dijian isbeginprocess(clk,cs,ret)beginif cs=1 the

    21、n if ret=0 then q1=0; elsif ret=1 then if clkevent and clk=1 then if q1=0 then q10 then q1=q1-1; end if; end if; end if; end if;end process;end bhv;三角波发生器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sanjiao isport(clk,cs,ret:in std_logic; q:buffer integer range

    22、 0 to 256);end entity sanjiao;architecture bhv of sanjiao issignal q1:integer range 0 to 256;beginprocess(clk,cs,ret,q1)beginif cs=1 then if ret=0 then q1=0; elsif ret=1 then if clkevent and clk=1 then if q1=255 then q1=0; elsif q1255 then q1=q1+1; end if; end if; end if;end if;if q1=128 then q128 t

    23、hen q=255-q1;end if;end process;end bhv;递增阶梯波发生器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jieti isport(clk,cs,ret:in std_logic; q1:buffer integer range 0 to 256);end entity jieti;architecture bhv of jieti isbeginprocess(clk,cs,ret)beginif cs=1 then if ret=0

    24、then q1=0; elsif ret=1 then if clkevent and clk=1 then if q1=224 then q1=0; elsif q1224 then q1=q1+32; end if; end if; end if; end if;end process;end bhv;4选1选择器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity choose isport(m1,m2:in std_logic;a,b,c,d:in integer rang

    25、e 0 to 256; q:out integer range 0 to 256);end entity choose;architecture bhv of choose issignal x:std_logic_vector(0 to 1);beginx=m1&m2;with x selectq=a when 00,b when 01,c when 10,d when others;end bhv;7段译码器源程序:library ieee;use ieee.std_logic_1164.all;entity scan isport(clk:in std_logic;aa:in integ

    26、er range 0 to 256;out3:buffer integer range 0 to 7;segout:out std_logic_vector(7 downto 0);end scan;architecture behave of scan issignal a,b,c,segin:integer range 0 to 9;begina=aa/100; b=(aa-100*a)/10;c=aa-100*a-10*b;processbeginwait until clkevent and clk=1;if out3=2 then out3=0;else out3seginseginseginnull;end case;end process; with segin selectsegout=00111111when 0,00000110when 1,01011011when 2,01001111when 3,01100110when 4,01101101when 5,01111101when 6,00000111when 7,01111111when 8,01101111when 9,unaffected when others;end behave;忽略此处. 19


    注意事项

    本文(函数信号发生器的设计 EDA课程设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

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

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

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