Страница 1 из 1

FM демодулятор

Добавлено: 18 мар 2013, 23:29
Cosgrove
Здравствуйте

Я не специалист по matlab и ЦОС но хотелось бы разобраться с частотной модуляцией.
Делаю как тут http://www.dsplib.ru/content/fmdemod/fmdemod.html в matlab
Но результат получаю неожиданный, скорее всего я делаю что-то не так, или чего-то не понимаю.
Скрипты вложил

Подскажите решение проблемы или натолкните на мысль.

Спасибо за внимание

Re: FM демодулятор

Добавлено: 19 мар 2013, 19:31
Бахурин Сергей
Вот скрипт который модулирует и демодулирует FM (сделан на основе вашего скрипта)

Код: Выделить всё

close all; clear all; clc;

Fs = 3200;     % Sampling rate of signal
Fc = 500;       % Carrier frequency

t = [0:Fs-1]'/Fs;           % Sampling times
mod_sig = sin(2*pi*4*t);    % Channel 1
dev = 80;                   % Frequency deviation in modulated signal



%% FM modulator
z = zeros(length(t),1);     % complex envelope
int = 0;                    % integrator           
for k = 1:length(t)
     % integrator output (see FM modulator scheme)
    int = int + mod_sig(k)/Fs; 
    
    % FM signal complex envelope calculation for FM signal (see FM modulator scheme)
    z(k) = cos(2*pi*dev*int) + 1i*sin(2*pi*dev*int);   
end

%RF signal is real part of z.*exp(1i*2*pi*Fc*t)
fm = real(z.*exp(1i*2*pi*Fc*t));    

%spectrum 
[S frq] =  psd(fm, 8192, Fs);
figure; plot(frq, S)


%% FM demodulator

% LPF calculation
[b, a] = cheby2(6, 50, 0.2);

%frequency alignment and complex envelope calculation
i =  fm.*cos(2*pi*Fc*t);
q = -fm.*sin(2*pi*Fc*t);

%LPF
A = filter(b,a,i);
B = filter(b,a,q);

%differentiators output
dA = [0; diff(A)*Fs];
dB = [0; diff(B)*Fs];

%demodulator (see FM demodulator scheme)
dem = (dB.*A - dA.*B)./(A.^2+B.^2);


figure; plot(t, mod_sig, t, dem/(2*pi*dev),'r');
legend('mod signal', 'demod signal');

В результате вижу что демодулированный сигнал повторяет исходный модулирующий.
fm_demod.png
Будут вопросы - задавайте

Re: FM демодулятор

Добавлено: 19 мар 2013, 23:03
Cosgrove
Большое спасибо
В своем скрипте, нашел ошибку, в место минус поставил плюс.
А также, разбираюсь с фильтром ФНЧ .
Пока вопросов нет.
Еще раз спасибо.