verilog的延时语句

延时语句有两种情况,如下:

#10 a = b;  //延时10ns后,在执行a=b;
a = #10 b;  //延时10ns后,将当前时刻的b值赋给a,即,先将要更新的值记录下来,延时10ns后,在赋给a;

测试用例如下所示:

`timescale 1ns/1ps

module tb_test_delay();
    reg[3:0] x,y,z;
    reg[3:0] a;


    initial begin
        a = 0; //0时刻 a为0
        #25 a = 1; //25ns后,即25ns时刻,a的值更新为1;
        #20 a = a + 1;  //20ns后,即45ns时刻,a的值自加1;
        a= #20 y + 2;  //20ns后,即65ns时刻,将当前时刻(45ns时刻)的y值加1后赋给a;
        
    end



    initial begin
        #20;           //延时20ns,直到20ns时刻在向下执行;
        x = #10 a;     //在10ns后,即30ns时刻,将a在当前时刻(20ns时刻)的值赋给x; 整个时间刻度会增加10ns;
        #10 y = a;      //10ns后,即40ns时刻,将a的值赋给y;
        #10 z = a;      //10ns后,即50ns时刻,将a的值赋给z;
        #10 y = y + 1;  //10ns后,即60ns时刻,y的值自加1;
    end
endmodule

仿真截图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值