Módem FM
La modulación FM es una modulación de envolvente constante, básicamente sin relación pico-promedio, alta utilización de PA y mejor rendimiento antiinterferencias que la modulación de amplitud. La desventaja es la baja utilización del ancho de banda.
La señal de modulación FM se expresa de la siguiente manera. Su esencia es la modulación de frecuencia diferencial, es decir, la frecuencia de la muestra es la frecuencia de la muestra anterior más la cantidad de cambio de la señal de modulación, que es específicamente. expresado como el cambio de fase de cada muestra.
Suponiendo que | x(t) | ≤ 1, entonces fd es la desviación de frecuencia máxima con respecto al punto de frecuencia central. Cuando x (t) es siempre igual a 1, es equivalente a la conversión ascendente fd.
La modulación FM generalmente expande el espectro. Esto se debe a que la esencia de la modulación de frecuencia es mover la frecuencia. El ancho de banda ocupado es la distancia máxima de movimiento de frecuencia más el ancho de banda de la banda base, es decir, R+2*fd. , donde R es la señal de banda base (velocidad de símbolo), factor de modulación dm=fd/fmax, fmax=R/2, | x(t) ≤ 1
La demodulación FM utiliza demodulación diferencial para extraer. el cambio de fase.
Según el principio de modulación FM, la fase de modulación en el tiempo t es
2*pi*fd* x(t-1)/fs+2*pi*fd*x (t) /fs
Donde dt = 1/fs, el incremento de fase es 2*pi*fd*x(t)/fs, que debe estar dentro del rango de [-pi pi], es decir, x(t) *El valor absoluto de fd/fs debe ser inferior a 0,5; de lo contrario, se producirá una distorsión por desbordamiento de fase.
Ajustar la ganancia de x(t) y garantizar que no haya distorsión de fase puede ajustar directamente el ancho de banda de la señal de modulación.
El diagrama de bloques requerido para la implementación de FM es el siguiente. La fs durante la demodulación no necesita ser igual a la fs durante la modulación. Se ajusta específicamente a través del retardo N para evitar el desbordamiento de fase.
Simulación de espectro
%% Trazar el espectro de la señal de banda base modulada de FM
% Aplicar modulación de banda base de FM a la fuente BPSK y trazar su
% espectro.
clear; close all;
% Establece los parámetros de ejemplo.
fs = 20e3 % Frecuencia de muestreo (Hz)
ts; = 1/fs; ? % Período de muestreo (s)
Rs = 1e3; % Velocidad de símbolo de banda base
dm = 1 % Factor de modulación FM fd = Rs/2*dm; ? % Desviación de frecuencia (Hz)
Nup = fs/Rs; % Tiempos de muestreo
%%
% Cree una fuente de símbolo BPSK con una duración de 1 s.
%%
Nsymb = 1*Rs;
symbBpsk = (randi([0 1], Nsymb, 1)-0.5)* 2;
%%
% Muestreo del símbolo BPSK a fs y darle forma mediante el filtro de configuración de pulso FIR de coseno elevado
%%
rrcFilter = rcosdesign(0.25,20,Nup,'norm');
dataRrcIn = upsample(symbBpsk,Nup);
dataRrcTemp = conv (dataRrcIn,rrcFilter);
p>NtailRrc = piso(length(rrcFilter)/2);
dataRrcOut? = dataRrcTemp(NtailRrc+1:end-NtailRrc); p>
% Escala de potencia, normaliza la potencia del punto de muestreo óptimo, la escala
% de la señal de entrada de FM determinará directamente el ancho de banda de FM
xOptSamp = dataRrcOut(1:Nup :end);
plot(xOptSamp,'*');
x = dataRrcOut/mean(abs(xOptSamp));
plot(x, '*');
%%
% Crea un objeto Sistema modulador de FM y modula la señal de entrada.
%%
MOD1 = comm.FMModulator('SampleRate', f
s,'FrequencyDeviation',fd);
y = step(MOD1,x);
%%
% Crea otro objeto modulador, |MOD2| , cuya desviación de frecuencia es
% dos veces mayor y aplica modulación FM.
%%
MOD2 = comm.FMModulator('SampleRate',fs,' FrequencyDeviation',2*fd);
z = step(MOD2,x);
%%
% Traza los espectros de las dos señales moduladas. La mayor desviación de frecuencia
% asociada con el canal 2 da como resultado un nivel de ruido 10 dB más alto.
%%
SA = dsp.SpectrumAnalyzer(' SampleRate',fs,'ShowLegend',true);
step(SA,[x y z])
%%
Ajustar la simulación del tamaño de la señal
% enlace FM
borrar;cerrar todo;
fb = 1e3;?
dm = 1;
fd = Rs/2*dm; ? % Desviación de frecuencia (Hz)
fs = 8e3;
Nup = fs/fb;
datos = (randi( [0 1],1000, 1)-0.5)*2;? % BPSK
figure;plot(data,'-*');
% filtro de modelado
p>rrcFilter = rcosdesign(0.25,20,Nup,'norm');
dataRrcIn = upsample(data,Nup);
dataRrcTemp = conv(dataRrcIn, rrcFilter );
NtailRrc = piso(longitud(rrcFilter)/2);
dataRrcOut? = dataRrcTemp(NtailRrc+1:end-NtailRrc);
dataIn = dataRrcOut/mean(abs(dataRrcOut)); ? % Potencia de escala
% La fase de modulación debe controlarse en [-pi pi], de lo contrario causará distorsión de fase, es decir, la absoluta. el valor de dataIn*fd/fs no puede ser superior a 0,5
dataIn = dataIn*fs/fd*0.5
maxDelta = max(abs(dataIn*fd/fs)) p>
FMMethod = comm. FMModulator('SampleRate',fs,'FrequencyDeviation',fd);
modSymb = step(FMMethod,dataIn);
FMDeMethod = comm. .FMDemodulator('Tasa de muestra',fs,
'FrequencyDeviation',fd);
demodSymb = step(FMDeMethod,modSymb);
isequal(fi(dataIn,1,13,10),fi(demodSymb,1,13 ,10))
return
% mi función
addTemp = 0;
for i = 1:length(dataIn)
addTemp = dataIn(i)+addTemp;
modPhase(i,1) = 2*pi*fd*addTemp*(1/fs);
fin
modSymbOut = exp(1j*modPhase);
dataDemodIn = modSymbOut;
% demod
dataDemodOut(1,1) = ángulo(dataDemodIn(1))/(2*pi*fd/fs);
Ndelay = 1;
para i = 1:longitud(dataDemodIn)-Ndelay p>
deltaPhase = dataDemodIn(i+Ndelay)*conj(dataDemodIn(i));
dataDemodOut(i+1,1) = ángulo(deltaPhase)/(2*pi*fd/ fs);
end
isequal(fi(dataIn,1,13,10),fi(dataDemodOut,1,13,10))