文档详情

(VHDL主要描述语句)解析.ppt

发布:2016-04-17约2.53万字共80页下载文档
文本预览下载声明
2、函数 FUNCTION 函数名 [(参数声明)] RETURN 数据类型 IS [说明部分;] BEGIN [顺序处理语句;] RETURN [返回变量名]; END 函数名; 函数调用的实质内容要先装入程序包中(Package): FUNCTION 函数名 [(参数声明)] RETURN 数据类型; FUNCTION min(a,b:IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR; FUNCTION min(a,b:IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS VARIABLE temp:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF(ab) THEN temp:=a; ELSE temp:=b; END IF; RETURN temp; END min; 函数调用: 函数名(关联参数表); 使用说明 1、函数的参数表中只能为IN的信号与常量; 2、函数返回值只有一个(通过RETURN实现,由函数名传给调用者); 3、也可以像过程一样使用位置关联方式和名字关联方式; c=min(a,b); 1、过程可以有多个返回值,函数只有一个; 2、参数传递方式不同: 过程(IN OUT INOUT) 函数(IN) 3、过程可以作为一种独立的语句结构而单独存在、单独 使用;函数通常为表达式的一部分来调用。 过程(Procedure) 函数(Function)两者的主要区别: 过程和函数都有两种形式:即并行过程和并行函数以及 顺序过程和顺序函数。 程序包应用举例 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; PACKAGE pack IS FUNCTION min(a,b:IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR; PROCEDURE vector_to_int (s:IN STD_LOGIC_VECTOR(7 DOWNTO 0); result:INOUT INTEGER); --注意不能为BUFFER类型 COMPONENT cnt_8 PORT(reset:IN STD_LOGIC; clk:IN STD_LOGIC; q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT; END pack; PACKAGE BODY pack IS FUNCTION min(a,b:IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS VARIABLE temp:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF(ab) THEN temp:=a; ELSE temp:=b; END IF; RETURN temp; END min; PROCEDURE vector_to_int (SIGNAL s:IN STD_LOGIC_VECTOR(7 DOWNTO 0); result:INOUT INTEGER) IS VARIABLE t:INTEGER:=1; BEGIN FOR i IN 1 TO 7 LOOP t:=t*2; IF s(i)=1 THEN result:=result+t; END IF; END LOOP; IF s(0)=1 THEN result:=result+1; END IF; END vector_to_int; END pack; 调用中程序包PACK中的函数 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE WORK.PACK.ALL; ENTITY pack_
显示全部
相似文档