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

task仿真应注意的问题.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
task仿真应注意的问题 task仿真应注意的问题 Task 的用法说明 任务就是一段封装在“task-endtask ”之间的程序。任务是通过调用来执行的,而且只有 在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会 执行的。调用某个任务时可能需要它处理某些数据并返回操作结果,所以任务应当有接收数 据的输入端和返回数据的输出端。另外,任务可以彼此调用,而且任务内还可以调用函数。 任务定义的形式如下: task task_id; [declaration] procedural_statement endtask 其中,关键词 task 和 endtask 将它们之间的内容标志成一个任务定义,task 标志着一个 任务定义结构的开始;task_id 是任务名;可选项 declaration 是端口声明语句和变量声明语 句,任务接收输入值和返回输出值就是通过此处声明的端口进行的;procedural_statement 是一段用来完成这个任务操作的过程语句,如果过程语句多于一条,应将其放在语句块内; endtask 为任务定义结构体结束标志。下面给出一个任务定义的实例。 :定义一个任务。 task task_demo; //任务定义结构开头,命名为 task_demo input [7:0] x,y; //输入端口说明 output [7:0] tmp; //输出端口说明 if(xy) //给出任务定义的描述语句 tmp = x; tmp = y; endtask 上述代码定义了一个名为“task_demo”的任务,求取两个数的最大值。在定义任务时, 有下列六点需要注意: (1)在第一行“task ”语句中不能列出端口名称; (2)任务的输入、输出端口和双向端口数量不受限制,甚至可以没有输入、输出以及 (3)在任务定义的描述语句中,可以使用出现不可综合操作符合语句(使用最 的就是延迟控制语句) ,但这样会造成该任务不可综合。 (4)在任务中可以调用其他的任务或函数,也可以调用自身。 (5)在任务定义结构内不能出现 initial 和 always 过程块。 (6)在任务定义中可以出现“disable 中止语句” ,将中断正在执行的任务,但其是不 可综合的。当任务被中断后,程序流程将返回到调用任务的地方继续向下执行。 虽然任务中不能出现 initial 语句和 always 语句语句, 但任务调用语句可以在 initial 语句 和 always 语句中使用,其语法形式如下: task_id[(端口1, 端口 2, ........, 端口 N)]; 其中 task_id是要调用的任务名,端口 1、端口 2,?是参数列表。参数列表给出传入任 务的数据(进入任务的输入端)和接收返回结果的变量(从任务的输出端接收返回结果) 。 任务调用语句中,参数列表的顺序必须与任务定义中的端口声明顺序相同。任务调用语句是 过程性语句,所以任务调用中接收返回数据的变量必须是寄存器类型。下面给出一个任务调 例:通过 Verilog HDL 的任务调用实现一个 4 比特全加器。 module EXAMPLE (A, B, CIN, S, COUT); input [3:0] A, B; input CIN; output [3:0] S; output COUT; reg [3:0] S; reg COUT; reg [1:0] S0, S1, S2, S3; task ADD; input A, B, CIN; output [1:0] C; reg [1:0] C; reg S, COUT; S = A ^ B ^ CIN; COUT = (AB) | (ACIN) | (BCIN); C = {COUT, S}; endtask always @(A or B or CIN) begin ADD (A[0], B[0], CIN, S0); ADD (A[1], B[1], S0[1], S1); ADD (A[2], B[2], S1[1], S2); ADD (A[3], B[3], S2[1], S3); S

文档评论(0)

软件开发 + 关注
官方认证
服务提供商

十余年的软件行业耕耘,可承接各类需求

认证主体深圳鼎云文化有限公司
IP属地陕西
统一社会信用代码/组织机构代码
91440300MA5G24KH9F

1亿VIP精品文档

相关文档