VerilogHDL,内容包括.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组合逻辑举例:全加器 当需要大量全加器时,可以大幅度减少存储器需求 大幅减小事件数目。使用内部基本单元时,事件通过3个基本单元后才能到达进位输出;而使用UDP,事件只需经过一个基本单元。 全加器可以由两个组合逻辑UDP实现,而不使用内部基本单元。 primitive latch (q, clock, data); output q; reg q; input clock, data; initial q = 1b1; table // clock data current next // state state 0 1 : ? : 1 ; 0 0 : ? : 0 ; 1 ? : ? : - ; endtable endprimitive 电平敏感时序元件举例:锁存器latch 锁存器的行为如下: 当时钟输入为0时,data输入的值传送到输出。 当时钟输入为1时,输出不变。 这种加电初始化在实际元件中很少见,但在UDP功能测试时很有用。 输出必须声明为reg以保存前一状态 时序UDP初始化语句,将输出初始化为1 输入及当前状态中的?表示无关值 用另一个场表示下一状态 ‘-’状态值表示输出没有变化 边沿敏感时序元件举例:D触发器 在任何一个真值表入口语句中只能说明一个输入跳变。 primitive d_edge_ff (q, clk, data); output q; input clk, data; reg q; table // clk dat state next (01) 0 : ? : 0 ; (01) 1 : ? : 1 ; (0x) 1 : 1 : 1 ; (0x) 0 : 0 : 0 ; (x1) 0 : 0 : 0 ; (x1) 1 : 1 : 1 ; //忽略时钟下降沿 (?0) ? : ? : - ; (1x) ? : ? : - ; //时钟稳定时忽略data变化 ? (??) : ? : - ; endtable endprimitive 表里有边沿项表示输入跳变。 在一条入口语句中只能说明一个输入跳变,因为Verilog仿真是基于事件,一次只允许一个事件发生。 在每个时间步中,电平入口优先于边沿入口。因此,下面的出口: (? 0) ? : ? : - ; 可由下式取代: 0 ? : ? : - ; 两个都给出时,只有后者起作用 提高可读性的简写形式 Verilog中有一些符号可用于UDP真值表中以提高可读性 符号 表示 解释 - 没有变化 时序元件输出的下一个值与当前值相同 ? 0、1或x 任何值 b 0或1 任何确定值 r (01) 0-1跳变 f (10) 1-0跳变 p (01)、(0x)或(x1) 任何上升沿(posedge) n (10)、(1x)或(x0) 任何下降沿(negedge) * (??) 任何跳变 提高可读性的简写形式 table // clk dat state next r 0 : ? : 0 ; r 1 : ? : 1 ; (0x) 1 : 1 : 1 ; (0x) 0 : 0 : 0 ; (x1) 1 : 1 : 1 ; (x1) 0 : 0 : 0 ; // 忽略时钟的下降沿 n ? : ? : - ; // 忽略时钟稳定时的任何数据变化 ? * : ? : - ; endtable 带异步复位的D触发器 primitive U_ff_p_cl( Q, Data, Clk, Clr); input Data, Clk, Clr; output Q; reg Q; table // Clk Clr Data ( SQtate) Q( n e x t ) (01) 0 0 : ? : 0 ; (01)

文档评论(0)

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

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

1亿VIP精品文档

相关文档