网站大量收购独家精品文档,联系QQ:2885784924

第10章Verilog行为仿真.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章Verilog行为仿真课件

第10章 Verilog行为仿真 系统任务与系统函数 举例说明 组合逻辑示例:2-1 多路器 举例说明 注: 在模块外定义 UDP 。 如果在表中没有规定输入组合,将输出不确定逻辑值 (x)。 表的列中元素的顺序应与端口列表中的一致。 表中的 ?的意义是:重复的输入 0,1或 任意不确定逻辑值(x)。 表中开始两行表示:当 s等于 1 时,不管 b 逻辑值如何变化,输出 o 将与 输入 a 保持一致。 表中的下两行表示:当 s 等于 0 时,不管 a逻辑值如何变化,输出 o 将与输入 b 保持一致。 表中 的最后两行使此器件的描述更加的全面、准确。它们表示:当输入 a 和 b 的逻辑值相同时,如果 sel 逻辑值不确定,则输出 o 的值 将与输入 a 和 b 的值相同。这种行为不能使用 Verilog 语言提供的基本原语元件进行建模。UDP 将 x 作为实际的未知值,而不是 Verilog 语言逻辑值来进行处理,因此使其比Verilog语言提供的基本原语元件更加准确。 组合逻辑示例:全加器 可以只使用两个 UDP 来描述全加器的逻辑功能。 // 全加器进位实现部分 primitive U_ADDR2_C (CO, A, B, CI); output CO; input A, B, CI, table // A B CI : CO 1 1 ? : 1; 1 ? 1 : 1; ? 1 1 : 1; 0 0 ? : 0; 0 ? 0 : 0; ? 0 0 : 0; endtalbe endprimitive 组合逻辑示例:全加器 //全加器求和实现部分 primitive U_ADDR2_S(S, A, B,CI); output S; input A, B, CI; table // A B CI : S 0 0 0 : 0; 0 0 1 : 1; 0 1 0 : 1; 0 1 1 : 0; 1 0 0 : 1; 1 0 1 : 0; 1 1 0 : 0; 1 1 1 : 1; endtable endprimitive 组合逻辑示例:全加器 若使用 UDP 设计全加器,仅需要两个 UDP; 而使用 Verilog 原语元件,则需要 5 个Verilog语言提供的基本原语元件。 当设计需要使用大量全加器时,采用UDP来表示全加器,将大大减少内存的需要。 事件的数目将大大降低。 ?表示逻辑值可以为 0,1或 x。 电平敏感的时序逻辑示例:锁存器 primitive latch(q, clock, data); output q; reg q; input clock, data; initial q=1’b1; table // clock data current next // state state 0 1 : ? 1; 0 0 : ? 0; 1 ? : : -; endtable endprimitive 电平敏感的时序逻辑示例:锁存器 注: 锁存器的动作行为如下: 当时钟信号为 0时,输入数据的值直接传给输出。 当时钟信号为1时,输出保持当前状态不变。 next state 栏中的 “-” 表示输出保持不变。 输出必须定义为寄存器类型,用来保存前一个状态。 initial q=1’b1; 是时序 UDP 的初始化语句。使用此语句可以在仿真的开始对输出进行赋值。 在实际的部件模型中,很少使用初始赋值。但在测试 UDP 的功

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档