033935_VHDL数字电路设计教程第7讲信号和变量.pptVIP

033935_VHDL数字电路设计教程第7讲信号和变量.ppt

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

VHDL处理静态数据的两种对象:const和generic。 VHDL处理非静态数据的两种对象:信号和变量。 常量和信号是全局的,既可以用于顺序代码,也可用于并发代码; 变量只能在顺序代码中使用,相对于信号而言,变量只能是局部的,所以变量值不能传递到process、function和procedure外部。 但是,在有些情况下,选择信号还是变量却是比较难以抉择的。 ;7.1 常量;7.2 信号;信号的赋值符号: = 注意1:对信号赋初值的操作是不可综合的,通常只用于仿真。 例如: signal control: BIT:=‘0’; 注意2:不要对同一个信号进行多重赋值。(buffer模式的端口信号除外!) 例如: process (...) ..... for i IN 0 TO 10 LOOP control=control+1; --error! 或最后一次有效! ......;例7.1 “1”计数器;实现代码:---错误使用信号的例子 LIBRARY ieee; USE ieee.std_logic_1164.all; entity count_ones is port ( din: IN std_logic_vector(7 downto 0); ones: OUT integer range 0 to 8); end count_ones; architecture not_ok of count_ones is signal temp: integer range 0 to 8; begin process (din) begin temp=0; FOR i IN 0 TO 7 LOOP IF (din(i) =‘1’) then temp=temp+1; END if; END LOOP; ones=temp; end process; end not_ok;;两种代码更正方法: 1、使用变量来记录中间值,可以将signal temp...改为variable temp...;同时修改相应的赋值语句; 2、取消temp,同时将端口信号ones重新定义为: ones: BUFFER integer range 0 to 8; 使得ones可以被内部调用。在进程结束后,ones值将被更新。 (编码风格不好,不提倡此种方式!可以参考P110-P111例子);7.3 变量(variable);例:“1”计数器的实现代码: LIBRARY ieee; USE ieee.std_logic_1164.all; entity count_ones is port ( din: IN std_logic_vector(7 downto 0); ones: OUT integer range 0 to 8); end count_ones; architecture ok of count_ones is variable temp: integer range 0 to 8; begin process (din) begin temp:=0; FOR i IN 0 TO 7 LOOP IF (din(i) =‘1’) then temp:=temp+1; END if; END LOOP; ones=temp; end process; end ok;;7.4 信号和变量的比较 (补充);3)有效范围的不同: 信号:程序包、实体、结构体;全局量。 变量:进程、子程序;局部量。

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档