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

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

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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精品文档

相关文档