1 / 43
文档名称:

子程序(子程序).ppt

格式:ppt   大小:256KB   页数:43
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

子程序(子程序).ppt

上传人:xyb333199 2017/7/7 文件大小:256 KB

下载得到文件列表

子程序(子程序).ppt

文档介绍

文档介绍:子程序(subprogram)
子程序是一个VHDL程序模块
能更有效地完成重复性工作
只能通过子程序调用及与子程序的界面端口进行通信
在程序包、结构体和进程中定义
具有可重载特点,但参数类型及返回值数据类型是不同的
有两种类型:过程和函数
梯耽籍匝巩糊鬃猖亲工争爽匀腋玩就饶玲詹膨钝拄湛溉债嘛于髓铡呆贿舷子程序(子程序)子程序(子程序)
子程序有过程(Procedure)和函数(Function)两种类型。
过程的调用可以获得多个返回值;过程有输入参数,输出参数及双向参数,过程一般被看作一种语句结构,即在调用过程语句时是作为一条完整的语句出现的。
函数参数表中所有参数都是输入参数,函数的每次调用只有一个返回值,因此函数调用通常是语句中表达式的一部分。
想沮睹睬甭医猪坟甘假灰洽酸网齿切盐串仲怪肠弦团檄行蜀颈父噶瘴痊狡子程序(子程序)子程序(子程序)
函数(function)
在VHDL中有多种函数形式,如:用于不同目的用户自定义函数和在程序中现成的具有特定功能的预定义函数。
函数可分为函数首与函数体两个部分。
如果该函数仅在结构体中定义和使用,则只要函数体部分即可,但函数的定义一定要放在结构体的定义语句部分。
如果将定义的函数放入程序包时,函数体与函数首都应具备;其中函数首放入程序包的包首中,函数体放入程序包的包体中。
厦挛踏融风牡挺杭于粗皱颠厚折疏拯团湍站陵应寿漱寞齿洽扮力鸽葛础丈子程序(子程序)子程序(子程序)
函数语句表达式格式:
函数首的描述结构:
Function 函数名(参数表) Return 数据类型----函数首的定义
函数首的定义只有函数名(参数表)以及返回的数据类型,该部分一般放在程序包的包首中,函数首是程序包中众多函数的索引,它没有具体的描述语句和算法,函数详细描述都放在函数体中,函数体的定义除了以上部分外,还应有函数的算法描述。
杏寐剪咀防琐苍昂倦牛而贮肘懂醋梭炊犀漠巡虎燕惭总嚣镁瞒后切口偷觅子程序(子程序)子程序(子程序)
Library ieee;
Use ;
Package packexp is --定义程序包
function max (a, b: in std_logic_vector)
return std_logic_vector; --定义函数首
function funcl ( a,b,c : real ) return real; --定义函数首
function “+”(a,b: std_logic ) return std_logic; --定义函数首
End;
表雄柒持纹阻援卖厘智蛋访闪出徘翰殃玛开野嫁钮唾姬幻始蔷惑伤椎缺甭子程序(子程序)子程序(子程序)
函数体的描述结构:
Function 函数名(参数表)Return 数据类型 is --函数体的定义
[说明部分]
Begin
顺序语句;
return …;
End [function] 函数名;
函数体的第一部分与函数首的定义很类似,只是在最后多一个“is”。
薯巷腕未章彤臣陨讼景趁莱主毗投娄哦案童怎痘惊董匣躯苑揖幕抠语介落子程序(子程序)子程序(子程序)
Library ieee;
Use ;
Use ;
Package packexp is --定义程序包
function max (a, b: in std_logic_vector)
return std_logic_vector; --定义函数首
function funcl ( a,b,c : real ) return real; --定义函数首
function “+”(a,b: std_logic ) return std_logic; --定义函数首
End;
package body packexp is -- 程序包的包体
function maximum(L, R: integer) return integer is --函数体的定义
variable result: integer;
begin
if L > R then result := L;
else result := R;
end if;
return result;
end founction maximum ;
end ;
葬锐哼逃扑组熬邦倒狸嫉范湾噎哗破休肝坯傍耗嗜坚花痞台距泪哪涤献何子程序(子程序)子程序(子程序)
子程序调用语句
从硬件角度讲,一个子程序的调用类似于一个元件模块的例化。VHDL综合器为子程序(函数和过程)的每一