Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: структура модема при 8psk
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3, 4, 5
des00
Цитата(Виктор39 @ Jul 10 2013, 05:51) *
вот в чем вопрос: мне не известна символьная фаза входного сигнала, как быть в таком случае? перебирать все 8 возможных значений фаз для настройки эквалайзера. либо мне нужно каким-то образом работать с разностью фазы текущего значения известной последовательности и предыдущего?

вы же как то ищите, где у вас стоит обучалка ? Тут возможны 2 варианта :
1. Подсовываете обучалку без учета поворота созвездия. Эквалайзер сам довернет созвездие, но в этом случае метод поиска обучалки должен быть инвариантен повороту фазы созвездия.
2. Подсовываете обучалку с учетом поворота созвездия. В этом случае метод поиска обучалки должен выдавать не только наличие последовательности в РК но и оценивать поворот созвездия.
Виктор39
Цитата
вы же как то ищите, где у вас стоит обучалка ?

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


как и описывалось выше в теме, я "ловлю" преамбулу с помощью банка фильтров, далее рассчитываю частотную отстройку с помощью комплексно-сопряженной свертки с преамублой, и последующий сигнал, с учетом этой отстройки, переношу на нулевую частоту. сразу же за преамбулой, по которой рассчитывается частотная расстройка, следует обучающая последовательность. таким образом я знаю ее начало. как я понимаю фазовое несоответствие между принятыми значениями обучающей последовательности и имеющей заранее известной последовательностью на приемной стороне может отличатся на pi.

Цитата
1. Подсовываете обучалку без учета поворота созвездия. Эквалайзер сам довернет созвездие

сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

Цитата
2. Подсовываете обучалку с учетом поворота созвездия. В этом случае метод поиска обучалки должен выдавать не только наличие последовательности в РК но и оценивать поворот созвездия.


не совсем понятна идея, каким образом это делается?

я думал, может быть первый принятый символ обучалки, довернуть до ближайшей точки фазового созвездия. далее сравнить эту точку с первым символом заведомо известной последовательности. оценить их разность, которая может принимать значения [-pi, -3/4pi,... +1/2pi, +3/4pi, +pi] и все дальнейшие входные символы обучалки доворачивать на эту фазу?! делается ли это так? или не до конца ясен мой вопрос?
des00
Цитата(Виктор39 @ Jul 11 2013, 00:09) *
сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

сможет, но в зависимости от метода адаптации. LMSу требуется большее время чем RLS. Скорость сходимости, если речь идет о работе в канале с ISI, не изменится. В тесте начального старта эквалайзера, если сравнивать с неповернутым созвездием, разница будет.

Цитата
не совсем понятна идея, каким образом это делается?

Ну например, синхра 1, -1, 1 -1, 1 1 -1 1, а видите вы -1, 1, -1, 1, -1, -1, 1, 1 Логично предположить что фаза повернулась на 180 градусов.

Цитата
я думал, может быть первый принятый символ обучалки, довернуть до ближайшей точки фазового созвездия. далее сравнить эту точку с первым символом заведомо известной последовательности. оценить их разность, которая может принимать значения [-pi, -3/4pi,... +1/2pi, +3/4pi, +pi] и все дальнейшие входные символы обучалки доворачивать на эту фазу?!

Можно и так сделать, но в шумах возможна ошибка определения поворота фазы.

Но судя по тому что вы описали, вам можно просто подсунуть обучалку, а эквалайзер все сделает как надо. Потеряете первые несколько сот символов (если речь идет про LMS) ну а дальше будет работать как надо.

Цитата(Виктор39 @ Jul 11 2013, 00:09) *
сразу же за преамбулой, по которой рассчитывается частотная расстройка, следует обучающая последовательность. таким образом я знаю ее начало.

Кстати, не забудьте что начало обучалки нужно искать на выходе эквалайзера, а не на его входе. Т.к. фильтр прямой ветви может двигать сигнал от 0 до количества тапов в дискретах домена в котором работает.
petrov
Цитата(Виктор39 @ Jul 11 2013, 10:09) *
сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?


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

у меня есть первоначальная грубая компенсация частоты, и затем еще реализован фапч, который работает совместно с эквалайзером, как вы и сказали.

Цитата
Кстати, не забудьте что начало обучалки нужно искать на выходе эквалайзера, а не на его входе. Т.к. фильтр прямой ветви может двигать сигнал от 0 до количества тапов в дискретах домена в котором работает.

я не понял, что это значит. в моем представлении все должно работать следующим образом: словив преамбулу я знаю начало полезного сигнала. в моем случае полезным сигналом следующим за преамбулой идет обучающая последовательность. так как я знаю длину преамбулы в символах и в отсчетах, соответственно я зная и начало обучающей последовательности. эквалайзер же запускается только по первому символу обучающей последовательности. соответственно первый символ на выходе эквалайзер и будет является первым символом обучалки.
fontp
QUOTE (Виктор39 @ Jul 11 2013, 10:09) *
как и описывалось выше в теме, я "ловлю" преамбулу с помощью банка фильтров, далее рассчитываю частотную отстройку с помощью комплексно-сопряженной свертки с преамублой, и последующий сигнал, с учетом этой отстройки, переношу на нулевую частоту. сразу же за преамбулой, по которой рассчитывается частотная расстройка, следует обучающая последовательность. таким образом я знаю ее начало. как я понимаю фазовое несоответствие между принятыми значениями обучающей последовательности и имеющей заранее известной последовательностью на приемной стороне может отличатся на pi.


Если Вы определили расстройку несущей с помощью банков фильтров, то можете определить не только скорость вращения созвездия, но и его начальную фазу.
После переноса преамбулы на нулевую частоту (естественно учитывая обнаруженную расстройку, умножением на exp(iwn)), фаза (как и амплитуда) комплексной синусоиды (со снятой модуляцией и несущей) определяется просто усреднением сигнала по преамбуле и взятием арктангенса (суммы квадратов для амплитуды, если нужно).
Это оценки максимального правдоподобия по преамбуле. ФАПЧ дальше можно запустить мгновенно с известных значений частоты и фазы, если, конечно ГУН у вас цифровой, а не аналоговый.
Ошибка измерения фазы не может быть в пределах pi, а небольшая и известно какая

QUOTE (Виктор39 @ Jul 11 2013, 10:09) *
сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

не совсем понятна идея, каким образом это делается?


Ошибка фазы, если доделать оценку её по преамбуле вовсе не в пределах pi, а задается критерием Крамера-Рао для фазы.
http://electronix.ru/forum/index.php?act=A...st&id=39182
var(Teta)=1/(SNR*N), т.е. если, например, N=32, SNR=10 (наверное же не 2 для 8psk), то стандартное отклонение - градусов где-то 5 (на вскидку 1/17 радиана), не больше

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

Как дальше совместно настраивать и ФАПЧ и эквалайзер, словами не описать. Это уже не наука, а искусство- наука решает проблемы отдельно, разделяя переменные
В первом приближении запускайте ФАПЧ и эквалайзер независимо, но одновременно. Все будет очень нелинейно, чтобы заценить, но есть надежда, что все сойдется само.
Дальше задача состоит в том, чтобы наворотить такую блок-схему с перекрестными связями между подсистемами (ФАПЧ несущей, эквалайзер, ФАПЧ символьной), чтобы обеспечить одновременную сходимость всех ошибок к минимуму по короткой траектории. Понятно, что оптимальной блок-схемы на все случаи жизни не существует
Виктор39
как и было предложено в данной теме, я оцениваю начальную растройку фазы по преамбуле, следующим образом(matlab):
t =inSignal(i)*conj(preamble(i));
phiError =atan(imag(t)/real(t))/(2*pi);

таким образом у меня фазавая ошибка вычисляется как бы по модулю pi. т.е. например если реальная фазовая ошибка pi+pi/4, то phiError будет равно pi/4.
так как символьная фаза может быть сдвинута на произвольный угол, мне нужно чтобы phiError в результате вычисления равнялось именно pi+pi/4, а не просто pi/4. не могу сообразить, как это можно написать в матлабе.
fontp
QUOTE (Виктор39 @ Jul 16 2013, 12:41) *
как и было предложено в данной теме, я оцениваю начальную растройку фазы по преамбуле, следующим образом(matlab):
t =inSignal(i)*conj(preamble(i));
phiError =atan(imag(t)/real(t))/(2*pi);

таким образом у меня фазавая ошибка вычисляется как бы по модулю pi. т.е. например если реальная фазовая ошибка pi+pi/4, то phiError будет равно pi/4.
так как символьная фаза может быть сдвинута на произвольный угол, мне нужно чтобы phiError в результате вычисления равнялось именно pi+pi/4, а не просто pi/4. не могу сообразить, как это можно написать в матлабе.



http://cens.ioc.ee/local/man/matlab/techdoc/ref/atan2.html

P = atan2(Y,X) returns an array P the same size as X and Y containing the element-by-element, four-quadrant inverse tangent (arctangent) of the real parts of Y and X.

Только нужно убрать ещё и найденную частотную расстройку w

t(n) =inSignal(n)*conj(preamble(n))*exp(iwn);
P = atan2(mean(Imag(t)),mean(Real(t)))
A = Abs(mean(t));

и не перепутать к какому моменту времени относится фаза - для запуска ФАПЧ фазу нужно оценить для первого отсчета после преамбулы
Виктор39
Цитата
t(n) =inSignal(n)*conj(preamble(n))*exp(iwn);
P = atan2(mean(Imag(t)),mean(Real(t)))

спасибо за atan2.

1)в разрабатываемом модеме использую Гарднер по тактовой, tanlock по несущей и TSE RLS DFE эквалайзер, + предварительную частотную и фазовую корректировки по преамбуле. вопрос в обучении эквалайзера. правильно ли я понимаю, обучалку нужно запускать в тот момент, когда первый символ принимаемой обучающий последовательности при свертке с весовыми коэффициентами, попадает на центральный коэффициент, изначально равный единице? получается задержка, на половину длины фильтра. и только начиная с этого момента стоит начинать корректировку весовых коэффициентов?

2)кто-нибудь может сказать что либо доброе или плохое про алгоритм Калмана по сравнению с RLS и LMS?

3) я понимаю, что все очень относительно, но какой длинны обучающие последовательности рекомендуется использовать?
thermit
в матлабе есть еще функция angle()

atan2(y,x) эквивалентна angle(complex(x,y))
petrov
Цитата(Виктор39 @ Jul 18 2013, 09:51) *
1)в разрабатываемом модеме использую Гарднер по тактовой, tanlock по несущей и TSE RLS DFE эквалайзер, + предварительную частотную и фазовую корректировки по преамбуле.


Совместная работа петель тактовой и эквалайзера неустойчива.

Цитата(Виктор39 @ Jul 18 2013, 09:51) *
вопрос в обучении эквалайзера. правильно ли я понимаю, обучалку нужно запускать в тот момент, когда первый символ принимаемой обучающий последовательности при свертке с весовыми коэффициентами, попадает на центральный коэффициент, изначально равный единице? получается задержка, на половину длины фильтра. и только начиная с этого момента стоит начинать корректировку весовых коэффициентов?


Ну да.

Цитата(Виктор39 @ Jul 18 2013, 09:51) *
2)кто-нибудь может сказать что либо доброе или плохое про алгоритм Калмана по сравнению с RLS и LMS?


RLS - частный случай Калмана.

Цитата(Виктор39 @ Jul 18 2013, 09:51) *
3) я понимаю, что все очень относительно, но какой длинны обучающие последовательности рекомендуется использовать?


Такую чтобы давала необходимое качество оценки.
fontp
QUOTE (Виктор39 @ Jul 18 2013, 08:51) *
1)в разрабатываемом модеме использую Гарднер по тактовой, tanlock по несущей и TSE RLS DFE эквалайзер, + предварительную частотную и фазовую корректировки по преамбуле. вопрос в обучении эквалайзера. правильно ли я понимаю, обучалку нужно запускать в тот момент, когда первый символ принимаемой обучающий последовательности при свертке с весовыми коэффициентами, попадает на центральный коэффициент, изначально равный единице? получается задержка, на половину длины фильтра. и только начиная с этого момента стоит начинать корректировку весовых коэффициентов?


синхронизация тактовой фазы в любом случае как-то должна взаимодействовать с эквалайзером, иначе центральный отсчет рано или поздно уползет за пределы линии задержки

QUOTE (Виктор39 @ Jul 18 2013, 08:51) *
3) я понимаю, что все очень относительно, но какой длинны обучающие последовательности рекомендуется использовать?


мне кажется, чаще используют адаптацию по решению, чем известные заранее обучающие последовательности. В любом случае канал медленно меняется, а при многолучевости он еще и может меняться достаточно быстро
Виктор39
Цитата
мне кажется, чаще используют адаптацию по решению, чем известные обучающие последовательности. В любом случае канал медленно меняется, а при многолучевости он еще и может меняться достаточно быстро

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

Цитата
Совместная работа петель тактовой и эквалайзера неустойчива.

эквалайзер стоящий после всех петель не дает тех результатов, которые я получаю при совместной петле. я понимаю, что это не выход, но что вы можете посоветовать? стоит ли собрать модельку в симулинке для проверки устойчивости?

Цитата
петля тактовая в любом случае как-то должна взаимодействовать с эквалайзером, иначе центральный отсчет рано или поздно уползет за пределы линии задержки

или наоборот не должна взаимодействовать, а должна быть независимой от эквалайзера?

и вот еще вопросик. для имитации канала использую функцию matlab rayleighchan. в различных версиях matlab 2008 и 2010, 2012 результаты отличаются. если в 2008 версии искажения при многочисленном вызове функции rayleighchan достаточно стабильные и не сильно отличающие, то в последующих версиях matlab функция дает весьма отличающие друг от друга результаты, менее стабильные. кто-нибудь с подобным сталкивался? стоит больше доверять 2010, 2012?
thermit
А чем плоха схема петля подстройки символьной частоты -> эквалайзер на удвоенной (утроенной и т д) частоте символов -> коррекция фазы несущей -> получение решения -> ошибка? Совместная работа эквалайзера и подстройки фазы несущей заключается в использовании для коррекции к-тов эквалайзера ошибки повернутой обратно на текущую коррекцию фазы.
petrov
Цитата(Виктор39 @ Jul 18 2013, 15:11) *
плюс ко всему, периодически передаются известные последовательности, по которым я периодически и подстраиваю эквалайзер по известным данным. т.е. эквалайзер постоянно корректирует коэффициенты в зависимости от текущего режима.


эквалайзер стоящий после всех петель не дает тех результатов, которые я получаю при совместной петле. я понимаю, что это не выход, но что вы можете посоветовать?


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

Цитата(Виктор39 @ Jul 18 2013, 15:11) *
или наоборот не должна взаимодействовать, а должна быть независимой от эквалайзера?


При совместной работе петли влияют друг на друга, теоретически это взаимодействие можно убрать, но хорошего практического решения не видел, всё на уровне эвристических примочек без гарантии устойчивости.

Цитата(Виктор39 @ Jul 18 2013, 15:11) *
и вот еще вопросик. для имитации канала использую функцию matlab rayleighchan. в различных версиях matlab 2008 и 2010, 2012 результаты отличаются. если в 2008 версии искажения при многочисленном вызове функции rayleighchan достаточно стабильные и не сильно отличающие, то в последующих версиях matlab функция дает весьма отличающие друг от друга результаты, менее стабильные. кто-нибудь с подобным сталкивался? стоит больше доверять 2010, 2012?


Такие вещи стоит самому руками делать, полезный эффект гораздо больше чем при использовании чужих чёрных ящиков.
Corner
Когда то делал модем с аналогичными параметрами. Чтобы не связываться с многофазной обработкой пришел к выводу, что нужно сделать 9 углов, а не 8. То есть не 8psk, а 9opsk. Угол на символ получается не 45 градусов, а 40. Каждый следующий символ кодируется скачком фазы, 9-ая фаза нужна чтобы скачок был каждый такт передачи символа. Такая система устойчива к дрейфу частоты несущей при условии, что скачок превышает дрейф.

Цитата(petrov @ Jul 18 2013, 15:34) *
Такие вещи стоит самому руками делать, полезный эффект гораздо больше чем при использовании чужих чёрных ящиков.


Полностью согласен с handmade, только еще не в матлабе, а в железе. Не верю ничему, кроме осциллографа и анализатора спектра.
fontp
QUOTE (Corner @ Jul 20 2013, 23:44) *
Полностью согласен с handmade, только еще не в матлабе, а в железе. Не верю ничему, кроме осциллографа и анализатора спектра.


Ну тогда для Вас и 11psk самое то cool.gif
Corner
Цитата(fontp @ Jul 22 2013, 13:06) *
Ну тогда для Вас и 11psk самое то cool.gif

Не получится, 360 на 11 не делится.
Serg76
Цитата(Corner @ Jul 27 2013, 10:16) *
Не получится, 360 на 11 не делится.

Вы, видимо, не поняли сарказма ))). честно говоря, пока не представляю как Вы постороили свой демодулятор, но то, что он потерял в помехоустойчивости, я не сомневаюсь. а проблемы с дрейфом частоты решаются традиционными методами построения ФАПЧ.
fontp
QUOTE (Corner @ Jul 27 2013, 11:16) *
Не получится, 360 на 11 не делится.


Дифференциальный демодулятор сам проигрывает в помехоусточивасти когерентному, который мы рассматриваем. Дополнительно Вы теряете помехоустойчивость к шумам, не используя одно дополнительное состояние. При этом Вы ничего не приобретаете, кроме большей устойчивочти тактовой синхронизации, за счет гарантированного изменения фазы на каждом такте, но тактовую и так можно
обнаружить, даже если не гарантировано изменение фазы на каждом символе

Ну и радости, что делится нацело... Это важно для кабаллиста, а так - нет
А в радианах вообще никогда не разделится нацело ))
Виктор39
Цитата
Раз периодически передаёте настроечную последовательность, подстройку петли по тактовой можно отключить, периодически вовращаем эквалайзер в исходное центральное состояние, эквалайзер подстраивает задержкой правильную временную символьную фазу, главное чтобы значащие коэффициенты за край не уехали до следующей настроечной последовательности.


Спасибо, за этот ответ. Разрабатываемый 8PSK приемник должен иметь возможность работать с различными типами передачи данных, и с различными типами сигнала. Я понимаю, что ничего универсального не существует, поэтому и спрашиваю.
Собственно говоря есть два типа передачи данных, пакетный и потоковый. Решил разбираться в начале с пакетной передачей данных. Как мне кажется именно там возможно использовать предложенную вами схему.
Перед каждым пакетом данных передается преамбула, по которой я буду ловить начало сигнала, определять начальную частотную и начальную фазовую расстройку, а также обучать эквалайзер. Длительности пакета, в зависимости от типа сигнала, очень отличаются, и могут иметь от 1.5 тысячи символов, до 22 тысяч. При передаче длинных пакетов, применяется тип сигнала, при котором данные в пакете делятся на кадры по 48 символов, из которых 32 - неизвестные данные, 16 - известные данные. Скорость передачи данных 2400 сим/сек. Вот собственно вопросы:
1)в случае самых длинных пакетов, если использовать предложенную вами схему без символьной синхронизации, как вы думаете, если сбрасывать эквалайзер в исходное состояние и обучать его только по преамбуле каждого нового пакета, за это время (максимально около 10 секунд), значащие коэффициенты за край не убегут? т.е. имеет ли смысл применять эту схему?

2)и еще, я думаю максимально использовать возможности стандарта, и поэтому в длинных пакетах, в которых в каждом кадре присутствует 16 известных символов, по этим известным символам дополнительно подстраивать(обучать) эквалайзер, а на неизвестных данных, корректировать коэффициенты по решению. это нормально?

3)И еще, я только работал с TSE эквалайзером, в исходном состояние которого все коэффициенты равнялись нулю, кроме центральной единицы. а вот в случае использования данного эквалайзера(кажись он называется FSE), что является его исходным состоянием?
petrov
Цитата(Виктор39 @ Jul 30 2013, 09:50) *
1)в случае самых длинных пакетов, если использовать предложенную вами схему без символьной синхронизации, как вы думаете, если сбрасывать эквалайзер в исходное состояние и обучать его только по преамбуле каждого нового пакета, за это время (максимально около 10 секунд), значащие коэффициенты за край не убегут? т.е. имеет ли смысл применять эту схему?


Посчитайте по аналогии с FIFO, записываете с одним клоком, считываете с другим, когда оно опустошится или переполнится?

Цитата(Виктор39 @ Jul 30 2013, 09:50) *
2)и еще, я думаю максимально использовать возможности стандарта, и поэтому в длинных пакетах, в которых в каждом кадре присутствует 16 известных символов, по этим известным символам дополнительно подстраивать(обучать) эквалайзер, а на неизвестных данных, корректировать коэффициенты по решению. это нормально?


Нормально, только на данных скорость адаптации поменьше, так как могут быть ошибки решений и плохая последовательность данных с точки зрения АКФ.

Цитата(Виктор39 @ Jul 30 2013, 09:50) *
3)И еще, я только работал с TSE эквалайзером, в исходном состояние которого все коэффициенты равнялись нулю, кроме центральной единицы. а вот в случае использования данного эквалайзера(кажись он называется FSE), что является его исходным состоянием?


То же самое. Но не обязательно сбрасывать эквалайзер на каждой известной последовательности, можно центр масс коэффициентов передвигать в центральное положение, тогда эквалайзер не будет долго настраиваться с нуля.
fontp
QUOTE (Виктор39 @ Jul 30 2013, 09:50) *
Спасибо, за этот ответ. Разрабатываемый 8PSK приемник должен иметь возможность работать с различными типами передачи данных, и с различными типами сигнала. Я понимаю, что ничего универсального не существует, поэтому и спрашиваю.
Собственно говоря есть два типа передачи данных, пакетный и потоковый. Решил разбираться в начале с пакетной передачей данных. Как мне кажется именно там возможно использовать предложенную вами схему. 
Перед каждым пакетом данных передается преамбула, по которой я буду ловить начало сигнала, определять начальную частотную и начальную фазовую расстройку, а также обучать эквалайзер. Длительности пакета, в зависимости от типа сигнала, очень отличаются, и могут иметь от 1.5 тысячи символов, до 22 тысяч. При передаче длинных пакетов, применяется тип сигнала, при котором данные в пакете делятся на кадры по 48 символов, из которых 32 - неизвестные данные, 16 - известные данные. Скорость передачи данных 2400 сим/сек. Вот собственно вопросы: 
1)в случае самых длинных пакетов, если использовать предложенную вами схему без символьной синхронизации, как вы думаете, если сбрасывать эквалайзер в исходное состояние и обучать его только по преамбуле каждого нового пакета, за это время (максимально около 10 секунд), значащие коэффициенты за край не убегут? т.е. имеет ли смысл применять эту схему? 

2)и еще, я думаю максимально использовать возможности стандарта, и поэтому в длинных пакетах, в которых в каждом кадре присутствует 16 известных символов, по этим известным символам дополнительно подстраивать(обучать) эквалайзер, а на неизвестных данных, корректировать коэффициенты по решению. это нормально?
 
3)И еще, я только работал с TSE эквалайзером, в исходном состояние которого все коэффициенты равнялись нулю, кроме центральной единицы. а вот в случае использования данного эквалайзера(кажись он называется FSE), что является его исходным состоянием?


1. Уход тактовой фазы на N символах легко оценить как dF/Fт *N, dF ошибка free-running тактовой.
Учитывая, точность генератора хотя бы 10 ppm и то, что потерями при ошибке тактовой на 1/10 символьного периода можно пренебречь, в пакетных модемах тактовую частоту вообще не подстраивают до N несколько тысяч. Если у Вас даже стабильность генератора недостаточная на 22 тыс символов, нет смысла городить петлю фапч по тактовой, достаточно определять тактовую фазу несколько раз каким нибудь feed forward методом и подкорректировать, либо положиться на то, что уход на 1/5 символа скорректирует эквалайзер

2. Мне кажется у вас подстроечные последовательности слишком часто, нет в этом необходимости, ничто не происходит так быстро. С такими короткими кадрами, можно вообще не делать подстройки эквалайзера по решению. По решению вынуждены подстраиваться в непрерывных модемах, когда подстроечная последовательность ( преамбула, постамбула) больше не повторяется или повторяется очень нескоро

3. За 16 или 48 символов центральный отсчет никуда не уйдет и ничего не нужно переинициализировать. А когда центр тяжести уползет на пол отсчета, как предложил  petrov, его нужно обратно задвинуть, передернув фильтр эквалайзера, и просто учесть этот сдвиг, там где делается выборка
petrov
Цитата(fontp @ Aug 1 2013, 14:08) *
2. Мне кажется у вас подстроечные последовательности слишком часто, нет в этом необходимости, ничто не происходит так быстро.


Происходит, например КВ канал может так быстро изменяться.
Corner
Цитата(fontp @ Jul 27 2013, 15:27) *
Дифференциальный демодулятор сам проигрывает в помехоусточивасти когерентному, который мы рассматриваем. Дополнительно Вы теряете помехоустойчивость к шумам, не используя одно дополнительное состояние. При этом Вы ничего не приобретаете, кроме большей устойчивочти тактовой синхронизации, за счет гарантированного изменения фазы на каждом такте, но тактовую и так можно
обнаружить, даже если не гарантировано изменение фазы на каждом символе

Ну и радости, что делится нацело... Это важно для кабаллиста, а так - нет
А в радианах вообще никогда не разделится нацело ))


1. Это модем для дальней связи, уровень сигнала меняется на порядки и 1 дБ потерь (на 9-ый символ) не играет никакой роли.
2. Дифференциальный детектор лишь находит частоту на которой происходит смена символов, детектирование символа происходит стандартно.
3. Так как окно символа известно (см. п2), то можно выкинуть 90% того огорода, который вы тут нагородили.
4. В модеме, для борьбы с замираниями, использовался fast hopping, ваш подход при этом бесполезен, поскольку имеет очень длительные времена сходимости петель обратной связи.

5. Слишком сложные петли обратной связи очень чувствительны к прицельным помехам. Канал связи будет разваливаться на раз-два...
fontp
QUOTE (Corner @ Aug 1 2013, 22:50) *
1. Это модем для дальней связи, уровень сигнала меняется на порядки и 1 дБ потерь (на 9-ый символ) не играет никакой роли.
2. Дифференциальный детектор лишь находит частоту на которой происходит смена символов, детектирование символа происходит стандартно.
3. Так как окно символа известно (см. п2), то можно выкинуть 90% того огорода, который вы тут нагородили.
4. В модеме, для борьбы с замираниями, использовался fast hopping, ваш подход при этом бесполезен, поскольку имеет очень длительные времена сходимости петель обратной связи.

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


Не было никаких проблем с "окном символа". Мы "городили огород" из-за расстройки несущей.
9 символ в этом ничем не поможет, даже если 1дб и не жалко
Тем более что при пакетной передаче частоту смены символов определять вообще не нужно, достаточно для каждого пакета определить символьную фазу(по преамбуле или настроечной последовательности) а частоту можно считать номинальной
Что касается адаптивного эквалайзера - это не наш подход, а стандартный. Это уже зависит от канала, насколько он будет успевать адаптироваться.
Corner
Фазу по преамбуле это круто. А доплеровские эффекты в ТЗ есть? Там... взаимная скорость приемника и передатчика?

Кстати, если для генерации символов и несущей используется один и тот же источник опорной частоты, то расстройка частоты символов кратна расстройке несущей. Тогда зная частоту смены из синхронизации в потоке/пакете (не суть) можно определять несущую и не "петлять".
fontp
QUOTE (Corner @ Aug 2 2013, 00:00) *
Фазу по преамбуле это круто. А доплеровские эффекты в ТЗ есть? Там... взаимная скорость приемника и передатчика?

Кстати, если для генерации символов и несущей используется один и тот же источник опорной частоты, то расстройка частоты символов кратна расстройке несущей. Тогда зная частоту смены из синхронизации в потоке/пакете (не суть) можно определять несущую и не "петлять".


Сами вы петляете. Начались гадания

1. Кто его знает. Наверное, взаимная скорость не больше 3км/сек
То есть доплер меньше 10 ppm, следовательно им можно пренебречь, при размере пакета меньше 10000. Ибо уход символьной выборки на 0.1 от символьного интервала дает не 1 дб потерь, а десятые доли дб

2. Кстати иногда используется один генератор, а иногда другой. Если один - то можно, конечно, синхронизировать совместно. Только относительная точность определения несущей обычно значительно выше точности символьной(как и требования к ним) поэтому есть смысл поступать наоборот - определить частоту несущей и по ней иметь символьную
Corner
Давайте определимся со сферой применения этого модема: кабельные сети или окружающая среда?
Если первое то вопросов нет - ваш метод правильный.
Если второе, то число ошибок будет зависеть вплоть до интенсивности автомобилепотока на соседнем шоссе, так как если возможный сдвиг по частоте в пределах пакета будет превышать некоторое значение, то вы будете путать смену фазы произошедшую от разнице в частоте от смены фазы в данных.
fontp
QUOTE (Corner @ Aug 2 2013, 00:17) *
Давайте определимся со сферой применения этого модема: кабельные сети или окружающая среда?
Если первое то вопросов нет - ваш метод правильный.
Если второе, то число ошибок будет зависеть вплоть до интенсивности автомобилепотока на соседнем шоссе, так как если возможный сдвиг по частоте в пределах пакета будет превышать некоторое значение, то вы будете путать смену фазы произошедшую от разнице в частоте от смены фазы в данных.


Нет не будет. Если, конечно, сможет адаптироваться к замираниям. Это конечно зависит от канала связи.
В спутниковых пакетных модемах никогда не используют подстройки по частоте символов, ее расстройка не значима на длине пакета. Достаточно один раз для каждого пакета определить символьную фазу
Corner
Цитата(fontp @ Aug 2 2013, 00:09) *
Сами вы петляете. Начались гадания

1. Кто его знает. Наверное, взаимная скорость не больше 3км/сек
То есть доплер меньше 10 ppm, следовательно им можно пренебречь, при размере пакета меньше 10000.

Ерунда полная, если несущая 10 ГГц, то доплер (берем ваши 10 ppm) составит 100 кГц. Фазовая ошибка при синхронизации по преамбуле достигнет 45 градусов (один символ при 8 углах) через 1,25 мкс. Следовательно, при таком допущении, пакет длиннее 1,25 мкс буде всегда ошибочен, при любом С/Ш.

Цитата(fontp @ Aug 2 2013, 00:23) *
Нет не будет. Если, конечно, сможет адаптироваться к замираниям
В спутниковых пакетных модемах никогда не используют подстройки по частоте символов, ее расстройка не значима на длине пакета

Тоже не так. Для геосинхронных спутников синхронизация идет непрерывно. Это для геостационарных она не нужна поскольку скорость сближения-удаления мизерна.

В частности в GPS и ГЛОНАСС она называется "дальномерный код" и представляет собой М-последовательность из 1023 или 511 бит.

Все таки, тема сферы применения этого модема осталась не раскрыта...
fontp
QUOTE (Corner @ Aug 2 2013, 00:37) *
Ерунда полная, если несущая 10 ГГц, то доплер (берем ваши 10 ppm) составит 100 кГц. Фазовая ошибка при синхронизации по преамбуле достигнет 45 градусов (один символ при 8 углах) через 1,25 мкс. Следовательно, при таком допущении, пакет длиннее 1,25 мкс буде всегда ошибочен, при любом С/Ш.


Тоже не так. Для геосинхронных спутников синхронизация идет непрерывно. Это для геостационарных она не нужна поскольку скорость сближения-удаления мизерна.

В частности в GPS и ГЛОНАСС она называется "дальномерный код" и представляет собой М-последовательность из 1023 или 511 бит.

Все таки, тема сферы применения этого модема осталась не раскрыта...


У вас ерунда, вы меня не путайте. Вы меня спрашивали о доплере символьной частоты, я вам ответил, что он незначим. Вы не следите не только за моими ответами, но даже за своими вопросами. Доплер несущей, естественно, значим и мы его определяем по преамбуле, в пределах частоты Найквиста оцифровки.
Читайте начало дискуссии мы любое смещение несущей уже определили к вашему приходу
Corner
Цитата(fontp @ Aug 2 2013, 00:40) *
У вас ерунда, вы меня не путайте. Вы меня спрашивали о доплере символьной частоты, я вам ответил, что он незначим. Доплер несущей, естественно, значим и мы его определяем по преамбуле
Читайте начало дискуссии мы любое смещение несущей уже определили к вашему приходу

Читал, вы определили смещение, но не определили, как часто оно будет происходить...
fontp
QUOTE (Corner @ Aug 2 2013, 00:44) *
Читал, вы определили смещение, но не определили, как часто оно будет происходить...


Но тогда вы должны говорить о ускорении за время пакета ( периода определения частоты несущей)
Кроме того у нас по несущей сохранен и работает таки фапч. По несущей у нас нет проблем и вы пришли обсуждать не их, а проблемы по символьной частоте

Я утверждал, что подстройка символьной частоты на 10000 символов не нужна.
Corner
Я показываю вам пальцем на те грабли на которые уже сам наступал, но вы упорно хотите еще раз на них наступить... это ваше право...
fontp
QUOTE (Corner @ Aug 2 2013, 00:46) *
Я показываю вам пальцем на те грабли на которые уже сам наступал, но вы упорно хотите еще раз на них наступить... это ваше право...

спасибо, начальник не нужен.

У меня модемы работают
Corner
Цитата(fontp @ Aug 2 2013, 00:45) *
Но тогда вы должны говорить о ускорении за время пакета ( периода определения частоты несущей)
Кроме того у нас по несущей сохранен и работает таки фапч

1. Ускорения может и не быть, просто машина с постоянной скоростью проехала между приемником и передатчиком. Поперек. Или много машин (шоссе рядом с приемником, или лес на ветру, или тучки, ветром гонимые)- это ЧМ+ФМ шум с , теоретически, бесконечным спектром.
2. ФАПЧ по несущей при такой помехе ухудшит С/Ш при его малом значении значительно больше чем на 1 дБ.
fontp
QUOTE (Corner @ Aug 2 2013, 00:54) *
1. Ускорения может и не быть, просто машина с постоянной скоростью проехала между приемником и передатчиком. Поперек. Или много машин (шоссе рядом с приемником, или лес на ветру, или тучки, ветром гонимые)- это ЧМ+ФМ шум с , теоретически, бесконечным спектром.
2. ФАПЧ по несущей при такой помехе ухудшит С/Ш при его малом значении значительно больше чем на 1 дБ.


Ерунда. Фапч с узкой шумовой полосой по несущей используется практически всегда
Насчет машин - это уже зависит от возможностей эквалайзера бороться с замираниями

Давайдосвидания, дружок, надоел
Corner
Если ФАПЧ медленная, то вы увеличиваете вероятность потери пакета, если быстрая, то вероятность приема ложного пакета. Введение синхронизации решает обе проблемы.

Цитата(fontp @ Aug 2 2013, 00:50) *
спасибо, начальник не нужен.

У меня модемы работают

Если брать стандартные 5 Вт, на диапазоне 17 м, то как далеко (чтоб стабильно) они работают? 20000 км будет?
Виктор39
При работе с FSE LMS/RLS эквалайзерами возникают непонятные проблемы, которые не обнаруживал в TSE эквалайзерах. Например, если я беру FSE RLS эквалайзер, странным образом изменяются его весовые коэффициенты. В некоторы моменты времени смотря на коэффициенты можно сказать, что эквалайзер развавлился, но он продолжает достаточно исправно работать. Как это происходит можно посмотреть в прикрепленном файле. Там подается почти идеальный сигнал с одним лучем пропущенный через канал с белым шумом. Не могу понять, в чем ошибка?! Почему при таких весовых коэффициентах эквалайзер продолжает исправлять АЧХ?!
FSE LMS эквалайзер не имеет подобныг траблов, но он после обучения в плохих каналах быстрее разваливается чем FSE RLS, да и время установки и качество исправления у него хуже.

Из-за проблем с FSE эквалайзерами, я продолжают дорабатывать схему совместного использования Гарднера по тактовой и TSE RLS DFE эквалайзера. Хотя вы говорите, что данная схема не устойчивая, мне кажется, что при пакетной передаче она не успеет развалится. Только вот возникают проблемы при обучении эквалайзера. Тактовая синхронизация по Гарднеру достаточны долго устаканивается. ДЛя обучения такого эквалайзера нужно ждать, пока установиться тактовая синхронизация, а только потом включать обучние? это тоже ведь не очень хорошо, так как теряется большая часть преамбулы.
Нажмите для просмотра прикрепленного файла
Виктор39
не подскажете, исходя из каких соображений выбираются начальные значения обратной корреляционной диагональной матрицы в RLS алгоритме?!
Виктор39
Уважаемые эксперты, не могли бы вы направить меня в верном направлении. я на данном этапе разработки сталкиваюсь со следущими проблемами:
(работаю со схемой FSE DFE LMS + Tanlock по несущей + AGC, без тактовой синхронизации)

1) данная схема неплохо(согласно исходным условиям) исправляет сигнал с несколькими лучами с разностью лучей в несколько символов, так же нет проблем с ошибкой связанной с доплеровским сдвигом. Проблема возникает при доплеровском рассеянии (DopplerSpread). Даже в случае одного луча(в случае нескольких лучей все ехе хуже), при большом значении DopplerSpread невязка(ошибка подаваемая на эквалайзер) постоянно изменяется от маленьких значений, до очень больших, и эквалайзер разваливается. Я думал, что ошибку связанную с DopplerSpread должен компенсировать АРУ, но никакой АРУ, ни экспоненциальный, ни линейный не дает желаемых результатов. В заданных мне каналах значение DopplerSpread достигает 10 Гц, тогда как моя схема способна исправно работать только при значениях DopplerSpread не больше 0.5 Гц. как с этим быть?

а)Возможно я не правильно вычисляю коэффициент усиления АРУ. Так как у меня forward filter работает по двум отсчетам на символ, для вычисления коэффициента АРУ я беру амплитуду среднего значения двух входных отсчетов (abs(mean(x))).

б) В некоторых случаях при плохих каналах значение приходящее с feedback filter начинает расти, а с forward filter уменьшаться, и поэтому выходное значение символа определяется в большей степени не forward filter, а feedback filter, что в корне не верно. Нужно каким-то образом ограничивать выход feedback filter и не давать коэффициентам forward filter уменьшаться?!

2) Изначально центральный коэффициент forward filter я устанавливаю в единицу. Так как у меня не TSE, а FSE адаптивный фильтр, то возникают проблемы, особенно при обучении. Так как на один символ приходится два отсчета, поэтому есть разница, какому из этих отсчетов будет соответствовать коэффициент единица. Если в начальный момент единичному коэффициенту соответствует "лучший" из отсчетов, то эквалайзер быстро сходиться, в противном случае эквалайзер быстрее настраивается при инициализации forward filter всеми нулями. Имеет ли смысл в начальный момент каким-либо образом оценивать первые значения входного сигнала, чтобы установить единичный коэффициент на место, которое соответствовало бы отсчету имеющему больше значение по амплитуде?!
petrov
Цитата(Виктор39 @ Aug 13 2013, 17:07) *
1) данная схема неплохо(согласно исходным условиям) исправляет сигнал с несколькими лучами с разностью лучей в несколько символов, так же нет проблем с ошибкой связанной с доплеровским сдвигом. Проблема возникает при доплеровском рассеянии (DopplerSpread). Даже в случае одного луча(в случае нескольких лучей все ехе хуже), при большом значении DopplerSpread невязка(ошибка подаваемая на эквалайзер) постоянно изменяется от маленьких значений, до очень больших, и эквалайзер разваливается. Я думал, что ошибку связанную с DopplerSpread должен компенсировать АРУ, но никакой АРУ, ни экспоненциальный, ни линейный не дает желаемых результатов. В заданных мне каналах значение DopplerSpread достигает 10 Гц, тогда как моя схема способна исправно работать только при значениях DopplerSpread не больше 0.5 Гц. как с этим быть?


а)Возможно я не правильно вычисляю коэффициент усиления АРУ. Так как у меня forward filter работает по двум отсчетам на символ, для вычисления коэффициента АРУ я беру амплитуду среднего значения двух входных отсчетов (abs(mean(x))).


б) В некоторых случаях при плохих каналах значение приходящее с feedback filter начинает расти, а с forward filter уменьшаться, и поэтому выходное значение символа определяется в большей степени не forward filter, а feedback filter, что в корне не верно. Нужно каким-то образом ограничивать выход feedback filter и не давать коэффициентам forward filter уменьшаться?!


АРУ не при чём, оно только среднюю мощность сигнала отслеживает, большой DopplerSpread означает быстрое изменение канала, вплоть до принципиальной невозможности компенсации искажений, даже c самым лучшим алгоритмом адаптации.

Цитата(Виктор39 @ Aug 13 2013, 17:07) *
2) Изначально центральный коэффициент forward filter я устанавливаю в единицу. Так как у меня не TSE, а FSE адаптивный фильтр, то возникают проблемы, особенно при обучении. Так как на один символ приходится два отсчета, поэтому есть разница, какому из этих отсчетов будет соответствовать коэффициент единица. Если в начальный момент единичному коэффициенту соответствует "лучший" из отсчетов, то эквалайзер быстро сходиться, в противном случае эквалайзер быстрее настраивается при инициализации forward filter всеми нулями. Имеет ли смысл в начальный момент каким-либо образом оценивать первые значения входного сигнала, чтобы установить единичный коэффициент на место, которое соответствовало бы отсчету имеющему больше значение по амплитуде?!


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

Corner
Виктор39:
Я так понимаю, у вас КВ трансивер, как основа. Какой тип модуляции несущей используется: SSB или FM?
Виктор39
Цитата
Я так понимаю, у вас КВ трансивер, как основа. Какой тип модуляции несущей используется: SSB или FM?


Да, вы правильно понимаете, у меня КВ трансивер. В нем используется модуляция 8psk.
Corner
Цитата(Виктор39 @ Aug 19 2013, 09:40) *
Да, вы правильно понимаете, у меня КВ трансивер. В нем используется модуляция 8psk.


8psk на поднесущей 1800 Гц, а какой тип модуляции по несущей? Или модуляция однократная?
Просто я делал модем, который работает с речевым каналом. Проводил эксперименты с разными типами модуляции несущей (SSB, FM, AM, PM) при разных видах модуляции поднесущей (PSK, OPSK, OFDM). Только у меня была поднесущая (поднесущие на OFDM) 600... 1200 Гц.
Виктор39
Цитата(Corner @ Aug 21 2013, 17:58) *
8psk на поднесущей 1800 Гц, а какой тип модуляции по несущей? Или модуляция однократная?
Просто я делал модем, который работает с речевым каналом. Проводил эксперименты с разными типами модуляции несущей (SSB, FM, AM, PM) при разных видах модуляции поднесущей (PSK, OPSK, OFDM). Только у меня была поднесущая (поднесущие на OFDM) 600... 1200 Гц.

модуляция однократная
Виктор39
разбираюсь с алгоритмом Stop And Go... не могу понять, как это можно представить в комплексном виде для моего случая... может быть поможете


gamma = E[|a|^2] / E[|a|]. Насколько я понимаю E это усреднение, тогда для моего случая 8psk с точками
Код
0.5000 + 0.5000i   0.0000 + 0.7071i  -0.5000 + 0.5000i  -0.7071 + 0.0000i  -0.5000 - 0.5000i  -0.0000 - 0.7071i   0.5000 - 0.5000i   0.7071 - 0.0000i

gamma будет равняться следующему??? это верно?
Код
gamma =  sum([(0.5^2) (0.7071^2)]) / sum([0.5 0.7071])


далее sgn{y[k]} будет равняться следующему? :
Код
sign(real(y[k])) + j*sign(imag(y[k]))


а как быть с условием

Код
    if (sign{e_D[k]} == sign{e_S[k]}) % ??? ??????????? ??? ? ??????????? ?????
        f = 0;
    else
        f = 1;
    end


как посчитать знаки sign{e_D[k]} и sign{e_S[k]}?
не понятно, как это сделать для случая с комплексными числами
alex_os
Цитата(Виктор39 @ Aug 29 2013, 12:29) *
разбираюсь с алгоритмом Stop And Go... не могу понять, как это можно представить в комплексном виде для моего случая... может быть поможете


А для PSK 8 Stop And Go не будет иметь никакого смысла. S&G он для КАМов или для многопозиционной АМ. Если нужен слепой алгоритм для корректора смотрите лучше на CMA.
Виктор39
Цитата(alex_os @ Aug 29 2013, 12:23) *
А для PSK 8 Stop And Go не будет иметь никакого смысла. S&G он для КАМов или для многопозиционной АМ. Если нужен слепой алгоритм для корректора смотрите лучше на CMA.

в атаче статья, в которой рассматриваются алгоритмы улучшения качества работы DFE для сигналов с 8VSB модуляцией.
мне нужен алгоритм, позволяющий удерживать адаптивные фильтры FF и FB в таком состоянии, чтобы они не боролись друг с другом. дело в том, что в плохих каналах FB начинает подавлять FF и эквалайзер разваливается. как я понимаю, нужно минимизировать распространение ошибки через обратный фильтр. я не знаю, насколько правильно будет использовать алгоритм предназначенный для VSB, но почему-то мне кажется, что это то, что мне нужно. в данной статье в конечном итоге рассматривается алгоритм модифицированный SAG DMCMA. смысл его в том, что SAG применяется совместно с CMA только для обратного фильтра. для прямого фильтра применяется только DMCMA. но все равно, для реализации данного алгоритма мне нужно понять, как для комплексных чисел реализовать обычный SAG. Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.