📜  开关级别建模

📅  最后修改于: 2021-01-11 14:58:32             🧑  作者: Mango

开关级建模

建模的开关级别提供了逻辑和模拟晶体管抽象级别之间的抽象级别。它描述了传输门的互连,传输门是各个MOS和CMOS晶体管的抽象。

开关级晶体管被建模为导通或截止,导通或不导通。互连所承载的值从模拟电压或电流的整个范围抽象为少量离散值。这些值称为信号强度

Verilog还提供对晶体管级建模的支持。但是,由于电路的复杂性要求设计人员转移到更高的抽象级别,而不是使用开关级别的建模,因此设计人员很少使用这些天。

通常,使用具有模拟输入和输出信号值的晶体管模型在硬件结构中将晶体管级建模称为模型。

另一方面,门级建模是指对这两种建模方案之间具有数字输入和输出信号值的机翼门模型进行硬件结构建模,称为开关级建模。

晶体管仅表现出数字行为,并且其输入处于晶体管级,并且输出信号值仅限于数字值。

Verilog使用4值逻辑值系统,因此Verilog开关输入和输出信号可以采用4个0、1,ZX逻辑值中的任何一个。

开关级原语

对于每个组,开关是单向或双向的,并且是电阻性或非电阻性的,那些通过正门(例如NMOS晶体管)导通的原语和通过负门(例如PMOS晶体管)导通的原语。

  • 接通:这意味着逻辑值从输入晶体管流向其输入。
  • 关断:这意味着无论输入值如何,晶体管的输出均为Z电平。
  • 单向晶体管在接通时将其输入值传递到其输出。
  • 双向晶体管双向传导。
  • 电阻结构在将其传递到输出时会降低其输入逻辑的强度。

MOS开关

可以使用关键字nmospmos定义两种类型的MOS开关。

  • nmos关键字用于对NMOS晶体管进行建模。
  • pmos关键字用于对PMOS晶体管进行建模。

在Verilog中,nmos和pmos开关如下所示:

nmos n1(out, data, control);                             // instantiate a nmos switch
pmos p1(out, data, control);                             // instantiate a pmos switch

由于开关是Verilog原语(例如逻辑门),因此实例的名称是可选的。因此,可以在不分配实例名称的情况下实例化开关。

nmos (out, data , control);                     // instantiate nmos switch ; no instance name
pmos (out, data, control);                      // instantiate pmos switch; no instance name

输出信号的值由数据和控制信号的值确定。

数据和控制信号的某些组合会导致门输出到1或0或z值,而不偏爱任何一个值。符号L代表0或Z; H代表1或z。

因此,nmos开关在其控制信号为1时导通。如果控制信号为0,则输出呈现高阻抗值。同样,如果控制信号为0,则pmos开关导通。

CMOS开关

CMOS开关使用cmos关键字声明。可以使用nmos和pmos设备对cmos设备建模。 CMOS开关的实例如下所示,例如:

cmos cl(out, data, ncontrol, pcontrol);                               //instantiate cmos gate
  or
cmos (out, data, ncontrol, pcontrol);                                 //no instance name given

ncontrolpcontrol通常彼此互补。当ncontrol信号为1且pcontrol信号为0时,开关导通。如果ncontrol为0且pcontrol为1,则开关的输出为高阻抗值。

cmos门实质上是两个门的组合:一个nmos和一个pmos 。因此,上面显示的cmos实例等效于以下实例。

nmos (out, data, ncontrol); //instantiate a nmos switch
pmos (out, data, pcontrol); //instantiate a pmos switch

双向开关

NMOS,PMOS和CMOS栅极从漏极传导至源极。使设备在两个方向上都能导通很重要。

在这种情况下,设备任一侧的信号都可以是驱动器信号。为此提供了双向开关。

三个关键字用于定义双向开关,例如:

1. tran: tran开关用作两个信号inout1inout2之间的缓冲区。 inout1或inout2均可作为驱动器信号。

module des (input io1, ctrl, output io2);

  tran (io1, io2);

endmodule

2. tranif0:仅当控制信号为逻辑0时,tranif0开关才连接两个信号inout1inout2。如果控制信号为逻辑1,则非驱动器信号将获得高阻抗值z。驱动器信号保留来自其驱动器的值。

module des (input io1, ctrl, output io2);

  tranif0 (io1, io2, ctrl);

endmodule

3. Tranif1:如果控制信号为逻辑1,则tranif1开关导通。

module des (input io1, ctrl, output io2);

  tranif1 (io1, io2, ctrl);

endmodule

当信号通过电阻开关时,它们会降低信号强度。常规开关可保持输入到输出信号的强度水平。