Verilog HDL 数字系统设计及实践 第6章 行为级仿真模型建模.pptVIP

Verilog HDL 数字系统设计及实践 第6章 行为级仿真模型建模.ppt

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

* 第6章 行为级仿真模型建模 Verilog HDL 数字系统设计及实践 学习指南 【知识目标】 (1)了解Verilog HDL语言不可综合行为描述的特点; (2)了解仿真模型和Testbench的概念和作用; (3)掌握各种常用Verilog HDL行为描述方法。 【技能目标】 (1) 熟练应用Verilog行为描述构建仿真模型和Testbench; (2) 熟练构建可进行自动测试的芯片仿真环境。 【重点难点】 (1) 行为级建模与可综合建模的区别与联系; (2) 如何构建可进行自动测试的仿真环境。 6.1 行为级建模概述 图6.1 一个完整的芯片设计工程 一个完整的芯片设计工程应该包含Testbench测试 环境的设计和被测对象的设计。 被测对象我们又可以叫做“芯片”,因为它描述的是我们希望设计的芯片本身的功能。 Testbench通常是用Verilog HDL语言描述的不可综合的模块,用来产生与芯片真实的工作环境相同的输入激励,来对芯片的功能进行测试。 6.2 仿真时间和时序控制 在运行真实芯片时,芯片的各个时间参数和我们真实生活中使用的时间是相同的。在 仿真的时候,我们也有自己的时间,这个时间是仿真器虚拟出来的,与真实的时间不一定 相同。 复杂的电路行为往往在时间上有很强的前后依赖关系。在可综合的电路描述中,这种 时序上的控制只能通过同步时钟和有限状态机来实现。当电路的功能变得复杂以后,对时 序控制逻辑的设计也变得越来越困难。 Verilog HDL提供的时序控制语句主要有3种:延迟控制语句,事件控制语句和条件等 待语句。 延迟控制语句用#加数字的形式来表示程序继续运行需要等待的仿真时间。 ... initial begin #10 a = b; #20 a = c; end 6.2 仿真时间和时序控制 事件控制语句指利用语法@()进行描述。@后面的括号里包含需要等待的事件。当事件满足后,程序继续运行,事件不满足时,程序等待在此处,直到条件满足。 ... initial begin @ (posedge clk) a = b; @ (posedge clk) #10 a = b; end 条件等待语句是指用关键词wait描述的过程语句。 ... initial begin wait (rst_n) a = b; @ (rst_n) a = c; end 6.3 仿真模型建模实例 6.3.1 时钟发生器 时钟发生器是Verilog HDL仿真模型中最重要的模块。所有硬件电路的工作都离不开时钟输入。同步时序电路中的存储单元在时钟沿触发,对电路的数据流和状态进行控制。 【例6.1】用Verilog HDL设计一个时钟发生模块。时钟周期可通过参数period调节,占空比为50% // example_6_1: A simple clock generator for simulation module clock_gen #( parameter period = 10 ) ( output reg o_clk ); initial // 设置时钟的初始值 o_clk = 1b0; // 每隔半周期,时钟信号反转一次。 always #(period/2) o_clk = ~o_clk; endmodule 6.3 仿真模型建模实例 6.3.2简单的仿真环境 【例6.4】用Verilog HDL设计一个简单的仿真环境,对本书例5.2所示的带异步复位端口的 寄存器模块进行自动测试。 // example_6_4: Testbench for the DFF appears as example_5_2 module dff_asyn_reset_tb (); wire clk; wire dout; reg rst_n; reg din; reg flag_data_check; // 该标志位用来表示是否进行输出数据检查 clock_gen #(15) cgen ( .o_clk(clk) ); dff_asyn_reset dff1 ( .i_clk(clk), .i_rst_n(rst_n), .i_din(din), 6.3 仿真模型建模实例

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档