|
BPSK матлаб модулятор демодулятор |
|
|
|
Mar 19 2018, 12:14
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Имеется код BPSK модема, передатчик и приемник. CODE clear all; Br = 117.1875*10^3; Fd = Br*8;
Fif = 20*10^6; Fdif = 60*10^6; Fdopl = 100;
%% === TRANSMITTER === M = pngen(5); D = rand(1, 200*8) > 0.5; CRC = zeros(1, 16); for i=1:length(D), CRC(16) = xor(CRC(16), D(i)); CRC = [CRC(2:16) CRC(1)]; end; FILL = ones(1, 200)*0.5; DATA = [dec2bin(length(D)/8, 11)=='1' D CRC]; packet = [FILL M M diff_enc([0 DATA]) FILL]*2-1;
% redescr Ndkr = Fd/Br; pkt = packet(ceil(0.01:1/Ndkr:length(packet)));
hch = firls(31, [0 .24 .3 .5]*2, [1 1 0 0]); pktf = filter(hch, [1], pkt);
% upsample t1 = upsample4(pktf, 31); t2 = upsample4(t1, 31); pktfu = upsample4(t2, 31)';
% -> IF l = length(pktfu); s = sin(2*pi*(Fif+Fdopl)*(0:1/Fdif:l/Fdif)); c = cos(2*pi*(Fif+Fdopl)*(0:1/Fdif:l/Fdif)); pkts = pktfu.*s(1:l); pktc = pktfu.*c(1:l);
%% === TRANSMIT LINE === Ir = awgn(awgn(pkts, 0.05), 0.01); Qr = awgn(awgn(pktc, 0.05), 0.01);
%% === RECEIVER === % -> 0 l = length(Ir); s = sin(2*pi*Fif*(0:1/Fdif:l/Fdif)); c = cos(2*pi*Fif*(0:1/Fdif:l/Fdif));
Rreu = Ir.*s(1:l) + Qr.*c(1:l); Rimu = Qr.*s(1:l) - Ir.*c(1:l);
tr00 = downsample4(Rreu); tr01 = downsample4(tr00); Rre_ = downsample4(tr01); Rre = filter(hch, [1], Rre_);
tr10 = downsample4(Rimu); tr11 = downsample4(tr10); Rim_ = downsample4(tr11); Rim = filter(hch, [1], Rim_);
%figure; hold on; plot(Rre); plot(Rim, 'r');
% detection Ms = M(ceil(0.01:1/Ndkr:length(M))); cfh = Ms(length(Ms):-1:1); cre = filter(cfh, [1], Rre)/length(cfh); cim = filter(cfh, [1], Rim)/length(cfh); %cr = sqrt(cre.^2 + cim.^2); cr = (7/8)*max(abs(cre), abs(cim)) + (1/8)*min(abs(cre), abs(cim));
%figure; hold on; plot(cre); plot(cim); plot(cr, 'r');
env(length(cr)) = 0; for j=1:length(cr), f = max(1, j-Ndkr*length(M)+2*Ndkr); t = min(length(cr), max(2, j-Ndkr)); env(j) = sum(cr(f:t))/(t-f); end;
%figure; hold on; plot(cr, 'r'); plot(env, 'g'); plot(env*5);
% for i=length(M)*Ndkr+1:length(cr)-1, c1 = cr(i) > env(i)*5; % c2 = (cr(i) > cr(i-1)) && (cr(i) > cr(i+1)); c2 = (cr(i-1) > cr(i-2)) && (cr(i-1) > cr(i)); c3 = abs(cr(i)-cr(i-length(M)*Ndkr)) < 4*env(i); c4 = cr(i-length(M)*Ndkr) > env(i-length(M)*Ndkr)*5;
if c1 && c2 && c3 && c4, break; end; end; i re = Rre(i:length(Rre)); im = Rim(i:length(Rim));
%figure; hold on; plot(re); plot(im, 'r'); figure; hold on; plot(cr, 'r'); plot(env, 'g'); plot(env*5); plot((c1&c2&c3&c4)*1.3, 'k');
% l = length(re); lb = length(packet); Yre(lb) = 0; Yim(lb) = 0; fre(lb) = 0; fim(lb) = 0; are(lb) = 0; aim(lb) = 0; mark(l) = 0; bit(lb) = 0;
k = 1; gamma = 0.1; Yre(1) = re(1); Yim(1) = im(1);
for i = 8:8:length(re)-10, mark(i) = 1; are(k) = sum(re(i-6:i-1)); aim(k) = sum(im(i-6:i-1));
% okre(k) = are(k)*Yim(k) - aim(k)*Yre(k); okim(k) = aim(k)*Yim(k) + are(k)*Yre(k);
bit(k) = sign(okim(k));
fre(k) = are(k)*bit(k); fim(k) = aim(k)*bit(k);
Yre(k+1) = (1-gamma)*Yre(k) + gamma*fre(k); Yim(k+1) = (1-gamma)*Yim(k) + gamma*fim(k);
k = k + 1; end;
bit_dec = diff_dec(sign(bit+1)); bits = bit_dec(2:length(bit_dec));
%figure; hold on; plot(okim); plot(okre, 'r'); %figure; hold on; plot(re); plot(Yre(ceil(0.01:1/Ndkr:length(bit))), 'r'); %figure; hold on; plot(im); plot(Yim(ceil(0.01:1/Ndkr:length(bit))), 'r');
figure; hold on; plot(im); plot(mark, 'k');
% len = bin2dec(int2str(bits(1:11))); data = bits(12:12+len*8-1); rcrc = bits(12+len*8:12+len*8+15); crc = zeros(1, 16); for i=1:length(D), crc(16) = xor(crc(16), data(i)); crc = [crc(2:16) crc(1)]; end;
disp('---'); disp(sprintf('Received packet length: %d bytes', len)); disp(sprintf('Data ok: %d', sum(abs(data-D))==0)); disp(sprintf('CRC ok: %d', sum(abs(crc-rcrc))==0)); При компиляции возникает ошибка: Undefined function 'pngen' for input arguments of type 'double'. Error in Modem (line 10) M = pngen(5); Я так понимаю, что функция pngen должна быть где-то описана. Или такая функция уже встроена в Матлаб последних версий. Использую R2014a. Подскажите пожалуйста в чем проблема. Если кто сталкивался, подсобите пожалуйста простейшим рабочим кодом BPSK модема (передатчик + приемник).
|
|
|
|
|
 |
Ответов
|
Mar 26 2018, 08:08
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(ataradov @ Mar 26 2018, 08:09)  Костас только убирает несовпадение частот и допплер (они не различимы на приемнике). Костас ничего не делает для символьной синхронизации. Для этого в данные вставляют синхропоследовательности для начальной синхронизации и дальнейшая синхронизация осуществляется по смене фаз дынных. И чтобы этих смен было достаточно используют скремблеры. Спасибо. Понятно. Стало более понятно значение нескольких байт преамбулы обычно используемой в пакете данных. Попытаюсь встроить петлю Костаса в код
На демодулятор поступает rx (смесь модулированного сигнала с аддит. гаусовым шумом) которую далее необходимо умножать на sin и cos поступающие с выхода VCO Очевидно что в демодуляторе необходимо будет организовать 1. Управляемый генератор sin cos (VCO). 2. Два одинаковых ФНЧ 3. Фазовый дискриминатор 4. Еще фильтр перед управляемым генератором Какова роль фильтра (loopfilter) после фазового дискриминатора?
|
|
|
|
|
Mar 26 2018, 08:32
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Acvarif @ Mar 26 2018, 11:08)  Попытаюсь встроить петлю Костаса в код В коде сложнее что-либо разглядеть, чем в симулинк модели. Цитата(Acvarif @ Mar 26 2018, 11:08)  2. Два одинаковых ФНЧ Согласованный фильтр лучше поставить до петли, иначе задержка фильтра будет входить в петлю ФАПЧ, с соответствующим увеличением времени настройки, для обеспечения устойчивасти. Цитата(Acvarif @ Mar 26 2018, 11:08)  4. Еще фильтр перед управляемым генератором Какова роль фильтра (loopfilter) после фазового дискриминатора? Пропорционально интегрирующее звено ФАПЧ. Ещё что-то надо делать с амплитудой сигнала, которую надо учитывать при рассчёте коэффициентов передачи ФАПЧ.
|
|
|
|
|
Mar 26 2018, 10:45
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(petrov @ Mar 26 2018, 11:32)  Согласованный фильтр лучше поставить до петли, иначе задержка фильтра будет входить в петлю ФАПЧ, с соответствующим увеличением времени настройки, для обеспечения устойчивасти. До петли это как? На схеме разве не так? Фильтры стоят сразу после I Q умножителей. Разве можно как-то иначе поставить фильтры и так чтобы не учитывалась их задерка в петле ФАПЧ? Хотя Ваша схема ФАПЧ не похожа на привычную петлю Костаса
Если не сложно, поясните пожалуйста в нескольких фразах как она работает. Цитата Ещё что-то надо делать с амплитудой сигнала, которую надо учитывать при рассчёте коэффициентов передачи ФАПЧ. С этим я вообще пока не знаю что делать... В свое время когда петля ФАПЧ делалась в бинарном виде этот вопрос вообще не стоял.
Сообщение отредактировал Acvarif - Mar 26 2018, 11:20
|
|
|
|
|
Mar 26 2018, 11:47
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Acvarif @ Mar 26 2018, 13:45)  До петли это как? На схеме разве не так? Фильтры стоят сразу после I Q умножителей. Уже выше обсуждали, что комплексный сигнал у вас будет на нулевой частоте, сначала фильтр согласованный, а потом уже ФАПЧ - умножение на управляемую комплексную экспоненту, поворачиваем вращающееся созвездие в обратную сторону, чтобы оно стояло неподвижно. Цитата(Acvarif @ Mar 26 2018, 13:45)  Хотя Ваша схема ФАПЧ не похожа на привычную петлю Костаса Если не сложно, поясните пожалуйста в нескольких фразах как она работает. Это и не петля Костаса, в оригинальной статье петля работает без символьной синхронизации, здесь же она работает после символьной синхронизации в домене одного отсчёта на символ. Согласованный фильтр здесь как раз включён в петлю. Цитата(Acvarif @ Mar 26 2018, 13:45)  С этим я вообще пока не знаю что делать... В свое время когда петля ФАПЧ делалась в бинарном виде этот вопрос вообще не стоял. Моделировать, моделировать. У вас же в общем случае короткие пакеты будут приходить минимального и максимального уровня друг за другом.
|
|
|
|
Сообщений в этой теме
Acvarif BPSK матлаб модулятор демодулятор Mar 19 2018, 12:14 Grizzzly Нет, это не встроенная функция. Ее написал автор э... Mar 19 2018, 12:18 Acvarif Цитата(Grizzzly @ Mar 19 2018, 16:18) Нет... Mar 19 2018, 13:00 ataradov Ух ты. Я написал этот код много лет назад и все эт... Mar 19 2018, 16:59 ataradov Вот исходник этой pngen():
CODEfunction x=pngen... Mar 20 2018, 00:45 Acvarif Цитата(ataradov @ Mar 20 2018, 03:45) Есл... Mar 20 2018, 05:59 ataradov Какая-то из версий этой модели была на Verilog-е р... Mar 20 2018, 06:34 Acvarif Цитата(ataradov @ Mar 20 2018, 09:34) Как... Mar 20 2018, 07:10  ataradov QUOTE (Acvarif @ Mar 20 2018, 00:10) Похо... Mar 20 2018, 07:12   Acvarif Цитата(ataradov @ Mar 20 2018, 10:12) Это... Mar 20 2018, 07:28    ataradov QUOTE (Acvarif @ Mar 20 2018, 00:28) Похо... Mar 20 2018, 07:36     Acvarif ЦитатаЛучше сразу смотреть в строну симулинка, обл... Mar 20 2018, 07:51      ataradov QUOTE (Acvarif @ Mar 20 2018, 00:51) Да. ... Mar 20 2018, 07:55       Acvarif Цитата(ataradov @ Mar 20 2018, 10:55) Мож... Mar 20 2018, 08:06      petrov Цитата(Acvarif @ Mar 20 2018, 10:51) Да. ... Mar 20 2018, 08:07       Acvarif Цитата(petrov @ Mar 20 2018, 11:07) Получ... Mar 20 2018, 08:14        petrov Цитата(Acvarif @ Mar 20 2018, 11:14) Кста... Mar 20 2018, 08:29         Acvarif Цитата(petrov @ Mar 20 2018, 12:29) Возмо... Mar 22 2018, 06:26          ataradov QUOTE (Acvarif @ Mar 21 2018, 23:26) Посм... Mar 22 2018, 06:32           Acvarif Цитата(ataradov @ Mar 22 2018, 10:32) Нуж... Mar 22 2018, 07:21            ataradov QUOTE (Acvarif @ Mar 22 2018, 00:21) Спас... Mar 22 2018, 07:27             Acvarif Цитата(ataradov @ Mar 22 2018, 11:27) Это... Mar 22 2018, 08:09              petrov Цитата(Acvarif @ Mar 22 2018, 11:09) Толь... Mar 22 2018, 09:05               Acvarif Цитата(petrov @ Mar 22 2018, 13:05) Читай... Mar 22 2018, 11:11                petrov Цитата(Acvarif @ Mar 22 2018, 14:11) Проб... Mar 22 2018, 11:22                 Acvarif Цитата(petrov @ Mar 22 2018, 15:22) Никак... Mar 22 2018, 11:46                  petrov Цитата(Acvarif @ Mar 22 2018, 14:46) Поня... Mar 22 2018, 12:52                   Acvarif Цитата(petrov @ Mar 22 2018, 16:52) Нет н... Mar 23 2018, 06:12                    petrov RE: BPSK матлаб модулятор демодулятор Mar 23 2018, 06:49                     Acvarif Цитата(petrov @ Mar 23 2018, 10:49)
Пока... Mar 23 2018, 07:22                      petrov При умножении на комплексную экспоненту ничего не ... Mar 23 2018, 07:37                       Acvarif Цитата(petrov @ Mar 23 2018, 11:37) При у... Mar 23 2018, 08:10                        petrov Цитата(Acvarif @ Mar 23 2018, 11:10) Но в... Mar 23 2018, 08:17                         Acvarif Цитата(petrov @ Mar 23 2018, 12:17) Вы ви... Mar 23 2018, 08:51                          Acvarif Для большего понимания для себя происходящего в BP... Mar 26 2018, 05:01  petrov Цитата(Acvarif @ Mar 20 2018, 10:10) Для ... Mar 20 2018, 07:30     Acvarif Цитата(petrov @ Mar 26 2018, 14:47) Уже в... Mar 26 2018, 13:10      petrov Цитата(Acvarif @ Mar 26 2018, 16:10) Запу... Mar 26 2018, 15:26       Acvarif Спасибо что Вы мне подсказываете. Общее понимание ... Mar 26 2018, 18:10        petrov Цитата(Acvarif @ Mar 26 2018, 21:10) Чем ... Mar 26 2018, 19:15         Acvarif Цитата(petrov @ Mar 26 2018, 22:15) Далее... Mar 26 2018, 19:54          petrov Цитата(Acvarif @ Mar 26 2018, 22:54) Как-... Mar 27 2018, 06:54          Acvarif Если посчитать за какое время сработает петля Кост... Mar 27 2018, 07:41           petrov Цитата(Acvarif @ Mar 27 2018, 10:41) Уже ... Mar 27 2018, 08:21            Acvarif Цитата(petrov @ Mar 27 2018, 11:21) Это е... Mar 27 2018, 12:03             petrov Цитата(Acvarif @ Mar 27 2018, 15:03) Ok. ... Mar 27 2018, 12:19              Acvarif Цитата(petrov @ Mar 27 2018, 15:19) Не ну... Mar 28 2018, 05:33 ataradov VCO получает сигал ошибки в качестве контрольного,... Mar 27 2018, 07:43 Acvarif Цитата(ataradov @ Mar 27 2018, 10:43) VCO... Mar 27 2018, 07:47  ataradov QUOTE (Acvarif @ Mar 27 2018, 00:47) Что ... Mar 27 2018, 07:51 ataradov Нужно взять исходный бинарный сигнал, умножить его... Mar 28 2018, 06:47 Acvarif Цитата(ataradov @ Mar 28 2018, 09:47) Нуж... Mar 28 2018, 07:09  Acvarif Не получается.
Пытаюсь сформировать синфазную и кв... Mar 30 2018, 05:13 ataradov Для отладки синхронизации не нужна несущая, ее мож... Mar 30 2018, 05:28 Acvarif Цитата(ataradov @ Mar 30 2018, 08:28) Для... Mar 30 2018, 06:51  Acvarif Сворганил BPSK приемо-передатчик с петлей Костаса ... Apr 12 2018, 10:44   Acvarif RE: BPSK матлаб модулятор демодулятор Apr 16 2018, 07:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|