- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.子程序:过程和函数
构造体的行为描述:子程序 子程序:代码的复用 实现重复出现的硬件结构,节省代码 子程序用顺序语句编写 过程 函数 过程通过参数表与外界交换数据 函数通过参数接收外部数据,通过返回值向外部反馈数据 过程语句 procedure 子程序的一种 目的: 把复杂的进程分块 把可复用的行为单独描述供调用 包括过程说明和过程体 过程说明(外观),放在包的说明部分,便于外部调用 过程体,具体描述过程的功能,可放在包、进程和结构体中 过程说明: Procedure 过程名 (参数表); 过程名:标识符 参数表:形式参数及其端口类型和数据类型。 若端口类型为in,而未说明常量还是变量,默认为常量 若端口类型为inout或out,默认为变量 若参数是信号,需特别说明。 如:procedure and2(signal a,b: in std_logic signal c: out std_logic); 过程体: Procedure 过程名(参数表) is 说明部分; Begin 顺序语句; [return;] --与c语言不一样 End procedure 过程名; 过程体用于具体描述过程的功能,可放在package体中 Return语句为可选项,用于提前结束进程体。如果没有return,则执行完所有语句。 四输入与非门过程描述: Package a_pack is procedure NAnd(signal a,b,c,d: in std_logic; signal y: out std_logic; constant delay :in time); end pack; …… Package body a_pack is procedure NAnd(signal a,b,c,d: in std_logic; signal y: out std_logic; constant delay :in time) is begin y=not(a and b and c and d) after delay; return; --可选项 End NAnd; End a_pack; 过程调用 先定义后使用 调用: 过程名(参数表); 例:调用四输入与非门1 Library IEEE; use ieee.std_logic_1164.all; use work a_pack.all; --work为当前库 signal a: std_logic:=1; signal b: std_logic:=0; signal c: std_logic:=1; signal d: std_logic:=0; signal y: std_logic; constant delay:time:=10ns; …… nand(a,b,c,d,y,delay); 过程调用环境的顺序与并行 在顺序语句中调用过程语句 顺序执行 可视为一条复合语句 在并行语句中调用过程语句 整体与其他语句并行执行 由in或inout类型的参数触发,执行调用 过程的复用(重载) 重载:具有不同参数数目或不同数据类型的同名过程,称重载过程。 与oop中的重载类似。 Vhdl数据类型很难混用,故不同数据类型的复用很少,多为不同参数数目的过程复用。 例:3-8位译码器与8-3位编码器的过程描述和复用 描述程序 译码器的调用: dec_enc(“101”,’1’,’0’,’0’,bit8); Y= bit8; 调用上述过程,把位矢量由bit8传递给输出y。 编码器调用: dec_enc(,bit3); Y= bit3; 把矢量“101”由bit3赋给输出Y。 函数 能和运算符一起参加运算的广义表达式 用顺序语句实现 先定义后调用 包括函数说明和函数体 函数说明(外观),放在包的说明部分,便于外部调用 函数体,具体描述过程的功能,放在包、进程和结构体中 函数的格式 函数说明: function 函数名 (形参表) return 数据类型; 函数体: function 函数名 (形参表) return 数据类型 is 说明部分; Begin 顺序语句; return; End function 函数名; 函数名可以是标识符或“运算符”(运算符重载,给运算符以新的定义) 函数的参数都是输入值,不必指定端口方向 函数声明与定义 Package packexp is Function max(a,b: std_logic_vector) Return std_logic_vector; Function “*”(a
您可能关注的文档
- 6-3机械能守恒定律.ppt
- 6.1图的基本概念.ppt
- 6.1定积分的概念6.2定积分应用.ppt
- 6.3 Urysohn引理.ppt
- 6.3余角补角对顶角1课时.pdf
- 6.2 续 数量积 向量积 混合积.ppt
- (四)看盘要领之上压板与下托板.doc
- 6.3余角补角对顶角1课时公开课.ppt
- (题)2015-2016高一(下)中段联考试卷.pdf
- 10MW模块式高温气冷试验堆的初步动态分析.pdf
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)