ЛЧМ квадратурный знаковый коррелятор в Матлаб
Тема знакового коррелятора уже подымалась на нашем сайте. Данный пост это моделирование знакового квадратурного коррелятора на базе ЛЧМ сигнала в Матлаб. Моделирование коррелятора в Матлаб дает ответы на вопросы наилучшей совместимости частоты дискретизации с полосой частот в которой формируется сигнал в случае, если дискретизация проводится по полосе формируемых частот. Итак: имеется ЛЧМ сигнал 71...79 кГц который занимает полосу в 8кГц. По Найквисту частота дискретизации в этом случае должна быть не менее 16 кГц.
Матлаб модель квадратурного знакового коррелятора:
%% инициализация
clc;
clear all;
f_begin = 71000; % начальная частота 71 кГц
f_end = 79000; % конечная частота 79 кГц
f_dt = 39700; % частота дискретизации Гц
tch_begin = 0; % начальное время моделирования
tch1 = 0; % начальное время модели
tch2 = 13e-3; % конечное время модели
tch_end = 3*tch2; % конечное время моделирования
tch_dt = 1/f_dt; % время одного дискрета
%Nt = tch2*f_dt;
%% моделирование
% время моделирования от tch_begin до tch_end шаг tch_dt
%tch = linspace(tch_begin,tch_end,768);
% время существования моделей
tch_lf = tch1:tch_dt:(tch2-tch_dt);
% количество выборок в модели
tm = length(tch_lf);
fprintf('Количество дискретов за время существ. моделей 13 мсек %d\n', tm);
% Формирование ЛЧМ сигнала на участке 39 мсек
y_t1 = zeros(1,tm);
y_t2 = zeros(1,tm);
y_lf = chirp(tch_lf,f_begin,tch2,f_end, 'li', pi);
y = cat(2,y_t1,y_lf,y_t2);
tst = length(y);
% fprintf('Количество дискретов за время моделирования 39 мсек %d\n', tst);
% косинусная модель
x_cos = chirp(tch_lf,f_begin,tch2,f_end);
% синусная модель
x_sin = imag(hilbert(x_cos));
% сигнал в противофазе
%x_sin = x_cos.*x_cos;
% модель cos в логике
x_log_cos = dec2bin( reshape( x_cos > 0, [], 1 ));
% модель sin в логике
x_log_sin = dec2bin( reshape( x_sin > 0, [], 1 ));
% сигнал в логике
y_log = dec2bin( reshape( y > 0, [], 1 ));
fprintf('Модель cos %s', x_log_cos);
fprintf('\n');
fprintf('Модель sin %s', x_log_sin);
fprintf('\n');
fprintf('Сигнал %s', y_log);
fprintf('\n');
fprintf('\n');
% бинарный формат моделей и сигнала
x_bit_cos = reshape( x_cos > 0, [], 1 );
x_bit_sin = reshape( x_sin > 0, [], 1 );
y_bit = reshape( y > 0, [], 1 );
% распечатка HEX кода моделей если кол. дискр. моделей без остатка /4
if (mod(tm,(4*round(tm/4))) == 0)
rsh_cos = reshape( x_cos > 0, [], tm/4 );
rsh_sin = reshape( x_sin > 0, [], tm/4 );
% модели в hex
x_hex_cos = dec2hex( bi2de(rsh_cos', 'left-msb'));
x_hex_sin = dec2hex( bi2de(rsh_sin', 'left-msb'));
% формат строки
formatSpec_x_cos_hex = 'Модель cos hex %s';
formatSpec_x_sin_hex = 'Модель sin hex %s';
% значения y_hex в hex виде
fprintf(formatSpec_x_cos_hex, x_hex_cos);
fprintf('\n');
fprintf(formatSpec_x_sin_hex, x_hex_sin);
fprintf('\n');
fprintf('\n');
% открытие файла на запись косинусной модели
fid = fopen('x_hex_cos.txt', 'wb');
% проверка корректности открытия
if fid == -1
error('File is not opened');
end
% запись в файл
fwrite(fid, x_hex_cos);
% закрытие файла
fclose(fid);
% открытие файла на запись синусной модели
fid = fopen('x_hex_sin.txt', 'wb');
% проверка корректности открытия
if fid == -1
error('File is not opened');
end
% запись в файл
fwrite(fid, x_hex_sin);
% закрытие файла
fclose(fid);
else
fprintf('Невозможно создать полный HEX код моделей\n')
fprintf('Количество дисретов моделей не делится без остатка на 4\n');
fprintf('Необходимо изменить частоту дискретизации \n\n');
end
z_cos = zeros(3*tm);
z_sin = zeros(3*tm);
z = zeros(3*tm);
% Коррелятор знаковый
for tm_mod = 1:(2*tm)
% побитовая XOR в матрицу xy_cos
xy_cos = bitxor(y_bit(tm_mod:(tm_mod+(tm-1))), x_bit_cos);
% побитовая XOR в матрицу xy_sin
xy_sin = bitxor(y_bit(tm_mod:(tm_mod+(tm-1))), x_bit_sin);
% подсчет совпадений
z(tm_mod) = (tm/2 - length(find(xy_cos))) + (tm/2 - length(find(xy_sin)));
end
% максимальное значение в свертке
fprintf('Максимум в свертке %d\n', max(z(:,1)));
fprintf('\n');
%% графика
figure
tr = 1:tst;
plot(tr/f_dt, y), grid;
xlabel('Время мсек');
title('ЛЧМ сигнал');
zoom xon;
figure
plot(tch_lf, x_cos), grid;
xlabel('Время (в сек)');
title('ЛЧМ модель cos');
zoom xon;
figure
plot(tch_lf, x_sin), grid;
xlabel('Время (в сек)');
title('ЛЧМ модель sin');
zoom xon;
figure
tl = 1:(3*tm);
plot(tl, z), grid;
xlabel('Дискреты');
title('Знаковый коррелятор');
zoom xon;
Модель коррелятора работает просто. Сигнал, который сформирован в виде матрицы, в цикле как-бы 'заползает' на свои косинусную и синусную модели, которые сформированы тоже в виде матриц.
Каждый шаг в циле производится логическая свертка сигнала со своими синусной и косинусной моделями. Проще говоря подсчитывается количество логических совпадений и несовпадений сигнала с моделями.
При завершении всего цикла моделирования получаем результат в виде диаграммы с максимумом совпадений за время моделирования.
Программа моделирования снабжена обильными комментариями, а также полезным участком кода позволяющими сформировать HEX код моделей для возможного их использования в ПЛИС при создании знакового квадратурного коррелятора. Меняя частоту дискретизации можно, в режиме реального времени (шутка) оценивать качество свертки по двум параметрам - количеству совпадений в максимуме и качеству диаграммы коррелятора в части выбросов до и после корреляционного максимума.
В данном конкретном случае изменение частоты дискретизации в сторону существенного отклонения от целочисленной кратности верхней частоте ЛЧМ сигнала (79 кГц) приводит к ухудшению качества свертки и уменьшению количества совпадений сигнала с моделями в максимуме.
Электроника :
- Техника электроника (11)
- Полезная электроника (4)
- Электроника для всех (5)
- Техника для дома (6)
- Cхемотехника ПЛИС (11)
- Пректирование PCAD (4)
Программирование :
- Микроконтроллеры (9)
- ПЛИС VHDL Verilog (29)
- C++ Builder (7)
- Visual Studio C++ C# (7)
- Java programming (7)
- Matlab programming (4)
Сайтостроение :
- Сайтостроение HTML (5)
- Сайтостроение PHP (8)
- PHP CMS на файлах (3)
- Web инструменты (9)
- Полезное вебмастеру (11)
- SEO раскрутка сайта (4)
- PHP скрипты (3)
Реклама :
Книги и учебники :
- Шаблоны сайтов (6)
- Книги и учебники (2)
Компьютер и интернет :
Поиск по сайту :
Реклама :
Облако меток :
Бесплатная подписка :
Статистика :
- Популярность (3)
- Посещаемость (3)
- Поисковые запросы (3)