打印

用S参数设计LNA的笔记

[复制链接]
3454|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
840A|  楼主 | 2024-8-22 12:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 840A 于 2024-8-22 12:28 编辑

今天翻到了minicircuits的LNA:
还有原理图:

是一个达林顿的电压并联负反馈电路。
由于是负反馈电路,RF的反馈作用范围大于米勒电容的作用,遂画出简化的小信号图

用节点法:

得到矩阵U后,
对U(1)和U(2)求I1和I2的偏微分。
得到二端口Z参数
有了Z参数,就可以转化为S参数,转换公式为:

展开为:

U为前一步,算出来的矩阵U,二端口只需要U1和U2,50为输入和输出都是50欧的系统。
以上为解析计算,得到一个代数式子。
根据S参数的性质:
当S11=0,对应输入回波损耗RL
当S22=0,对应输出回拨损耗RL
S21为增益,在这个电路中S21为负值,相位相反。
根据上述条件去搜,rb和re2,rf,三个电阻的取值。
仿真电路:

s参数:

用计算搜的E6电阻的解,接近目标。
当然更为精确的匹配,需要用E24电阻和实际电路,网络分析仪。理论计算步骤就是这个步骤。

使用特权

评论回复

相关帖子

沙发
840A|  楼主 | 2024-8-22 12:39 | 只看该作者
本帖最后由 840A 于 2024-8-22 12:41 编辑

补:单管


s参数:

计算步骤相同.
matlab单管
clear all;
clc;

syms rf rb re rbe ro rc gm I1 I2
R0=50
M=[1,0;0,1]
VA=50
VT=26e-3
IC=10e-3
beta0=150
gm=IC/VT
ro=VA/IC
rbe=beta0/gm
rc=330

Y11=1/rb+1/rbe+1/rf
Y12=-1/rf
Y13=-1/rbe

Y21=-1/rf+gm
Y22=1/rf+1/ro+1/rc
Y23=-1/ro-gm

Y31=-1/rbe-gm
Y32=-1/ro
Y33=1/rbe+1/re+1/ro+gm
Y=[Y11,Y12,Y13;Y21,Y22,Y23;Y31,Y32,Y33]
I=[I1;I2;0]
U=inv(Y)*I
Z=[diff(U(1),I1),diff(U(1),I2);diff(U(2),I1),diff(U(2),I2)]
S=inv(Z+R0*M)*(Z-R0*M);
python:穷举电阻_单管
import math
import itertools

def generate_E_set(a='E6',minmax=[0,1]):
    E24_T=[1.0,1.1,1.2,1.3,1.5,1.6,1.8,2,2.2,2.4,2.7,3,3.3,3.6,3.9,4.3,4.7,5.1,5.6,6.2,6.8,7.5,8.2,9.1]
    E6_T=[1.0,1.5,2.2,3.3,4.7,6.8]
    E12_T=[1.0,1.5,2.2,3.3,4.7,6.8]
    _E_ALL=[]
    if(a=='E6'):
        _E_T=E6_T
    elif(a=='E12'):
        _E_T=E12_T
    elif(a=='E24'):
        _E_T=E24_T
    else:
        return []
    for i in range(minmax[0],minmax[1]):
        for v in _E_T:
            _E_ALL.append(v*math.pow(10,i))
    return _E_ALL

def get_s11(rf,re,rb):
    return -(1888475000.0*re + 103350000.0*rf + rb*(1888475.0*re - 1802000.0*rf - 793157.0*re*rf + 1893350000.0) + 39660475.0*re*rf + 4875000000.0)/(1888475000.0*re + 103350000.0*rf + 39660475.0*re*rf + rb*(77427475.0*re + 2332000.0*rf + 793262.0*re*rf + 2088350000.0) + 4875000000.0)


def get_s22(rf,re,rb):
    return -(1888475000.0*re - 91650000.0*rf + rb*(1888475.0*re - 2068000.0*rf - 717618.0*re*rf + 1893350000.0) - 35878525.0*re*rf + 4875000000.0)/(1888475000.0*re + 103350000.0*rf + 39660475.0*re*rf + rb*(77427475.0*re + 2332000.0*rf + 793262.0*re*rf + 2088350000.0) + 4875000000.0)

def get_s21(rf,re,rb):
    return (100.0*rb*(755390.0*re - 750000.0*rf + re*rf + 1950000.0))/(2088350000.0*rb + 1888475000.0*re + 103350000.0*rf + 77427475.0*rb*re + 2332000.0*rb*rf + 39660475.0*re*rf + 793262.0*rb*re*rf + 4875000000.0)

def show(comb):
    rf=combination[0]
    re=combination[1]
    rb=combination[2]
    print("rf=%.0f,re=%.1f,rb=%.0f,s11=%.3f,s22=%.3f,s21=%.3f" % (rf,re,rf,get_s11(rf,re,rb),get_s22(rf,re,rb),get_s21(rf,re,rb)))

# 子收敛函数
def good_enough_approach(x,ref):
    return ((abs(x-ref)/ref)<ERROR_MAX)

def good_enough_less(x,ref):
    return abs(x)<ref

def good_enough_great(x,ref):
    return abs(x)>ref

# 总收敛函数
def set_is_good_enough(comb):
    rf=combination[0]
    re=combination[1]
    rb=combination[2]
    s11=get_s11(rf,re,rb)
    s21=get_s21(rf,re,rb)
    s22=get_s22(rf,re,rb)
    return good_enough_less(s11,0.05) and good_enough_less(s22,0.05) and good_enough_great(s21,4.0)

E_RF=generate_E_set('E6',[2,3])
E_RE=generate_E_set('E6',[0,1])
E_RB=generate_E_set('E6',[2,4])
# 穷举
for combination in itertools.product(E_RF,E_RE,E_RB):
    if(set_is_good_enough(combination)):
        show(combination)
用的E6电阻,考虑到模型的精度,E24,还是到实践环节解决吧。E6电阻搜索结果
rf=330,re=4.7,rb=330,s11=-0.041,s22=-0.008,s21=-5.305
rf=330,re=4.7,rb=330,s11=-0.033,s22=-0.013,s21=-5.348
rf=330,re=4.7,rb=330,s11=-0.028,s22=-0.016,s21=-5.375
rf=330,re=4.7,rb=330,s11=-0.025,s22=-0.019,s21=-5.395
rf=330,re=4.7,rb=330,s11=-0.022,s22=-0.020,s21=-5.407
rf=330,re=4.7,rb=330,s11=-0.021,s22=-0.022,s21=-5.416
rf=470,re=3.3,rb=470,s11=0.026,s22=0.048,s21=-7.366
rf=470,re=3.3,rb=470,s11=0.030,s22=0.045,s21=-7.394
rf=470,re=3.3,rb=470,s11=0.032,s22=0.043,s21=-7.412
rf=470,re=3.3,rb=470,s11=0.034,s22=0.042,s21=-7.424
rf=680,re=1.0,rb=680,s11=-0.046,s22=0.012,s21=-11.634
rf=680,re=1.0,rb=680,s11=-0.041,s22=0.008,s21=-11.694
rf=680,re=1.0,rb=680,s11=-0.037,s22=0.005,s21=-11.736
rf=680,re=1.0,rb=680,s11=-0.035,s22=0.004,s21=-11.762
rf=680,re=1.0,rb=680,s11=-0.034,s22=0.002,s21=-11.780




使用特权

评论回复
板凳
840A|  楼主 | 2024-8-22 12:49 | 只看该作者
总结:
1、从节点电压法,求解个点电压,用求解的节点电压构建二端口网络,Z参数
2、从Z参数转换为S参数
3、s11=0,s22=0,s21=目标增益,为收敛条件。
相较于模电教材的,输入阻抗,需要连接负载。输出阻抗,输入需要短路。比较麻烦。
S参数在阻抗匹配的线性电路设计,还是值得学习的。如果输入电阻和输出电阻不是50欧,需要用到S’参数。

使用特权

评论回复
地板
xch| | 2024-8-23 09:36 | 只看该作者
没等算完就被炒鱿鱼了。

使用特权

评论回复
评论
叶春勇 2024-8-26 08:23 回复TA
纸上游戏不必上头,这个是吃饱了没事,研究的。 
5
叶春勇| | 2024-8-26 08:20 | 只看该作者
实测电路,单管。rf=680 ,b=1e3,re=2

断电

通电:
swr:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

49

帖子

0

粉丝