Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Фреймовая синхронизация DVB-S2
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Anton1990
Всем добрый день.
Те кто занимался приемом DVB-S2 поясните, пожалуйста, следующий момент:
В статьях и рекомендациях есть схема приемника (фреймовая синхронизация). Текущий комплексный отсчет умножается на комплексно-сопряженный следующий отсчет. В результате получаем комплексное число.
Далее по схеме отводы сдвигового регистра умножаются на значения SOF 25 бит. И тут вопрос: а как комплексные числа умножаются на биты SOF? Или каждый бит SOF нужно представить комплексным числом? Тогда как это сделать? И далее нужно сложить все 25 комплексных чисел?
Или я ошибаюсь и в какой-то момент комплексные числа выраждаются в битовую последовательность?
Те кто понял о чем я хочу спросить пожалуйста проясните. Заранее спасибо за ответы.
Serg76
Используйте для синхронизации согласованный фильтр, ИХ которого строится на основе SOF последовательности. Для этого надо битовую последовательность SOF преобразовать в эталонную последовательность комплексных отсчетов в соответствии с применяемым манипуляционным кодом, другими словами надо просто промодулировать SOF последовательность по правилам pi/2 BPSK модуляции и тем самым получите эталонную последовательность комплексных отсчетов, она же и является искомой ИХ согласованного фильтра. Далее входную последовательность подаете на этот фильтр и отлавливаете начало фрейма по порогу. Как-то так.

P.S. SOF последовательность имеет длину 26 символов (битов)
Anton1990
Цитата(Serg76 @ Jun 13 2017, 20:07) *
Используйте для синхронизации согласованный фильтр, ИХ которого строится на основе SOF последовательности. Для этого надо битовую последовательность SOF преобразовать в эталонную последовательность комплексных отсчетов в соответствии с применяемым манипуляционным кодом, другими словами надо просто промодулировать SOF последовательность по правилам pi/2 BPSK модуляции и тем самым получите эталонную последовательность комплексных отсчетов, она же и является искомой ИХ согласованного фильтра. Далее входную последовательность подаете на этот фильтр и отлавливаете начало фрейма по порогу. Как-то так.

P.S. SOF последовательность имеет длину 26 символов (битов)


Интересный подход.
То есть я модулирую последовательность SOF тем самым получаю комплексную SOF. которую и сравниваю с принимаемым сигналом? По отдельности с мнимой и действительной составляющей? А нужно ли перед этим принимаемый отсчет сигнала умножать на комплекcно-сопряженный следующий отсчет? (как это приводиться в схемах фреймовой синхр.).
Dr.Alex
Цитата(Anton1990 @ Jun 13 2017, 18:45) *
Всем добрый день.

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

Цитата(Anton1990 @ Jun 13 2017, 20:17) *
Интересный подход.

Это не подход, а обычное дело: корреляция.

Цитата(Anton1990 @ Jun 13 2017, 20:17) *
которую и сравниваю с принимаемым сигналом? По отдельности с мнимой и действительной составляющей?

Не сравниваете, а коррелируете (корреляция комплексная). Не по отдельности, а как раз с к.с. сигналом.
Serg76
Цитата(Anton1990 @ Jun 13 2017, 18:45) *
В статьях и рекомендациях есть схема приемника (фреймовая синхронизация).

нашел, похоже, эту статью Нажмите для просмотра прикрепленного файла, о которой Вы упоминаете. просмотрел бегло, интересная схема синхронизации, по времени синхронизации получается более "скоростная", но в то же время и более сложная, нежели упомянутая мною, классическая. на досуге надо будет разобраться более детально.
Anton1990
Цитата(Dr.Alex @ Jun 13 2017, 21:22) *
Вы чё-то перепутали.
Умножив отсчёт на к.с. самого себя (пусть даже всё это повёрнуто на произвольный угол из-за фазовой неопределённости),
вы уничтожили всю инфу о передаваемых битах и получили одинаковые вектора с точностью до шума.
Никакой последовательности в этом уже не найти.
равниваете, а коррелируете (корреляция комплексная). Не по отдельности, а как раз с к.с. сигналом.


По схеме умножение происходит текущего отсчета на комплексно-сопряженный следующий отсчет. Ну так покрайней мере нарисовано на схеме.

Цитата(Serg76 @ Jun 13 2017, 21:54) *
нашел, похоже, эту статью Нажмите для просмотра прикрепленного файла, о которой Вы упоминаете. просмотрел бегло, интересная схема синхронизации, по времени синхронизации получается более "скоростная", но в то же время и более сложная, нежели упомянутая мною, классическая. на досуге надо будет разобраться более детально.


Еще раз для закрепления. Я модулирую SOF (26 бит) по правилу pi/2 bpsk тем самым получаю 26 комплексных чисел - это отводы фильтра.
Отсчеты сигнала на тактовой частоте подаю на этот фильтр. (все операции умножения и сложения) выполняю в комплексном виде. Когда на выходе фильтра выскачил максимум (модуль комплексного числа), ну или был превышен некий порог считаю началом заголовка фрейма физического уровня. Я все верно понимаю? Следовательно умножение отсчета на комплексно сопряженное значение следующего отсчета (эта операция приведена в статье) не требуется.
И еще резонный вопрос: а какую разрядность im и re выбрать. Можно ведь взять вообще один знак: (1+j), (1-j), (-1+j), (-1-j).
И вообще схема с использованием фильтра будет ли работать при отстройке по несущей частоте (когда на фазовой плоскости круг)? Ведь именно это наиболее интересно. В противном случае можно просто принимать решения в режиме ФМ4.
masverter
Проделайте действия (умножение комплексно-сопряженного текущего отсчета на предыдущий), описанные в статье, для SOF, модулированного PI/2-BPSK. Получите комплексную последовательность:
re = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
im = { 1, 1, 1, 1,-1,-1,-1,-1, 1,-1,-1,-1, 1,-1,-1, 1, 1,-1, 1, 1,-1, 1,-1,-1, 1}
Мнимая часть кодирует направления переходов на PI/2 между символами. Эти значения и будут "25 coef. SOF", показанные на рисунке в статье. Проделываете тоже самое (умножение комплексно-сопряженного текущего отсчета на предыдущий) со входным сигналом и коррелятором ищете указанную выше последовательность.
Для PLSC делаем аналогично, только берем в качестве коэффициентов половину значений, как указано в статье. В этом случае для всех PLSC с пилотом последовательность будет одинаковой, также, как и для PLSC без пилотов, а друг от друга они будут отличатья только тем, что их мнимые значения будут иметь противоположный знак.
Теперь, если Вы определили пик, то, помимо начала кадра, можно определить: по знаку суммы с выхода SOF-коррелятора - наличие/отсутствие инверсии спектра, а по знаку суммы с выхода PLSC-коррелятора (с учетом инверсии спектра) - наличие/отсутствие пилотов.
Serg76
Цитата(Anton1990 @ Jun 14 2017, 18:40) *
Еще раз для закрепления. Я модулирую SOF (26 бит) по правилу pi/2 bpsk тем самым получаю 26 комплексных чисел - это отводы фильтра.
Отсчеты сигнала на тактовой частоте подаю на этот фильтр. (все операции умножения и сложения) выполняю в комплексном виде. Когда на выходе фильтра выскачил максимум (модуль комплексного числа), ну или был превышен некий порог считаю началом заголовка фрейма физического уровня. Я все верно понимаю?

Да, я имено так и делал, правда обработка у меня ведется на двойной тактовой

Цитата(Anton1990 @ Jun 14 2017, 18:40) *
И еще резонный вопрос: а какую разрядность im и re выбрать. Можно ведь взять вообще один знак: (1+j), (1-j), (-1+j), (-1-j).
И вообще схема с использованием фильтра будет ли работать при отстройке по несущей частоте (когда на фазовой плоскости круг)? Ведь именно это наиболее интересно. В противном случае можно просто принимать решения в режиме ФМ4.

По рязрядности в данном случае можно ограничится и знаком в эталонной последовательности, в своей модели я использую плавучку. Насчет отстройки: прежде чем Вы начнете запускать коррелятор, все равно придется предварительно оценить начальную отстройку и устранить ее, иначе при значительной начальной отстройке коррелятор не сработает. При принятии решения в режиме ФМ4 вместо ФМ2 будете терять 3 дб в помехоустойчивости, хотя изначально всю обработку PL Header я тоже выполнял в режиме ФМ4))).
Anton1990
Цитата(masverter @ Jun 14 2017, 23:07) *
Проделайте действия (умножение комплексно-сопряженного текущего отсчета на предыдущий), описанные в статье, для SOF, модулированного PI/2-BPSK. Получите комплексную последовательность:
re = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
im = { 1, 1, 1, 1,-1,-1,-1,-1, 1,-1,-1,-1, 1,-1,-1, 1, 1,-1, 1, 1,-1, 1,-1,-1, 1}
Мнимая часть кодирует направления переходов на PI/2 между символами. Эти значения и будут "25 coef. SOF", показанные на рисунке в статье. Проделываете тоже самое (умножение комплексно-сопряженного текущего отсчета на предыдущий) со входным сигналом и коррелятором ищете указанную выше последовательность.
Для PLSC делаем аналогично, только берем в качестве коэффициентов половину значений, как указано в статье. В этом случае для всех PLSC с пилотом последовательность будет одинаковой, также, как и для PLSC без пилотов, а друг от друга они будут отличатья только тем, что их мнимые значения будут иметь противоположный знак.
Теперь, если Вы определили пик, то, помимо начала кадра, можно определить: по знаку суммы с выхода SOF-коррелятора - наличие/отсутствие инверсии спектра, а по знаку суммы с выхода PLSC-коррелятора (с учетом инверсии спектра) - наличие/отсутствие пилотов.


Ответ исчерпывающий. Прям руководство к действию. А подскажите приведенная последовательность im это правильная SOF ?, т.е. я могу ее прям и использовать (просто у меня есть подозрение что я неправильно понимаю принцип модуляции pi/2 bpsk), а Вы приводите прям готовый результат.
Подводя итог: спасибо всем откликнувшимся, пойду реализовывать.
masverter
Цитата(Anton1990 @ Jun 15 2017, 19:45) *
А подскажите приведенная последовательность im это правильная SOF ?
У себя такую использую. Но лучше, конечно, проверить.

Цитата(Anton1990 @ Jun 15 2017, 19:45) *
у меня есть подозрение что я неправильно понимаю принцип модуляции pi/2 bpsk
Используйте указания из стандарта:
The PLHEADER, represented by the binary sequence (y1, y2,...y90) shall be modulated into 90 π/2BPSK symbols
according to the rule:
I[2i-1] = Q[2i-1] = (1/√2) (1-2y[2i-1]), I[2i] = - Q[2i] = - (1/√2) (1-2y[2i]) for i = 1, 2, ..., 45
Anton1990
Цитата(masverter @ Jun 18 2017, 13:07) *
У себя такую использую. Но лучше, конечно, проверить.

Используйте указания из стандарта:
The PLHEADER, represented by the binary sequence (y1, y2,...y90) shall be modulated into 90 π/2BPSK symbols
according to the rule:
I[2i-1] = Q[2i-1] = (1/√2) (1-2y[2i-1]), I[2i] = - Q[2i] = - (1/√2) (1-2y[2i]) for i = 1, 2, ..., 45

я это уже примерно понял и проделал. И я так понял следующие 32 бита (вид модуляции) нужно сначала закодировать ридом-маллера, потом заскремблировать, потом замодулировать, потом умножить на компл.- сопр. след. отсчет. И вот эту полученную последовательность уже искать в принятом сигнале. причем таких вариантов будет 32 для каждого вида модуляции в режиме ACM. Однако, без подсказок до этого дойти как-то сложно, хотя вроде все в стандарте описано.
masverter
Цитата(Anton1990 @ Jun 18 2017, 19:40) *
причем таких вариантов будет 32 для каждого вида модуляции в режиме ACM.
Для задачи определения начала кадра (вид модуляции и скорость кода не определяем) используется то, что в PLSC
(z[2i] xor z[2i+1]) = const

A very useful property of the code for frame synchronization is that z[2i] xor z[2i+1] is constant for
i = 0, 1, ... , 31. <...> Therefore, in the modulated domain, the differential z[2i]z[2i+1] is equal to a constant.


Соответственно, вариант будет один. Проделав описанные Вами действия, Вы получаете для каждого вида модуляции/скорости кода последовательности из 64 значений. Исключаете из полученных последовательностей значения под номерами 0,2,4,...30. Убеждаетесь, что последовательности из 32-значений для всех видов модуляции и скорости кода совпадают. Для всех PLSC с пилотом последовательность будет одинаковой, также, как и для PLSC без пилотов, а друг от друга они будут отличаться только тем, что их мнимые значения будут иметь противоположный знак.
Anton1990
Цитата(masverter @ Jun 19 2017, 10:18) *
Для задачи определения начала кадра (вид модуляции и скорость кода не определяем) используется то, что в PLSC
(z[2i] xor z[2i+1]) = const

A very useful property of the code for frame synchronization is that z[2i] xor z[2i+1] is constant for
i = 0, 1, ... , 31. <...> Therefore, in the modulated domain, the differential z[2i]z[2i+1] is equal to a constant.


Соответственно, вариант будет один. Проделав описанные Вами действия, Вы получаете для каждого вида модуляции/скорости кода последовательности из 64 значений. Исключаете из полученных последовательностей значения под номерами 0,2,4,...30. Убеждаетесь, что последовательности из 32-значений для всех видов модуляции и скорости кода совпадают. Для всех PLSC с пилотом последовательность будет одинаковой, также, как и для PLSC без пилотов, а друг от друга они будут отличаться только тем, что их мнимые значения будут иметь противоположный знак.

Т.е. Вы имеете ввиду что все кодовые комбинации (вид модуляции+скремблер+модуляция+умножение на компл. сопря) будут одинаковыми для одного вида модуляции с различными скоростями кодирования? Ну тогда коррелировать можно не с 32-я комбинациями векторов, а только с 7-ю 32-битными векторами (QPSK, PSK8, APSK16, APSK32, 2 резервных и пустой кадр). Я правильно понял? Просто я еще не написал программу для всего этого.
masverter
Цитата(Anton1990 @ Jun 19 2017, 19:33) *
Т.е. Вы имеете ввиду что все кодовые комбинации (вид модуляции+скремблер+модуляция+умножение на компл. сопря) будут одинаковыми для одного вида модуляции с различными скоростями кодирования? Ну тогда коррелировать можно не с 32-я комбинациями векторов, а только с 7-ю 32-битными векторами (QPSK, PSK8, APSK16, APSK32, 2 резервных и пустой кадр). Я правильно понял? Просто я еще не написал программу для всего этого.
Нет, я имею ввиду, что 32-битные векторы будут одинаковыми для различных видов модуляции и различных скоростей кодирования. Поэтому коррелятором ищется только одна (не 32, и не 7) последовательность.
Anton1990
Цитата(masverter @ Jun 21 2017, 17:51) *
Нет, я имею ввиду, что 32-битные векторы будут одинаковыми для различных видов модуляции и различных скоростей кодирования. Поэтому коррелятором ищется только одна (не 32, и не 7) последовательность.

Уже понял. Написал программу которая кодирует ридом-маллера, скремблирует, модулирует, умножает текущий на компл.сопр. следующий отсчет. В итоге получил одинаковую последовательность для всех видов модуляции. Все поддтвердилось.
Для определения кода вида модуляции предполагаю следующее: закодировать все виды модуляции кодом рида-маллера, заскремблировать, получить 64 последовательносnb по 64 бита, далее замодулировать PI/2BPSK, получить 64 последовательности из 64-х комплексных чисел. Взять каждый второй отсчет. Это и будут отводы коррелятора для определения PLS. Т.е. параллельно работают 64 коррелятора по 32 комплексных отвода. Там где определяется максимум есть код вида модуляции + пилот. Мои соображения насчет определения PLS верны? И еще: описаная схема довольно громоздка. Может есть какой способ ее сократить о котором я не догадываюсь?
masverter
Цитата(Anton1990 @ Jun 21 2017, 19:45) *
Уже понял. Написал программу которая кодирует ридом-маллера, скремблирует, модулирует, умножает текущий на компл.сопр. следующий отсчет. В итоге получил одинаковую последовательность для всех видов модуляции. Все поддтвердилось.
Для определения кода вида модуляции предполагаю следующее: закодировать все виды модуляции кодом рида-маллера, заскремблировать, получить 64 последовательносnb по 64 бита, далее замодулировать PI/2BPSK, получить 64 последовательности из 64-х комплексных чисел. Взять каждый второй отсчет. Это и будут отводы коррелятора для определения PLS. Т.е. параллельно работают 64 коррелятора по 32 комплексных отвода. Там где определяется максимум есть код вида модуляции + пилот. Мои соображения насчет определения PLS верны? И еще: описаная схема довольно громоздка. Может есть какой способ ее сократить о котором я не догадываюсь?
Смотрите Вашу предыдущую тему
Делаете все в точности, как описал Amurak
1. По SOF заголовку определяете начало фрейма и, соответственно, начало PLS фрейма
2. Далее то, что Вы написали:
Демодуляция pi/2 BPSK;
далее следующие 64 бита дескремблирую;
из этих 64-х дискремблированных бит беру каждый второй;
эти 32 бита декодирую из кода Рида-Маллера;
получаю 5 бит - MODCOD и один бит поля TYPE - этот бит соответствует типу фрейма (short/normal)
3. Еще один бит декодируется мажоритарно из исходных дескремблированных 64-х бит и соответствует наличию/отсутствию пилотов
Все, ничего там коррелировать с PLS фреймом не надо. Сам PLS заголовок можно декодировать корреляционно, т.к. код РМ ортогонален



Сейчас Вы выполнили пункт 1, только для определения начала фрейма использовали SOF+PLSC. Более того,
Цитата(masverter @ Jun 15 2017, 00:07) *
помимо начала кадра, можно определить: <...> по знаку суммы с выхода PLSC-коррелятора (с учетом инверсии спектра) - наличие/отсутствие пилотов.
(т.е. таким образом можно выполнить пункт 3)
Anton1990
Цитата(masverter @ Jun 22 2017, 11:38) *
Смотрите Вашу предыдущую тему
Делаете все в точности, как описал Amurak
1. По SOF заголовку определяете начало фрейма и, соответственно, начало PLS фрейма
2. Далее то, что Вы написали:
Демодуляция pi/2 BPSK;
далее следующие 64 бита дескремблирую;
из этих 64-х дискремблированных бит беру каждый второй;
эти 32 бита декодирую из кода Рида-Маллера;
получаю 5 бит - MODCOD и один бит поля TYPE - этот бит соответствует типу фрейма (short/normal)
3. Еще один бит декодируется мажоритарно из исходных дескремблированных 64-х бит и соответствует наличию/отсутствию пилотов
Все, ничего там коррелировать с PLS фреймом не надо. Сам PLS заголовок можно декодировать корреляционно, т.к. код РМ ортогонален


Да Вы все верно пишите. Только вот демодуляция pi/2 bpsk выполняется просто (принятием решений в режиме ФМ4) если стоит "созвездие" ФМ4, на выходе получаем битовую последовательность (из одного бита), которую и обрабатываю. А вот если синхронизма по несущей нет (вместо созвездия круг), то демодуляция pi/2 bpsk уже не так тривиальна, но видимо, возможна. Я пока с этим не разбирался.
А подскажите дальнейшие действия: предположим я определил начало посылки и вид модуляции. Дальше я включаю соответствующую схему восcтановления несущей? А время вхождения в синхронизм?
Serg76
Цитата(Anton1990 @ Jun 22 2017, 18:06) *
Да Вы все верно пишите. Только вот демодуляция pi/2 bpsk выполняется просто (принятием решений в режиме ФМ4) если стоит "созвездие" ФМ4, на выходе получаем битовую последовательность (из одного бита), которую и обрабатываю. А вот если синхронизма по несущей нет (вместо созвездия круг), то демодуляция pi/2 bpsk уже не так тривиальна, но видимо, возможна. Я пока с этим не разбирался.
А подскажите дальнейшие действия: предположим я определил начало посылки и вид модуляции. Дальше я включаю соответствующую схему восcтановления несущей? А время вхождения в синхронизм?

Демодуляция пи/2 выполняется точно также как и обычная bpsk, столь лишь разницей, что перед принятием решения надо дополнительно довернуть каждый символ на пи/2. Если демодулировать в режиме QPSK, то будете терять в помехоустойчивости 3 дб. Насчет синхронизма: в приведенной статье отмечается, что предлагаемая схема фреймовой синхронизации SOF+PLSC на порядок быстрее, чем классическая схема синхронизации по SOF. Почему? Потому, что в ее основе лежит принцип дифференциального детектирования, которое не зависит от начальной отстройки по частоте (в разумных пределах, конечно).
Anton1990
Цитата(Serg76 @ Jun 22 2017, 21:27) *
Демодуляция пи/2 выполняется точно также как и обычная bpsk, столь лишь разницей, что перед принятием решения надо дополнительно довернуть каждый символ на пи/2. Если демодулировать в режиме QPSK, то будете терять в помехоустойчивости 3 дб. Насчет синхронизма: в приведенной статье отмечается, что предлагаемая схема фреймовой синхронизации SOF+PLSC на порядок быстрее, чем классическая схема синхронизации по SOF. Почему? Потому, что в ее основе лежит принцип дифференциального детектирования, которое не зависит от начальной отстройки по частоте (в разумных пределах, конечно).

Т.е. Вы имеете ввиду что я доворачиваю каждый принятый символ на 90 гр. и сразу принимаю решение в режиме BPSK, а фактически беру знак одного из каналов. В итоге получаю однобитный поток, в котором корреляторами ищу PLSC. Так? Ну тогда как то все просто, т.к. корреляторы будут строиться из операции "xor". И почему бы тогда и SOF не искать таким же способом, с поправкой на возможную инверсию спектра?
А далее чего делать? Включить соответствующую схему восстановления несущей для приема пакета данных (вид модуляции ведь определен ранее)?
Serg76
Цитата(Anton1990 @ Jun 23 2017, 19:04) *
Т.е. Вы имеете ввиду что я доворачиваю каждый принятый символ на 90 гр. и сразу принимаю решение в режиме BPSK, а фактически беру знак одного из каналов.

да, можно и по знакам.
Цитата(Anton1990 @ Jun 23 2017, 19:04) *
В итоге получаю однобитный поток, в котором корреляторами ищу PLSC. Так? Ну тогда как то все просто, т.к. корреляторы будут строиться из операции "xor". И почему бы тогда и SOF не искать таким же способом, с поправкой на возможную инверсию спектра?
А далее чего делать? Включить соответствующую схему восстановления несущей для приема пакета данных (вид модуляции ведь определен ранее)?

я делаю по-другому: на первом этапе грубо определяю частотную отстройку, устраняю ее и затем только запускаю коррелятор для поиска фреймовой синхронизации. коррелятор "трудится" по поиску только SOF хедера в формате плавучки при 2-х отсчетах на символьный интервал. без предварительного восстановления несущей коррелятор по SOF неработоспособен, в отличие от схемы SOF+PLSC из приведенной статьи, которая допускает начальную отстройку по несущей потому, что основана на принципе дифференциального детектирования. В этом случае после определения вида модуляции (модкода) можно запускать ФАПЧ , которая отработает непосредственно по пакету данных (плюс пилоты в помощь, если они есть). Т.е. Вам надо определится какую из схем фреймовой синхронизации будете использовать SOF или SOF+PLSC. Я теперь начал больше склоняться к схеме SOF+PLSC. К сожалению, эта статья попалась мне только сейчас.

искать и обрабатывать PL Header можно и по бинарному потоку, но теряется помехоустойчивость всей схемы фреймовой синхронизации. хотя может оказаться, что и этого достаточно. к слову, код Рида-Маллера (32,6) способен исправить t=7 - ми кратную ошибку (dmin = 16).
Anton1990
Цитата(Serg76 @ Jun 23 2017, 21:12) *
без предварительного восстановления несущей коррелятор по SOF неработоспособен, в отличие от схемы SOF+PLSC из приведенной статьи. В этом случае после определения вида модуляции (модкода) можно запускать ФАПЧ , которая отработает непосредственно по пакету данных. Вам надо определится какую из схем фреймовой синхронизации будете использовать SOF или SOF+PLSC.

искать и обрабатывать PL Header можно и по бинарному потоку, но теряется помехоустойчивость всей схемы фреймовой синхронизации. хотя может оказаться, что и этого достаточно. к слову, код Рида-Маллера (32,6) способен исправить t=7 - ми кратную ошибку (dmin = 16).

Т.е. коррелятор SOF+PLSC у Вас служит для поиска заголовка, а мод.код "достаете" обрабатывая бинарный поток? Я реализовал (правда пока не опробывал) определение вида модуляции коррелятором PLSC (32 коррелятора по 32 отвода в комплексном виде), схема очень тяжела для ПЛИС. Есть мнение что нужно переделать ее в бинарный вид. И тогда использовать Ваш вариант: SOF+PLSC для начала заголовка и обработку битового потока для определения вида модуляции. И, кстати, наверное можно использовать только коррелятор по PLSC для определения начала заголовка если максимальный выход с 32 корреляторов еще сравнить с некоторым порогом.
Serg76
Цитата(Anton1990 @ Jun 24 2017, 08:21) *
Т.е. коррелятор SOF+PLSC у Вас служит для поиска заголовка, а мод.код "достаете" обрабатывая бинарный поток?

Да, коррелятор SOF+PLSC служит для поиска PL Header, т.е. для поиска начала фрейма. после этого сразу декодирую модкод из этого же заголовка, но представленного бинарным потоком (жесткие решения pi/2 демодулятора). для увеличения помехоустойчивости можно применить мягкое декодирование, в данном случае это несильно усложнит обработку, РМ код декодируется достаточно просто как в хардеке, так и софтдеке. Единственное, при реализации на ПЛИС в софтдеке обработка усложнится за счет увеличенной разрядности входных отсчетов.

Цитата(Anton1990 @ Jun 24 2017, 08:21) *
Я реализовал (правда пока не опробывал) определение вида модуляции коррелятором PLSC (32 коррелятора по 32 отвода в комплексном виде), схема очень тяжела для ПЛИС.

в этом нет никакой необходимости. в который раз обращаяю Ваше внимание на приведенную в статье схему: В ЕЕ ОСНОВЕ ЗАЛОЖЕН ПРИНЦИП ДИФФЕРЕНЦИАЛЬНОГО ДЕТЕКТИРОВАНИЯ. а это значит, что какой бы модкод не был закодирован в PLS фрагменте, после его прохождения через диффкодер на выходе будем получать константное значение. ВСЕГДА!!!! а если точнее, то через такт, поэтому в той части схемы, которая отвечает за корреляцию PLS, отводы взяты через один такт, а в части схемы, относящейся к корреляции SOF отсчеты берутся по-тактно. Чтобы стало еще понятнее посмотрите на 64 бита с выхода кода РМ. здесь два варианта: каждый второй бит в этой последовательности либо повторяет предыдущий, либо инверсный к нему. и подумайте что будет с этой последовательностью, если мы ее обработаем по mod2, т.е. осуществим "xor"? если же обработка происходит в "плавучке" - квадратурном потоке, то эквивалентом операции "xor" будет служить умножение отсчетов на задержанное комплексно-сопряженное z[2i]z[2i+1] и результатом опять будет последовательность констант, потому что умножение комплексного отсчета на ему сопряженное есть квадрат модуля (дословно из статьи: in the modulated domain, the differential z[2i]z[2i+1] is equal to a constant)

Цитата(Anton1990 @ Jun 24 2017, 08:21) *
Есть мнение что нужно переделать ее в бинарный вид. И тогда использовать Ваш вариант: SOF+PLSC для начала заголовка и обработку битового потока для определения вида модуляции.

начните с этого, если не хватит помехоустойчивости - перейдете в домен мягких решений.

и уже после того, как определите конфигурацию фрейма, можно запускать ФАПЧ , которая будет работать непосредственно по пакету данных, т.е. получаем режим NDA + pilot.
Anton1990
Цитата(Serg76 @ Jun 24 2017, 12:04) *
В ЕЕ ОСНОВЕ ЗАЛОЖЕН ПРИНЦИП ДИФФЕРЕНЦИАЛЬНОГО ДЕТЕКТИРОВАНИЯ. а это значит, что какой бы модкод не был закодирован в PLS фрагменте, после его прохождения через диффкодер на выходе будем получать константное значение. ВСЕГДА!!!!начните с этого, если не хватит помехоустойчивости - перейдете в домен мягких решений.
и уже после того, как определите конфигурацию фрейма, можно запускать ФАПЧ , которая будет работать непосредственно по пакету данных, т.е. получаем режим NDA + pilot.

Я разобрался с "фишкой" диффкодера и все сказанное Вами подтвердилось по результатам программы. Я же имел ввиду что реализовал 32 коррелятора на мод код. без применения диф. кодирования. Взял 5 бит вида модуляции + пилот + длина кадра, закодировал Маллером, заскремблировал, замодулировал (не применяя усножение на компл. сопр отсчет), взял каждый второй отсчет, в итоге получил уникальный для каждого вида модуляции набор из 32-х комплексный чисел вида: (1+j), (-1-j). Во это и есть отводы корреляторов. Вроде должна работать. Но видимо проверять нет смысла - Ваш вариант предпочтительней.
Serg76
Цитата(Anton1990 @ Jun 24 2017, 16:43) *
Я разобрался с "фишкой" диффкодера и все сказанное Вами подтвердилось по результатам программы. Я же имел ввиду что реализовал 32 коррелятора на мод код. без применения диф. кодирования.

то, что Вы реализовали 32 коррелятора я как раз понял, поэтому и указал, что в этом нет никакой необходимости. чтобы этого избежать как раз и ввели дифференцирование.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.