最近在学习用MATLAB,这次来演示一下用MATLAB进行射频接收系统仿真,对比一下。APPcad的仿真差异。
MATLAB仿真接收系统simlink仿真一下有两种方式,自下而上和自上而下两种方式。
自上而下
打开MATLAB的APP,选择RF budget analyzer
依次输入模块参数即可。
自上而下的过程中发现,系统计算参数没有把滤波器的参数计算进去,我换成了另一个器件。
选择导出参数,执行命令rfb
自下而上
就是把上面的每个模块参数语言话
elements(1) = rfelement('Name','TRSwitch','Gain',-1.3,'NF',2.3,'OIP3',37);
这个就是第一个模块,名字叫TRSwitch,增益-1.3dB 噪声系数2.3dB oip3 37dBm
依照每个模块的参数性质命名
elements(2) = rffilter('ResponseType','Bandpass', ...
'FilterType','Butterworth','FilterOrder',6, ...
'PassbandAttenuation',10*log10(2), ...
'Implementation','Transfer function', ...
'PassbandFrequency',[Fcenter-Bwpass/2 Fcenter+Bwpass/2],'Zout',50, ...
'Name','RF_Filter');
射频滤波器的响应方式,滤波器类型,滤波器阶数,截止点,中心频率,阻抗。
elements(3) = amplifier( 'Name','LNA','Gain',15,'NF',1.5,'OIP3',26, ...
'Zin',Z);
elements(4) = amplifier( 'Name','Gain','Gain',10.5,'NF',3.5,'OIP3',23);
elements(5) = modulator('Name','Demod','Gain',-7,'NF',7,'OIP3',15, ...
'LO',5.4e9, 'ConverterType','Down');
Fcenter = 400e6;
Bwpass = 5e6;
elements(6) = rffilter('ResponseType','Bandpass', ...
'FilterType','Butterworth','FilterOrder',4, ...
'PassbandAttenuation',10*log10(2), ...
'Implementation','Transfer function', ...
'PassbandFrequency',[Fcenter-Bwpass/2 Fcenter+Bwpass/2],'Zout',50, ...
'Name','IF_Filter');
elements(7) = amplifier( 'Name','IFAmp','Gain',40,'NF',2.5,'Zin',Z);
elements(8) = amplifier('Name','AGC','Gain',17.5,'NF',4.3,'OIP3',36);
superhet = rfbudget( 'Elements',elements,'InputFrequency',5.8e9, ...
'AvailableInputPower',-66,'SignalBandwidth',20e6)
输入频率,输出信号幅度,输入信号带宽
执行后的结果
结果与上面的自上而下基本相同(上文是7个器件,这里是8个器件)
自下而上可以导出模块模型
执行命令 show(superhet);
exportRFBlockset(superhet)
exportTestbench(superhet);
最后可以执行打包成一个模块,进行频谱监测。
上图是根据不同输入功率进行IIP3的仿真,这样看IIP更直观。
总结
与APPCAD相比,或者ADS的接收系统仿真比,MATLAB的仿真系统需要命令调用,对于射频工程师来说上手不熟悉,但是MATLAB的的仿真功能强大,给出的仿真结果更利于射频工程师进行设计参考。结果更直观。
对于系统分析来说,MATLAB的功能更强大一些。