在 Verilog HDL 中,nmos、pmos和cmos是内置的开关级(Switch-Level)原语(primitives),用于在晶体管级建模数字电路。
一、基本原理
1. nmos(N 沟道 MOS 开关)
语法:
nmos [实例名] (output, data_in, control);原理:
- 当控制信号
control = 1时,开关导通,output = data_in - 当控制信号
control = 0时,开关截止,output = z(高阻态)
真值表:
| control | data_in | output |
|---|---|---|
| 0 | x | z |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
2. pmos(P 沟道 MOS 开关)
语法:
pmos [实例名] (output, data_in, control);原理:
- 当控制信号
control = 0时,开关导通,output = data_in - 当控制信号
control = 1时,开关截止,output = z(高阻态)
真值表:
| control | data_in | output |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | x | z |
与 nmos 控制极性相反。
3. cmos(互补 MOS 开关)
语法:
cmos [实例名] (output, data_in, ncontrol, pcontrol);原理:
- 相当于一个 nmos 与一个 pmos并联组成的传输门(Transmission Gate)。
- 等效结构:
nmos (output, data_in, ncontrol); pmos (output, data_in, pcontrol);- 通常
ncontrol和pcontrol是互补信号:ncontrol = 1、pcontrol = 0→ 开关导通ncontrol = 0、pcontrol = 1→ 开关截止
二、三者的区别
| 特性 | nmos | pmos | cmos |
|---|---|---|---|
| 端口数 | 3(out, in, ctrl) | 3(out, in, ctrl) | 4(out, in, nctrl, pctrl) |
| 控制信号 | 1 个(高有效) | 1 个(低有效) | 2 个互补信号 |
| 导通条件 | ctrl = 1 | ctrl = 0 | nctrl=1, pctrl=0 |
| 传输 "1" | 较弱(有阈值损失) | 强 | 强(无损失) |
| 传输 "0" | 强 | 较弱 | 强(无损失) |
| 等效结构 | 单 N 管 | 单 P 管 | N 管 + P 管并联(传输门) |
| 典型应用 | 下拉网络 | 上拉网络 | 传输门、多路选择器 |
三、使用示例
示例 1:CMOS 反相器
module inverter(out, in); output out; input in; supply1 vdd; supply0 gnd; pmos p1(out, vdd, in); // PMOS 接 VDD nmos n1(out, gnd, in); // NMOS 接 GND endmodule示例 2:CMOS 传输门
module tx_gate(out, in, en); output out; input in, en; wire en_bar; not (en_bar, en); cmos sw(out, in, en, en_bar); endmodule四、要点总结
- nmos / pmos:单管开关,控制极性相反;nmos 适合传 0,pmos 适合传 1。
- cmos:等价于 nmos 和 pmos 并联,能无失真地传输 0 和 1,是 CMOS 工艺中传输门的核心。
- 这些原语属于开关级建模,主要用于晶体管级电路仿真,不可综合为实际门电路(综合工具一般不支持),更多用于教学、仿真验证和定制单元库建模。
- 还可指定驱动强度(如
nmos (strong1, weak0) n1(out, in, ctrl);),用于精确模拟电气特性。