VHDL设计中变量与信号探讨.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VHDL设计中变量与信号探讨

VHDL设计中变量与信号探讨   摘要:随着航天产品中越来越广泛使用FPGA器件,熟练掌握VHDL硬件语言对于电路设计显得至关重要。变量和信号是VHDL语言中最为常用和最重要的两种数据对象,该文针对变量和信号的重要区别和使用技巧展开了探讨,并结合实际FPGA测试中的实例进行了详细的阐述和仿真验证。   关键词:FPGA;VHDL;变量和信号   中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2014)01-0219-04   1 概述   随着EDA技术的发展,越来越多的航天产品中开始使用FPGA器件, FPGA设计中使用的硬件语言VHDL语言由于发展的较早,语法严格,非常适合大规模系统的设计,被航天产品设计师广泛应用。   变量和信号是VHDL语言中最为常用和最重要的两种数据对象,在电路设计中正确应用变量和信号是成功完成电路设计的重要因素。在对航天型号FPGA产品的评测过程中发现,设计师在使用VHDL语言时会对变量和信号的使用把握不准确,导致一些不必要的问题发生。因此,深入研究VHDL中变量和信号的基本特性和应用特点十分重要,对于提高FPGA的设计效率有着重要的意义。   2 变量和信号的主要区别   信号、变量和常量是VHDL中常用的2类数据对象。变量非常接近软件高级语言中的变量、而信号则具备更多的硬件特征,能对应硬件电路中的实际连线,是VHDL语言所特有的。信号和变量的用法和区别主要体现在以下几个方面。   1)变量是一个局部量,只能在进程和子程序中声明和使用。信号是一个全局量,使用和定义范围是实体、结构体和程序包,它具有全局性特征。例如,在实体中定义的信号可以被该实体中所有的进程使用。因此,信号可以作为信息交流通道在不同进程之间传递信息。   2)变量和信号的赋值语句不同,前者为“:=”,后者为“=”。   3)进程中的敏感列表中可以有信号,不能有变量。   4)变量的赋值不存在延时,是立即发生的,而信号赋值都是有延时的。在一个进程中,如果对同一个信号多次赋值,仅最后一次赋值是有效的,如果对一个变量进行多次赋值,那么每次赋值都是有效的,变量的值在再次赋值之前一直保持不变。   结合以下的几个例子我们可以体会到变量和信号在赋值时的不同之处。在程序1中,由于信号赋值有延时,即进程结束时赋新值,所以结果是a和b 的值互换;而程序2中,由于变量赋值是立即更新的,所以结果是a和b的值均为b。   程序1:   architecture xinhao_arch of xinhao is   signal a,b : std_logic; ―信号   begin   process (a,b)   begin   a = b;   b = a;   end process;   end xinhao_arch ;   程序2:   architecture bianliang_arch of bianliang is   begin   process   variable a,b : std_logic;―变量   begin   a := b;   b := a;   end process;   end bianliang_arch ;   程序3和程序4是将输入信号din用信号赋值和变量赋值的方法分别赋值给输出信号dout。我们分别比较两种情况下的区别。   程序3:   entity xh is   port(   din : in std_logic;―输入信号   clk : in std_logic;―时钟信号   dout : out std_logic ?输出信号   );   end xh;   architecture xh_a of xh is   signal da,db: std_logic;―信号   begin   process(clk)   begin   if rising_edge(clk) then   da = din;   db = da;   end if;   end process ;   dout = db;   end xh_a;   在程序3中,由于信号的赋值不是即时的,输入端口din的值在赋给输出端口dout时经过了2个时钟延时,所以它由2个D触发器构成,如图1和图2。   程序4:   entity bl is   port(   din : in std_logic;   clk : in std_logic;   dout : out std_logic   );   end bl;   architecture b

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档