网站大量收购独家精品文档,联系QQ:2885784924

eda第三部分.ppt

  1. 1、本文档共108页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
eda第三部分

Verilog的任务及函数 通过把代码分成小的模块或者使用任务和函数,可把一项任务分成许多较小的、易于管理的部分,从而提高代码的可读性、可维护性和可重用性。 任务: 一般用于编写测试模块或者行为描述的模块。其中可以包含时间控制(如:# delays, @, wait);也可以包含input, output 、inout 端口定义和参数;也可以调用其他的任务或函数 Verilog的任务及函数 函数: 一般用于计算,或者用来代替组合逻辑。 不能包含任何延迟;函数在零时间执行。 函数只有input变量,虽然没有output变量,可以通过函数名返回一个值。 可以调用其他的函数,但不可以调用任务 Verilog的任务及函数 [注意]: 只能调用本模块内的任务和函数。 在任务和函数中不能声明网络连接类型的变量。 所有的输入和输出变量实际上都是本地寄存器 。 只有当任务或函数调用并执行完后,才能有返回值。 [举例说明]: 若任务或函数中包含一个forever循环时,永远无法执行完,就不可能有返回值。 task说明语句 定义任务的语法如下: task 任务名; 端口及数据类型声明语句 语句1 语句2 ..... 语句n endtask task说明语句 任务定义: task my_task; input a, b; inout c; output d, e; … 语句 //执行任务工作相应的语句 … c = foo1; //赋初始值 d = foo2; //对任务的输出变量赋值t e = foo3; endtask 任务调用: my_task(v,w,x,y,z); task说明语句 任务仅用于测试模块中,因为: 不包含时间控制的任务与函数的作用相似。 包含时间控制的任务是不可综合的。 task说明语句 module orandtask(out, a, b, c, d, e); input a, b, c, d, e; output out; reg out; always @(a or b or c or d or e) orand(out, a, b, c, d, e); task orand; input a, b, c, d, e; output out; if(e==1) out=(a|b)(c|d); else out=0; endtask endmodule task说明语句 主要特点: 任务可以有input,output 和 inout参数。 传送到任务的参数和与任务I/O说明顺序相同。尽管传送到任务的参数名称与任务内部I/O说明的名字可以相同,但在实际中这通常不是一个好的方法。参数名的唯一性可以使任务具有好的模块性。 可以在任务内使用时序控制。 在Verilog中任务定义一个新范围 要禁止任务,使用关键字disable 。 function说明语句 函数的目的是返回一个用于表达式的值。 定义函数的语法: function 返回值的类型或范围 (函数名); 端口说明语句 变量类型说明语句 begin 语句 ........ end endfunction function说明语句 module orand (a, b, c, d, e, out); input [7: 0] a, b, c, d, e; output [7: 0] out; reg [7: 0] out; always @( a or b or c or d or e) out = f_or_and (a, b, c, d, e); // 函数调用 function [7:0] f_or_and; input [7:0] a, b, c, d, e; if (e = = 1) f_or_and = (a | b) (c | d); else f_or_and = 0; endfunction endmodule function说明语句 主要特性: 函数定义中不能包含任何时序控制语句。 函数至少有一个输入,不能包含任何输出或双向端口。 函数只返回一个数据,其缺省为reg类型。 传送到函数的参数顺序和函数输入参数的说明顺序相同。 函数在模块(module)内部定义。 函数不能调用任务,但任务可以调用函数。 函数在Verilog中定义了一个新的

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档