b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

testbench_testbench如何加载_vhdl testbench reset(3)

电脑杂谈  发布时间:2017-03-09 10:04:50  来源:网络整理

所以,在设计中除了那些极简单的设计(如调用厂商提供的MegaCore),推荐通过写testbench的方法来做功能验证。

有关testbench的一些问题

tasktest_task;//task的定义,以task关键字开始,紧接后面是task的id,名字

input [1:0] a;//task的输入输出定义,用来和外面的变量进行交换,是通向外面的接口

output [1:0] b;

begin

b = ~a;

end

endtask

reg [1:0] task_a;

reg [1:0] task_b; //因为task必须在过程语句中调用,所以其实参必须为reg类型的

initial

begin

task_a =2'b0;

test_task(task_a,task_b);//task的调用,直接调用,没有什么像module一样例化的东西

#10 task_a =2'b10;

end

initial

begin

#20 task_a =2'b11;

test_task(task_a,task_b);//同样可以改变task内部的值,和module不同,这是同一个task

#10 task_a =2'b10;

end

reg [1:0] task1_a;

reg [1:0] task1_b;

task test_task1;

output [1:0] b;

assign b = ~task1_a;//可以使用全局变量,不一定是task内部的变量

endtask

initial

begin

task1_a = 2'd0;

#1test_task1(task1_b);

#10 task1_a = 2'd1;

#1test_task1(task1_b);

#10 task1_a = 2'd2;

#1test_task1(task1_b);

#10 task1_a = 2'd3;

#1test_task1(task1_b);

end

task和module有点类似,都可以通过输入输出来和外面,这个时候module可以例化多次,这样就是不同的单元,和task

还是有区别的。

1,task只能定义在module内部,不能单独在一个文件中,不能定义在module外面。

2,在task调用的是必须在过程性语句内部使用,initial,begin... end

3,task可以没有参数,直接使用全局变量来实现功能。

4,可以使用延时控制,可以调用其他task和函数。

函数:可以调用函数,不能调用任务,不可有时序控制。

function [1:0]invert;//只有一个返回值,invert,寄存器类型的

//input [1:0]a;//可以有一个输入,或者多个,或者没有输入

//begin

invert = 2'd3;

//end

endfunction

reg [1:0] fun_a;

reg [1:0] fun_out;

initial

begin

fun_a =2'd2;

fun_out =invert();//(fun_a);//调用函数,函数返回一个值,必须在过程性语句中调用。

#50 fun_a =2'd1;

fun_out = invert();//(fun_a);

#50 fun_a =2'd0;

fun_out = invert();//(fun_a);

#50 fun_a =2'd3;

fun_out = invert();//(fun_a);

end

task test_task1;//任务调用函数

output [1:0] b;


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-36621-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...