EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt

EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt

ID:50354716

大小:1.33 MB

页数:257页

时间:2020-03-08

EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt_第1页
EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt_第2页
EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt_第3页
EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt_第4页
EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt_第5页
资源描述:

《EDA技术及应用 第二版 教学课件 作者 谭会生 第1-4章第3章 VHDL编程基础B.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.6子程序(SUBPROGRAM)3.6.1函数(FUNCTION)在VHDL中有多种函数形式,如库中现成的具有专用功能的预定义函数和用于不同目的的用户自定义函数。函数的语言表达格式如下:FUNCTION函数名(参数表)RETURN数据类型;--函数首FUNCTION函数名(参数表)RETURN数据类型IS--函数体开始[说明部分;]BEGIN顺序语句;ENDFUNCTION函数名;--函数体结束一般地,函数定义由两部分组成,即函数首和函数体。1.函数首函数首是由函数名、参数表和返回值的数据类型三部分组成的。函数首的名称即为函数的名称,需放在关键词FUNCT

2、ION之后,它可以是普通的标识符,也可以是运算符(这时必须加上双引号)。【例3.6.1】FUNCTIONFUNC1(A,B,C:REAL)RETURNREAL;FUNCTION"*"(A,B:INTEGER)RETURNINTEGER;--注意函数名*要用引号括住FUNCTIONAS2(SIGNAIN1,IN2:REAL)RETURNREAL;--注意信号参量的写法以上是三个不同的函数首,它们都放在某一程序包的说明部分。2.函数体函数体包括对数据类型、常数、变量等的局部说明以及用以完成规定算法或转换的顺序语句,并以关键词ENDFUNCTION以及函数名结尾。一

3、旦函数被调用,就将执行这部分语句。【例3.6.2】ENTITYFUNCISPORT(A:INBIT_VECTOR(0TO2);M:OUTBUT_VECTOR(0TO2));ENDENTITYFUNC;ARCHITECTUREARTOFFUNCISFUNCTIONSAM(X,Y,Z:BIT)RETURNBITIS--定义函数SAM,该函数无函数首BEGINRETURN(XANDY)ORY;ENDFUNCTIONSAM;BEGINPROCESS(A)ISBEGINM(0)<=SAM(A(0),A(1),A(2));--当A的三个位输入元素A(0)、A(1)和A(2

4、)中的M(1)<=SAM(A(2),A(0),A(1));--任何一位有变化时,将启动对函数SAM的调用,M(2)<=SAM(A(1),A(2),A(0));--并将函数的返回值赋给M输出ENDPROCESS;ENDARCHITECTUREART;3.6.2重载函数(OVERLOADEDFUNCTION)VHDL允许以相同的函数名定义函数,即重载函数。但这时要求函数中定义的操作数具有不同的数据类型,以便调用时用以分辨不同功能的同名函数。在不同数据类型操作数构成的同名函数中,以运算符重载式函数最为常用。【例3.6.3】LIBRARYIEEE;--程序包首USEI

5、EEE.STD_LOGIC_1164.ALL;USEIEEESTD_LOGIC_ARITH.ALL;PACKAGESTD_LOGIC_UNSIGNEDISFUNCTION“+”(L:STD_LOGIC_VECTOR;R:INTEGER)RETURNSTD_LOGIC_VECTOR;FUNCTION“+”(L:INTEGER;R:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTOR;FUNCTION“+”(:STD_LOGIC_VECTOR;R:STD_LOGIC)RETURNSTD_LOGIC_VECTOR;FUNCTIONSHR(A

6、RG:STD_LOGIC_VECTOR;COUNT:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTOR;…ENDPACKAGESTD_LOGIC_UNSIGNED;LIBRARYIEEE;--程序包体USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;PACKAGEBODYSTD_LOGIC_UNSIGNEDISFUNCTIONMAXIMUM(L,R:INTEGER)RETURNINTEGERISBEGINIFL>RTHENRETURNL;ELSERETURNR;ENDIF;

7、ENDFUNCTIONMAXIMUM;FUNCTION“+”(L:STD_LOGIC_VECTOR;R:INTEGER)RETURNSTD_LOGIC_VECTORISVARIABLERESULT:STD_LOGIC_VECTOR(L'RANGE);BEGINRESULT:=UNSIGNED(L)+R;RETURNSTD_LOGIC_VECTOR(RESULT);ENDFUNCT10N"+";…ENDPACKAGEBODYSTD_LOGIC_UNSIGNED;通过此例,不但可以从中看到在程序包中完整的函数置位形式,而且还将注意到,在函数首的三个函数名都是同名的

8、,即都是以加法运算符“+”作为函数名。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。