




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1、11章的函数和手续、函数(function )和手续(procedure )统称为子程序(subprogram )。 子程序和进程的共同点:内部包含顺序描述代码,使用相同的顺序描述语句,如if、case、loop(wait语句除外)。 子程序和进程语句的差异:使用目的:进程可以直接在主代码中使用。子程序通常用于创建库以用于代码的重用和代码共享。 当然子程序也可以通过主代码直接制作使用。 按照使用方法,第一子例程不能直接从结构的剩馀部分读写信号,而且通过子例程的接口发生的过程不能直接读写结构中的其他信号。 2 .在子程序中不能使用wait语句。 2、子程序的存储位置: Package、Architecture、程序子程序和硬件规模:与通常软件中的子程序调用的不同:通常软件子程序调用增加处理时间在VHDL中调用子程序子程序调用次数与合并后的电路规模成比例。 在设计中必须严格控制子程序调用次数。 知识点补充(1) :3,子程序的类型:过程: in、inout、out参数的数量在0个以上。 可以获取多个返回值。 函数: 0个或多个输入参数,返回值。 返回值只有一个。 过程可以作为独立的语句结构存在,函数通常作为表达式的一部分被调用。 子程序有两部分:子程序声明和子程序主体. 知识点补充(2) :4,每次调用子程序时,首先将其初始化,即一次执行结束后再重新开始调用。 因此,无法保持子程序内部的值。 知识点补充(3) :5,5,11.1函数,一个函数是一系列描述的代码。 对于常见的设计问题,例如数据类型转换、算术运算等,想实现其功能的代码被共享、重用,主代码简洁容易理解-函数。 注意:函数不允许信号声明和组件实例化,因为每次调用函数时,它们都首先进行初始化,也就是说,一次运行结束后再次进行初始化,也就是说,不能保存函数内部的值。 使用函数:先创建函数,然后调用函数。6、函数的创建:函数名称return数据类型IS声明BEGIN (顺序描述代码) END函数名称;=constant常数名称:常数类型=SIGNAL信号名称:信号类型,参数列表表示函数的输入参数。 输入参数的数量是任意的,没有参数也可以。输入参数的类型:变量不能是参数,可以是常数和信号。 语法如下: 7、在VHDL语言中,函数语句只能计算数值,不能更改参数值,因此该参数的模式只有IN,通常可以省略。 FUNCTION的输入值从调用方复制到输入参数中,如果没有特别指定,FUNCTION语句会用常数或信号来处理。 因此,输入参数不能是变量类型。 此外,由于函数的输入值从调用方复制到输入参数,因此输入参数不能指定值的范围。 8、函数的输出:使用RETURN语句。 语法结构如下:return表达式; return语句只能在子程序(函数或过程)中使用,用于结束一个子程序的执行。 如果用于函数,则必须返回值。 返回值的类型由return之后的数据类型指定。 9、创建函数示例:创建名为、f1的函数,并有三个输入参数a、b、c。 其中,a和b是常数(关键字constant是可选的),c是信号。 输出参数(只有一个)为布尔型。 functionf1(a,b:integer; signal LC : STD _ logic _ vector ) returnboleanisbegin (顺序描述代码) ENDf1; 不能指定范围、没有变量类型、10、函数调用:函数可以独立地组成表达式,也可以作为表达式的一部分来调用。xmax(a ), b).-公式的一部分,11,示例11.1:positive_edge ()函数时钟上升边缘检测函数, 可以用于d触发器的设计-函数位置_ edge (signal ls : STD _ logic )返回boleanisbeginreturn (s) endpositive_edge; 对函数的调用-if positive _ edge (clk ) then.12,示例11.2:conv_integer ()函数, 可以将std_logic_vector类型的数据转换为integer类型并处理任意宽度和方向的输入向量:- -函数conv _ integer (signal vector : STD _ logic _ vector ) returnintegerisvariablesresult :智能范围0 to2* *向量长度- 1; begin if (矢量)=1thenresult :=1; elseresult:=0; endif; fori in (向量高-1)下降到(向量低) loop result :=result * 2; if (向量(I )=1) thenresult :=result 1; endif; 结束环; 返回结果; endconv_integer; - -y=conv _ integer (a )注意:不能在输入参数列表中指定信号的范围。 注意:不能在内部声明信号。 注意:虽然不知道输入信号的范围,但在调用函数时可以使用slength获取输入参数的具体范围。 必须存储13,11.2函数,14,示例11.3 :可以在主代码中定义函数,并在entity或architecture中显示该函数。 存储在architecture中的声明: libraryieee; useieee.std_logic_1164.all; entitydffisport(d,clk,rst:instd_logic; q :输出STD _ logic; enddff; architecture my _ archofdfisfunctionpositive _ edge (signal ls : STD _ logic ) returnboleanisbeginreturn (sevent ands=1); endpositive_edge; begin处理(clk,rst ) begin if (rst=1) thenq=0电子定位_ edge (clk ) thenq=d; endif; 结束处理; endmy_arch; 另外,15,例子11.4(1) :一旦在包集中定义了函数,它就被其他设计简单地重用和共享。 注意:函数在package中声明并在packagebody中定义。 函数-library IEEE; useieee.std_logic_1164.all; 数据包my _数据包isfunctionpositive _ edge (信号ls : STD _ logic )返回布尔; endmy_package; packagebodyy _ packageisfunctionpositive _ edge (signal ls : STD _ logic ) returnboleanisbeginreturn (sevent ands=1); endpositive_edge; endmy_package; 声明、重定义、16、示例11.4(2) :调用主代码中在包集中定义的函数。 -在主代码中在包集中定义的函数-libraryieee; useieee.std_logic_1164.all; usework.my_package.all; entitydffisport(d,clk,rst:instd_logic; q :输出STD _ logic; enddff; architecture my _ archofdfisbeginprocess (clk,rst ) begin if (rst=1) thenq=0; elsifpositive_edge(clk)thenq=d; endif; 结束处理; endmy_arch;17、例11.5 :在分组集中包含conv_integer ()函数、libraryieee; useieee.std_logic_1164.all; 包my _包包isfunctionconv _ integer (信号向量: STD _ logic _ vector )返回整数; endmy_package; packagebodyy _ packageisfunctionconv _ integer (信号向量: STD _ logic _ vector ) returnintegerisvariableresult : integer ra begin if (矢量)=1thenresult :=1; elseresult:=0; endif; fori in (向量高-1)下降到(向量低) loop result :=result * 2; if (向量(I )=1) thenresult :=result 1; endif; 结束环; 返回结果; endconv_integer; endmy_package; 在主代码中定义的函数- library IEEE; useieee.std_logic_1164.all; usework.my_package.all; entity conv _ int2isport (a : instd _ logic _ vector (0to3) y : outintegerrange0to 15; endconv_int2; architecture my _ archofconv _ int2isbeginy=conv _ integer (a ) endmy _ arch;18、例11.6 :“”函数:功能说明:扩展定义的“”运算符,进行std_logic_vector型数据的相加。 实现方法:在包集中定义函数,并通过主代码调用。函数-library IEEE; useieee.std_logic_1164.all; packagemy_packageisfunction(a,b : STD _ logic _ vector ) return STD _ logic _ vector; endmy_package; packagebodyy _ packageisfunction “(a,b : STD _ logic _ vector ) return STD _ logic _ vectorvariableresult : STD _ logic _ vector (begin carry :=0reverse _ rangelooppresult (I ) :=a (I ) xorb (I ) xor carry; carry :=(a ) andb (I ) ) or (a ) and carry (b ) and carry (I ) end loop; 返回结果; 结束 ; endmy_package; 比较特殊的函数名,19,-在主代码中在包集中定义的函数- library IEEE; useieee.std_logic_1164.all; usework.my_package.all; 实体附加_比特(a :安装_逻辑_向量(3下载到0 ) y :输出STD _逻辑_向量(3下载到0 ) ); endadd_bit; architecture my _ archofadd _ bitisconstantb : STD _ logic _ vector (3down to0) :=“0011”) constant c:STD _ logic _ vector (3down to0) thenproc_add(in1,in2,out_carry,out_sum )、25,11.4进程的存储与函数相同! 另外,26,例11.9 :过程存储在主码中,多个输出应采用过程方式,过程sort的功能描述:输入2个8位,比较无符号整数,数值小的一方从min_out输出,数值大的一方从max_out输出、27、代码实现:- useieee.std_logic_1164.all; entity min _ maxis generic (限制: integer :=255 )端口(ENA : in位; inp1、InP 2: inintegerrange0to limit; 最小_ out,最大_ out :输出限制; endmin_max; architecture my _ archofmin _ maxis procedur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版高中数学必修21.1《简单几何体》(简单旋转体)听评课记录
- 村民自建房培训课件总结
- 部编版语文七年级上册第三单元《论语十二章》 听评课记录
- 部编版语文七下《带上她的眼睛》听评课记录
- 鲁科版生物六年级下册《第三节 种子植物》听评课记录1
- 部编版七年级下册语文同步听评课记录《9 阿长与《山海经》》
- 人音版音乐七下第2单元演唱《长江之歌》听评课记录2
- 人教版数学一年级上册第三单元 第6课时 减法(听评课记录)
- 人教版语文七年级上册第22课《赫尔墨斯和雕像者》听评课记录2
- 部编版八年级语文下册第四单元单元总结提升四听评课记录
- 消费品市场2025年消费者对绿色包装认知及需求调研可行性研究报告
- 台球厅消防知识培训课件
- 充电桩运维服务协议
- 2025便利店加盟的合同样本
- 评职称老师考试题目及答案
- 2025年内分泌风湿免疫科进修人员出科理论考试试题及答案
- 2025至2030中国防砸安全鞋行业运营态势与投资前景调查研究报告
- 学堂在线 高技术与现代局部战争 章节测试答案
- 2025年医疗器械仓库管理培训试题及答案
- 2024年湖南省古丈县事业单位公开招聘工作人员考试题含答案
- 助焊剂存储管理办法
评论
0/150
提交评论