3.63.7子程序及描述风格.pptVIP

  • 9
  • 0
  • 约6.12千字
  • 约 41页
  • 2017-04-27 发布于四川
  • 举报
3.63.7子程序及描述风格

3.6 子程序;VHDL中的子程序有两类: 过程(PROCEDURE):过程通过其接口返回0个或多个值。 函数(FUNCTION):函数直接返回单个值。 子程序包含两部分:即子程序声明和主体部分。 在程序包中声明子程序时,子程序声明必须要在程序包首中,子程序主体必须要在程序包体中。;一、函数的定义与引用; 函数首是程序包与函数的接口界面。如果要将一个函数组织成程序包入库,则必须定义函数首,且函数首应放在程序包的说明部分,而函数体应放在程序包的包体内。如果只在一个结构体中定义并调用函数,则只需定义函数体即可。 参数表中为参数名、参数类别及数据类型,函数的参数为信号或常数,默认情况为常数; 在RETURN后面的数据类型为函数返回值的类型; 子程序声明项用来说明函数体内引用的对象和过程; 顺序语句就是函数体,用来定义函数的功能。;LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY fun IS PORT (A: IN std_logic _Vector(0 TO 2); M : OUT std_logic _Vector(0 TO 2)); END fun; ARCHITECTURE art OF fun IS FUNCTION sam (X,Y,Z: BIT) RETURN BIT IS BEGIN RETURN(X AND Y) OR Z; END sam;;BEGIN PROCESS(A) BEGIN M(0)=sam(A(0), A(1), A(2)); M(1)=sam(A(2), A(0), A(1)); M(2)=sam(A(1), A(2), A(0)); END PROCESS; END art;;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE packexp IS --定义程序包 FUNCTION max( a,b : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR ; --定义函数首 -- FUNCTION func1 ( a,b,c : REAL ) RETURN REAL ; --定义函数首 -- FUNCTION * ( a ,b : INTEGER ) RETURN INTEGER ; --定义函数首 -- FUNCTION as2 (SIGNAL in1 ,in2 : REAL ) RETURN REAL ; --定义函数首 END ;;PACKAGE BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS --定义函数体 BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; --结束FUNCTION语句 END; --结束PACKAGE BODY语句;LIBRARY IEEE; -- 函数应用实例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.packexp.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 = max(dat1,dat2); --用在赋值语句中的并行函数调用语句 PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); --顺序函数调用语句 END PROCESS; END;;二、过程的定义与引用;在PROCEDURE结构中,参数可以是输入也可以是输出。在没有特别指定的情况下,“IN”作为常数;而“OUT”和“INOUT”则看作“变量”进行拷贝。 在过程

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档