eda技术与vhdl实用教程电子教案 动画 源程序(廖超平)第5章 VHDL设计深入.pptVIP

eda技术与vhdl实用教程电子教案 动画 源程序(廖超平)第5章 VHDL设计深入.ppt

  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文档。上传文档
查看更多
5.1 深入VHDL程序结构 一、子程序与子程序调用语句 1. 子程序的一般特点 子程序是一个VHDL程序模块,它内部由顺序语句组成,可把需要重复完成的设计工作写成子程序,这样可以在需要的地方多次调用。 子程序有两种类型,即函数和过程。函数的调用只能返回一个值,而过程可以不返回任何值,也可以返回多个值。在函数的接口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数。函数通常作为表达式的一部分,而过程则一般被用作一种语句结构。函数通常作为语句的一部分调用,而过程可以单独存在。 在子程序体可以有返回语句,用来结束当前子程序体的执行。其语句格式如下: 返回语句用于函数时,必须有表达式,只能并且必须返回一个值。每一函数必须至少包含一个以上的返回语句,但是在函数调用时,只有其中一个返回语句可以将值带出。返回语句用于过程时,表达式缺省,不返回任何值。 VHDL子程序具有可重载的特性,即允许有许多个重名的子程序,但这些子程序的参数类型及返回值数据类型是不同的,开发工具根据子程序的参数类型及返回值数据类型来区分各个重载的子程序。 [重点提示] 综合后的子程序将映射成目标芯片中的一个相应的电路模块,且每一次调用又将在硬件结构中产生具有相同结构的不同模块,这一点与普通的软件中调用子程序有很大的不同。 2.函数 (1) 函数及声明 函数是用来描述重复使用的返回单一值的顺序算法的子程序。函数中应至少有一个返回语句,通过其中一个返回语句返回所要求返回的值。函数声明分函数首声明和函数体声明两部分,同一个函数的函数首和函数体应具有相同的名字。 函数首的声明格式如下: 函数首是由函数名、参数表和返回值的数据类型三部分组成。函数名需放在关键词FUNCTION之后,它可以是普通的标识符,也可以是运算符,当是运算符时必须加上双引号,这是运算符的重载。 函数的参数表中的参数只能是IN模式,用来定义输入值,它只能是信号或常数,参数名需放在关键词CONSANT或SIGNAL之后,若没有特别的说明,则参数被默认为常数。 信号或常数的数据类型不能是类似“STD_LOGIC_VECTOR(7 DOWNTO 0)”或“INTEGER RANGE 3 DOWNTO 0”的加范围限制的形式,只能使用类似STD_LOGIC_VECTOR和INTEGER的非限制的形式。 下面是三个不同的函数首声明例子: FUNCTION FUNC1(A,B,C: REAL) RETURN REAL; ----参量前没注明CONSANT或SIGNAL默认为常数。 FUNCTION “*” (CONSANT A,B: INTEGER) RETURN INTEGER; ----注意重载运算符函数名*要用引号括起来。 FUNCTION AS2 (SIGNAL IN1,IN2:REAL) RETURN REAL; ----注意信号参量前要注明SIGNAL。 函数体的说明部分包括对数据类型、常量、变量等的局部说明,其顺序语句部分则是描述用以完成规定算法或者转换的顺序语句,通常函数体内的顺序语句部分含有返回语句: RETURN表达式,用来在该处返回所要求返回的值。函数体的说明以关键词END FUNCTION以及函数名结尾。一旦函数被调用,就将执行函数体内的顺序语句部分的语句。 下面是一个函数体声明的例子: FUNCTION SAM (x,y,z:BIT) RETURN BIT IS ----定义函数SAM,该函数无函数首 BEGIN RETURN (x OR z)AND y; END FUNCTION SAM; (2)函数声明的地方 可在结构体的声明部分、进程的声明部分或程序包中声明函数。 在结构体或进程中声明函数,只能在结构体或进程中调用函数,而在程序包中声明函数则可通过声明引用程序包,在不同的实体的各个结构体内的调用函数。 (3) 函数的调用 例 5.1 library ieee; use ieee.std_logic_1164.all; entity dec3_8 is port( a: in std_logic_vector(2 downto 0); y: out std_logic_vector(7 downto 0)); end dec3_8; architecture a of dec3_8 is

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档