|
|
  |
структура модема при 8psk |
|
|
|
Oct 18 2013, 14:31
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
Цитата(fontp @ Oct 17 2013, 18:04)  Вы же говорили, что у вас есть фапч. Вот пусть узкополосный фапч с tanlock по мягким решениям и управляет входным ddc, убирая медленное вращени созвездия. А внутри петли пусть себе работает dde. Чтобы этот узкополостный фапч схватился, ему нужно подсунуть начальное значение частоты с точностью порядка его шумовой полосы. Чтобы определить их один раз ( а не непрерывно или периодически ) и нужен feedforward алгоритм по преамбуле. Если у фапч полоса достаточно узкая (фапч медленней времени замираний ) он не почувствует что там вытворяет dde или fse эквалайзер. Стучать по петле обратной связи периодически или непрерывно, конечно, не очень у меня фапч встроен только в схему где применяется DFE. если я правильно понимаю, то tanlock loop по несущей работает по одному отсчету на символ. а на вход DDE у меня поступает 2 отсчета на символ. пробовал сделать предварительную синхронизацию Гарднера совместно с tanlock по несущей, и на вход DDE подавать уже один отсчет на символ, но это значительно ухудшает качество работы DDE. что я не правильно делаю? Цитата(alex_os @ Oct 17 2013, 07:36)  Почему нельзя?? Оценка ИХ канала есть. Смещение несущей будет проявляться как вращение коэф ИХ во времени. Берете максимальный коэф. в ИХ и смотрите куда вращается. Для компенсации большой начальной расстройки не подойдет, т.к. DDE развалится, а для устранения влияния медленного ухода частоты в следствии допплера или еще чего-либо самое то. очень интересно. у меня две ИХ для четных и нечетных отсчетов. мне нужно максимальный коэффициент с учетом двух ИХ брать для его оценки вращения (типа так max(oddWeight + evenWeight))? и еще вот такая проблемка. с течением времени степень влияния лучей изменяется. т.е. может так случиться, что в какой-то момент времени максимальный коэффициент ИХ перестанет быть максимальным. это нужно как-то учитывать?
|
|
|
|
|
Oct 29 2013, 11:48
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
я никак не могу найти алгоритм, который мог бы работать с типом сигнала, где биты передаются с помощью ортогональных последовательностей Уолша(MIL-STD-188-141B, ст.284, BW0, BW1, BW3, BW4). подскажите, пожалуйста, какой алгоритм нужно использовать и/или где об этом можно почитать ?!
|
|
|
|
|
Oct 29 2013, 15:53
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Виктор39 @ Oct 29 2013, 15:48)  я никак не могу найти алгоритм, который мог бы работать с типом сигнала, где биты передаются с помощью ортогональных последовательностей Уолша(MIL-STD-188-141B, ст.284, BW0, BW1, BW3, BW4). подскажите, пожалуйста, какой алгоритм нужно использовать и/или где об этом можно почитать ?! Нужно гуглить что-то вроде "Maximum likelihood sequence estimation"
--------------------
ну не художники мы...
|
|
|
|
|
Oct 30 2013, 06:33
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
Цитата(alex_os @ Oct 3 2013, 09:40)  Та разновидность сигнала, где Уолшем передаются биты, в эквалайзере не нуждается, там нечто-то вроде Rake receiver нужно. Цитата(alex_os @ Oct 29 2013, 19:53)  Нужно гуглить что-то вроде "Maximum likelihood sequence estimation" эти два сообщения как-то связаны между собой?
|
|
|
|
|
Oct 30 2013, 08:00
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Виктор39 @ Oct 30 2013, 10:33)  эти два сообщения как-то связаны между собой? C некоторой натяжкой можно сказать что эти оба метода позволяют найти последовательность модулированных символов, которая будучи свернутой с измеренной ИХ даст максимальную корреляцию с принятой последовательностью. Т.е задача так ставиться - есть принятые отсчеты y, есть символы которые переносят информацию x = [x1; x2;.....xn]. Есть измеренная ИХ h, для простоты предполагаем что она не изменяется во времени. Требуется найти x. Максимально правдоподобная оценка x будет такая, которая минимизирует евклидово расстояние J = sum( abs( y - conv( x, h ) .^ 2 ) . Т.е. берете все возможные последовательности x и ищете такую , для которого J минимально. Классическое решение The Viterbi Algorithm FORNEY . Теперь ключевой момент. Сложность алгоритма Витерби (т.е. число состояний канала ) будет M^(L-1). M - индекс модуляции символов, L длина h в символах. Если символом считать одну из последовательностей Уолша, которыми переносится информация, то L получается не велика ( что-то около 1). Таким образом данный подход будет иметь вполне приемлемую сложность.
--------------------
ну не художники мы...
|
|
|
|
|
Oct 30 2013, 11:38
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
Цитата(alex_os @ Oct 30 2013, 12:00)  C некоторой натяжкой можно сказать что эти оба метода позволяют найти последовательность модулированных символов, которая будучи свернутой с измеренной ИХ даст максимальную корреляцию с принятой последовательностью. Т.е задача так ставиться - есть принятые отсчеты y, есть символы которые переносят информацию x = [x1; x2;.....xn]. Есть измеренная ИХ h, для простоты предполагаем что она не изменяется во времени. Требуется найти x. Максимально правдоподобная оценка x будет такая, которая минимизирует евклидово расстояние J = sum( abs( y - conv( x, h ) .^ 2 ) . Т.е. берете все возможные последовательности x и ищете такую , для которого J минимально. Классическое решение The Viterbi Algorithm FORNEY . Теперь ключевой момент. Сложность алгоритма Витерби (т.е. число состояний канала ) будет M^(L-1). M - индекс модуляции символов, L длина h в символах. Если символом считать одну из последовательностей Уолша, которыми переносится информация, то L получается не велика ( что-то около 1). Таким образом данный подход будет иметь вполне приемлемую сложность. спасибо большое. тогда алгоритм может выглядеть следующим образом??? : 1) по преамбуле вычисляется ИХ h с учетом принимаемых 2 отсчетов на символ(т.е. две ИХ для четных и нечетных отсчетов); 2) с учетом длины последовательностей Уолша равной 16 символов, очередных 32 принятых отсчета каким-то образом перемножаются в матричной форме с ИХ таким образом, чтобы получился вектор из 16 символьных значений R(скорее всего мне здесь нужно использовать не ИХ h, а вектор обратный ИХ h. не понимаю, как это сделать?!); 3) методом наименьшего правдоподобия для каждой из возможных последовательностей Уолша W вычисляем евклидово расстояние J = sum( abs( R - conv( W, h ) .^ 2 ). по наименьшему расстоянию J принимаем решение о переданной последовательности T = W (по сути это и есть урезанный декодер Витерби?); 4) основываясь на этих 16-ти решениях T, а также на решениях принятых на предыдущей итерации и импульсной характеристике, 16 принимаемых значений могут быть предсказаны и 16 ошибок между предсказанными и полученными значениями могут быть рассчитаны. 5) эти ошибки затем коррелируют(умножаются и усредняются) с 16-ти принятыми решениями T и с несколькими решениями принятыми на предыдущей итерации(количество определяется длинной ИХ) с соответствующими значениями импульсной характеристики. 6) ИХ обновляется с учетом этих рассчитаных ошибок 7) пункты 2-6 повторяются
Сообщение отредактировал Виктор39 - Oct 30 2013, 12:36
|
|
|
|
|
Oct 31 2013, 08:34
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
не знаю или правильно составил я алгоритм, но в любом случае, по измеренной ИХ мне нужно рассчитать вектор значений обратный ИХ,(т.е. коэффициенты прямого фильтра, или трансверсального фильтра, или коррелятора). скажите, что я не правильно делаю? набросал несколько строк кода. по идее выходной сигнал sigOut должен равняться входному сигналу sigIn с учетом задержки. но что-то не получается. CODE function test_Estim_LSE clear;
sigIn = [2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8]; h = [ 0, 7 , 0, 0, 0, 7, 0, 0, 0]; % ИХ канала sigFromChannel = filter(h, 1, sigIn); %% расчет обратных значений ИХ Lf = 15; % количество коэффициентом delay = 1; H = convmtx(h, Lf-length(h)+1);
target = zeros(size(H,1), 1); target(delay) = 1;
weights = pinv(H' * H) * (H' * target) ;
% Hf = H*f; %% sigOut = filter(weights, 1, sigFromChannel);
return;
|
|
|
|
|
Oct 31 2013, 15:09
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
QUOTE (Виктор39 @ Oct 31 2013, 12:34)  не знаю или правильно составил я алгоритм, но в любом случае, по измеренной ИХ мне нужно рассчитать вектор значений обратный ИХ,(т.е. коэффициенты прямого фильтра, или трансверсального фильтра, или коррелятора). скажите, что я не правильно делаю? набросал несколько строк кода. по идее выходной сигнал sigOut должен равняться входному сигналу sigIn с учетом задержки. но что-то не получается. CODE function test_Estim_LSE clear;
sigIn = [2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8]; h = [ 0, 7 , 0, 0, 0, 7, 0, 0, 0]; % ИХ канала sigFromChannel = filter(h, 1, sigIn); %% расчет обратных значений ИХ Lf = 15; % количество коэффициентом delay = 1; H = convmtx(h, Lf-length(h)+1);
target = zeros(size(H,1), 1); target(delay) = 1;
weights = pinv(H' * H) * (H' * target) ;
% Hf = H*f; %% sigOut = filter(weights, 1, sigFromChannel);
return; Так обратного ИХ может и не быть - он окажется БИХ как раз вашем в случае, когда отсутствует доминирующий луч или коэффициент. Он и так всегда только приблизительный ИХ, а в этом случае даже приблизительно может не получиться
|
|
|
|
|
Nov 1 2013, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Виктор39 @ Oct 31 2013, 12:34)  не знаю или правильно составил я алгоритм, но в любом случае, по измеренной ИХ мне нужно рассчитать вектор значений обратный ИХ,(т.е. Да не должно быть ни каких "обратных ИХ". Пусть s0, s2 ... sn будут символы Уолша длиной 16. Пусть память канала (длина h ) тоже будет 16. Допустим в i-тый момент времени мы знаем состояние канала - s0, т.е знаем какой конкретно символ Уолша передавался. На выходе канала наблюдаем величину y0 (скаляр), допустим сл. символ будет s1, т.е. при смене состояния канала s0 -> s1, будет наблюдаться последовательность Y = [y1, y2.... y16]; Код y0 = s0.' * h;
y1 = [ s1(1); s0(1 : end-1)].' * h; y2 = [ s1(1:2); s0(1 : end-2)].' * h; y3 = [ s1(1:3); s0(1 : end-3)].' * h; .... y16 = [ s1].' * h; Алгоритм следующий: для текущего состояния рассчитываем все возможные последовательности Y1, Y2 ... Yn. Находим последовательность которая имеет наибольшую корреляцию c принятыми отсчетами, скажем наилучший результат дает Y2, устанавливаем текущее состояние в s2 и все повторяется.
--------------------
ну не художники мы...
|
|
|
|
|
Nov 2 2013, 18:12
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(alex_os @ Nov 1 2013, 15:32)  Да не должно быть ни каких "обратных ИХ". Пусть s0, s2 ... sn будут символы Уолша длиной 16. Пусть память канала (длина h ) тоже будет 16. Допустим в i-тый момент времени мы знаем состояние канала - s0, т.е знаем какой конкретно символ Уолша передавался. На выходе канала наблюдаем величину y0 (скаляр), допустим сл. символ будет s1, т.е. при смене состояния канала s0 -> s1, будет наблюдаться последовательность Y = [y1, y2.... y16]; Код y0 = s0.' * h;
y1 = [ s1(1); s0(1 : end-1)].' * h; y2 = [ s1(1:2); s0(1 : end-2)].' * h; y3 = [ s1(1:3); s0(1 : end-3)].' * h; .... y16 = [ s1].' * h; Алгоритм следующий: для текущего состояния рассчитываем все возможные последовательности Y1, Y2 ... Yn. Находим последовательность которая имеет наибольшую корреляцию c принятыми отсчетами, скажем наилучший результат дает Y2, устанавливаем текущее состояние в s2 и все повторяется. По одной последовательности на пороге С/Ш такой алгоритм косячить будет. Надо корректировать с некоторым соотношением между старыми и новыми коэффициентами. Хотя-бы полусумма между старыми и новыми значениями.
|
|
|
|
|
Nov 5 2013, 06:13
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Corner @ Nov 2 2013, 22:12)  По одной последовательности на пороге С/Ш такой алгоритм косячить будет. Надо корректировать с некоторым соотношением между старыми и новыми коэффициентами. Хотя-бы полусумма между старыми и новыми значениями. Не понял, чего корректировать и какие коэффициенты имеются ввиду?
--------------------
ну не художники мы...
|
|
|
|
|
Nov 19 2013, 12:32
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542

|
здравствуйте. не могу решить следующую задачку: преамбула состоит из 15 следующих значений: 0,1,3,0,1,3,1,2,0,D1,D2,C1,C2,C3,0 каждому значению преамбулы соответсnвует скремблированная ортогональная последовательность УОлша длинной в 32 канальных символа. данная преамбула повторяется несколько раз подряд. первая часть преамбулы мне известна (0,1,3,0,1,3,1,2,0), она состоит из 288 канальных символов. вторая часть (D1,D2,C1,C2,C3) мне предварительно не известна, в ней передается информация о типе передаваемых данных. так вот, по первой части преамбулы(0,1,3,0,1,3,1,2,0), если я правильно понимаю, мне нужно обнаружить начало сигнала, рассчитать частотную ошибку (+-75Гц), а также измерить импульсную характеристику канала... никак не могу придумать как я могу использовать преамбулу максимально выгодно.
например, я пробую по первым 6 значениям преамбулы(0,1,3,0,1,3), т.е. 192-ум канальным символам, обнаружить сигнал и рассчитать его частотную ошибку следующим образом: непрерывно сворачиваю 96 канальных символа(соответствующих трем значениям преамбулы 0,1,3) с предыдущими 96-ью символами. и когда последовательности будут совпадать, пик будет максимальный. далее рассчитывая разность фаз между соответcтвующими символами сворачиваемых последовательностей, с учетом задержки, не трудно рассчитать частоту. но есть две проблемки. первая, при таком методе не учитываются ортогональные свойства преамбулы, и пик получается очень размытый. в плохих каналах, при различных замираниях, пик может быть смещен на несколько символов в одну из сторон. но все бы хорошо, ведь я могу с помощью измеренной импульсной характеристики найти потом точку синхронизации. но проблема в том, что таким методом максимальная частотная ошибка, которую я могу измерить равна +-25Гц, а мне нужно +-75Гц. с помощью fft(свернуть часть принятой преамбулы с известными передаваемыми данными, выделив таким образом частотную ошибку, затем сделать fft ) я не могу рассчитать частотную ошибку, так как точка синхронизации известна с некой погрешностью(в несколько символов).
пробовал сделать банк фильтров, с коррелирующей последовательностью равной 48 символов. проблема в том, что для этого я не могу брать символы из первой части преамбулы (0,1,3,0,1,3), так как они повторяются, и по этой причине будет находиться два пика. это не есть хорошо. так как я могу пропустить нужный пик из-за замирания, и словить ложный. если брать в качестве коррелирующей последовательности обнаружения последующие символы (1,2,0), то у меня ничего не остается на расчет частотной ошибки и на измерение ИХ канала...
больше адекватных мыслей у меня нету. может у кого-нибудь есть варианты, что можно сделать...
|
|
|
|
|
  |
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|