FPGA仿真时使用任务及随机函数编写激励测试文件

 # 前言
·在FPGA的设计中,我们经常会使用到按键来实现功能仿真,例如按键消抖设计,dpram设计等,使用任务及随机函数编写激励测试文件可以更加快捷方便。

 


---


# 一、任务及随机函数
1、任务:
    task<任务名>
            <端口及数据类型声明>
            <语句1>
            <语句2>
            ............
2、随机函数:$random,可以随机产生一个有符号的32位整数
    $random%b(b>0):产生一个(-b+1~b-1)的随机整数;
    {$random}%b可产生(0~b-1)的随机整数。

# 二、代码部分
## 1.任务

```
代码如下
    task press_key;
        begin
            repeat(50)begin
                myrand={$random}%65536;//加括号是正,产生0-65535
                #myrand key_in=~key_in;
            end
            key_in=1'b0;
            #50_000_000;
        //按下抖动
    
            repeat(50)begin
                myrand={$random}%65536;
                #myrand key_in=~key_in;
            end
            key_in=1'b1;
            #50_000_000;
        //释放抖动
        end
    endtask
```

```

## 2.随机函数
代码如下
reg [15:0]myrand;
myrand={$random}%65536;

---


##3.仿真模型key_model
`timescale 1ns/1ns
module key_model(key);

    output reg key;
    
    reg [15:0]myrand;
    
    initial begin
        key=1'b1;
        press_key;
        #10000;
        press_key;
        #10000;
        press_key;
        $stop;
    end
    
    task press_key;
        begin
            repeat(50)begin
                myrand={$random}%65536;//加括号是正,产生0-65535
                #myrand key=~key;
            end
            key=1'b0;
            #50_000_000;
        //按下抖动
        
            repeat(50)begin
                myrand={$random}%65536;
                #myrand key=~key;
            end
            key=1'b1;
            #50_000_000;
        //释放抖动
        end
    endtask
endmodule 

注意:调用key_model仿真模型的时候,在设置仿真脚本时,需要将key_model加入到仿真脚本中

 

# 总结
使用按键仿真模型key_model可以很好的压缩仿真代码的长度并且使其更具可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值