10、电路综合-基于简化实频的宽带匹配电路设计方法

2023-11-01 15:59

本文主要是介绍10、电路综合-基于简化实频的宽带匹配电路设计方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

10、电路综合-基于简化实频的宽带匹配电路设计方法

网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法,终于走到了SRFT的另一个究极用途,宽带匹配电路的设计。

1、之前的一些回顾与总结

之前也给出了一些电路综合的案例,但是这些案例必须基于解析函数形式的S参数,在更为一般的情况下我们难以基于此去完成设计,我们往往需要基于要匹配的阻抗去设计实际的电路:

5、电路综合-超酷-基于S11参数直接综合出微带线电路图
基于给定的S11参数的表达式综合出其对应的微带电路图,注意此处的S11参数表达式需要是解析形式(即要是函数表达式的形式)

6、电路综合-基于简化实频的SRFT微带线切比雪夫低通滤波器设计
基于切比雪夫函数进行电路综合,基于目标参数直接进行电路综合得到其对应的微带电路,给出了对应的理论与操作步骤(附Matlab代码)

7、电路综合-基于简化实频的SRFT微带线巴特沃兹低通滤波器设计
基于巴特沃斯函数进行电路综合,基于目标参数直接进行电路综合得到其对应的微带电路,给出了对应的理论与操作步骤(附Matlab代码)

8、电路综合-基于简化实频的SRFT微带线的带通滤波器设计
基于巴特沃斯与切比雪夫函数进行电路综合,基于目标参数直接进行电路综合得到其对应的带通的微带电路,给出了对应的理论与操作步骤(附Matlab代码)

2、简化实频的宽带匹配电路设计方法理论

阻抗匹配其实就是S11电路的匹配,给定需要匹配的阻抗数值去设计微带电路,其实就是给定了部分频点的S11参数去综合出电路图。我们唯一需要的就是根据部分频点的S11参数去拟合S11在理查德域的解析表达式。

这个拟合过程也可以看为一个优化过程,是为了使得解析表达式尽可能的接近已知的S11参数。其基本过程和9、电路综合-基于简化实频的任意幅频响应的微带电路设计一致,在此不过多赘述。

3、简化实频的宽带匹配电路Matlab代码与简单验证

案例:将10欧姆在2.1-5.1GHz内匹配至50欧姆,在代码中设置几个离散的频率点以及目标阻抗即可:

% 设置要控制的频点
f_target=[2.1 2.7 3.3 3.9 4.5 5.1]*1e9;
% 设置要控制的对应阻抗,进行归一化
z_target=[10 10 10 10 10 10]/Z0;

代码的主题如下所示(详细代码从最上方链接下载):

clear
clc
close all
global Z0
global freq_solve% 使用1GHZ的微带线,最高控制到3GHz,特性阻抗50欧姆
f=4e9;
fe=4e9;
Z0=50;
%使用k个级联微带线进行设计
k=6;%在DC处无零点
q=0;
%初始化H的系数
h=-1.*ones(1,k);
we=2*pi*fe;
tau=pi/2/we;
%光速
c=299792458;
ele_l=360*tau*f;
l=ele_l/360*c/f;
disp(['此处使用在',num2str(f/1e9),'GHz下电长度为',num2str(ele_l),'°的微带线进行实现']);% 设置要控制的频点
f_target=[2.1 2.7 3.3 3.9 4.5 5.1]*1e9;
% 设置要控制的对应阻抗,进行归一化
z_target=[10 10 10 10 10 10]/Z0;
% 转化为S11参数
s11_target=(z_target-1)./(z_target+1);% 定义优化变量
x0=h;
% Call optimization with no transformer
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
% opt=optimset('Display','off');
% warning('off');
[x,fval] = fmincon(@(x)objective_Z(x,fe,q,k,l,f_target,s11_target),x0,A,b,Aeq,beq,lb,ub,[]);
disp(['error is      ',num2str(fval)])
% warning('on');h=x;
h(k+1)=0;
% 基于优化得到的h计算其他参数
[G,H,F,g]=SRFT_htoG(h,q,k);
tau=pi/2/we;%求解频率范围,单位GHz
f_start=2;
f_stop=5;
f_step=0.1;
%求解范围
freq_solve=[f_start:f_step:f_stop]*1e9;%计算不同频率下的相移常数beta
beta=2*pi*freq_solve/c;
%转换到lamda域
lamda=1j*tan(beta*l);num_h=0;
for i=1:1:length(h)num_h=num_h+h(i).*lamda.^(length(h)-i);
end
num_g=0;
for i=1:1:length(g)num_g=num_g+g(i).*lamda.^(length(g)-i);
end
num_f=(1-lamda.^2).^(k/2);S11=num_h./num_g;SimthChart(3)=figure(3);
wxp_smithplot=smithplot(S11,'GridType','Z');
legend(['第',num2str(1),'次谐波']);
dcm_obj = datacursormode(SimthChart(3));
set(dcm_obj,'UpdateFcn',@myupdatefcn_smith1);
wxp_smithplot.Marker = {'+'};% 综合得到所需的微带电路
[Z_imp]=UE_sentez(h,g);
Z_imp=Z_imp.*Z0;
disp(Z_imp)

运行得到的结果如下所示:
在这里插入图片描述
从Smith圆图可见匹配较好,误差较小。构建ADS电路图,源阻抗设置为10欧姆:
在这里插入图片描述
ADS的仿真结果如下所示,可见匹配完美,设计合理:
在这里插入图片描述

4、简化实频功率放大器匹配设计

简化实频在功率放大器的设计中非常有用,对于功率放大器的匹配电路来说,不同频点的最佳频率是在不同阻抗点的,例如CGH40006S的最佳源阻抗与负载阻抗如下所示:
在这里插入图片描述
基于如上的最佳阻抗值进行SRFT电路设计,设计代码如下(源匹配和负载匹配可以通过修改注释来改变,提供了两种优化方法,提供修改注释来切换):

clear
clc
close all
global Z0
global freq_solve% 使用1GHZ的微带线,最高控制到3GHz,特性阻抗50欧姆
f=4e9;
fe=4e9;
Z0=50;
%使用k个级联微带线进行设计
k=5;%在DC处无零点
q=0;
%初始化H的系数
h=-1.*ones(1,k);
we=2*pi*fe;
tau=pi/2/we;
%光速
c=299792458;
ele_l=360*tau*f;
l=ele_l/360*c/f;
disp(['此处使用在',num2str(f/1e9),'GHz下电长度为',num2str(ele_l),'°的微带线进行实现']);% 设置要控制的频点,源匹配
f_target=[2.1 2.7 3.3 3.9 4.5 5.1]*1e9;
% 设置要控制的对应阻抗,进行归一化
z_target=[20-1j*12 20-1j*8 18-1j*4 7-1j*3 6-1j*7 10-1j*10]/Z0;% % 设置要控制的频点,负载匹配
% f_target=[2.1 2.7 3.3 3.9 4.5 5.1]*1e9;
% % 设置要控制的对应阻抗,进行归一化
% z_target=[28+1j*14 26+1j*15 20+1j*13 19+1j*9 16+1j*7 15+1j*5.5]/Z0;% % 设置要控制的频点
% f_target=[2.1 2.7 3.3 3.9 4.5 5.1]*1e9;
% % 设置要控制的对应阻抗,进行归一化
% z_target=[10 10 10 10 10 10]/Z0;% 转化为S11参数
s11_target=(z_target-1)./(z_target+1);%优化方法二选一
OPTIONS=optimset('MaxFunEvals',20000,'MaxIter',50000,'Algorithm','levenberg-marquardt');
x=lsqnonlin('objective_Z',x0,[],[],OPTIONS,fe,q,k,l,f_target,s11_target);%优化方法二选一
% A = [];
% b = [];
% Aeq = [];
% beq = [];
% lb = [];
% ub = [];
% % opt=optimset('Display','off');
% % warning('off');
% [x,fval] = fmincon(@(x)objective_Z(x,fe,q,k,l,f_target,s11_target),x0,A,b,Aeq,beq,lb,ub,[]);
% disp(['error is      ',num2str(fval)])
% % warning('on');h=x;
h(k+1)=0;
% 基于优化得到的h计算其他参数
[G,H,F,g]=SRFT_htoG(h,q,k);
tau=pi/2/we;%求解频率范围,单位GHz
f_start=2;
f_stop=5;
f_step=0.1;
%求解范围
freq_solve=[f_start:f_step:f_stop]*1e9;%计算不同频率下的相移常数beta
beta=2*pi*freq_solve/c;
%转换到lamda域
lamda=1j*tan(beta*l);
num_h=0;
for i=1:1:length(h)num_h=num_h+h(i).*lamda.^(length(h)-i);
end
num_g=0;
for i=1:1:length(g)num_g=num_g+g(i).*lamda.^(length(g)-i);
end
num_f=(1-lamda.^2).^(k/2);
S11=num_h./num_g;
SimthChart(3)=figure(3);
wxp_smithplot=smithplot(S11,'GridType','Z');
legend(['第',num2str(1),'次谐波']);
dcm_obj = datacursormode(SimthChart(3));
set(dcm_obj,'UpdateFcn',@myupdatefcn_smith1);
wxp_smithplot.Marker = {'+'};
% %------------------------------------
% 综合得到所需的微带电路[Z_imp]=UE_sentez(h,g);
Z_imp=Z_imp.*Z0;
disp(Z_imp)

运行结果如下所示:
在这里插入图片描述
构建输入匹配的ADS仿真电路图,注意此处是输入匹配,需要将微带线的输入输出顺序翻转(第一段微带线是49.6156欧姆,以此类推):
在这里插入图片描述
上图,1端口接的是50欧姆端口,2端口连接晶体管的栅极,仿真观察S22来判断其匹配结果,匹配效果很好:
在这里插入图片描述

上面设计的是输入匹配,下面进行输出匹配电路的设计,同样在上面代码的基础上修改注释,再进行综合:
在这里插入图片描述
匹配效果一般,基本满足要求,实际此处也需要考虑过拟合的问题,在此不额外赘述了。基于此结果构建输出匹配电路:
在这里插入图片描述
1端口接晶体管的漏极,2端口接50欧姆端口,观察S11的仿真结果如下所示,和理论一致:
在这里插入图片描述

这篇关于10、电路综合-基于简化实频的宽带匹配电路设计方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/324123

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复