- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章子程序与序包
第6章 子程序与程序包 子程序 程序包 6.1 子程序 6.1 子程序 函数与过程 函数的参量只能是方式为IN的信号和常量,而过程的参量可以为in,out和inout方式; 过程能返回多个变量,函数只能有一个返回值; 过程中可以有WAIT语句,而函数中却不能有该语句。 在VHDL中有多种函数形式,如库中现成的具有专用功能的预定义函数和用于不同目的的自定义函数。 说明: ( 1) 函数首和函数体定义位置 程序包:函数首放在包说明中;函数体放在包体中;用USE打开。 结构体:结构体的说明部分,只需要函数体部分,并且只对该设计实体可见。 进程:进程的说明部分,只需要函数体部分,只对该进程可见。 (2) 参数 信号或常数,默认为常数 函数首 函数首是由函数名、参数表和返回值的数据类型三部分组成的。 函数首的名称即为函数的名称,需放在关键词FUNCTION之后,它可以是普通的标识符,也可以是运算符(这时必须加上双引号)。 【例】 FUNCTION FUNC1(A,B,C:REAL) RETURN REAL; FUNCTION * (A,B:INTEGER) RETURN INTEGER; --注意函数名*要用引号括住 FUNCTION AS2(SIGNAL IN1,IN2:REAL) RETURN REAL; --注意信号参量的写法 以上是三个不同的函数首,它们都放在某一程序包的说明部分。 函数体 函数体包括对数据类型、常数、变量等的局部说明以及用以完成规定算法或转换的顺序语句,并以关键词END FUNCTION 以及函数名结尾。 一旦函数被调用,就将执行这部分语句。 【例】 ENTITY FUNC IS PORT ( A:IN BIT_VECTOR(0 TO 2); M:OUT BUT_VECTOR (0 TO 2)); END ENTITY FUNC; ARCHITECTURE ART OF FUNC IS FUNCTION SAM(X,Y,Z:BIT) RETURN BIT IS --定义函数SAM,该函数无函数首 BEGIN RETURN (X AND Y) OR Y; END FUNCTION SAM; BEGIN PROCESS(A) IS 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 ARCHITECTURE ART; --当A的三个位输入元素A(0)、A(1)和A(2)中的任何一位有变化时,将启动对函数SAM的调用,并将函数的返回值赋给M输出 例6-3 architecture Behavioral of func is function max(x,y,z: std_logic)return std_logic is begin return (x and y and z); end function max; begin f(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)=max(a(3),b(3),c(3)); end Behavioral; 过程的定义格式: PROCEDURE 过程名(参数表); --过程首 PROCEDURE 过程名(参数表) IS --过程体开始 [说明部分;] BEGIN 顺序语句; END PROCEDURE 过程名; --过程体结束 过程首 过程首由过程名和参数表组成。 参数表用于对常数、变量和信号三类数据对象目标作出说明,并用关键词IN、OUT和INOUT定义这些参数的工作模式,即信息的流向。 【例】 PROCEDURE PRO1(VARIABLE A,B:INOUT REAL); PROCEDURE PRO2 (CONSTANT A1:IN INTEGER; VARIABLE B1:OUT INTEGER); PROCEDURE PRO3 (SIGNAL S1:INOUT BIT);
文档评论(0)