Перейти к содержанию
    

Mister_DSP

Участник
  • Постов

    133
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Mister_DSP


  1. 8002 есть на ali, стоят копейки (точнее, 100р за 10 шт).

     

    Хочется "здесь и сейчас", горит как говорится... не было времени ждать. :)

     

    Купил LM4871MX спаял - всё заработало - даже лучше чем хотел!

     

    Во-первых: усилитель вообще не ловит никакого дерьма по питанию (а оно грязное: USB 5V).

    Во-вторых: ножка shutdown когда к + питанию - деактивирует усилитель (тоесть включение в даташите в выключенном состоянии). Для нормальной работы повеcить к GND.

    В-третьих: звук мягкий, искажений как в AD8541 нет

    В-четвертых: технология Boomer - экономичность на высоте

    В-пятых - нет шума когда на входе 0.

     

    Резисторы 2 кОм пришлось заменить на 1 ком, поднять усиление в 2 раза (реально на выходе кодека оказалось в 2 раза меньший размах напряжения)

     

    Работающая схема и макет (да, даже на таких соплях нет шумов :) ):

     

    post-94050-1486366164_thumb.png

     

    post-94050-1486366177_thumb.jpg

     

    Проблема решена.

    Всем спасибо за содействие! :rolleyes:

  2. Мда, засимулил секции LM4871mx и вулючил их как в даташите на 8002. Неплохо! :)

     

    post-94050-1486309369_thumb.png

     

    Питание планирую 3,3V, выходы с кодека относительно Uref=1.65V : 0 ... 3,3V (это крайний случай).

     

    Резисторы в цепи ООС подобраны из соображений получить максимально допустимый Ky =1 чтобы не было обрезок (Ky = 2* K = 2*0.5 =1) и не слишком высокое входное сопротивление (штоб не ловить шумы с воздуха).

     

    600 Ом - это сопротивление на которое должен быть нагружен кодек (30 Ом - 600 Ом, для малого потребления взял 600 Ом).

     

    Разделительные конденсаторы на входах по 1 мкф - для разделения уровней опоры - кодека и ОУ (в данном примере они равны, но кодек может ещё и с Uref=1.2V работать, тогда разделение будет полезно)

     

    Конденсатор на 1 мкФ (внизу) снижает усиление (в пределе в 2 раза), но нужен для фильтрации средней точки.

     

    Надеюсь LM4871 хватит, чтоб прокачать динамики 4,8,16,50 Ом (буду пробовать) без искажений звука.

  3. Можно ли в MC31149 применить такое же мостовое включение (нужен дифференциальный вход!) как в 8002 выше на втором варианте?

    Отвечу сам себе - нет. Потому что внутри связь со всторым ОУ, которая в случае диффференциального включения должна быть разорвана.

     

    Зато нашлась LM4871mx - более похожа на 8002, думается что можно её вход вогнать в дифференциальный режим...

    Ну не пропадать же одному каналу кодека??? :)

    В кодеке каналы Left и Right можно сделать противофазными для работы на один наушник/динамик.

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

     

    post-94050-1486302518_thumb.png

     

    трансформатор на выходе для согласования сопротивлений не рассматриваете?

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

     

    Ну не с "СЕЛГи" же трансформ огромный ставить :)

  4. Для радиостанции - я бы в первую очередь думал о экономичности, а уж потом о согласовании. Тем не менее, есть очень популярный одноканальный аудиоусилитель 8002 с мостовым выходом и дифференциальным входом (http://www.shenzhensum.com/products/datasheet/8002(2.0W).pdf). И еще из интересных (но это без диффвхода, зато экономичный) - PAM8403. В портативной аппаратуре раньше нередко попадались LM386, но у этих усиление от 20.

     

    Скачал даташит по Вашей ссылке, сама микросхема в месте проживания не доступна, зато доступна MC31149 которая похожа.

     

    Вот лист из даташита на 8002:

     

    post-94050-1486300882_thumb.png

     

    А теперь возвращаемся к MC31149:

     

    post-94050-1486300929_thumb.png

     

    Можно ли в MC31149 применить такое же мостовое включение (нужен дифференциальный вход!) как в 8002 выше на втором варианте?

  5. Vasily_, да именно такие нужны, но в магазинах(местных) их нет.

     

    Herz, динамик 8 Ом с AD8541 звучит очень с большими искажениями! Пришлось временно на 50 Ом перейти, так как по даташиту эта микросхема рассчитана именно при нагрузке 50 Ом. Звук стал тише и без искажений.

     

    На всякий случай: Белиберду с внешними комплементарными транзисторами не рассматриваю, хочется интегрированный чип, как написал Vasiliy_

  6. Может не в тему, но может интересно готовое решение: VS1053, VS1063 - доступен патч, загрузив который делает 5- полосный эквалайзер.

    Это позволит вашему центральному процессору разгрузиться или пустить на другие не менее важные задачи.

  7. Добрый день.

     

    Прошу простить, если написал не в тот раздел.

     

    Предо мной стоит задача: найти микросхему операционного усилителя с возможностью сделать дифференциальный вход, выходной ток при напряжении питании 3,3V должен качать динамик 8 Ом мощностью не менее 0,25 Вт. Для рации.

    Источник звука - кодек - выходы слаботоковые, но с дифференциальным размахом по напряжению от -3,3/2 до +3,3/2 V.

     

    Всё что в итнернете видел - готовые усилители со спрятанными цепями обратной связи, которые не дают выставить Ku=1 (нужно усиление по току! напряжение оставить тем же!)

    и с установленной ступенькой для однополярного режима.

     

    Пока нашёл AD8541, но он слабёхо качает динамик 50 Ом - тихо, но гораздо громче чем в наушниках, но недостаточно.

    На AD8541 делал повторитель с дифференциальным входом: 4 резистора по 10 кОм и средняя точка двумя кондёрами по 100 мкФ.

     

     

    Привлекает микросхема MC31149, но как можно её заставить работать с дифференциаьным входом? При этом K по напряжению должен быть 1..2.

     

    post-94050-1486293311_thumb.png

  8. Да, уважаемые Милливольт и Aner были правы: бесполезно с практической точки зрения наворачиваь дополнительные корректирующие коды, когда аппаратный декодер уже выносит жесткое решение.

     

    Экспериментально я испытал 2 реализации коррекции ошибок, реализуемых программно:

     

    1) код Рида-Соломона, о нём писал выше

     

    2) Свёрточный кодер Витерби с перемежением и де-перемежением на приемной стороне.

     

    Выигрыша в устойчивости связи я не получил. Даже со свёрточным кодером Витерби получился проигрыш, из за того что пришлось уменьшить код-рейт аппаратной коррекции ошибок LoRa FEC чтоб уложиться в пакет с заданным битрейтом для сохранения той же чувствительности.

     

    А вот переход от CR=4/5 к CR=4/8 аппаратной LoRa FEC - действительно ощутимо даёт выигрыш! Связь устойчивая в "злачных местах" на границе приёма.

     

    Все эти выплакивания децибелл из приёмника путём заужения полосы, снижения скорости - всё в прошлом! :)

     

    Вот испытал новый LoRa-модуль LoRa1278F30 мощностью 1Вт - c MELP 2400 дало 3 км устойчивого уверенного приема: передатчик был внутри балкона, приемник во внутреннем кармане куртки !!! Ура! :santa2:

     

    Ну и с китайским Новым Годом всех поздравляю! :rolleyes:

     

    Подробнее тут: http://vrtp.ru/index.php?showtopic=27904&st=600

  9. Не помогло. И почему Skyworks? У них на деталях красуется логотип со звездами или буквы SKY.

    Пробовал другие фирмы чесать на предмет маркировки - у всех либо полное наименование либо пара буков.

     

    В общем похоже на что-то внутре-китайское.... и думаю что 1706 - это номер партии вообще, только по L4 искать но не находится вообще.

     

    Как быть дальше - бить голову или успокоиться?

    Менеджер по продажам не доступен до 6 февраля, а так хочется узнать марку этой детали (возможно это RF AMP IC, а не транзистор вовсе)

     

    заливал фотку в гугл - тоже не ищет ничего адекватного

  10. 60 просмотров и не одного предположения!!!!!!! :1111493779:

     

    А ну-ка активнее... выслушаю предположения!

     

    Ну что может стоять в цифровых трансиверах на выходе с мощностью 0,8 - 1 Вт?

     

    корпус, сорри - SOT-89 а не то как ранее написал

  11. Добрый день.

     

    В цифровом трансивере в качестве усилителя мощности (433 МГц) стоит транзистор(или модуль-усилитель) с маркировкой "L4" и ниже "1706", корпус похож на SOT-223.

     

    Помогите опознать марку!

     

    Фото прилагаю:

    post-94050-1485314501_thumb.png

  12. Все кто написал ответы - верно написали!

     

    У меня была цель - я её достиг, а именно : сделать пару небольших раций с дальностью связи до 1-1,5 км при максимальных битрейтах 2400-4800 бит/с.

    Цель достигнута!

     

    Но захотелось большего!!! :rolleyes: А именно - проверить - что можно улучшить чтоб выжать хотя бы ещё 20-40% дальности. А вдруг в Semtech что-то сделали не совсем хорошо? Вот исходя из таких позиций хотел решить вопрос программными методами.

     

    Понятно, что нужно аппаратно решать - переходить на другую элементную базу, при условии изменения цели, например: дальность 10 км при мощностях 100 мВт на портативках с битрейтом 2400. Как вы думаете - реально(если антенны укорочены) ? В итоге восходим к теме Ане Иволгиной которая тут уже писала :)

     

    Просто был эксперимент - не более, исходя из предположения что ЛоРа ФЕК слабенький и его можно заменить программным алгоритмом... Но коль уж жёсткое решение после встроенного ФЕК декодера не обмануть и не оспорить - таки да - остальные коды - безрезультатны.

     

    Ну и по моему RFM96 может работать в сыром режиме - валить всю кашу с эфира, но она однобитовая.

     

    Ещё есть GFSK режим с отключениями преамбулы, синхры и кодового слова - может тут есть поле для улучшения?

  13. тоесть в моем случае восстановить пакет программными методами не удастся?

     

    Инными словами: Если приёмник на грани чувствительности и я не дурак, то пойму что на этот ПАКЕТ с пользой не навернуть? :biggrin:

     

    И всё-же я не могу точно утверждать что приемник на грани возможностей, поэтому вопрос остается в силе:

    вот теперь реалия: есть RFM96 у которого данные аппаратно кодируется сверточным кодером FEC с опциями 4/5 4/6 4/7 4/8 для программиста это невидно.

    Имеем декодированый FEC-декодером поток уже с жеским решением: ПАКЕТ.

     

    Вопрос: эффективно ли на этот ПАКЕТ навернуть что-то (каскадные коды, турбо-коды, простой RS или просто Голей/Хемминг) - программно, чтобы потом этот ПАКЕТ, пройдя через аппаратный LoRa FEC , был более надёжнее принят?

  14. Абонент А вызывает Б. Приемник Б принимает вызов и фиксирует сбойные пакеты. Станция Б автоматически сообщает станции А об этом.

    А автоматически поднимает мощность децибел на 10. Б автоматически подтверждает устойчивый прием. Если нет, то А опять же автоматически подкидывает еще децибел 10. Если это предельная мощность, то у А и у Б загорается индикация предельной дальности связи. Пара бит туда-сюда. Протокол ясен как слеза младенца. Времени все это удовольствие ничуть не пожрет...

    При приёме сообщения от станции А станции Б может возникнуть также битый пакет "о битом пакете". Команда в лучшем случае будет проигнорирована, в худшем - исполнена некорректно.

     

    Цель другая - исправлять пакеты от передатчика, когда приёмник на грани чувствительности. Допустим преамбула и первые байты - приняты без повреждений, а вот в середине у абонента дрогнула рука на долю секунды - связь оборвалась - и середина уже байты 3-5 приняты неверно, затем абонент повернулся и конец пакета был принят без ошибок.

     

    Иными словами - вытаскивать тухлые биты и/или байты в пакете на граничных условиях приёма, там где враги: либо шум эфира, либо интерференция.

     

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

    Я это решил путём введения нового состояния трансивера - когда загорается лампочка фиолетового цвета - то значит пакет был подвергнут коррекции, а значит связь тут уже неустойчива. Если абонент не дурак, то поймёт что это предел возможности аппаратуры :)

     

    ++++++++++++++++++

     

    Почитал Скляра, кое-что стало проясняться.

     

    А именно: три(!) модели канала: гауссовский, релеевский и райсовский по середине.

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

     

    Для АБГШ - это 0,8 (небольшая избыточность), для Райса: 0,5-0,6 (в 2 раза медленнее скорость). для Релея - вообще -0,3 (тоесть в три раза медленнее).

    С такими коэффициентами - не жалко расшириь полосу и увеличить скорость кодирования в 2 (Райс) или в 3 (Релей) раза.

     

    ++++++

     

    Ещё совсем печально стало, когда узнал что RFM96 выносит жёсткое решение: доступен только выход декодера, демодулятор не доступен и поэтому вытащить вместо одного бита хотя бы 2 или 3 не представляется возможным.

     

    А вот теперь реалия: есть RFM96 у которого данные аппаратно кодируется сверточным кодером FEC с опциями 4/5 4/6 4/7 4/8 для программиста это невидно.

    Имеем декодированый FEC-декодером поток уже с жеским решением: ПАКЕТ.

     

    Вопрос: эффективно ли на этот ПАКЕТ навернуть что-то (каскадные коды, турбо-коды, простой RS или просто Голей/Хемминг) - программно, чтобы потом этот ПАКЕТ, пройдя через аппаратный LoRa FEC , был более надёжнее принят?

     

    Или если на выходе трансивера жесткое решение c аппаратного декодера , то бессмысленно внедрять дополнительную коррекцию ошибок?

     

     

     

     

     

  15. Пробовал читать Скляра, и многих других авторов.

    Слишком сухо, много матана и нет практических примеров (симуляция на языке Си или хотя бы блок-схемы алгоритмов).

    Также нет привязки к реальным условиям.

    Это - беда всех книг ...

     

    Когда 2 абонента находятся в городе идут по улице между домами - какой канал - релеевский или гауссовский?

     

    Когда канал чист и никто не мешает - как это отразить в теории?

     

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

     

    Насколько оправдана потеря 3-6 дБ чувствительности приемника при применении коррекции?

     

    Коды коррекции, часто надо найти сколько ошибок исправляют - по БЧХ замучился искать, кое-как нашел.

     

    И многое, многое другое не расписано вообще.

     

    Иными словами, проблема: как связать тот матан в книгах с реальностью? И просимулировать в программах?

  16. Академические выкладки приложил ниже на бумаге.

    Как вы думаете - взлетит?

     

    Взлетело ещё как! :)

    Залил прошивку и с напарником проверили.

     

    На граничной дальности связи были 4 вещи:

    1) пакет принимался без коррекции

    2) пакет принимался и успешно корректировался

    3) пакет принимался и неуспешно корректировался (были артефакты в звучании)

    4) пакет не принимался, приёмник спит

     

    Все 4 состояния визуально наблюдал по индикатору (светодиод R,G,B, их сочетания) выведенному из корпуса трансивера.

     

    За основу брал этот код: http://we.easyelectronics.ru/attachments/get/1392 (только РС.)

     

    Хочу свёрточный + Рид-Соломон сделать с итеративным приближением - есть ли смысл делать это для улучшения приёма пакетов в случае 3) ?

     

    Или если увлечься случаем 3) , то случай 4) будет чаще давать о себе знать - ведь бОльшая избыточность кодирования просто вынудит увеличить битовую скорость - а значит привет чувствительности...

  17. Моя задача улучшить существующий метод коррекции ошибок. Использую RFM96, LoRa FEC. Из даташита известно что он циклический. Возможные конфигурации - кодрейты:4/5 , 4/6, 4/7 и 4/8.

     

    Так как в качестве подопытного кролика использую сейчас MELP 2400, то там 1 фрейм 54 бита - с двумя пустыми битами выходит 7 байт, расчёт пакета в LoRa Calculator.

     

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

    Ниже о них...

     

    Берём CR=4/7, это +3/4 к оригинальной длине пакета. Значит(полагая что FEC исправляет ошибки в таком же количестве как и Рид-Соломон) эффективность 21 % (отношение количества исправленных символов ко все длине).

     

    Теперь делаем второй FEC - Рид-Соломон: 7 байт данные(1 фрейм MELP) + 8 байт проверочные: RS (15,7) - такой исправит до 4 ошибок (стирания в этом случае нас не волнуют, так как между кодами LoRa FEC и RS обмена данными нет!). Эффективность такого кода-РС: 4/15 = 27 %

     

    А теперь ищем общий КПД этого итеративного(каскадного?) кодирования: 1-(1-kfec)(1-krs)=0,42 42% - тоесть около половины пакета может быть повреждено и восстановленно!

     

    Отальные конфигурации с CR=4/5 или 4/6 - дают меньший итоговый КПД, а при CR=4/8 пакет уже не проходит максимально разрешённое время (не более длительности 1 фрейма) при сохранении той же чувствительности (без увеличения скорости).

     

    Академические выкладки приложил ниже на бумаге.

     

    Как вы думаете - взлетит?

     

    post-94050-1485158786_thumb.jpg

  18. Тройная кодировка хорошо, но у меня условие - код-рейт не ниже 0,5 - что допустимо увеличить пакет до 2 раз!

     

    Вот двойную бы кодировку как-нить сделать...

     

    Подумалось мне и вот что придумал: а что если брать по 4 бита квадратом 2x2 и приписывать биты чётности по строкам и столбцам - что даст ещё +4 бита - уложился в зананный код-рейт <=0.5.

     

    А корректировать просто: устанавливаем факт ошибок на столбце и строке - исправляем на пересечении :)

    Как такой метод коррекции?

     

    ------

     

    По кодам Файра, да в курсе что burst-ы, но ведь это как раз и предпочтительно когда бОльшая часть пакета выбита, а пакеты короткие 2-4 байта (чистый payload.)

     

    Просто во всяких Motorola DMR и болталках сделаны короткие пакеты, иначе задержка будет огроменной по звуку.

  19. Ваши Хэмминг и Голей тоже систематические линейные блоковые коды.

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

     

    Хорошие коды подразумевают мягенькое декодирование,

    поэтому там вообще-то нет понятия "ошибки".

    Можно по-подробнее, желательно с названиями мягких декодеров?

     

    Неверно. Перемежение даст то чего вы и боялись - увеличение задержки, а толку от него не будет.

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

    как уже и сказал Петров.

     

    BCH вселяют пессимизм...

    Нашёл как расчитать общую длину пакета исходя из начального пакета и количества исправлений ошибок.

     

    Мой исходный пакет: m=28 бит

    Максимальное число ошибок при котором код ещё работает: S=7

     

    Тогда n=m+k - общая длина кода

    k=CEIL(log2(n+1))*S

     

    Решив уравнение, получается что n(min)=77.

     

    Итого: чтоб исправить любые 7 битов в пакете из 28 бит, надо расширить пакет до 77 бит.

     

    И эти 7 бит уже как бы не в 28 битах исправляют , а в 77. Итого эффективность: 7/77=1/11 - это ещё меньше чем у простого (7,4).

     

    Или я ошибся?

     

    На этом фоне коды Файра смотрятся куда лучше.

     

    Вот японец изобрел код (26,16) который исправляет до 5 ошибок! эффективность выше: 5/26=0,19 http://the-art-of-ecc.com/3_Cyclic_BCH/RBDS.c

     

    Где заветные 25% исправленных бит от первоначальной(!) длины пакета?

  20. Создатель Codec2 Дэвид в своем сайте пишет, что планирует добавить FEC к своему детищу - защитив только важные биты фрейма:

    http://www.rowetel.com/?p=5373 читать со слов "Next Steps Some thoughts on FEC. A (23,12) Golay code........"

     

    Только что проанализировал важность битов фрейма, путём инверсии по отдельному биту и слушал результаты.

    В общем: важны только 13 бит из 28 - биты кодовой книги, старшие биты тона и усиления.

    Остальные не дают теряться разборчивости речи: попробовал занулить их - в итоге речь как была так и осталась.

     

    Так что... (13/28)*700 = 325 бит/с - до такого можно снизить битрейт.

     

    Ну а идею защиты только важных бит можно принять на вооружение.

     

    Cделал запись с занулёнными незначимыми битами, оставив 13 из 28.

     

    Звучит ИМХО не дурно, что дает 325 бит/с

    325bit_from_700C.wav

     

    Код:

    codec2=codec2_create(CODEC2_MODE_700C);
    
    while(fread(buf,sizeof(short),320,f_in)==320)
    {
      codec2_encode(codec2,bits,buf);
    
    //bits[3]^=0x08; //01234567 (!не влияют89_10_11_12_13_14) 15_16(pitch)_17(pitch) (не влияет: 18_19) 20(усиление)_21 (не влияет: 22_23_24_25_26_27)
    
    bits[1]&=0x80; //зануляем биты 8...14
    bits[2]&=0x33; //зануляем биты 18..19, 22..23
    
      fwrite(bits,sizeof(char),4,f_out);
    }
    
    codec2_destroy(codec2);

     

    Берите максимально длинный бинарный БЧХ, который устроит по задержке и слышимым искажениям от потери всего пакета, их полно, есть из чего выбрать. В перемежении нет толка в смысле усиления в АБГШ канале

    Выпадают пакеты при передвижении в граничных условиях когда расстояние на пределе. БЧХ поможет в этом случае? Каков выигрыш в отношении сигнал/шум ожидать - на сколько снизится?

  21. может еще посмотреть например на кодирование 8b/10b или подобное?

    спасибо, почитаю.

     

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

  22. _4afc_, большое Вам спасибо!

     

    Благодаря Вашему примеру, я начал кое-что понимать... а именно: корректировать не испорченный пакет, а работать с группой перемежённых пакетов.

     

    В случае с вокодером Codec2 на 700 бит/с, составил свой пример:

     

    Берём 8 фреймов вокодера по 28 бит каждый - это 56 x 4 бит

    Далее кодируем с избыточностью (56 x 4) => (56 x 7)

    Перемежаем: (56 x 7) => (7 x 56)

    Отправляем 7 пакетов по 56 бит (по 7 байт).

     

    Декодирование в обратном порядке.

    Из 7 пакетов один любой может быть полностью испорчен(не подлежать восстановлению?)

     

    При 700 бит/с невосприимчивость к помехе: 56/700 = 80 мс - это два речевых фрейма Codec2 !

     

    Итого 8 фреймов из них допускается 2 битых.

     

    Всё ли верно?

     

    Есть ли более эффективные коды, чем (7,4) - либо бОльшее число ошибок при заданной длине или более короткая длина на 1 ошибку?

     

     

    А если приемник не примет пакет? Будет нарушение синхронизации, в итоге все 8 фреймов потеряны.

  23. Для кода Хэмминга : эффективность кода растет при увеличении информационных блоков. Так, для кодирования 7 бит данных избыточность составляет чуть больше 57%, для кодирования 256 бит избыточность будет 3.5%, а для 1024 – 1%.

     

    http://all-ht.ru/inf/systems/p_0_14.html

     

    Вы представляете что такое 256 бит на скорости 700 бит/с (вокодер)? :)

    Это 0,73 секунды задержки звука в симплексном канале (половина времени - задержка на передачу и столько же на приём).

     

    Нужен алгоритм именно для коротких пакетов.

     

    Пока рассматриваю вот это : http://www.iz-news.ru/lect/04/

     

    И это (клондайк программиста-цифровика :) ) : http://the-art-of-ecc.com/topics.html

     

    Ну и тут http://the-art-of-ecc.com/3_Cyclic_BCH/RBDS.c в исходнике реализация кодера/декодера (26,12) с исправлением до 5 ошибок, эффективность 5/26 = 0,192 - почти 1/5, оно эффективнее Голея и Хемминга будет :)

  24. Канал связи чистый, нужно обеспечить приём пакетов в зоне неуверенного приёма, когда к примеру приёмник зацепил преамбулу, а пакет принял с ошибками - из-за движения абонента: меняется напряженность поля и иногда пакет искажается.

     

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

     

    Исходный пакет очень короткий - 3-4 байта, допустимо навернуть до 2 раза больше, тоесть код-рейт 0,5 не ниже.

  25. Добрый день.

     

    Есть небольшой пакетик из 3..4 байт, который пуляется передатчиком в эфир потоком.

     

    Возможности организовать протокол перезапроса пакета приёмником нет и не будет.

     

    В приёмнике и передатчике требуется организовать эффективную битовую коррекцию ошибок.

     

    Читал про коды Хемминга и Голея: код Хемминга (7,4) исправляет 1 ошибку - эффективность: 1/7

    Код Голея (24,12) исправляет 3 ошибки - эффективность 3/24 = 1/8

     

    Существуют ли другие алгоритмы коррекции битовых ошибок в коротких пакетах, которые исправляют 1/4 - 1/2 числа бит от общего потока?

     

    К примеру, из общего кодового слова длиной 24 бита исправить 6... 12 бит?

     

    Каков предел эффективности?

     

    Блочные коды (работающие с блоками бит типа RS- и Turbo- code) не предлагать.

×
×
  • Создать...