第6章子程序与程序包.ppt

上传人:s****8 文档编号:93912624 上传时间:2023-07-17 格式:PPT 页数:39 大小:858.50KB
返回 下载 相关 举报
第6章子程序与程序包.ppt_第1页
第1页 / 共39页
第6章子程序与程序包.ppt_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《第6章子程序与程序包.ppt》由会员分享,可在线阅读,更多相关《第6章子程序与程序包.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6 6章章 子程序与程序包子程序与程序包o子程序子程序o程序包程序包本章内容:本章内容:6.1 子程序子程序子程序子程序就是在主程序调用它以后能够将处理就是在主程序调用它以后能够将处理结果返回主程结果返回主程序序的程序模块。它是利用的程序模块。它是利用顺序语句顺序语句实现算法的,应用它可实现算法的,应用它可以更有效地完成以更有效地完成重复性重复性的设计工作。的设计工作。定义位置定义位置(程序包、结构体和进程)决定使用范围。(程序包、结构体和进程)决定使用范围。子程序具有子程序具有可重载可重载的特点,即允许有许多重名的子程序,的特点,即允许有许多重名的子程序,但其参数、返回值的数据类型不同。

2、但其参数、返回值的数据类型不同。VHDLVHDL中有中有两种类型两种类型的子程序:的子程序:过程过程(Procedure(Procedure)和)和函数函数(FunctionFunction)。)。6.1 子程序子程序函数与过程函数与过程p 函数的参量只能是方式为函数的参量只能是方式为ININ的信号和常量,而过程的的信号和常量,而过程的参量可以为参量可以为inin,outout和和inoutinout方式;方式;p 过程能返回多个变量,函数只能有一个返回值;过程能返回多个变量,函数只能有一个返回值;p 过程中可以有过程中可以有WAITWAIT语句,而函数中却不能有该语句。语句,而函数中却不能有

3、该语句。o在在VHDL中中有有多多种种函函数数形形式式,如如库库中中现现成成的的具具有有专专用用功能的功能的预定义函数预定义函数和用于不同目的的和用于不同目的的自定义函数自定义函数。函数的语言表达格式如下:函数的语言表达格式如下:FUNCTION 函数名(参数表)函数名(参数表)RETURN 数据类型数据类型 -函数首函数首FUNCTION 函数名(参数表)函数名(参数表)RETURN 数据类型数据类型 IS -函数体函数体 说明部分说明部分 BEGIN 顺序语句顺序语句;END FUNCTION 函数名函数名;p函数定义格式:函数定义格式:FUNCTION 函数名(参数表)函数名(参数表)R

4、ETURN 数据类型数据类型 -函数首函数首FUNCTION 函数名(参数表)函数名(参数表)RETURN 数据类型数据类型 IS -函数体函数体 说明部分说明部分 BEGIN 顺序语句顺序语句;END FUNCTION 函数名函数名;6.1.1 函数函数p 说明说明:(1)函数首和函数体函数首和函数体定义位置定义位置 程序包:函数首放在包说明中;函数体放在包体中;用程序包:函数首放在包说明中;函数体放在包体中;用USE打开。打开。结构体:结构体的说明部分,只需要函数体部分,并且结构体:结构体的说明部分,只需要函数体部分,并且只对该设计实体可见。只对该设计实体可见。进程:进程的说明部分,只需要

5、函数体部分,只对该进进程:进程的说明部分,只需要函数体部分,只对该进程可见。程可见。(2)参数参数 信号或常数,默认为常数信号或常数,默认为常数6.1.1 函数函数p函数首函数首l 函数首是由函数名、参数表和返回值的数据类型三函数首是由函数名、参数表和返回值的数据类型三部分组成的。部分组成的。l 函数首的名称即为函数的名称,需放在关键词函数首的名称即为函数的名称,需放在关键词FUNCTION之后,它可以是普通的标识符,也可以是之后,它可以是普通的标识符,也可以是运算符运算符(这时必须加上双引号这时必须加上双引号)。6.1.1 函数函数l【例例】FUNCTION FUNC1(A,B,C:REAL

6、)RETURN REAL;FUNCTION *(A,B:INTEGER)RETURN INTEGER;-注意函数名注意函数名*要用引号括住要用引号括住 FUNCTION AS2(SIGNAL IN1,IN2:REAL)RETURN REAL;-注意信号参量的写法注意信号参量的写法以上是三个不同的函数首,它们都放在某一程序包的说明部分。以上是三个不同的函数首,它们都放在某一程序包的说明部分。p 函数首函数首p 函数体函数体l 函数体包括对数据类型、常数、变量等的局部说明函数体包括对数据类型、常数、变量等的局部说明以及用以完成规定算法或转换的顺序语句,并以关键以及用以完成规定算法或转换的顺序语句,

7、并以关键词词END FUNCTION 以及函数名结尾。以及函数名结尾。l一旦函数被调用,就将执行这部分语句。一旦函数被调用,就将执行这部分语句。6.1.1 函数函数l【例例】ENTITY FUNC ISPORT(A:IN BIT_VECTOR(0 TO 2);M:OUT BUT_VECTOR(0 TO 2);END ENTITY FUNC;ARCHITECTURE ART OF FUNC ISFUNCTION SAM(X,Y,Z:BIT)RETURN BIT IS -定义函数定义函数SAM,该函数无函数首该函数无函数首BEGINRETURN(X AND Y)OR Y;END FUNCTION

8、SAM;p 函数体函数体BEGINPROCESS(A)ISBEGIN 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 ARCHITECTURE ART;-当当A的三个位输入元素的三个位输入元素A(0)、A(1)和和A(2)中的任何一位有变中的任何一位有变化时,将启动对函数化时,将启动对函数SAM的调用,并将函数的返回值赋给的调用,并将函数的返回值赋给M输出输出p 函数体函数体例例6-3architecture Behavioral of func isfunction

9、 max(x,y,z:std_logic)return std_logic isbegin return(x and y and z);end function max;beginf(0)=max(a(0),b(0),c(0);f(1)=max(a(1),b(1),c(1);f(2)=max(a(2),b(2),c(2);f(3)V1:=“0101”;WHEN“0101”=V1:=“0000”;WHEN OTHERS=V1:=“1111”;END CASE;END PROCEDURE PRG1;p过程体过程体例例6-6architecture Behavioral of func isPROC

10、EDURE and3(signal x,y,z:in std_logic;signal e:out std_logic)isbegin e b THEN RETURN a;ELSE RETURN b;END IF;END FUNCTION max;-结束结束FUNCTION语句语句 END;-结束结束PACKAGE BODY语句语句p程序包体程序包体【例例6-9】引用例引用例6-8中定义的程序包中定义的程序包packexp中的函数中的函数max:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.packexp.ALL;ENTITY axamp

11、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;

12、程序包引用程序包引用STD_LOGIC_1164程序包程序包 它是它是IEEE库中最常用的程序包,是库中最常用的程序包,是IEEE的标准程序的标准程序包。其中包含了一些数据类型、子类型和函数的定义,这包。其中包含了一些数据类型、子类型和函数的定义,这些定义将些定义将VHDL扩展为一个能描述多值逻辑扩展为一个能描述多值逻辑(即除具有即除具有“0”和和“1”以外还有其他的逻辑量,如高阻态以外还有其他的逻辑量,如高阻态“Z”、不定态不定态“X”等等)的硬件描述语言,很好地满足了实际数字的硬件描述语言,很好地满足了实际数字系统的设计需求。系统的设计需求。6.2.3常用预定义程序包常用预定义程序包STD

13、_LOGIC_ARITH程序包程序包 它预先编译在它预先编译在IEEE库中,是库中,是Synopsys公司的程序公司的程序包。此程序包在包。此程序包在STD_LOGIC_1164程序包的基础上扩程序包的基础上扩展了三个数据类型:展了三个数据类型:UNSIGNED、SIGNED和和SMALL_INT,并为其定义了相关的算术运算符和转并为其定义了相关的算术运算符和转换函数。换函数。6.2.3常用预定义程序包常用预定义程序包STD_LOGIC_UNSIGNED、STD_LOGIC_SIGNED 这两个程序包都是这两个程序包都是Synopsys公司的程序包,都预先编译公司的程序包,都预先编译在在IEE

14、E库中。这些程序包重载了可用于库中。这些程序包重载了可用于INTEGER型及型及STD_LOGIC和和STD_ LOGIC_VECTOR型混合运算的运型混合运算的运算符,并定义了一个由算符,并定义了一个由STD_LOGIC_VECTOR型到型到INTEGER型的转换函数。型的转换函数。6.2.3常用预定义程序包常用预定义程序包STANDARD和和TEXTIO程序包程序包 这两个程序包是这两个程序包是STD库中的预编译程序包。库中的预编译程序包。STANDARD程序包中定义了许多基本的数据类型、子类程序包中定义了许多基本的数据类型、子类型和函数。型和函数。6.2.3常用预定义程序包常用预定义程序包

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁