在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18872|回复: 13

[求助] verilog中使用task出现的问题

[复制链接]
发表于 2012-1-3 09:23:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
小弟在使用verilog task中出现了一个问题。即在调用存在端口的task时,相应信号对应的波形不一致。即capture_0_client_cmd_fifo_wr_cmd信号和task中的wr_address_into_fifo信号;还有capture_0_client_cmd_fifo_wr_cmd_en信号和task中的wr_address_into_fifo_en信号不一致。波形如下图所示。
代码如下所示:

module task_test;
  reg         wclk;  //74.25M
  //wclk
  initial
  begin
    wclk = 1'b0;
    forever
    begin
      #6734;
      wclk = ~wclk;
    end
  end

  integer addr0;
  integer j0;
  reg  [29:0]            capture_0_client_cmd_fifo_wr_cmd      ;
  reg                    capture_0_client_cmd_fifo_wr_cmd_en   ;

  initial
  begin
    addr0   =  5242880;
  end

  task write_BL0;   //only write 256 bit data
  output [29:0] wr_address_into_fifo;
  output        wr_address_into_fifo_en;
  input  [26:0] wr_addr;
  begin
    #100;
    wr_address_into_fifo_en = 1'b1;
    wr_address_into_fifo = {3'b0,wr_addr};
    @(posedge wclk);
    #100;
    wr_address_into_fifo_en = 1'b0;
  end
  endtask

  initial
  begin
    for(j0=0;j0<50;j0=j0+1)
      @(posedge wclk);
    write_BL0(capture_0_client_cmd_fifo_wr_cmd,capture_0_client_cmd_fifo_wr_cmd_en,addr0[26:0]);
  end

  integer t;
  initial
  begin
    for(t=0;t<1000;t=t+1)
      @(posedge wclk);
    $stop;
  end
endmodule

波形图

波形图
 楼主| 发表于 2012-1-3 09:25:28 | 显示全部楼层
麻烦大牛指点下。。。
 楼主| 发表于 2012-1-3 09:26:18 | 显示全部楼层
麻烦大牛指点下。。。
发表于 2012-1-3 11:59:06 | 显示全部楼层
task应该是等你这个任务结束的时候才会将输出值送出去
  task write_BL0;   //only write 256 bit data
  output [29:0] wr_address_into_fifo;
  output        wr_address_into_fifo_en;
  input  [26:0] wr_addr;
  begin
    #100;
    wr_address_into_fifo_en = 1'b1;
    wr_address_into_fifo = {3'b0,wr_addr};
    @(posedge wclk);
    #100;
    wr_address_into_fifo_en = 1'b0;
  end
  //  到这里才将output输出出去
  endtask

这只是我的理解,我手里没有确切的资料可以有证明是这样
发表于 2012-1-3 13:44:29 | 显示全部楼层
楼上说的很全面了
 楼主| 发表于 2012-1-3 22:24:57 | 显示全部楼层
楼上讲解得对的,非常感谢!
发表于 2012-3-27 13:00:51 | 显示全部楼层
很好,学习学习
发表于 2012-3-28 08:56:52 | 显示全部楼层
原来是这样。
发表于 2012-3-28 10:09:55 | 显示全部楼层
task存在被同时调用的情况吧,而且非automatic的task的参数以及中间变量的内存空间是一样的。
发表于 2012-3-30 22:49:47 | 显示全部楼层
共同吸取经验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 08:43 , Processed in 0.027452 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表