masverter 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Уже понял. Написал программу которая кодирует ридом-маллера, скремблирует, модулирует, умножает текущий на компл.сопр. следующий отсчет. В итоге получил одинаковую последовательность для всех видов модуляции. Все поддтвердилось. Для определения кода вида модуляции предполагаю следующее: закодировать все виды модуляции кодом рида-маллера, заскремблировать, получить 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. Более того, помимо начала кадра, можно определить: <...> по знаку суммы с выхода PLSC-коррелятора (с учетом инверсии спектра) - наличие/отсутствие пилотов.(т.е. таким образом можно выполнить пункт 3) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Смотрите Вашу предыдущую тему Делаете все в точности, как описал 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 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Да Вы все верно пишите. Только вот демодуляция pi/2 bpsk выполняется просто (принятием решений в режиме ФМ4) если стоит "созвездие" ФМ4, на выходе получаем битовую последовательность (из одного бита), которую и обрабатываю. А вот если синхронизма по несущей нет (вместо созвездия круг), то демодуляция pi/2 bpsk уже не так тривиальна, но видимо, возможна. Я пока с этим не разбирался. А подскажите дальнейшие действия: предположим я определил начало посылки и вид модуляции. Дальше я включаю соответствующую схему восcтановления несущей? А время вхождения в синхронизм? Демодуляция пи/2 выполняется точно также как и обычная bpsk, столь лишь разницей, что перед принятием решения надо дополнительно довернуть каждый символ на пи/2. Если демодулировать в режиме QPSK, то будете терять в помехоустойчивости 3 дб. Насчет синхронизма: в приведенной статье отмечается, что предлагаемая схема фреймовой синхронизации SOF+PLSC на порядок быстрее, чем классическая схема синхронизации по SOF. Почему? Потому, что в ее основе лежит принцип дифференциального детектирования, которое не зависит от начальной отстройки по частоте (в разумных пределах, конечно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 23 июня, 2017 Опубликовано 23 июня, 2017 · Жалоба Демодуляция пи/2 выполняется точно также как и обычная bpsk, столь лишь разницей, что перед принятием решения надо дополнительно довернуть каждый символ на пи/2. Если демодулировать в режиме QPSK, то будете терять в помехоустойчивости 3 дб. Насчет синхронизма: в приведенной статье отмечается, что предлагаемая схема фреймовой синхронизации SOF+PLSC на порядок быстрее, чем классическая схема синхронизации по SOF. Почему? Потому, что в ее основе лежит принцип дифференциального детектирования, которое не зависит от начальной отстройки по частоте (в разумных пределах, конечно). Т.е. Вы имеете ввиду что я доворачиваю каждый принятый символ на 90 гр. и сразу принимаю решение в режиме BPSK, а фактически беру знак одного из каналов. В итоге получаю однобитный поток, в котором корреляторами ищу PLSC. Так? Ну тогда как то все просто, т.к. корреляторы будут строиться из операции "xor". И почему бы тогда и SOF не искать таким же способом, с поправкой на возможную инверсию спектра? А далее чего делать? Включить соответствующую схему восстановления несущей для приема пакета данных (вид модуляции ведь определен ранее)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 23 июня, 2017 Опубликовано 23 июня, 2017 (изменено) · Жалоба Т.е. Вы имеете ввиду что я доворачиваю каждый принятый символ на 90 гр. и сразу принимаю решение в режиме BPSK, а фактически беру знак одного из каналов. да, можно и по знакам. В итоге получаю однобитный поток, в котором корреляторами ищу PLSC. Так? Ну тогда как то все просто, т.к. корреляторы будут строиться из операции "xor". И почему бы тогда и SOF не искать таким же способом, с поправкой на возможную инверсию спектра? А далее чего делать? Включить соответствующую схему восстановления несущей для приема пакета данных (вид модуляции ведь определен ранее)? я делаю по-другому: на первом этапе грубо определяю частотную отстройку, устраняю ее и затем только запускаю коррелятор для поиска фреймовой синхронизации. коррелятор "трудится" по поиску только SOF хедера в формате плавучки при 2-х отсчетах на символьный интервал. без предварительного восстановления несущей коррелятор по SOF неработоспособен, в отличие от схемы SOF+PLSC из приведенной статьи, которая допускает начальную отстройку по несущей потому, что основана на принципе дифференциального детектирования. В этом случае после определения вида модуляции (модкода) можно запускать ФАПЧ , которая отработает непосредственно по пакету данных (плюс пилоты в помощь, если они есть). Т.е. Вам надо определится какую из схем фреймовой синхронизации будете использовать SOF или SOF+PLSC. Я теперь начал больше склоняться к схеме SOF+PLSC. К сожалению, эта статья попалась мне только сейчас. искать и обрабатывать PL Header можно и по бинарному потоку, но теряется помехоустойчивость всей схемы фреймовой синхронизации. хотя может оказаться, что и этого достаточно. к слову, код Рида-Маллера (32,6) способен исправить t=7 - ми кратную ошибку (dmin = 16). Изменено 23 июня, 2017 пользователем Serg76 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 24 июня, 2017 Опубликовано 24 июня, 2017 · Жалоба без предварительного восстановления несущей коррелятор по SOF неработоспособен, в отличие от схемы SOF+PLSC из приведенной статьи. В этом случае после определения вида модуляции (модкода) можно запускать ФАПЧ , которая отработает непосредственно по пакету данных. Вам надо определится какую из схем фреймовой синхронизации будете использовать SOF или SOF+PLSC. искать и обрабатывать PL Header можно и по бинарному потоку, но теряется помехоустойчивость всей схемы фреймовой синхронизации. хотя может оказаться, что и этого достаточно. к слову, код Рида-Маллера (32,6) способен исправить t=7 - ми кратную ошибку (dmin = 16). Т.е. коррелятор SOF+PLSC у Вас служит для поиска заголовка, а мод.код "достаете" обрабатывая бинарный поток? Я реализовал (правда пока не опробывал) определение вида модуляции коррелятором PLSC (32 коррелятора по 32 отвода в комплексном виде), схема очень тяжела для ПЛИС. Есть мнение что нужно переделать ее в бинарный вид. И тогда использовать Ваш вариант: SOF+PLSC для начала заголовка и обработку битового потока для определения вида модуляции. И, кстати, наверное можно использовать только коррелятор по PLSC для определения начала заголовка если максимальный выход с 32 корреляторов еще сравнить с некоторым порогом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 24 июня, 2017 Опубликовано 24 июня, 2017 · Жалоба Т.е. коррелятор SOF+PLSC у Вас служит для поиска заголовка, а мод.код "достаете" обрабатывая бинарный поток? Да, коррелятор SOF+PLSC служит для поиска PL Header, т.е. для поиска начала фрейма. после этого сразу декодирую модкод из этого же заголовка, но представленного бинарным потоком (жесткие решения pi/2 демодулятора). для увеличения помехоустойчивости можно применить мягкое декодирование, в данном случае это несильно усложнит обработку, РМ код декодируется достаточно просто как в хардеке, так и софтдеке. Единственное, при реализации на ПЛИС в софтдеке обработка усложнится за счет увеличенной разрядности входных отсчетов. Я реализовал (правда пока не опробывал) определение вида модуляции коррелятором 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) Есть мнение что нужно переделать ее в бинарный вид. И тогда использовать Ваш вариант: SOF+PLSC для начала заголовка и обработку битового потока для определения вида модуляции. начните с этого, если не хватит помехоустойчивости - перейдете в домен мягких решений. и уже после того, как определите конфигурацию фрейма, можно запускать ФАПЧ , которая будет работать непосредственно по пакету данных, т.е. получаем режим NDA + pilot. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 24 июня, 2017 Опубликовано 24 июня, 2017 · Жалоба В ЕЕ ОСНОВЕ ЗАЛОЖЕН ПРИНЦИП ДИФФЕРЕНЦИАЛЬНОГО ДЕТЕКТИРОВАНИЯ. а это значит, что какой бы модкод не был закодирован в PLS фрагменте, после его прохождения через диффкодер на выходе будем получать константное значение. ВСЕГДА!!!!начните с этого, если не хватит помехоустойчивости - перейдете в домен мягких решений. и уже после того, как определите конфигурацию фрейма, можно запускать ФАПЧ , которая будет работать непосредственно по пакету данных, т.е. получаем режим NDA + pilot. Я разобрался с "фишкой" диффкодера и все сказанное Вами подтвердилось по результатам программы. Я же имел ввиду что реализовал 32 коррелятора на мод код. без применения диф. кодирования. Взял 5 бит вида модуляции + пилот + длина кадра, закодировал Маллером, заскремблировал, замодулировал (не применяя усножение на компл. сопр отсчет), взял каждый второй отсчет, в итоге получил уникальный для каждого вида модуляции набор из 32-х комплексный чисел вида: (1+j), (-1-j). Во это и есть отводы корреляторов. Вроде должна работать. Но видимо проверять нет смысла - Ваш вариант предпочтительней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 24 июня, 2017 Опубликовано 24 июня, 2017 · Жалоба Я разобрался с "фишкой" диффкодера и все сказанное Вами подтвердилось по результатам программы. Я же имел ввиду что реализовал 32 коррелятора на мод код. без применения диф. кодирования. то, что Вы реализовали 32 коррелятора я как раз понял, поэтому и указал, что в этом нет никакой необходимости. чтобы этого избежать как раз и ввели дифференцирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться