Verilog HDL数字系统设计及其应用第9章.pptVIP

Verilog HDL数字系统设计及其应用第9章.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog HDL数字系统设计及其应用第9章

第9章 测试与仿真 第9章 测 试 与 仿 真 9.1 测试与仿真的流程 9.2 测试举例 9.1 测试与仿真的流程   对已设计模块的测试与仿真通常可分为以下三个步骤:   (1) 产生输入向量,包括输入向量的初始化与产生测试波形。   (2) 将输入向量添加到已设计模块并给出相应的输出结果。   (3) 将输出结果与设计要求相比较。 9.1.1 产生输入向量   对输入向量的初始化可通过initial过程块来实现。   【例9-1】输入向量的初始化。 initial begin clk = 1b0; globalReset = 1b1; in = 1b1; end   在上面的例子中,将二进制表示形式的0值赋给变量clk。实际上,对于值0与1,没有必要采用二进制表示形式1b0与1b1,直接用0与1给出即可。   当给输入向量赋值时,可以利用一定的延迟时间来控制测试与仿真程序(参见下面的例子)。   【例9-2】带延迟的向量赋值。 #100 globalReset = 0; #100 in = 0; #100 in = 1; #300 in = 0;   经过100个时间单位的延迟后将变量globalReset的值置为0,再经过100个时间单位的延迟把变量in变为0,依次类推。这里需要注意的是,时延是一个相对的概念,即相对于上一条语句执行完后的时刻而言,并非相对于仿真的起始时间。   如果测试模块中没有控制仿真结束时刻的语句,那么当对测试模块进行仿真实验时,程序就会陷入死循环。通过在initial过程块中加入带有延迟的系统任务$finish或$stop,就可轻易解决该问题。   【例9-3】仿真结束语句的应用。 initial begin #100 globalReset = 0; #100 in = 0; #100 in = 1; #300 in = 0; #400 $finish end   采用always过程块可以很容易实现时钟信号,下面是一个产生某测试模块的时钟信号的例子。   【例9-4】时钟信号的产生。 always begin #10 clk = ~clk; end   该例用来产生一个周期为20个时间单位的时钟信号。   如果输入信号的值有规律地变化时,例如按相同的延迟重复出现n次,那么就可以通过repeat循环语句来实现。   【例9-5】repeat循环语句的例子。 repeat(10) begin #40 in = 0; #20 in = 1; end 9.1.2 测试模块   【例9-6】4选1多路选择器的功能模块与测试模块。 //功能模块部分 module multiplexor4_1 (out, in1, in2, in3, in4, cntrl1, cntrl2); output out; input in1,in2,in3,in4,cntrl1,cntrl2; reg out; always @(in1 or in2 or in3 or in4 or cntrl1 or cntrl2) case ({cntrl1,cntrl2}) 2b00:out = in1; 2b01:out = in2; 2b10:out = in3; 2b11:out = in4; default:$display(Please check control bits); endcase endmodule //测试模块部分 module muxstimulus; reg IN1,IN2,IN3,IN4,CNTRL1,CNTRL2; wire OUT; multiplexor4_1 mux1_4(OUT,IN1,IN2,IN3,IN4,CNTRL1,CNTRL2); initial begin IN1 = 1;IN2 = 0;IN3 = 1;IN4 = 0; $display(Initial arbitrary values); #0 $display(input1 = %b,input2 = %b,input3 = %b,input4 = %b\n, IN1,IN2,IN3,IN4); {CNTRL1,CNTRL2} = 2b00; #1 $display(cntrl1=%b,cntrl2=%b,output is %b,CNTRL1, CNTRL2, OUT); {CNTRL1, CNTRL2} = 2b01; #1 $display(cntrl1=%b,cntrl2=%b output is %b,CNTRL1,CNTRL2,OUT); {CNTRL1,CNTRL2} = 2b10; #1 $display(cntrl1=%b,cntrl2=%b output is %b,CNTR

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档