电阻负载反向器设计
# exercise 5.1 on page 163
# edited by simon in 2020/03/26
# d_cmos_ex_5.1.py
import math
print("""
题目:
设计一个电阻负载反相器,参数如下
RL = 2kΩ,VOL = 0.05V,VDD = 1.1V
VTN = 0.52V,gamma = lambda = 0
k_n_p = 216uA/V^2
(1)计算W/L(2)VTC参数(3)NML与NMH
""")
# 参数
VDD = 1.1
RL = 2
VTN = 0.52
VOL = 0.05
k_n_p = 216
VOH = VDD
# 计算W/L:下拉NMOS处于饱和区,利用KCL方程求解而得
WL_ratio = 2 * (VDD - VOL) / (k_n_p * RL / 1000 * (VDD - VTN) ** 2)
k_n = k_n_p * WL_ratio / 1000
VIL = VTN + 1 / (k_n * RL)
VIH = VTN + math.sqrt((8 / 3) * (VDD / (k_n * RL))) - 1 / (k_n * RL)
Vth = VTN - 1 / (k_n * RL) + math.sqrt((VTN - 1 / k_n / RL) ** 2 + 2 * VDD / k_n / RL - VTN ** 2)
print("W/L = {:.3f}".format(WL_ratio))
print("VOH = {:.3f}V, VOL = {:.3f}V".format(VOH, VOL))
print("VIH = {:.3f}V, VIL = {:.3f}V".format(VIH, VIL))
print("VTH = {:.3f}V".format(Vth))
# 噪声容限
NMH = VOH - VIH
NML = VIL - VOL
print("NML = {:.3f}V, NMH = {:.3f}V".format(NML, NMH))
计算VTC参数需要的公式,根据MOS管的工作状态(饱和、线性、截止)列出对应的电流方程和KCL方程即可求解。
输出结果如下:
W/L = 14.450
VOH = 1.100V, VOL = 0.050V
VIH = 1.045V, VIL = 0.680V
VTH = 0.820V
NML = 0.630V, NMH = 0.055V