第七讲VHDL子程序.ppt

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

第7讲 VHDL子程序   子程序和进程(Process)一样,采用顺序描述来定义算法。和进程不同的是,子程序不可以直接从结构体的其他部分对信号进行读写操作,所有的通信都必须通过子程序的接口完成。由于可以在结构体的不同部分调用子程序完成重复的计算,因此子程序显得非常的实用。和元件例化语句不同的是,当子程序被实体或者其他子程序调用的时候,并不会产生新的设计层次,但是可以通过手工定义的方法增加设计层次。   子程序由过程(PROCEDURE)和函数(FUNCTION)组成。函数只能用以计算数值,而不能用以改变与函数形参相关的对象的值。因此,函数的参量只能是方式为IN的信号与常量;而过程的参量可以为IN, OUT, INOUT方式(注意:不能为BUFFER方式)。过程没有返回值,但是可以通过改变过程参数值的方法向过程的调用者传递信息。   函数和过程常见于面向逻辑综合的设计中,主要进行高层次的数值运算或类型转换、运算符重载,也可用来元件例化。 第7讲 VHDL子程序  函数的语法格式: 函数首(一般放在程序包的说明部分): FUNCTION 函数名 (输入参数表) RETURN 数据类型 ; 函数体: FUNCTION 函数名 (输入参数表) RETURN 数据类型 IS [说明语句]; BEGIN 顺序处理语句; RETURN 返回变量名; END FUNCTION 函数名 ;   其中输入参数表中的每个参数均应表示为:参数名:数据类型; 函数(Function) 第7讲 VHDL子程序 第7讲 VHDL子程序 例1:函数举例。此函数完成取反功能。 PACKAGE declare IS --程序包首 TYPE three_level_logic IS (0,1,Z); FUNCTION invert(s :three_level_logic) RETURN three_level_logic ; --函数首 END PACKAGE declare; PACKAGE BODY declare IS --程序包体 FUNCTION invert(s :three_level_logic) RETURN three_level_logic IS –-函数体 VARIABLE temp: three_level_logic ; BEGIN CASE s IS --顺序语句 WHEN 0=temp:=1; WHEN 1=temp:=0; WHEN Z=temp:=Z; END CASE; RETURN temp; END FUNCTION invert; END PACKAGE BODY declare; 函数(Function) 第7讲 VHDL子程序 第7讲 VHDL子程序 例1:函数举例。此函数完成取反功能。 USE WORK.declare.ALL; ENTITY fun_example IS PORT(x: IN three_level_logic; y: OUT three_level_logic); END ENTITY fun_example; ARCHITECTURE a OF fun_example IS BEGIN y=invert(x); --函数的调用! x为in类型 END a; 函数(Function) 第7讲 VHDL子程序 第7讲 VHDL子程序  过程的语法格式: 过程首: PROCEDURE 过程名 (参数表); 过程体: PROCEDURE 过程名(参数表)IS [说明语句]; BEGIN 顺序处理语句; END PROCEDURE 过程名; 过程 (Procedure) 第7讲 VHDL子程序 第7讲 VHDL子程序 例2:过程举例。此过程返回两数中的较大数。 PACKAGE data_types IS TYPE data_element IS RANGE 0 TO 3; TYPE data_array IS ARRAY (1 TO 3) OF data_element; END data_types; USE WORK.data_types.ALL; ENTITY procedure_example IS PORT( in_array: IN data_array;

文档评论(0)

sh4125733 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档