UDP用户自定义元件.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本元件与用户自定义元件 ( UDP ) —— Verilog 行为仿真 王淑敏 6320852080 13 信息学院 一、什么是 UDP ? Verilog 语言提供了一整套标准的原语,例如 and 、 nand 、 or 、 nor 和 not 等,它们是该语言的 一部分,即通常所说的内置原语。然而,在设计 过程中,设计者有时希望使用自己编写的原语。 Verilog 语言具有定义这种自定义原语的能力,这 种原语就是 UDP (即用户自定义原语的英文缩 写)。 UDP 是自我完备的,在 UDP 中不能调用 (实例引用)其它模块或者其它原语。 1.1 基本元件及其用法 图 1 基本元件——基本门 1.1 基本元件及其用法 图 2 基本元件——开关级 1.2 用户自定义元件( UDP ) 定义: UDP 的定义以关键字 primitive 作为开始,然后指定 原语名称、输出端口和输入端口。在端口声明部分将 端口声明为 output 或者 input 。在表示时序的 UDP 中, 输出端口必须被声明为 reg 型,而且还需有一条可选的 initial 语句,用于初始化时序逻辑 UDP 的输出端口。 UDP 状 态 表 是 UDP 中 最 重 要 的 部 分 , 它 以 关 键 字 table 开始 , 以关键字 endtable 结束。状态表定义了如 何根据输入状态和当前状态得到输出值,该表也是一 个查找表,类似于逻辑真值表。原语定义以关键字 endprimitive 结束。 1.2 用户自定义元件( UDP ) UDP 定义的组成: 1.2 用户自定义元件( UDP ) UDP 定义必须遵循以下几条规则: 1 . UDP 只能采用标量(即 1 位)输入端口, 允许有多个输入端口; 2 . UDP 只能允许一个标量(即 1 位)输出端 口。输出端口必须出现在端口列表的第一个位 置,绝对不允许有多个输出端口; 3 .在声明部分,输出端口以关键字 output 声明。因为表示时序逻辑的 UDP 需要保存状态, 所以其输出端口必须声明为 reg 类型; 4 .输入端口以关键字 input 声明; 1.2 用户自定义元件( UDP ) 5 .表示时序逻辑的 UDP 中的状态可以用 initial 语句初始化。该语句是可选的。它将一 个 1 位的值赋给 reg 类型的输出; 6 .状态表的项可以包含值 0 、 1 或者 x 。 UDP 不能处理 z 值。传送给 UDP 的 z 值被当作 x 值; 7 . UDP 与模块同级,因而 UDP 不能在模块 内部定义,但可以在模块内部调用(实例引 用); 8 . UDP 不支持 inout 端口。 1.3 UDP 的类型 1) 表示组合逻辑的 UDP - 输出仅取决于输 入信号的组合逻辑。四选一的多路选择器是典 型的表示组合逻辑的 UDP 的例子; 2) 表示时序逻辑的 UDP - 下一个输出值不 但取决于当前的输入值还取决于当前的内部状 态,锁存器和触发器是两个典型的表示时序逻 辑的 UDP 的例子。 1.4 UDP 表中的缩写符号 Verilog 提供了电平和跳变沿的缩写符号,以便用简 洁的方式描述 UDP 表。下表总结了所有的缩写符以及 它们的含义。 二、表示组合逻辑的 UDP 表示组合逻辑的 UDP 根据 UDP 内部所列 出的表示输入和输出关系的状态表,由输 入确定输出值。 2.1 表示组合逻辑的 UDP 的定义 状态表是 UDP 定义中最重要的部分。 用表 示与门的 UDP 模型来解释状态表最容易使读者 理解。下面让我们不使用 Verilog 语言所提供 的与门,自己来定义一个表示与门的原语,并 将其命名为 udp_and 。 2.1 表示组合逻辑的 UDP 的定义 例 1 用户自定义原语 udp_and // 原语名和端口列表 primitive udp_and (out, a, b); // 端口声明语句 output out; // 表示组合逻辑时一定不能声明为 reg( 寄 存器 ) 型 input a, b; // 输入端口声明 // 状态表定义;以关键词 table 开始 table // a b : out; 0 0 : 0; 0 1 : 0; 2.2 状态表的项 为了理解状态表项的表达方法,仔细观察一 下 udp_and 的状态表。表示组合逻辑的 UDP 状态表中的每一行的语法形式如下: <input1> <input2> … .. <inputN> : <output>; 2.2 状态表的项 关于状态表项需要注意以下几点: 1 .状态表每一行中 <input#> 的顺序必须与它们 在端口列表中的出现顺序相同。设计 UDP 时必须牢记 这点,

文档评论(0)

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

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

1亿VIP精品文档

相关文档