|
Оптимальные способы модуляции и кодирования для коротких пакетов |
|
|
|
Oct 26 2012, 13:17
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Стоит задача передавать пакеты размером 5-7 байт. Ключевое требование обеспечить максимальную помехоустойчивость и получить возможность работать при минимальных соотношениях энергии бита к энергии шума, обеспечив при этом максимальный радиус действия при минимальной мощности передатчика (батарейное питание), это ключевое требование. IEEE 802.15.4 читал, но идеалом его не считаю. Дан узкий диапазон (десятки kHz) поэтому склонен отказаться от использования DSSS, если кто-нибудь не переубедит меня в обратном  Думается, что на таких коротких пакетах использовать RS, LDPC или турбо-коды использовать нерационально. Вспоминается БЧХ. Может еще что-то подскажете, более эфективное. Возможность мягкого декодирования в приоритете. Насчет сверточного с прокалыванием (3/4) - думаю. По модуляции склоняемся к QPSK. О доступной комплектовке речь пока не идет, мыслим без ограничений  Будут рад если натолкнете меня на рассуждения в нужном русле. Спасибо!
Сообщение отредактировал _Макс - Oct 26 2012, 13:17
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Oct 27 2012, 11:55
|
Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817

|
Цитата(Serg76 @ Oct 27 2012, 15:21)  Я думал об этом, когда предлагал Вам сверточный турбокод. возьмите циркулярный сверточный код, тогда не будет никакого хвостовика, правда процедуру кодирования надо 2 раза проводить, но думаю это не будет проблемой. кроме того, можно поиграться с длиной кодового ограничения для нужной помехоустойчивости (в пределах разумного, конечно, потому как сложность декодирования растет по экспоненте в зависимости от длины кодового ограничения), ну и плюс к этому куча разных алгоритмов мягкого декодирования. Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное.
|
|
|
|
|
Oct 27 2012, 12:17
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Grumbler_2002 @ Oct 27 2012, 14:55)  Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное. именно кодирование, сначала для вычисления состояния регистра кодера, а затем для получения проверочной части. Цитата(Aner @ Oct 27 2012, 15:07)  пакеты то размером 5-7 байт, и все, ...какое ещё сверточный код ?! ну и что?
|
|
|
|
|
Oct 27 2012, 12:52
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(Grumbler_2002 @ Oct 27 2012, 14:55)  Кодирование два раза проводить не надо, только декодирование. Время кодирования даже уменьшится. Навскидку, сверточный код со скоростью 1/2 и кодовым ограничением 9 будет достаточно простым и мощным. Все простые сверточные турбо-коды будут хуже и потянут за собой и всё остальное. Мне казалось по эффективности с турбо-кодами может сравнится только LDPC. Цитата(Aner @ Oct 27 2012, 15:07)  пакеты то размером 5-7 байт, и все, ...какое ещё сверточный код ?! Значит после кодера будет 10-14, мне это устраивает. Где-то видел софт в котором можно в виде блок схемы строить тракт и моделировать прием/передачу. Кажется таких программ существует множество. Что порекомендуете?
|
|
|
|
|
Oct 27 2012, 12:56
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(_Макс @ Oct 27 2012, 15:52)  Мне казалось по эффективности с турбо-кодами может сравнится только LDPC. для LDPC коротковато будет Цитата(_Макс @ Oct 27 2012, 15:52)  Где-то видел софт в котором можно в виде блок схемы строить тракт и моделировать прием/передачу. Кажется таких программ существует множество. Что порекомендуете? Matlab, наверное
|
|
|
|
|
Oct 27 2012, 14:49
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

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

Гуру
     
Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463

|
QUOTE (_Макс @ Oct 27 2012, 16:13)  Голова для того, чтобы думать)) Это вы ошибаетесь, глубоко! Голова для того чтобы ею есть. Думаю, что полезно еще и знать, обладать современными знаниями, практикой, опытом, а не только думать. Ряд законов природы, технологические возможности (на этом тех этапе развития) не перепрыгнешь. А только загонишь себя в тупик разочарований, думательной головой.
|
|
|
|
|
Oct 27 2012, 20:40
|
Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 4-12-08
Пользователь №: 42 200

|
Цитата(_Макс @ Oct 27 2012, 17:49)  Я всеже склонен полагать, что великое множество усилителей для того же 802.11, например, работают в классе C А как же E?
|
|
|
|
|
Oct 27 2012, 21:13
|
Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817

|
Цитата(Serg76 @ Oct 27 2012, 16:17)  именно кодирование, сначала для вычисления состояния регистра кодера, а затем для получения проверочной части. Вы что-то путаете. При кодировании первые К-1 бит образуют начальное состояние кодера. После кодирования бит с К-го по N-ый по текущему и начальному состоянию кодера выбираем из таблицы значение оставшихся К-1 бит. Кодируем этот остаток и получаем закольцованную решетку. Таким образом, время кодирования уменьшается на К-1 бит по сравнению с приведением кодера в фиксированное известное состояние. При декодировании обычно первые L бит, где L - глубина декодирования, декодируются дважды, чтобы получить последние L бит информации, пользуясь закольцованностью решетки. Таким образом, длина пакета ограничивается снизу глубиной декодирования, которая зависит от относительной скорости кода и кодового ограничения. Для 1/2 и К<=9 это обычно 4-6К, то есть примерно от 36 бит для предложенного кода. Есть и другие ограничения, но, как мне кажется, проще промоделировать и определиться, задавшись целевыми потерями.
|
|
|
|
|
Oct 27 2012, 22:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Grumbler_2002 @ Oct 28 2012, 00:13)  Вы что-то путаете. При кодировании первые К-1 бит образуют начальное состояние кодера. После кодирования бит с К-го по N-ый по текущему и начальному состоянию кодера выбираем из таблицы значение оставшихся К-1 бит. Кодируем этот остаток и получаем закольцованную решетку. Таким образом, время кодирования уменьшается на К-1 бит по сравнению с приведением кодера в фиксированное известное состояние.
При декодировании обычно первые L бит, где L - глубина декодирования, декодируются дважды, чтобы получить последние L бит информации, пользуясь закольцованностью решетки. Таким образом, длина пакета ограничивается снизу глубиной декодирования, которая зависит от относительной скорости кода и кодового ограничения. Для 1/2 и К<=9 это обычно 4-6К, то есть примерно от 36 бит для предложенного кода. Есть и другие ограничения, но, как мне кажется, проще промоделировать и определиться, задавшись целевыми потерями. да ничего я не путаю. напоминаю, что передача пакетная. для циркулярных сверточных кодов начальное и конечное состояния кодера совпадают, необходимо просто вычислить это правильное начальное состояние. это и делается в первом проходе кодирования при нулевом состоянии кодера и таблички, про которую Вы говорили. Теперь зная правильное начальное состояние, кодируем исходный пакет и получаем проверочную часть. В DVB-RCS делается так.
|
|
|
|
|
Oct 27 2012, 23:06
|
Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817

|
Цитата(Serg76 @ Oct 28 2012, 02:10)  да ничего я не путаю. напоминаю, что передача пакетная. для циркулярных сверточных кодов начальное и конечное состояния кодера совпадают, необходимо просто вычислить это правильное начальное состояние. это и делается в первом проходе кодирования при нулевом состоянии кодера и таблички, про которую Вы говорили. Теперь зная правильное начальное состояние, кодируем исходный пакет и получаем проверочную часть. В DVB-RCS делается так. Там же сверточный турбо-код, нет? Для него ситуация несколько сложнее, но и всё равно не требуется двух проходов, а только несколько больше полутора. Как кодируется обычный сверточный код за один проход - я написал. Подкину Вам материальчик, чтобы было понятнее.
|
|
|
|
|
Oct 28 2012, 07:47
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Grumbler_2002 @ Oct 28 2012, 02:06)  Там же сверточный турбо-код, нет? Для него ситуация несколько сложнее, но и всё равно не требуется двух проходов, а только несколько больше полутора. Как кодируется обычный сверточный код за один проход - я написал. Подкину Вам материальчик, чтобы было понятнее. Да, там сверточный турбокод, я о них изначально и говорил, правда он там двубинарный, но сути дела это не меняет. зачем что-нибудь выдумывать, открываем рекомендацию по DVB-RCS, где черным по белому написано как производится процедура кодирования, а именно в два этапа, как я и описывал. как там можно сделать полтора прохода, - я не знаю, но по этой рекомендации я делал кодек и все работает на живом сигнале. даташит прилагаю
en_301790v010501p.pdf ( 1.46 мегабайт )
Кол-во скачиваний: 918P.S. за доку спасибо, эта статья у меня есть.
Сообщение отредактировал Serg76 - Oct 28 2012, 07:49
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|