реклама на сайте
подробности

 
 
> BPSK матлаб модулятор демодулятор
Acvarif
сообщение Mar 19 2018, 12:14
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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 модема (передатчик + приемник).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ataradov
сообщение Mar 26 2018, 05:09
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Костас только убирает несовпадение частот и допплер (они не различимы на приемнике). Костас ничего не делает для символьной синхронизации. Для этого в данные вставляют синхропоследовательности для начальной синхронизации и дальнейшая синхронизация осуществляется по смене фаз дынных. И чтобы этих смен было достаточно используют скремблеры.

Сообщение отредактировал ataradov - Mar 26 2018, 05:10
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Mar 26 2018, 08:08
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(ataradov @ Mar 26 2018, 08:09) *
Костас только убирает несовпадение частот и допплер (они не различимы на приемнике). Костас ничего не делает для символьной синхронизации. Для этого в данные вставляют синхропоследовательности для начальной синхронизации и дальнейшая синхронизация осуществляется по смене фаз дынных. И чтобы этих смен было достаточно используют скремблеры.

Спасибо. Понятно. Стало более понятно значение нескольких байт преамбулы обычно используемой в пакете данных.
Попытаюсь встроить петлю Костаса в код
Прикрепленное изображение

На демодулятор поступает rx (смесь модулированного сигнала с аддит. гаусовым шумом) которую далее необходимо умножать на
sin и cos поступающие с выхода VCO
Очевидно что в демодуляторе необходимо будет организовать
1. Управляемый генератор sin cos (VCO).
2. Два одинаковых ФНЧ
3. Фазовый дискриминатор
4. Еще фильтр перед управляемым генератором
Какова роль фильтра (loopfilter) после фазового дискриминатора?


Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 26 2018, 08:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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) после фазового дискриминатора?


Пропорционально интегрирующее звено ФАПЧ.

Ещё что-то надо делать с амплитудой сигнала, которую надо учитывать при рассчёте коэффициентов передачи ФАПЧ.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Mar 26 2018, 10:45
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(petrov @ Mar 26 2018, 11:32) *
Согласованный фильтр лучше поставить до петли, иначе задержка фильтра будет входить в петлю ФАПЧ, с соответствующим увеличением времени настройки, для обеспечения устойчивасти.

До петли это как? На схеме разве не так? Фильтры стоят сразу после I Q умножителей.
Разве можно как-то иначе поставить фильтры и так чтобы не учитывалась их задерка в петле ФАПЧ?
Хотя Ваша схема ФАПЧ не похожа на привычную петлю Костаса
Прикрепленное изображение

Если не сложно, поясните пожалуйста в нескольких фразах как она работает.
Цитата
Ещё что-то надо делать с амплитудой сигнала, которую надо учитывать при рассчёте коэффициентов передачи ФАПЧ.

С этим я вообще пока не знаю что делать...
В свое время когда петля ФАПЧ делалась в бинарном виде этот вопрос вообще не стоял.

Сообщение отредактировал Acvarif - Mar 26 2018, 11:20
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 26 2018, 11:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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) *
С этим я вообще пока не знаю что делать...
В свое время когда петля ФАПЧ делалась в бинарном виде этот вопрос вообще не стоял.


Моделировать, моделировать. У вас же в общем случае короткие пакеты будут приходить минимального и максимального уровня друг за другом.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 15:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01557 секунд с 7
ELECTRONIX ©2004-2016