第六章 Verilog的数据类型及逻辑系统 学习内容: 学习 Verilog逻辑值系统 学习 Verilog中不同类的数据类型 理解每种数据类型的用途及用法 数据类型说明的语法
第六章 Verilog的数据类型及逻辑系统 • 学习Verilog逻辑值系统 • 学习Verilog中不同类的数据类型 • 理解每种数据类型的用途及用法 • 数据类型说明的语法 学习内容:
Verilog采用的四值逻辑系统 buf 0, Low, False, Logic Low, Ground, Vss Negative Assertion buf 1, High, True, Logic High, Power, VDD. VCC. Positive Assertion buf x, X Unknown: Occurs at Logical Which Cannot be Resolved Conflict bufif1 'z. HiZ, High Impedance, Tri-Stated, Disabled Driver(Unknown)
Verilog采用的四值逻辑系统 ’0’, Low, False, Logic Low, Ground,VSS, Negative Assertion ‘1’, High, True, Logic High, Power, VDD, VCC, Positive Assertion ’X’ Unknown: Occurs at Logical Which Cannot be Resolved Conflict HiZ, High Impedance, Tri- Stated, Disabled Driver (Unknown)
主要数据类型 Verilog主要有三类(cass数据类型: net(线网):表示器件之间的物理连接 register(寄存器):表示抽象存储元件 parameters(参数):运行时的常数( run-time constants)
主要数据类型 Verilog主要有三类(class)数据类型: • net (线网): 表示器件之间的物理连接 • register (寄存器):表示抽象存储元件 • parameters(参数) : 运行时的常数(run-time constants)
net(线网) net需要被持续的驱动,驱动它的可以是门和模块。 当net驱动器的值发生变化时, Verilog自动的将新值传送到net上。在例子 中,线网out由or门驱动。当or门的输入信号置位时将传输到线网net上。 a a1 sel out b b1 Nets
net(线网) net需要被持续的驱动,驱动它的可以是门和模块。 当net驱动器的值发生变化时,Verilog自动的将新值传送到net上。在例子 中,线网out由or门驱动。当or门的输入信号置位时将传输到线网net上
net类的类型(线网) 有多种net类型用于设计( design- specifi建模和工艺 ( technology- specific))建模 net类型 功能 wire, tr 标准内部连接线(缺省) 综编译 supply1, supply0电源和地 wor, trior 多驱动源线或 器不持 wand triand 的het类 多驱动源线与 trireg 能保存电荷的net Stril. trio 无驱动时上拉/下拉 没有声明的ne的缺省类型为1位(标量)wire类型。但这个 缺省类型可由下面的编译指导改变: default nettype
net类的类型(线网) • 有多种net类型用于设计(design-specific)建模和工艺 (technology-specific)建模 • 没有声明的net的缺省类型为1 位(标量)wire类型。但这个 缺省类型可由下面的编译指导改变: `default_nettype net类型 功 能 wire, tri supply1, supply0 wor, trior wand, triand trireg tri1, tri0 标准内部连接线(缺省) 电源和地 多驱动源线或 多驱动源线与 能保存电荷的net 无驱动时上拉/下拉 综合编译 器不支持 的net类型
net类的类型(线网) wire类型是最常用的类型,只有连接功能。 wire和tri类型有相同的功能。用户可根据需要将线网定义为wire或tri以提高可 读性。例如,可以用tri类型表示一个ne有多个驱动源。或者将一个ne声明为 tri以指示这个ne可以是高阻态Z(hign- impedance)。可推广至wand和 triand、 wor和 trior wand、wor有线逻辑功能;与wire的区别见下页的表。 trireg类型很象wre类型,但 trireg类型在没有驱动时保持以前的值。这个值的 强度随时间减弱 修改net缺省类型的编译指导: default nettype neotype不能是 supply1和 Supply0
net类的类型(线网) • wire类型是最常用的类型,只有连接功能。 • wire和tri类型有相同的功能。用户可根据需要将线网定义为wire或tri以提高可 读性。例如,可以用tri类型表示一个net有多个驱动源。或者将一个net声明为 tri以指示这个net可以是高阻态Z(hign-impedance)。可推广至wand和triand、 wor和trior • wand、wor有线逻辑功能;与wire的区别见下页的表。 • trireg类型很象wire类型,但trireg类型在没有驱动时保持以前的值。这个值的 强度随时间减弱。 • 修改net缺省类型的编译指导: `default_nettype nettype不能是supply1和supply0
net类在发生逻辑冲突时的决断 Verilog有预定义的决断函数 支持与工艺无关的逻辑冲突决断 wire-and用于集电极开路电路 b wire-or用于射极耦合电路 Wire/Tri Wand /Triand Wor/Trior 0 z 0 1 x z 00xx0 00000 x 0 xx xXX x0 xx X z0 1x z X Z
net类在发生逻辑冲突时的决断 • Verilog有预定义的决断函数 • 支持与工艺无关的逻辑冲突决断 – wire-and用于集电极开路电路 – wire-or用于射极耦合电路
寄存器类( register) 寄存器类型在赋新值以前保持原值 寄存器类型大量应用于行为模型描述及激励描述。在下面的例子中 rega、regb、 reg sell用于施加激励给2:1多路器。 用行为描述结构给寄存器类型赋值。给reg类型赋值是在过程块中。 reg_a sel g sel out reg_ b b1
寄存器类 (register) • 寄存器类型在赋新值以前保持原值 • 寄存器类型大量应用于行为模型描述及激励描述。在下面的例子中, reg_a、reg_b、reg_sel用于施加激励给2:1多路器。 • 用行为描述结构给寄存器类型赋值。给reg类型赋值是在过程块中
寄存器类的类型 寄存器类有四种数据类型 寄存器类型功能 reg 可定义的无符号整数变量,可以是标量(1位)或矢量,是 最常用的寄存器类型 nteger32位有符号整数变量,算术操作产生二进制补码形式的 结果。通常用作不会由硬件实现的的数据处理。 rea 双精度的带符号浮点变量,用法与 Integer相同。 time 64位无符号整数变量,用于仿真时间的保存与处理 realtime与real内容一致,但可以用作实数仿真时间的保存与 处理 ·不要混淆寄存器数据类型与结构级存储元件,如 udp dff
寄存器类的类型 • 寄存器类有四种数据类型 寄存器类型 功能 reg 可定义的无符号整数变量,可以是标量(1位)或矢量,是 最常用的寄存器类型 integer 32位有符号整数变量,算术操作产生二进制补码形式的 结果。通常用作不会由硬件实现的的数据处理。 real 双精度的带符号浮点变量,用法与integer相同。 time 64位无符号整数变量,用于仿真时间的保存与处理 realtime 与real内容一致,但可以用作实数仿真时间的保存与 处理 • 不要混淆寄存器数据类型与结构级存储元件,如udp_dff
Verilog中net和 register声明语法 net声明 [range] [delay [, net name]i net type:net类型 range 矢量范围,以[MsB:工sB]格式 delay 定义与net相关的延时 net name:net名称,一次可定义多个net,用逗号分开。 寄存器声明 [range] [, reg name]i reg type:寄存器类型 range: 矢量范围,以[MsB:LSB]格式。只对xeg类型有效 reg name:寄存器名称,一次可定义多个寄存器,用逗号分开
Verilog中net和register声明语法 • net声明 [range] [delay] [, net_name]; net_type: net类型 range: 矢量范围,以[MSB:LSB]格式 delay: 定义与net相关的延时 net_name: net名称,一次可定义多个net, 用逗号分开。 • 寄存器声明 [range] [, reg_name]; reg_type:寄存器类型 range: 矢量范围,以[MSB:LSB]格式。只对reg类型有效 reg_name :寄存器名称,一次可定义多个寄存器,用逗号分开