Principios de comunicación basados en Matlab Diseño del curso de simulación de sistemas de comunicación - Sistema de modulación analógica
% f0 frecuencia portadora (Hz)
% fm punto de frecuencia de modulación de frecuencia única (multi) (Hz)
% B: ancho de banda de banda base real % = = = = = = = = = = = = = = = = =
% Ancho de banda máximo de MaB (Hz)% = = = = = = = = = = = = = = = = = = =
% fs (frecuencia media) frecuencia de muestreo (Hz)
% fs1: primera frecuencia de muestreo
% fs2_esperada frecuencia de muestreo (segundos) (Hz)
% T; tiempo de simulación (segundos)
% coeficiente de modulación de amplitud beta
% sensibilidad KvVCO (rad/s/V)
% n0 densidad espectral de potencia de ruido (W/kHz)
Función AM_Simulación(f0, DF, fm, B, MaxB, fs, fs1, fs2_expect, T, beta, K1, K2, Kv, n0)
%========================================= == ===========================================
ts = 1/fs; % intervalo de muestreo
N = piso (T/Ts); % del total de puntos de muestreo en el dominio del tiempo (basado en fs1)
t = 0: Ts: (N-1)* Ts; % tiempo de muestreo
% -
% calcula la frecuencia portadora f01 después del submuestreo en la primera frecuencia de muestreo fs1.
f 01 = F0-piso(F0/fs 1)* fs 1
% si(f 01 & gt; fs1/2)
% f 01 = fs 1-f 01;
% end
% -
%Calcular la serie de filtrado de media banda
k = floor(log2(fs 1/fs2 _ expect)); % fs2_expect es la segunda frecuencia de muestreo esperada.
fs2 = fs1/(2^k); % fs2 es la segunda frecuencia de muestreo real.
%=========================================== ==================================================== ==============================================
% información de modulación
M = longitud (FM);
am = cero (1, N
Para m=1:M
p> p>
am = am+cos(2 * pi * FM(m)* t);
Fin;
DC _ offset = max(am)/ beta;
a = DC_offset+am;
% -
am = am/DC_offset;
a = a/ DC_offset; %%%%%%
% -
%========================= === ================================================ === ================================================ === ===========
% de modulación de amplitud
= 2 * pi * rand% fase inicial aleatoria de la portadora
s = a . * cos(2 * pi *(FDF)* t+θ0);% soy señal
%================== = ================================================== = ================================================== = ==================
% canal de ruido
Ruido = GenerarRuido(n0, fs, N, (FDF )
r = s + ruido
% -
% r_downRate = RateAdjust(r, fs, fs1, 'ITP FLT'); %%%Nota: Si el ruido blanco (o el ruido blanco de banda limitada) está submuestreado, la densidad espectral de potencia del ruido aumentará.
% -
%================================== === ================================================= === ================================================= === ====
%Filtrado de paso de banda del receptor
fc = MaxB
% r _ BPF = BPF _ filtro (r, (fDF ), fc, fs);
[r_BPF, hBPF] = BPF_filter(r, f0, fc, fs); % El receptor conoce f0 de antemano, pero no conoce DF de antemano.
% -
%θ_ BPF = Phi _ BPF(F0, fc, fs, (FDF));
θ_ BPF = Phi _ BPF (hBPF, fs, (FDF)); % Este parámetro no se utiliza para decodificar, pero debe conocerse al introducir la entrada theta al PLL.
%=========================================== ==================================================== ==============================================
% ajusta la velocidad de la señal de salida de BPF.
r _ BPF _ Decline rate = RateAdjust(r_BPF, fs, fs1, 'ITP FLT'); seleccione fs1 para garantizar que el ruido blanco de banda limitada no se muestre insuficientemente.
% -
ts 1 = 1/fs 1; % intervalo de muestreo
N1 = longitud(r_BPF_decline); total en el dominio del tiempo Porcentaje de puntos de muestreo ( basado en fs1)
t 1 = 0:ts 1:(n 1-1)* ts 1; % de tiempo de muestreo
%====== ==== =============================================== ==== =============================================== ==== =================================
%Usa el conocido f01 Obtén la I y la Q señales de la señal AM.
YC = tasa de disminución_r_BPF. *(2 * cos(2 * pi * f 01 * t 1));%%%%%%
ys = r_BPF_decline rate. *(-2 * sin(2 * pi * f 01 * t 1));%%%%%%
zI = filtro de media banda (yc, fs1, K); p>
zQ = filtro de media banda (ys, fs1, K); [xQ, QDelay] = filtro LPF(zQ, B, fs2);
% -
ts2 = 1/fs2 % intervalo de muestreo
N2 = longitud (Xi); % del total de puntos de muestreo en el dominio del tiempo (basado en fs2)
T2 = 0:Ts2:(N2-1)* Ts2 % de muestreo de tiempo
% -
θIQ = 2*pi*df*(15*(2^(k)-1)/fs1)+2 * pi * df * idelay/fs2 %Este parámetro no se utiliza para decodificación, pero es necesario conocerlo al introducir la entrada theta1 al PLL.
% -
%================================== === ================================================= === ================================================= === =========
%Utilice PLL para rastrear y compensar la diferencia de frecuencia y la fase inicial de la banda base.
% g = mean(ABS(Xi+j * xQ));
% Xi = Xi/gram % Para ajustar la amplitud de la señal del PLL de entrada, debe cámbielo a AGC.
% xQ = xQ/g;
% bloqueo de fase de banda base
[θ2, Io, Qo, PDo, LFo] = PLL_Baseband(xI, xQ, fs2, K1, K2, Kv, 1); % 1, operador
a_demod = Io
%============== === ================================================ === ================================================ === =========================
Porcentaje de eliminación de DC
% DC = media (a_demod(piso (0.2 * N2):N2));% temperatura
% a_demod_offset = a_demod-DC;
fcL = 60% Hz
a_demod_offsetted = AHPF_filter(a_demod , fs2, fcL
%================= ===================); =============================== ==================== =============================== ==================== ======
% TxRx
Figura (1);
Gráfico de rama (4, 2, 1); ; y etiqueta (' a (t)');
Gráfico de rama (4, 2, 3)); eje ([min(t)max(t)-Inf Inf]
Gráfico de rama (4, 2, 5);plot(t, r);ylabel(' r(t)') ; axis([min(t)max(t)-Inf Inf]);
Gráfico de rama (4, 2, 7); _ P _ F(t)'); eje ([min(t)max(t)-Inf Inf]
xlabel('t (s)')
n _ FFT = 2^(floor(log2(fs/b*100)));
Gráfico de rama (4, 2, 2); Psd_plot_log_N (a, fs, N _ FFT ); p>
Gráfico lateral (4, 2, 4); Psd_plot_log_N (s, fs, N _ FFT);
Gráfico de rama (4, 2, 6); _ FFT);
Gráfico de rama (4, 2, 8); Psd_plot_log_N (r_BPF, fs, N _ FFT);
% PLL
Figura ( 2);
Plot(t2, PDo); Espera; plot(t2, LFo, ' r '); eje ([min(T2)max(T2)-INF INF]); cuadrícula activada; leyenda ('PD\o', 'LF\o').
Arrastrar;
xlabel('t (s)')
Figura (3);
θ1 =θθ_ BPF-θIQ+2 * pi * DF * T2; Porcentaje basado en fs2
θ2 =θ2;
Gráfico lateral (311); '); arrastrar;
Leyenda (' \theta_1 ', ' \theta_2 '); Eje ([min(T2)max(T2)-Inf Inf]); Título Sincronización de portadora de banda base (2)');
θ_ e =θ1-θ2;
Gráfico de rama (312);
p>
y etiqueta(' \ theta _ e(t)'); leyenda (' \ theta _ e '); eje ([min(T2)max(T2)min(theta _ e)-1 max( theta _ e)+1]); cuadrícula abierta;
θ_ e = ángulo (exp(j *θ_ e));
Gráfico de rama (313); theta _ e);
xlabel('t (s)'), ylabel(' \theta _ e(t)'); leyenda (' \theta_e (-\pi,\pi ') ; Eje([min(T2)max(T2)min(theta _ e)-1 max(theta _ e)+1]); Cuadrícula abierta
% TxRx
Figura (4);
Gráfico de rama (611); plot(t, a); xlabel('), ylabel(' a(t)');
Gráfico de rama (612). ); plot(t, s); xlabel('), ylabel(' r(t)');
Gráfico de rama (614); , ylabel(' r _ B _ P _ F(t)');
Gráfico de rama (615); _ d(t '));
Gráfico de rama (616); plot(t2, a _ demod _ offseted); /p>
% TxRx
Imagen (5);
Gráfico de rama (211); xlabel('), ylabel(' a(); t)');
Gráfico de rama (212); plot(t2, a_demoded_offseted); xlabel('t'), ylabel('m(t'));
Figura (4);
%======================================= ====== ============================================== ====== ============================================== =====