Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оптимальные способы модуляции и кодирования для коротких пакетов
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
_Макс
Стоит задача передавать пакеты размером 5-7 байт. Ключевое требование обеспечить максимальную помехоустойчивость и получить возможность работать при минимальных соотношениях энергии бита к энергии шума, обеспечив при этом максимальный радиус действия при минимальной мощности передатчика (батарейное питание), это ключевое требование.

IEEE 802.15.4 читал, но идеалом его не считаю. Дан узкий диапазон (десятки kHz) поэтому склонен отказаться от использования DSSS, если кто-нибудь не переубедит меня в обратном sm.gif

Думается, что на таких коротких пакетах использовать RS, LDPC или турбо-коды использовать нерационально. Вспоминается БЧХ. Может еще что-то подскажете, более эфективное. Возможность мягкого декодирования в приоритете. Насчет сверточного с прокалыванием (3/4) - думаю.

По модуляции склоняемся к QPSK.

О доступной комплектовке речь пока не идет, мыслим без ограничений sm.gif

Будут рад если натолкнете меня на рассуждения в нужном русле. Спасибо!
Serg76
Цитата(_Макс @ Oct 26 2012, 16:17) *
Стоит задача передавать пакеты размером 5-7 байт. Ключевое требование обеспечить максимальную помехоустойчивость и получить возможность работать при минимальных соотношениях энергии бита к энергии шума, обеспечив при этом максимальный радиус действия при минимальной мощности передатчика (батарейное питание), это ключевое требование.

IEEE 802.15.4 читал, но идеалом его не считаю. Дан узкий диапазон (десятки kHz) поэтому склонен отказаться от использования DSSS, если кто-нибудь не переубедит меня в обратном sm.gif

почему нескольких десятков кГц не будет достаточно для передачи 5-7 байт методом DSSS с нужной помехоустойчивостью? какова вообще информационная скорость передачи и требуемое С/Ш?
_Макс
Цитата(Serg76 @ Oct 26 2012, 16:52) *
почему нескольких десятков кГц не будет достаточно для передачи 5-7 байт методом DSSS с нужной помехоустойчивостью? какова вообще информационная скорость передачи и требуемое С/Ш?

10-12 кБит нужно обеспечить в канале. Если короткий пакет "расширить" по DSSS, то он станет длиннее в n раз, значит время активного состояние увеличится в десятки раз, а у нас батарейное питание sad.gif Другое дело, например, использовать какое-то кодирование и увеличить пакет, например в два раза (1/2) или даже на треть (3/4). А рабочее соотношение сигнал/шум должно быть настолько максимальным, насколько это возможно при заданном канале. Мне бюджет канала нужен 140-150дБм при 5-10дБм выходной мощности.
Кроме того при более широком канале уменьшается спектральная энергия, а значит, падает сигнал/шум. (Или может я не прав, почитаю сегодня Б. Скляра).
Aner
Вроде правильно мыслите, ... например GFSK, возможно манчестер добавить, полосу увеличит, хотя может и не пройдет.
максимальную помехоустойчивость ( какую ...для бита, байта, пакета итп?) - минимальных соотношениях энергии бита к энергии шума - тут противоречие, ищите середину.
_Макс
Цитата(Aner @ Oct 26 2012, 18:18) *
Вроде правильно мыслите, ... например GFSK, возможно манчестер добавить, полосу увеличит, хотя может и не пройдет.
максимальную помехоустойчивость ( какую ...для бита, байта, пакета итп?) - минимальных соотношениях энергии бита к энергии шума - тут противоречие, ищите середину.

Манчестер не хочу. Длинные последовательности нулей и единиц, тут исключены. Умножать полосу на два манчестером, имхо безсмысленно.

Думается, QPSK будет лучше, чем GFSK.

Может не правильно выразился. В конечном счете задача стоит: передать пакет как можно дальше (20-30км) при указанной мощности передатчика, в NLOS условиях. Стационарный приемник отличается постоянным питанием и высокого качества трактом, но о нем мы пока не говорим. Хочется просто оптимальным и наиболее эффективным образом спроектировать PHY уровень.
petrov
Цитата(_Макс @ Oct 26 2012, 19:09) *
10-12 кБит нужно обеспечить в канале. Если короткий пакет "расширить" по DSSS, то он станет длиннее в n раз, значит время активного состояние увеличится в десятки раз, а у нас батарейное питание sad.gif Другое дело, например, использовать какое-то кодирование и увеличить пакет, например в два раза (1/2) или даже на треть (3/4). А рабочее соотношение сигнал/шум должно быть настолько максимальным, насколько это возможно при заданном канале. Мне бюджет канала нужен 140-150дБм при 5-10дБм выходной мощности.
Кроме того при более широком канале уменьшается спектральная энергия, а значит, падает сигнал/шум. (Или может я не прав, почитаю сегодня Б. Скляра).


Так как пакеты данных короткие, то большого усиления за счёт кодирования вы не получите, что-то в районе 3-4 дБ. Bероятность ошибки зависит только от отношения Eb/N0 при оптимальной обработке, N0 - спектральная плотность мощности шума, её вы изменить не можете, так у вас допустим МШУ шумит, Eb - энергия приходящаяся на бит передаваемой информации, вот на это вы повлиять можете, увеличивайте длительность символа при той же мощности передатчика, и не важно DSSS это или обычная модуляция узкополосная, да уменьшится скорость, да соответственно больше будет батарея кушаться, ищите компромиссы.
Serg76
Цитата(_Макс @ Oct 26 2012, 18:09) *
Если короткий пакет "расширить" по DSSS, то он станет длиннее в n раз, значит время активного состояние увеличится в десятки раз, а у нас батарейное питание sad.gif

так конечная энергия (мощность) остается той же, просто "размажется" по более широкой полосе.

хотя 10-12 кбит в полосе нескольких кГц с помощью DSSS не вариант, конечно. Да и пакеты коротки, можно попробовать в качестве ПУ какой-нибудь сверточный турбокод + обязательно мягкое декодирование, ну и с модуляцией/скоростью поиграться.
Serg76
Цитата(_Макс @ Oct 26 2012, 18:25) *
Думается, QPSK будет лучше, чем GFSK.

Ну тогда уж лучше GFSK, как советуют, или что либо подобное с постоянной огибающей (CPM) ибо у вас основное требование:
"обеспечив при этом максимальный радиус действия при минимальной мощности передатчика (батарейное питание), это ключевое требование."

Помехоустойчивость доберете кодированием.
alexPec
Цитата(_Макс @ Oct 26 2012, 17:17) *
Стоит задача передавать пакеты размером 5-7 байт. Ключевое требование обеспечить максимальную помехоустойчивость и получить возможность работать при минимальных соотношениях энергии бита к энергии шума, обеспечив при этом максимальный радиус действия при минимальной мощности передатчика (батарейное питание), это ключевое требование.

А широкополосные сигналы не рассматриваются? Может кодировать как в системах типа skylink 0-одной ПСП, 1 - другой, корреляционным приемником на приемной стороне выделять, поверх помехоустойчивый код наложить.
Aner
Кодирование, сверточный турбокод, широкополосность типа UWB, ...поверх помехоустойчивый код - все это лишнее избыточное, поскольку посылка короткая. Всё лишнее увеличит как потребление, так и временное окно. Ставьте приоритеты сначала, а не кучку противоречий.

1) ...обеспечить максимальную помехоустойчивость. Нужно много времени и мощности на бит.
2) максимальный радиус действия - если по прямой то тот диапазон, участок, где шумы минимальны. Но помнить, что при уменьшении длины волны нужно больше мощности.
Обращаем внимание на приемник и его минимальный шум. Важен выбор эффективного вида модуляции - коих много.
3) ... при минимальной мощности передатчика (батарейное питание) - значит короткая по времени посылка, "без излишеств" иначе проигрышь.
Проц, или матрица минимально кушающая в качестве обработчика. Вплоть до подсчета тактов по потреблению на весь пакет передачи/приема.
Serg76
Цитата(Aner @ Oct 27 2012, 00:15) *
Важен выбор эффективного вида модуляции - коих много.

Ну так и я про то же. Вряд ли QPSK можно назвать удачным выбором. Возьмите что-нибудь из класса с постоянной огибающей (CPM), получим высокий КПД передатчика. да, немного проиграем в полосе, но благо запас в несколько десятков кГц для текущей скорости вроде есть. а уж потом играться с кодированием.
Aner
Да согласен, что QPSK можно назвать не очень удачным выбором. Также энергетика приёма и передача связаны, зависимы по энергетики для минимальных соотношений энергии бита к энергии шума при ограниченом батарейном питани. (Тут также важен и сам канал передачи, это антенны, согласование, и тп.) Если система делает редкий "сбор данных" то большее потребление может делать сам приемник а не передатчик. Тут могут меняться приоритеты по выбору вида модуляции. Вообщем желательно (если это реальный проект) видить все в целом. Если это студенческая работа, то думаю тут важно иметь аргументацию выбора и мат доказательство а не реальность выбранного вида модуляции. Поскольку техниеское вопрощение проекта и технологические ограничения могут не дать получить результат. И все свалиться к банальному выбору из того что есть на рынке.
_Макс
Это реальный проект.

Некоторый update по полосе канала - в ней я практически не ограничен, требование в 10kHz можно отодвинуть до 1MHz максимум, битрейт до 10-20кбит is Ok. Получается DSSS можно, вопрос в том, нужно ли. И что лучше, DSSS или турбо код 1/2, например. Последнее получается компактнее по частоте. Или и то, и другое.

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

Насчет зависимости КПД передатчика от модуляции не знал. Спасибо, что напомнили. Почему-то к FSK у меня душа не лежит... Кажется по спектральной эффектности FSK-2 хуже. (Б. Скляра читал давно, обрывки воспоминаний вам выкладываю =) Да и нелинейные искажения там имеют место при модуляции. При QPSK можно поставить фильтр перед модулятором, чтобы сгладить переходы, хотя энергия бита при этом упадет.

Да, в моих словах есть противоречия. Но как сказал коллега, тут нужно экспериментировать, подбирать, это правда. Приемо/передающий тракт можно составить из разных компонентов и у меня стоит задача, подобрать наиболее оптимальный набор сейчас. Конечно потом будут эксперименты. Но прежде, чем проектировать, нужно ориентироваться на что-то.

Фокус один, обеспечить максимальнейший бюджет канала, просто невероятный, десятки километров при миливаттном передатчике в условиях NLOS rolleyes.gif
Aner
Если это реальный проект, то и опираться надо на реальные данные, технологии. Не думаю, что вы обгоните идеи парней в силиконовой долине.
... десятки километров при миливаттном передатчике в условиях NLOS. Что-то нереальное, ...

.. хотя пока вы не сказали ничего о диапазоне частот, антеннах, достоверности переданных данных, оперативности получения данных, характера передачи данных и тп. Выбор модуляции делать рано.

А если еще боритесь за бюджет, то ипользовать то что уже есть, дешевое и не последних лет разработки.
Serg76
Цитата(_Макс @ Oct 27 2012, 13:26) *
Сверточный код не хочу еще по той банальной причине, что от него всегда будет остаток равный длине кодера, увеличивается сообщение. Хотя его можно мягко декодировать, это радует.

Я думал об этом, когда предлагал Вам сверточный турбокод. возьмите циркулярный сверточный код, тогда не будет никакого хвостовика, правда процедуру кодирования надо 2 раза проводить, но думаю это не будет проблемой. кроме того, можно поиграться с длиной кодового ограничения для нужной помехоустойчивости (в пределах разумного, конечно, потому как сложность декодирования растет по экспоненте в зависимости от длины кодового ограничения), ну и плюс к этому куча разных алгоритмов мягкого декодирования.
Grumbler_2002
Цитата(Serg76 @ Oct 27 2012, 15:21) *
Я думал об этом, когда предлагал Вам сверточный турбокод. возьмите циркулярный сверточный код, тогда не будет никакого хвостовика, правда процедуру кодирования надо 2 раза проводить, но думаю это не будет проблемой. кроме того, можно поиграться с длиной кодового ограничения для нужной помехоустойчивости (в пределах разумного, конечно, потому как сложность декодирования растет по экспоненте в зависимости от длины кодового ограничения), ну и плюс к этому куча разных алгоритмов мягкого декодирования.


Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное.
Aner
пакеты то размером 5-7 байт, и все, ...какое ещё сверточный код ?!
Serg76
Цитата(Grumbler_2002 @ Oct 27 2012, 14:55) *
Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное.

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

Цитата(Aner @ Oct 27 2012, 15:07) *
пакеты то размером 5-7 байт, и все, ...какое ещё сверточный код ?!

ну и что?
_Макс
Цитата(Grumbler_2002 @ Oct 27 2012, 14:55) *
Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное.

Мне казалось по эффективности с турбо-кодами может сравнится только LDPC.

Цитата(Aner @ Oct 27 2012, 15:07) *
пакеты то размером 5-7 байт, и все, ...какое ещё сверточный код ?!

Значит после кодера будет 10-14, мне это устраивает.

Где-то видел софт в котором можно в виде блок схемы строить тракт и моделировать прием/передачу. Кажется таких программ существует множество. Что порекомендуете?
Serg76
Цитата(_Макс @ Oct 27 2012, 15:52) *
Мне казалось по эффективности с турбо-кодами может сравнится только LDPC.

для LDPC коротковато будет

Цитата(_Макс @ Oct 27 2012, 15:52) *
Где-то видел софт в котором можно в виде блок схемы строить тракт и моделировать прием/передачу. Кажется таких программ существует множество. Что порекомендуете?

Matlab, наверное sm.gif
_Макс
Цитата(Aner @ Oct 27 2012, 14:05) *
... десятки километров при миливаттном передатчике в условиях NLOS. Что-то нереальное, ...

Голова для того, чтобы думать))
Serg76
Цитата(_Макс @ Oct 27 2012, 13:26) *
Насчет зависимости КПД передатчика от модуляции не знал.

Здесь скорее зависимость не от модуляции как таковой, а от выбора режима работы УМ передатчика. Для QPSK пригоден режим класса "А" или "АВ", в то время как для CPM видов можно использовать режим класса "С", который энергетически более предпочтителен, но и обладает, соответственно, большим уровнем нелинейных искажений, прежде всего по интермодуляции.
_Макс
Цитата(Serg76 @ Oct 27 2012, 16:43) *
Для QPSK пригоден режим класса "А" или "АВ", в то время как для CPM видов можно использовать режим класса "С", который энергетически более предпочтителен, но и обладает, соответственно, большим уровнем нелинейных искажений, прежде всего по интермодуляции.

Я всеже склонен полагать, что великое множество усилителей для того же 802.11, например, работают в классе C. Привести вам даташиты в доказательство к сожалению не смогу т.к. класс обычно умалчивается производителем.
Serg76
Цитата(_Макс @ Oct 27 2012, 17:49) *
Я всеже склонен полагать, что великое множество усилителей для того же 802.11, например, работают в классе C. Привести вам даташиты в доказательство к сожалению не смогу т.к. класс обычно умалчивается производителем.

может быть, я не утверждаю. может дополнительно уровень НИ снижается за счет предыскажений или другими конструктивными/схемотехническими методами.
Aner
QUOTE (_Макс @ Oct 27 2012, 16:13) *
Голова для того, чтобы думать))

Это вы ошибаетесь, глубоко! Голова для того чтобы ею есть.

Думаю, что полезно еще и знать, обладать современными знаниями, практикой, опытом, а не только думать.
Ряд законов природы, технологические возможности (на этом тех этапе развития) не перепрыгнешь.
А только загонишь себя в тупик разочарований, думательной головой.
AFK
Цитата(_Макс @ Oct 27 2012, 17:49) *
Я всеже склонен полагать, что великое множество усилителей для того же 802.11, например, работают в классе C

А как же E? crying.gif
Grumbler_2002
Цитата(Serg76 @ Oct 27 2012, 16:17) *
именно кодирование, сначала для вычисления состояния регистра кодера, а затем для получения проверочной части.


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

При декодировании обычно первые L бит, где L - глубина декодирования, декодируются дважды, чтобы получить последние L бит информации, пользуясь закольцованностью решетки. Таким образом, длина пакета ограничивается снизу глубиной декодирования, которая зависит от относительной скорости кода и кодового ограничения. Для 1/2 и К<=9 это обычно 4-6К, то есть примерно от 36 бит для предложенного кода. Есть и другие ограничения, но, как мне кажется, проще промоделировать и определиться, задавшись целевыми потерями.
Serg76
Цитата(Grumbler_2002 @ Oct 28 2012, 00:13) *
Вы что-то путаете. При кодировании первые К-1 бит образуют начальное состояние кодера. После кодирования бит с К-го по N-ый по текущему и начальному состоянию кодера выбираем из таблицы значение оставшихся К-1 бит. Кодируем этот остаток и получаем закольцованную решетку. Таким образом, время кодирования уменьшается на К-1 бит по сравнению с приведением кодера в фиксированное известное состояние.

При декодировании обычно первые L бит, где L - глубина декодирования, декодируются дважды, чтобы получить последние L бит информации, пользуясь закольцованностью решетки. Таким образом, длина пакета ограничивается снизу глубиной декодирования, которая зависит от относительной скорости кода и кодового ограничения. Для 1/2 и К<=9 это обычно 4-6К, то есть примерно от 36 бит для предложенного кода. Есть и другие ограничения, но, как мне кажется, проще промоделировать и определиться, задавшись целевыми потерями.

да ничего я не путаю. напоминаю, что передача пакетная. для циркулярных сверточных кодов начальное и конечное состояния кодера совпадают, необходимо просто вычислить это правильное начальное состояние. это и делается в первом проходе кодирования при нулевом состоянии кодера и таблички, про которую Вы говорили. Теперь зная правильное начальное состояние, кодируем исходный пакет и получаем проверочную часть. В DVB-RCS делается так.
Grumbler_2002
Цитата(Serg76 @ Oct 28 2012, 02:10) *
да ничего я не путаю. напоминаю, что передача пакетная. для циркулярных сверточных кодов начальное и конечное состояния кодера совпадают, необходимо просто вычислить это правильное начальное состояние. это и делается в первом проходе кодирования при нулевом состоянии кодера и таблички, про которую Вы говорили. Теперь зная правильное начальное состояние, кодируем исходный пакет и получаем проверочную часть. В DVB-RCS делается так.


Там же сверточный турбо-код, нет? Для него ситуация несколько сложнее, но и всё равно не требуется двух проходов, а только несколько больше полутора. Как кодируется обычный сверточный код за один проход - я написал. Подкину Вам материальчик, чтобы было понятнее.
Serg76
Цитата(Grumbler_2002 @ Oct 28 2012, 02:06) *
Там же сверточный турбо-код, нет? Для него ситуация несколько сложнее, но и всё равно не требуется двух проходов, а только несколько больше полутора. Как кодируется обычный сверточный код за один проход - я написал. Подкину Вам материальчик, чтобы было понятнее.

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

Нажмите для просмотра прикрепленного файла

P.S. за доку спасибо, эта статья у меня есть.
Grumbler_2002
Цитата(Serg76 @ Oct 28 2012, 11:47) *
Да, там сверточный турбокод, я о них изначально и говорил


Я, вообще-то, комментировал ваш пост №15, где предлагается циркулярный сверточный код. И, кстати, для таких коротких пакетов надо еще постараться, чтобы получить тот же энергетический выигрыш от турбо-кода, как от сверточного.
Serg76
Цитата(Grumbler_2002 @ Oct 29 2012, 01:25) *
Я, вообще-то, комментировал ваш пост №15, где предлагается циркулярный сверточный код. И, кстати, для таких коротких пакетов надо еще постараться, чтобы получить тот же энергетический выигрыш от турбо-кода, как от сверточного.

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