服务器建立网站,外贸搜索引擎,wordpress编辑可以设置用户权限,wordpress asp版本User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL#xff08;简称 Verilog #xff09;是一种硬件描述语言#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。
Verilog 不仅定义了语法… User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL简称 Verilog 是一种硬件描述语言用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。
Verilog 不仅定义了语法还对语法结构都定义了清晰的仿真语义。因此Verilog 编写的数字模型就能够使用 Verilog 仿真器进行验证 概述 在使用 Verilog 进行门级建模的时候除了使用内置的门单元and、or、nor等之外还可以使用自定义的逻辑门这些自定义的逻辑门就是 User-defined primitives UDPs。
and、or、nor 等这些门单元属于是 Verilog 自带的一整套标准原语即通常所说的内置原语。
但是当我们需要使用更加复杂的门电路的时候这些内置原语不能满足需求就需要使用 UDPs。
UDPs的出现给予了IC工程师定义自己设计的基本逻辑元件的能力。但是 UDP 语句没有办法综合因此它更多的使用在验证功能上。
UDPs 可以分为如三类
组合逻辑 UDPs时序逻辑 UDPs混合型 UDPs 基本语法 UDPs 的基本结构如下
primitive name(/*在括号内定义端口*/); table/*在这里定义输入与输出的的关系*/endtableendprimitive① primitive 和 endprimitive 类似于 module 和 endmodule
② UDP可以有多个输入但是只能存在一个输出在端口声明的时候输出端口需要处在第一个的位置上
③ inout 双向端口在UDP中不被允许同时无论是输入端口还是输出端口都必须是标量即一位位宽
④ 时序逻辑UDP输出端口都需要定义成reg型
⑤ 时序逻辑的UDP中可以使用 initial 语句对 reg 类型变量输出进行赋初值 组合逻辑的UDP 使用 UDPs 定义的一个 mux 如下所示
primitive mux_tmp (q,d0,d1,s);output q; // 输出端口放在第一个intput s,d0,d1;table// d0 d1 s : q0 ? 0 : 0 ;1 ? 0 : 1 ;? 0 1 : 0 ;? 1 1 : 1 ;0 o x : 0 ;1 1 x : 1 ;endtable
endprimitive关于状态表
① 状态表的每一行的输出端口顺序一定要和端口列表相同
② 输入和输出之间使用 : 隔开每一行以 ; 结束
③ 状态表中的值可以包含 0、1 或 x ? 表示的是无关项。UDP不能处理z值输入UDP的 z 值被当作 x 值处理
④ 尽可能完整的列出UDP中的状态表对于没有给出的输入组合情况默认输出为不定态 x 时序逻辑的UDP ① 时序逻辑的 UDP 的输出必须声明为 reg 类型并且可以使用 initial 进行初始化
② 时序逻辑 UDP 状态表的每一行内容为输入1输入2…输入N : 当前状态 : 下一状态
③ 状态表的输入项可以是电平或者跳变沿的形式输出项中的 - 表示的是状态保持不变
④ 当前状态是寄存器的当前值下一状态是计算得到值会被存到寄存器中成为新值。 示例1电平敏感
带清零端口的电平敏感的锁存器对应的 UDP 如下所示
primitive latch(output reg q 0input d, clock, clear);initial q 0; // 锁存器的初始值为 0table // d clock clear : q : q;? ? 1 : ? : 0;// clock 1 时将 d 值锁存到 q 中1 1 0 : ? 1;0 1 0 : ? : 0;? 0 0 : ? : -;endtable
endprimitive示例2边沿敏感
带清零端口时钟下降沿敏感的 D 触发器的 UDP 如下 primitive edge_dff(output reg q0input d, clock, clear);
table
// d clock clear : q : q;? ? 1 : ? : 0 ;? ? (10) : ? : - ; //(10) 由1向0跳变1 (10) 0 : ? : 1 ;0 (10) 0 : ? : 0 ;? (1x) 0 : ? : - ; //(1x)由1向不确定状态跳变? (0?) 0 : ? : - ; ? (x1) 0 : ? : - ;(??) ? 0 : ? : - : //(??)信号值再01x三者之间任意跳变
endtable
endprimitiveUDP 符号表