MATLAB仿真上变频过程中的多率信号处理

        仿真上变频过程中的多率信号处理,包括实现N倍插值、混频器上变频、正交双通道处理,利用相位编码信号来看上变频过程中信号的变化。

        对于插值的理论这里不做过多的解释,仅说明如何利用仿真来实现。

         如上图所示,这是一个基带信号然后经过正交变换到中频的过程,基带的采样率为N SPS,经过M倍的插值,然后经过上变频得到中频信号,经过M倍的插值后,采样率由N SPS降为N*M SPS。下面就仿真由基带到中频的过程 

         信号采用相位编码信号,基带采样率为160MSPS,中频载波为400MHz。插值倍数为12倍,采用三级内插,第一级采用3倍抽取,第二级、第三级采用2倍内插。经过12倍的内插后的采样率为1920MSPS

仿真结果如下所示:

        码频80MHz,单个脉冲码长为4,占空比25%,采样率为160MSPS的相位编码信号,从下图的时域波形图来看,单个脉冲的4个码值能够明显区分。频域的带宽(3dB带宽)为-40MHz~40MHz,

        第一级内插(三倍内插)后的波形图如下图所示。

第一级滤波后波形图如下图所示。

第二级内插(2倍)后的波形图如下图所示

第二级滤波后的波形图如下图所示

第三级内插(2倍)后的波形图如下图所示。 

第三级滤波后的波形图如下图所示。 

上变频后,频谱被搬移到400MHz的中频,信号时域得到高频正弦信号的调制。从时域图形来看,能够明显看出相位编码信号的单个脉冲的4个码值。 

然后经过INV SINC滤波器 。INV SINC函数补偿后,信号的功率被增大。以补偿DAC输出的高频输出的SINC函数损耗。

 仿真代码:

%% 参数
clc;
clear all;
close all;

fc = 400e6;
fs = 160e6;     %基带采样率
PRT = 200e-9;   %脉冲重复周期
N = 1024;       %脉冲数
CPI=N*PRT;

%% 产生一个CPI的M序列 80M码率
Np = 4;
length_M= 32;
feedback=[1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1]; 
register = [zeros(1,length_M-1) 1];
for i=1:N*Np
    BP_s(i) = mod(sum(feedback(2:end).*register),2);  
    for j=1:length_M-1
        register(length_M-j+1) = register(length_M-j);
    end
    register(1)=BP_s(i) ;   
end
BP_s=2*(BP_s-0.5);

%% 采样到160M的基带信号
st_tmp = reshape(BP_s, Np, N).';
st_1 = [];
for i=1:Np
    st_1 = [st_1 st_tmp(:,i) st_tmp(:,i) ];  %发射信号
end

st = [];
for i=1:N
    st = [st  st_1(i,:)  zeros(1,3*length(st_1(i,:)))];      %编码信号  25%占空比
end

BP_I=st;
BP_Q=zeros(1,length(st));
%% 上变频I通道

 s_480M_I = zeros(1,3*length(BP_I));
 s_480M_I(1:3:end) = BP_I(1:end);
 s_XB1_I=filter(duc_XB1,s_480M_I);         %XB1滤波
 
 s_960M_I = zeros(1,2*length(s_XB1_I));
 s_960M_I(1:2:end) =s_XB1_I(1:end);
 s_HB2_I=filter(duc_HB2,s_960M_I);         %HB2滤波
 
 s_1920M_I = zeros(1,2*length(s_HB2_I));
 s_1920M_I(1:2:end) =s_HB2_I(1:end);
 s_HB3_I=filter(duc_HB3,s_1920M_I);        %HB3滤波
 
 t=0:1/fs/12:CPI-1/fs/12;                           %通过NCO
 NCO_I=cos(2*pi*fc*t);
 s_out_I=s_HB3_I.*NCO_I;   
 
 %% 上变频Q通道
 s_480M_Q= zeros(1,3*length(BP_Q));
 s_480M_Q(1:3:end) = BP_Q(1:end);
 s_XB1_Q=filter(duc_XB1,s_480M_Q);         %XB1滤波
 
 s_960M_Q= zeros(1,2*length(s_XB1_Q));
 s_960M_Q(1:2:end) = s_XB1_Q(1:end);
 s_HB2_Q=filter(duc_HB2,s_960M_Q);         %HB2滤波
 
 s_1920M_Q= zeros(1,2*length(s_HB2_Q));
 s_1920M_Q(1:2:end) =s_HB2_Q(1:end);
 s_HB3_Q=filter(duc_HB3,s_1920M_Q);        %HB3滤波
 
  t=0:1/fs/12:CPI-1/fs/12;                          %通过NCO
 NCO_Q=sin(2*pi*fc*t);
 s_out_Q=s_HB3_Q.*NCO_Q;     
 

 第一级滤波器:

function Hd = duc_XB1
%DUC_XB1 Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.3 and DSP System Toolbox 9.5.
% Generated on: 26-Feb-2022 17:04:54

% Equiripple Lowpass filter designed using the FIRPM function.

% All frequency values are in MHz.
Fs = 480;  % Sampling Frequency

Fpass = 62.4;              % Passband Frequency
Fstop = 96;                % Stopband Frequency
Dpass = 0.0057563991496;   % Passband Ripple
Dstop = 5.6234132519e-05;  % Stopband Attenuation
dens  = 20;                % Density Factor

% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);

% Calculate the coefficients using the FIRPM function.
b  = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);

 第二级滤波器:

function Hd = duc_HB2
%DUC_HB2 Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.3 and DSP System Toolbox 9.5.
% Generated on: 28-Feb-2022 19:29:16

% Equiripple Halfband lowpass filter designed using the FIRHALFBAND
% function.

% All frequency values are in MHz.
Fs = 960;  % Sampling Frequency

N     = 18;   % Order
Fpass = 120;  % Passband Frequency

% Calculate the coefficients using the FIRPM function.
b  = firhalfband(N, Fpass/(Fs/2));
Hd = dfilt.dffir(b);

 第三级滤波器

function Hd = duc_HB3
%DUC_HB3 Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.3 and DSP System Toolbox 9.5.
% Generated on: 26-Feb-2022 21:20:29

% Equiripple Halfband lowpass filter designed using the FIRHALFBAND
% function.

% All frequency values are in MHz.
Fs = 1920;  % Sampling Frequency

N     = 8;    % Order
Fpass = 102;  % Passband Frequency

% Calculate the coefficients using the FIRPM function.
b  = firhalfband(N, Fpass/(Fs/2));
Hd = dfilt.dffir(b);

INV SINC滤波器:

function Hd = duc_invsinc
%DUC_INVSINC Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.3 and DSP System Toolbox 9.5.
% Generated on: 26-Feb-2022 21:13:36

Numerator = [2 -8 21 -71 794 -71 21 -8 2];  % Numerator coefficient vector

Hd = dfilt.dffir(Numerator);

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下变频(即变频调速控制)是一种常用于电机调速的技术,在MATLAB可以进行仿真。下面我将简要介绍如何使用MATLAB进行上下变频仿真。 首先,我们需要编写MATLAB程序来模拟上下变频调速控制系统。可以使用MATLAB的Simulink工具来建立系统模型。在模型,我们需要包括电机模型、变频器模型、速度反馈环路和调速控制器。 电机模型可以通过建立等效电路模型来实现,其包括电阻、电感、电动势等元件。变频器模型可以使用特定的模型来表示,也可以根据实际的变频器参数建立模型。速度反馈环路通常使用编码器或传感器来测量电机转速。 接下来,我们需要设计一个合适的调速控制器来实现上下变频控制。可以使用PID控制器或其他先进的控制算法来设计调速控制器。控制器的目标是根据速度反馈信号调整变频器输出频率,使电机达到期望的转速。 完成模型和控制器设计后,我们可以在Simulink运行仿真。通过调整输入信号或控制器参数,我们可以观察电机的转速响应和整个系统的性能。通过仿真结果,我们可以评估控制器的稳定性和鲁棒性,并对系统进行优化。 总结来说,使用MATLAB进行上下变频仿真可以帮助我们理解和评估电机调速控制系统的性能。我们可以在Simulink建立系统模型,包括电机模型、变频器模型和调速控制器。通过仿真可以观察系统的响应和性能,并对控制策略进行优化。这种仿真方法可以提高变频调速系统的设计和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值