Porting Costas Loop de Matlab a FPGA

1

He diseñado un Loop de Costas para la sincronización del operador en MATLAB, aquí está mi código:

% Siraj Muhammad
% 25/3/2015
% BPSK Demodulator
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

load RRC.mat

fc = 0.0500001;
phase_offset = pi/7;

N = length(rf_signal);
bb = zeros(1, N);
bb_f = zeros(1, N);
I_f = zeros(1, N);
Q_f = zeros(1, N);
I_r = zeros(1, N);
Q_r = zeros(1, N);
error = zeros(1, N);
PhErr = zeros(1, N);
error_integral = zeros(1, N);

% Loop Filter Coefficients
C1 = 2^2;
C2 = 1/2^8;

for i = 2:N
    % Downconverting to Baseband
    bb(i) = rf_signal(i).*exp(j*2*pi*fc*i+j*phase_offset).*exp(-j*PhErr(i-1));

    % Filtering
    bb_f = filter(RRC, bb(1:i));
    I_f = real(bb_f);
    Q_f = imag(bb_f);

    % Slicing
    I_d = sign(I_f(i));
    Q_d = sign(Q_f(i));

    % Error
    error(i) = I_d.*Q_f(i);

    % Loop Filter
    error_integral(i) = error(i).*C1 + error_integral(i-1);
    PhErr(i) = (error(i).*C2 + error_integral(i))/2^5;
end

figure; subplot 321; plot(real(bb)); title('I Channel')
subplot 322; plot(imag(bb)); title('Q Channel')
subplot 323; plot(I_f); title('I Channel Filter')
subplot 324; plot(Q_f); title('Q Channel Filter')
subplot 325; plot(error); title('Phase Error');
subplot 326; plot(PhErr); title('Loop Filter');

rf_signal se genera en otro script de MATLAB que produce la señal BPSK. La simulación en MATLAB muestra buenos resultados, bucles rastrea la fase y la frecuencia y se bloquea en ellos.

Luegodeverificareldiseño,loimplementéenVHDLusandoalgunosAlteraMegaCores.Sinembargo,lasimulacióndeModelSimnomuestraelresultadoesperado.Elbuclepareceoscilarenlugardebloquearse,aunqueelbucleestécerrado.

Y esta es la salida del filtro de bucle, puedes ver cómo está oscilando.

Revisétodoslosanchosdelasseñalesymeasegurédequenosedesbordaran.CuandoabroelbucleenMATLAByModelSim,obtengolamismasalidadefiltrodebucle.

Son opuestos porque los datos se modulan con coseno en MATLAB y sine en ModelSim. El problema es cuando el bucle está cerrado.

Cualquier consejo sería apreciado.

    
pregunta Siraj Muhammad

0 respuestas

Lea otras preguntas en las etiquetas