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

    基于VHDL语言的波形发生器的设计.doc

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

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

    基于VHDL语言的波形发生器的设计.doc

    1、 专业 课程设计任务书20112012学年 第 2 学期第 17 周 20 周 题目波形发生器的设计内容及要求用CPLD可编程模块产生下列信号(特殊芯片:EPM570T100C5)(1)采用VHDL编写相关程序,能产生递增斜波、递减斜波、阶梯波、正弦波、方波、三角波;(2)用户能够选择输出所需其中一种波形。进度安排 17周:查找资料,进行系统方案设计; 18周:软件的分模块调试; 19周:系统联调;20周:设计结果验收,报告初稿的撰写。学生姓名: 汤姝指导时间:第1720周指导地点:E楼607室任务下达2012年 6 月4 日任务完成2012年 6月 29 日考核方式1.评阅 2.答辩 3.实

    2、际操作 4.其它指导教师刘敏系(部)主任付崇芳摘要各种各样的信号是通信领域的重要组成部分,其中递增斜波、递减斜波、阶梯波、正弦波、方波、三角波等是较为常见的信号。在科学研究及教学实验中常常需要这几种信号的发生器。为了试验、研究方便,研制一种灵活使用、功能齐全、使用方便的信号源是十分必要的。本次设计的波形发生器是一种能够产生递增斜波、递减斜波、阶梯波、正弦波、方波、三角波的信号发生器。设计可以通过硬件和软件两种方法实现,本次实验中通过Quartus II软件编程软件的方法,运用VHDL语言与原理图混合设计的方法,VHDL语言描述底层模块,原理图设计方法设计顶层原理图文件。实验分模块设计,便于调试

    3、及错误的查找。实验运用VHDL语言编写程序,实现了各波形的产生,并且最后通过6选1多路开关的设计,实验了对需要波形的选择。关键词:波形发生器 VHDL Quartus II 原理图 多路开关目 录第一章 波形发生器设计内容及要求11.1 设计内容11.2 设计要求1第二章 波形发生器系统框图及工作原理与设计22.1 系统框图22.2 设计平台与仿真工具22.3 工作原理与设计2第三章 系统调试与分析113.1 系统调试113.2 结果分析11第四章 结论18参考文献19附录一 原理图20附录二 程序清单21波形发生器的设计第一章 波形发生器设计内容及要求1.1 设计内容实验设计波形发生器是一种

    4、能够产生递增斜波、递减斜波、阶梯波、正弦波、方波、三角波的电路。实验中通过Quartus II软件编程,运用VHDL语言与原理图混合设计的方法,VHDL语言描述底层模块,原理图设计方法设计顶层原理图文件。实验分模块设计,在完成一个模块时即对其进行调试修改,防止了最后模块综合时存在调试困难的情况出现。如果是对元件例化相对较熟练的同学,也可采用元件例化的方法进行程序的编写。但在此过程中,应特别注意VHDL语言的运用,以防语法错误导致影响实验结果。实验最后将程序下载到芯片EPM570T100C5中,供实际运用。1.2 设计要求用CPLD可编程模块产生下列信号(特殊芯片:EPM570T100C5)1、

    5、 采用VHDL编写相关程序,能产生递增斜波、递减斜波、阶梯波、正弦波、方波、三角波; 2、用户能够选择输出所需其中一种波形。第二章 波形发生器系统框图及工作原理与设计2.1 系统框图波形发生器由各波形发生模块及6选1多路开关构成,时钟信号对其作用产生输出波形信号,系统框图如图2.1所示。图2.1 系统框图2.2 设计平台与仿真工具Quartus II软件包是MAX+plus II的升级版本,其提供了一个完整高效的设计环境,非常适合具体的设计需求。提供了方便的设计输入方式、快速的编译和直接易懂的器件编程,属于EDA工具。EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。它主要采用

    6、并行工程和“自顶向下”的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构的设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体电路的网表,其对应得物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早起发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。本实验中是多个模块的相互联系作用,采用了VHDL与原理图混合设计的方式进行设计。各模块设计最后,为了能在图形编辑器中调用元件,需要为该元件创建一个元件

    7、图形符号。2.3 工作原理与设计2.3.1 递增波形递增波形的设计运用的是VHDL语言中if语句对其进行0-255的序列递增来实现的,每等待一个时钟上升沿,计数器加1,故输出信号周期为256倍时钟周期。程序主要语句如下所示:if tmp=11111111 then tmp:=00000000; else tmp:=tmp+1; end if;其中,定义clk为输入时钟信号端口,reset为输入复位信号端口程,q1为8位二进制输出信号端口。程序设计流程图如下图所示:图2.2 递增波形设计流程图2.3.2 递减波形递减波形的设计运用的是VHDL语言中if语句对其进行255-0的序列递减来实现的,与

    8、递增波形正好是相反的。每等待一个时钟上升沿,计数器减1,故输出信号周期为256倍时钟周期。程序主要语句如下所示: if tmp=00000000 then tmp:=11111111; else tmp:=tmp-1; end if;其中,时钟信号clk,复位信号reset, 8位二进制输出信号端口q2。程序设计流程图如下图所示:图2.3 递减波形设计流程图2.2.3 阶梯波阶梯波运用VHDL语言中if语句设计,程序中每计数16次对输出信号进行一次序列递增,从而得到周期为输入时钟递增信号波形周期16倍的输出阶梯波信号。在设计原理上是与递增波形类似的。程序中,阶梯波阶梯增量为16,可以根据需要通

    9、过改变递增量来得到需要波形。因为在计数器11110000是加16刚好为00000000,故程序省略了if tmp =11111111 thentmp:=00000000 ;语句,并且在计数器增量设置时,增量应为,这样才能使阶梯波各个阶梯高度是一致的。 程序主要语句如下所示:if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then tmp:=tmp+16;end if;其中,时钟信号clk,复位信号reset, 8位二进制输出信号端口q5。程序设计流程图如下图所示:图2.4 阶梯波设计流程图2.1.4 三角波三角波的设计运用的是VH

    10、DL语言中if语句先对其进行0-255的序列递增,之后再对递增到255的序列进行255-0的序列递减来实现的,正好是递增波形与递增波形相结合得到。程序语句设置内部接点信号a作为递减信号,判断波形处于递增或者是递减阶段。当a为0时,递增,计数器加1;a为1时,递减,计数器减1。 程序主要语句如下所示: if a=0 then if tmp=11111110 then tmp:=11111111; a:=1; else tmp:=tmp+1; end if;else if tmp=00000001 then tmp:=00000000; a:=0; else tmp:=tmp-1; end if;

    11、end if;其中,时钟信号clk,复位信号reset, 8位二进制输出信号端口q3。程序设计流程图如下图所示:图2.5 三角波设计流程图2.1.5 正弦波正弦波的设计运用的是VHDL语言中if语句与case语句,由于正弦波是模拟信号波形,而VHDL语言程序输出的是数字信号波形。因此,实验中对信号进行等间距采样,等效正弦信号波形。程序采样点为128个,等效为近似的正弦波形。程序主要语句如下所示: if tmp =127 then tmp:=0; else tmp:=tmp+1;end if;case tmp iswhen 00=ddddddddnull;end case;end if;其中,时

    12、钟信号clk,复位信号clr, 8位二进制输出信号端口d。程序设计流程图如下图所示:图2.6 正弦波设计流程图2.1.6 方波阶梯波运用VHDL语言中if语句设计,程序中每计数64次对输出信号进行一次翻转,从而得到周期为输入时钟信号周期128倍的输出方波信号。程序设置内部节点信号a作为输出判断信号,计数器计数0-63后,对输出判断信号取反,实现0、1的变化。 if cnt63 then cnt:=cnt+1; else cnt:=0; a=not a; end if;其中,a为0 是输出低电平,a为1时输出高电平。 if a =1 then q6=255; else q6qqqqqqq=nul

    13、l;end case;其中,时钟信号clk,输入选择sel,8位二进制输出信号端口q。程序设计流程图如下图所示:图2.7 6选1多路开关设计流程图第三章 系统调试与分析3.1 系统调试3.1.1 调试方法 实验运用的是VHDL语言与原理图混合设计方法,因此有程序调试和原理图调试两部分。实验步骤如下:1、 新建工程、VHDL文档输入设计模块子程序2、 调试各个子程序是否存在语法错误的问题3、 对各子模块进行波形仿真,验证输出是否正确4、 各子模块生成图元文件5、 新建工程、原理图文档,将各子模块文件夹下的文档拷贝到新建工程中6、 根据系统设计框图将各个模块图元文件连成原理图7、 检验原理图是否正

    14、确8、 最后原理图仿真,检查波形图是否正确3.1.2 调试故障及解决方法在整个实验调试过程中,最主要出现的问题是对VHDL语言的不熟悉,导致在程序编写过程中出现了不少语法错误导致影响实验结果的问题。其次是软件运用不熟练使得影响实验进度,有时也会影响了实验调试。针对实验中出现了问题,总结了以下一些解决方法和注意事项:1、 程序书写过程中要注意程序的层次,便于出错时对错误的查找;2、 程序输入时应仔细认真,以免个别字母的错误输入影响实验结果;3、 分模块设计分模块调试,便于对错误的纠正;4、 项目名必须与顶层设计文件名相同;5、 程序命名过程中,以一定意义的字母命名,便于之后读程序;6、 在原理图

    15、设计上,注意总线的书写。 设计中主要用的是VHDL语言中的if语句和case语句,因此对这两种语句的运用要十分熟悉。并且其不区分大小写,所以在命名时应注意此问题。3.2 结果分析3.2.1 递增波形 通过对程序语句的调试过程,得到以下波形图:图3.1 递增波形图图3.2 递增模块图 由波形图可以看出,在每个时钟上升沿,输出加1,从波形图上我们也可以看到,输出由00000000增至11111111,从而得到了递增波形,并且其周期为时钟周期的256倍。因此,从调试得到的波形图可知,程序设计实现了递增波形的产生功能。3.2.2 递减波形 递减波形程序调试,得到了以下的波形图:图3.3 递减波形图图3

    16、.4 递减模块图 由波形图可以看出,在每个时钟上升沿,输出减1,从波形图上我们也可以看到,输出由11111111减到00000000,与递增波形正好是相反的,其周期与递增波形周期相等,为时钟周期的256倍。因此,从调试得到的波形图可知,程序设计实现了递减波形的产生功能。3.2.3 三角波三角波程序调试至无语法错误后,仿真得到以下波形图:图3.5三角波波形图图3.6 三角波模块图 通过对波形图的分析,每个时钟上升沿计数器加1或者减1,有一个最大值11111111。输出由00000000递增至11111111后再递减至00000000,从而得到了三角波。从图上我们可以看到输出的递增与递减,程序实现

    17、了三角波的产生功能。3.2.4 正弦波 对正弦波程序的调试,得到了以下波形图:图3.7 正弦波波形图图3.8 正弦波模块图 程序根据正弦波采样取点,得到了以上仿真波形。与递增波形不同的是,正弦波设计中由于取点并不按一定规律得到,无法采用循环来实现,相对于前面波形的设计较难一些。因此,程序中利用case语句,通过查表的方法来实现输出正弦波。3.2.5 阶梯波 阶梯波调试得到波形图如下所示:图3.9 阶梯波波形图图3.10 阶梯波模块图 与之前设计的递增波形比较我们不难发现,阶梯波与递增波形是类似的,其区别就在于,阶梯波阶梯增量为16,而递增波形的阶梯增量是1。并且在阶梯波的设计中应注意,阶梯增量

    18、应设置为,只有这样才能保证阶梯的每一层的阶梯高度是一样的。实验设计程序实现了阶梯波的产生。3.3.6 方波 方波调试得到波形图如下图所示:图3.11 方波波形图图3.12 方波模块图 由上图我们可以知道,程序的调试实现了方波的产生。我们的输如时钟信号就是一个方波信号,因此,在方波发生器的设计上要相对简单。实验是通过设置的计数周期,之后对输出信号进行翻转,从而得到所需的波形。3.3.7 6选1多路开关 由于要实现用户对所需波形的选择功能,因此,实验设计了一个6选1多路开关。通过对用户输入否认判断,从而输出用户所需的信号波。调试得到如下波形图:图3.13 6选1多路开关图3.2 6选1模块图 通过

    19、对部分输出波形的观察,在输入信号为000时,选择输出z1的输入信号,满足多路开关的功能实现。3.2.8 原理图实验运用的是VHDL语言和原理图混合设计的方法,因此,在所以程序调试成功后,生成每个子模块的元件图形。再根据设计框图,将个子模块连接,得到系统原理图。原理图调试得到如下波形:图3.8 原理图选择输出方波 各波形发生器模块产生波形,6选1多路开关,进行对所需波形信号的选择。仿真过程中,输入101信号,选择的是方波信号的输出。图3.9 原理图选择输出递减波形输入001信号,选择的是递减波形信号的输出。第四章 结论 本次实验室一个基于VHDL语言的波形发生器的设计,该波形发生器能够产生递增斜

    20、波、递减斜波、阶梯波、正弦波、方波、三角波。实验中通过Quartus II软件编程,运用VHDL语言与原理图混合设计的方法,VHDL语言描述底层模块,原理图设计方法设计顶层原理图文件。最后通过6选1多路开关的设计,实验了对需要波形的选择。实验分模块设计,在完成一个模块时即对其进行调试修改,防止了最后模块综合时存在调试困难的情况出现。如果是对元件例化相对较熟练的同学,也可采用元件例化的方法进行程序的编写。但在此过程中,应特别注意VHDL语言的运用,以防语法错误导致影响实验结果。实验最后将程序下载到EPM570T100C5中,供实际运用。参考文献1 朱正伟. EDA技术及应用M.北京:清华大学出版

    21、社,2005.2 童诗白.模拟电子技术基础(第五版)M.北京:高等教育出版社.2005.3 谢自美.电子技术基础实验与课程设计M.北京:电子工业出版社.2006.附录一 原理图附录二 程序清单-递增波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dizeng is port(clk,reset:in std_logic; -定义时钟和复位 q1:out std_logic_vector(7 downto 0); -定义8位输出end dizeng;architecture beh

    22、ave of dizeng isbegin process(clk,reset) -定义敏感信号表variable tmp:std_logic_vector(7 downto 0); -定义内部节点信号作为计数器begin if reset=0 then -复位 tmp:=00000000; elsif clkevent and clk=1 then -等待时钟上升沿 if tmp=11111111 then -计数器清零 tmp:=00000000; else tmp:=tmp+1; -计数器加1 end if; end if;q1=tmp; -输出end process;end behav

    23、e;-递减波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dijian is port(clk,reset:in std_logic; q2:out std_logic_vector(7 downto 0);end dijian;architecture behave of dijian isbegin process(clk,reset) variable tmp:std_logic_vector(7 downto 0);begin if reset=0 then tmp:=0

    24、0000000; elsif clkevent and clk=1 then if tmp=00000000 then tmp:=11111111; else tmp:=tmp-1; -计数器减1 end if; end if;q2=tmp;end process;end behave;-三角波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sjiao is port(clk,reset:in std_logic; q3:out std_logic_vector(7 downto 0

    25、);end sjiao;architecture behave of sjiao isbegin process(clk,reset)variable tmp:std_logic_vector(7 downto 0); -定义内部节点信号tmp作为计数器variable a:std_logic; -定义内部节点信号a作为递减信号begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if a=0 then -a为0,递增;a为1,递减 if tmp=11111110 then tmp:=11111111; a:=1;

    26、 else tmp:=tmp+1; end if;else if tmp=00000001 then tmp:=00000000; a:=0; else tmp:=tmp-1; end if;end if;end if;q3=tmp;end process;end behave;-正弦波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zxian is port(clk,clr:in std_logic; d:out integer range 0 to 255);end zxian;

    27、architecture behave of zxian isbegin process(clk,clr) variable tmp:integer range 0 to 127; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end if; end process;end behave;-阶梯波library i

    28、eee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jti is port(clk,reset:in std_logic; q5:out std_logic_vector(7 downto 0);end jti;architecture behave of jti isbegin process(clk,reset)variable tmp:std_logic_vector(7 downto 0);variable a:std_logic;beginif reset=0 then tmp:=0000000

    29、0; elsif clkevent and clk=1 then tmp:=tmp+16; -定义增量为16end if;q5=tmp;end process;end behave;-方波library ieee;use ieee.std_logic_1164.all;entity fbo is port(clk,clr: in std_logic; q6:out integer range 0 to 255);end fbo;architecture behave of fbo issignal a:bit; -定义内部节点信号a作为输出判断信号begin process(clk,clr)

    30、variable cnt:INTEGER; begin if clr=0 then a=0; elsif clkevent and clk=1 then if cnt63 then cnt:=cnt+1; else cnt:=0; a=NOT a; -输出判断信号取反 end if; end if; end process; process(clk,a) begin if clkevent and clk=1 then if a =1 then -a为1时,输出高电平;a为0时,输出低电平 q6=255; else q6=0; end if; end if; end process;end behave;27


    注意事项

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




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

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

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

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