Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt

Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt

ID:57059714

大小:271.00 KB

页数:40页

时间:2020-07-30

Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt_第1页
Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt_第2页
Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt_第3页
Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt_第4页
Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt_第5页
资源描述:

《Verilog HDL数字系统设计与其应用_09测试与仿真课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章 测试与仿真9.1测试与仿真的流程9.2测试举例9.1测试与仿真的流程对已设计模块的测试与仿真通常可分为以下三个步骤:(1)产生输入向量,包括输入向量的初始化与产生测试波形。(2)将输入向量添加到已设计模块并给出相应的输出结果。(3)将输出结果与设计要求相比较。9.1.1产生输入向量对输入向量的初始化可通过initial过程块来实现。【例9-1】输入向量的初始化。initialbeginclk=1'b0;globalReset=1'b1;in=1'b1;end在上面的例子中,将二进制表示形式的0值赋给变量clk。实际上,对于值0与1,没有必要采用二进制表示形式1'b0与1

2、'b1,直接用0与1给出即可。当给输入向量赋值时,可以利用一定的延迟时间来控制测试与仿真程序(参见下面的例子)。【例9-2】带延迟的向量赋值。#100globalReset=0;#100in=0;#100in=1;#300in=0;经过100个时间单位的延迟后将变量globalReset的值置为0,再经过100个时间单位的延迟把变量in变为0,依次类推。这里需要注意的是,时延是一个相对的概念,即相对于上一条语句执行完后的时刻而言,并非相对于仿真的起始时间。如果测试模块中没有控制仿真结束时刻的语句,那么当对测试模块进行仿真实验时,程序就会陷入死循环。通过在initial过程块中加

3、入带有延迟的系统任务$finish或$stop,就可轻易解决该问题。【例9-3】仿真结束语句的应用。initialbegin#100globalReset=0;#100in=0;#100in=1;#300in=0;#400$finishend采用always过程块可以很容易实现时钟信号,下面是一个产生某测试模块的时钟信号的例子。【例9-4】时钟信号的产生。alwaysbegin#10clk=~clk;end该例用来产生一个周期为20个时间单位的时钟信号。如果输入信号的值有规律地变化时,例如按相同的延迟重复出现n次,那么就可以通过repeat循环语句来实现。【例9-5】repea

4、t循环语句的例子。repeat(10)begin#40in=0;#20in=1;end9.1.2测试模块【例9-6】4选1多路选择器的功能模块与测试模块。//功能模块部分modulemultiplexor4_1(out,in1,in2,in3,in4,cntrl1,cntrl2);outputout;inputin1,in2,in3,in4,cntrl1,cntrl2;regout;always@(in1orin2orin3orin4orcntrl1orcntrl2)case({cntrl1,cntrl2})2'b00:out=in1;2'b01:out=in2;2'b10:o

5、ut=in3;2'b11:out=in4;default:$display("Pleasecheckcontrolbits");endcaseendmodule//测试模块部分modulemuxstimulus;regIN1,IN2,IN3,IN4,CNTRL1,CNTRL2;wireOUT;multiplexor4_1mux1_4(OUT,IN1,IN2,IN3,IN4,CNTRL1,CNTRL2);initialbeginIN1=1;IN2=0;IN3=1;IN4=0;$display("Initialarbitraryvalues");#0$display("input1

6、=%b,input2=%b,input3=%b,input4=%b",IN1,IN2,IN3,IN4);{CNTRL1,CNTRL2}=2'b00;#1$display("cntrl1=%b,cntrl2=%b,outputis%b",CNTRL1,CNTRL2,OUT);{CNTRL1,CNTRL2}=2'b01;#1$display("cntrl1=%b,cntrl2=%boutputis%b",CNTRL1,CNTRL2,OUT);{CNTRL1,CNTRL2}=2'b10;#1$display("cntrl1=%b,cntrl2=%boutputis%b",CNTR

7、L1,CNTRL2,OUT);{CNTRL1,CNTRL2}=2'b11;#1$display("cntrl1=%b,cntrl2=%boutputis%b",CNTRL1,CNTRL2,OUT);endendmodule测试模块与功能模块相类似,都是以关键字module开头的。但由于测试模块只是为了进行仿真验证,因而不需要端口列表,也不能被其它模块调用。而功能模块则必须有端口列表。由于测试模块没有端口列表,因而不需进行端口声明。为了对功能模块的参数进行赋值,测试模块中也需进行数据类型的说明

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。