Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помехоустойчивое кодирование звукового сигнала
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
devlater
Здравствуйте.

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

Ситуация следующая: есть некая последовательность числа (в виде текста), одно устройство кодирует и передает это значение в виде DTMF сигнала, через динамик.
Другое устройство принимает этот сигнал микрофоном на расстоянии, и декодирует его.

DTMF не отвечает требованиям надежной (и достоверной) передачи информации, по крайней мере в той среде, где мы это используем. А это, в свою очередь, передача информации в условиях уличного "незначительного" зашумления. Никто не измерял сколько dB, но тем не менее, вопрос в том, что от этого зашумления никак не уйти..

Так вот: информация в целом передается, но с очень большим количеством ошибок. Например передается строка 975398734343, а расшифровывается как 0075396673443 ...
Если снизить скорость передачи, убрать шумы и увеличить длительность воспроизведения сигнала, тогда распознает вообще без ошибок. Хотелось бы отметить, что все алгоритмы реализованы верно, как на передатчике, так и на приемнике. Технически в подробности вдаваться не буду, т.к. это не тема данного вопроса. Еще стоит добавить, что приемник иногда ложно срабатывает просто на посторонние шумы.

Собственно вопросы:

1) Как добиться максимально правильной передачи информации, по звуковому каналу? Напоминаю: от динамика к микрофону, другие варианты не рассматриваются.
2) Какие алгоритмы реализовать, для помехоустойчивого кодирования? Стоит отметить, что обычные CRC и т.д., не особо помогают..
3) Существуют ли реализации подобного рода? Стоит отметить, что DTMF не является обязательным способом, просто мы пошли по такому пути.. Возможно не верному..

Требования:

1) Максимально возможная скорость передачи данных, не в ущерб качеству распознавания сигнала.
2) Передача данных именно в обычной (звуковой) среде, от динамика к микрофону.
3) Реализация алгоритма помеха устойчивого кодирования.

p/s. Уже думал может можно увеличивать сигнал по частоте и считать, в определенный промежуток времени, по вектору нарастания звукового сигнала, - понимать, что пытается передать устройство. И CRC пытался применить.. Не помогает, процент верного распознавания в зашумленной среде, ну около 30. Помогите пожалуйста, хотя бы советом, куда копать, что сделать, как реализовать???

Заранее всем огромное спасибо!
Grizzzly
CRC не исправляет ошибки, а позволяет их обнаружить, чтобы, например, сделать запрос о повторной передачи.
Нужно смотреть в сторону FEC, но хотелось бы всё-таки каких-то цифр в дБ. Хотя бы примерно.
uriy
вместо DTMF лучше используйте FSK и помехоустойчивое кодирование fec, рида-соломона, хэмминга.
devlater
Цитата(Grizzzly @ Sep 24 2018, 23:47) *
CRC не исправляет ошибки, а позволяет их обнаружить,


Да, это я понимаю.

Цитата(Grizzzly @ Sep 24 2018, 23:47) *
чтобы, например, сделать запрос о повторной передачи.


Нет возможности обратной связи, только односторонняя передача.

Цитата(Grizzzly @ Sep 24 2018, 23:47) *
Нужно смотреть в сторону FEC,


Спасибо за наводку.

Цитата(Grizzzly @ Sep 24 2018, 23:47) *
но хотелось бы всё-таки каких-то цифр в дБ. Хотя бы примерно.


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

Цитата(uriy @ Sep 25 2018, 04:03) *
вместо DTMF лучше используйте FSK и помехоустойчивое кодирование fec, рида-соломона, хэмминга.


Можно подробнее, - больше информации? Понятно что интернет и т.д. Я имею введу своими словами.
iliusmaster
1. Точно определить параметры шума среды. То есть определить критические случаи зашумления среды передачи. Для начала выйти на улицу с калиброванным микрофоном и посмотреть спектр частот уличного шума и его амплитуду. Опередив параметры среды передачи в худшем случае вы сможете выбрать частоты связи и необходимые уровни сигналов на выходе источника и на входе приемника.
2. Уменьшайте пакет посылки и увеличивайте избыточность. Необходимо сильно увеличивать накладные расходы на передачу. Систем помехозащищенного кодирования много. Проверить их действенность и выбрать лучший для вашего порименения - месяц времени.
3. Пробуйте организовать связь на многих частотах. Потому как в один конкретный момент времени обычно преобладает шум какой-либо одной частоты.
Передали на одной частоте - перескочили на октаву вверх - передали на другой частоте - еще на октаву вверх. На стороне приемника сложили пакеты полученные на разных частотах в одну кучу и сравнили друг с другом. Мажоритированием выбрали верный.
4. Увеличивать направленность излучателей и приемников. Есть параболические системы и системы органного типа. Увеличивают С/Ш очень значительно.
devlater
Тогда скорее как я понимаю: AFSK - Digital Communication with Audio Frequency Shift Keying.

Можно своими словами о FEC?

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
1. Точно определить параметры шума среды. То есть определить критические случаи зашумления среды передачи. Для начала выйти на улицу с калиброванным микрофоном и посмотреть спектр частот уличного шума и его амплитуду.


Да, наверное придется так и сделать.

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
Опередив параметры среды передачи в худшем случае вы сможете выбрать частоты связи и необходимые уровни сигналов на выходе источника и на входе приемника.


Каким образом я смогу выбрать? По спектрограмме? Т.е. какие частоты меньше всего заняты, их и выбираем?

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
2. Уменьшайте пакет посылки и увеличивайте избыточность. Необходимо сильно увеличивать накладные расходы на передачу. Систем помехозащищенного кодирования много.


В том то и дело, что их много...

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
Проверить их действенность и выбрать лучший для вашего порименения - месяц времени.


Простите за прямолинейность, Вы предлагаете свои услуги (что я думаю нами было бы рассмотрено). Или я Вас не правильно понял?..

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
3. Пробуйте организовать связь на многих частотах. Потому как в один конкретный момент времени обычно преобладает шум какой-либо одной частоты.
Передали на одной частоте - перескочили на октаву вверх - передали на другой частоте - еще на октаву вверх.


Концепцию понял. Спасибо. Ориентировочно я о этом говорил и в своем вопросе, когда писал: "Уже думал может можно увеличивать сигнал по частоте и считать, в определенный промежуток времени, по вектору нарастания звукового сигнала, - понимать, что пытается передать устройство.". Вопрос в том, какой промежуток по времени воспроизведения одного сигнала выбрать? Еще не маловажный фактор это то, что оба устройства цифровые (как приемник так и передатчик), И нужно получается обращать внимание на битрейт как передаваемого, так и принимаемого сигналов. Ну на счет битрейта я могу сказать, что думаю не ниже 64 кбит/сек.

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
На стороне приемника сложили пакеты полученные на разных частотах в одну кучу и сравнили друг с другом. Мажоритированием выбрали верный.


Можно подробнее пожалуйста.

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
4. Увеличивать направленность излучателей и приемников.


Думаю с направленностью норм, т.к. приемник и передатчик, на расстоянии не более 1 метра, - это точно.

Цитата(iliusmaster @ Sep 25 2018, 05:39) *
Есть параболические системы и системы органного типа. Увеличивают С/Ш очень значительно.


Тоже можно подробнее? И что Вы подразумеваете под аббревиатурой C/Ш?
devlater
Цитата(devlater @ Sep 25 2018, 05:58) *
1. Точно определить параметры шума среды. То есть определить критические случаи зашумления среды передачи. Для начала выйти на улицу с калиброванным микрофоном и посмотреть спектр частот уличного шума и его амплитуду.
>>Да, наверное придется так и сделать.


Измерили прибором, порядка 55-70 дБ.. 70дб - это в самой худшей ситуации.
Спектр к сожалению сейчас нет возможности замерить,..
Aner
И вот такой вопрос: Приемник DTMF сигнала, аппаратно как сделан? Программно и сами писали прогу? Если да, то понятно почему такое у вас с приемом.
rx3apf
Цитата(devlater @ Sep 25 2018, 08:58) *
Можно своими словами о FEC?

Можно посмотреть аппликухи от TI, где расписан алгоритм передачи и приема с использованием FEC, обеспечивающий совместимость с аппаратной реализацией в CC1100/1101.

А по опыту - когда-то давно (в 90-х) была такая простенькая транкинговая система Smartrunk, использовавшая ширпотребные полудуплексные радиостанции. В первой реализации использовался DTMF-сигналинг и работала она весьма так себе (несмотря на использование специализированных кодеков MT8880). Аналогично и в других системах, применяющих DTMF, тоже результат восторгов не вызывал, как ни старались фильтровать строб детектора. В том же Smartrunk, в следующей реализации, перешли на цифровое кодирование, фазовая модуляция несущей 1400 Hz (битовая скорость 1400/2.5=560 бит/сек). Результат был разительно лучше. Мало того, что система устойчиво работала и при достаточно паршивом радиоканала, в шумах, так она работала даже и на аудиоконтакте источник-микрофон, и даже и с двумя аудиоконтактами (на передающей и приемной стороне), работала на аудиоконтакте же и по телефонной линии.
devlater
Цитата(Aner @ Sep 25 2018, 16:21) *
И вот такой вопрос: Приемник DTMF сигнала, аппаратно как сделан? Программно и сами писали прогу? Если да, то понятно почему такое у вас с приемом.


Программно. Да DTMF уже не интересует... AFSK уже хотим заюзать..

Цитата(rx3apf @ Sep 25 2018, 17:48) *
Можно посмотреть аппликухи от TI, где расписан алгоритм передачи и приема с использованием FEC, обеспечивающий совместимость с аппаратной реализацией в CC1100/1101.


Если не сложно, можно прямые ссылки. Боюсь сам могу не то найти. Спасибо, за информацию.

Цитата(rx3apf @ Sep 25 2018, 17:48) *
в следующей реализации, перешли на цифровое кодирование, фазовая модуляция несущей 1400 Hz (битовая скорость 1400/2.5=560 бит/сек). Результат был разительно лучше. Мало того, что система устойчиво работала и при достаточно паршивом радиоканала, в шумах, так она работала даже и на аудиоконтакте источник-микрофон, и даже и с двумя аудиоконтактами (на передающей и приемной стороне), работала на аудиоконтакте же и по телефонной линии.


А вот тут пожалуйста по подробнее) Если можно.
Aner
Теперь понятно, что из-за плохого программного приемника DTMF сигнала у вас такое. Если бы поставили аппаратный (например MT8870 или их аналог) то таких проблем могли избежать. Все просто, тот фильтр с его полосой, подавлением за полосой, крутыми фронтами и тп. который в этом чипе сделан аппартатно программно реализовать на дешевом чипе не получится ну никак. Давно пройденная тема. У нас с использованием чипа проблем таких как у вас не было.
devlater
Цитата(Aner @ Sep 26 2018, 12:28) *
Теперь понятно, что из-за плохого программного приемника DTMF сигнала у вас такое. Если бы поставили аппаратный (например MT8870 или их аналог) то таких проблем могли избежать. Все просто, тот фильтр с его полосой, подавлением за полосой, крутыми фронтами и тп. который в этом чипе сделан аппартатно программно реализовать на дешевом чипе не получится ну никак. Давно пройденная тема. У нас с использованием чипа проблем таких как у вас не было.


Да возможно. Но дело в том, что аппаратно не как.. Это два устройства на ARM процессорах.
Насчет MT8870, да юзал его, но увы и ах.. Аппаратно нечего модернизировать нельзя.
rx3apf
Цитата(devlater @ Sep 26 2018, 14:20) *
Если не сложно, можно прямые ссылки.

Документы swra113a.pdf и swra313.pdf на сайте TI (DN504 и DN507).
Цитата
А вот тут пожалуйста по подробнее)

Программный кодек (с очень скромными требованиями к вычислительной мощности). Несущая (1400 Hz) модулируется по фазе (180 градусов), по 5 полупериодов на бит.

Цитата(devlater @ Sep 26 2018, 15:10) *
Насчет MT8870, да юзал его, но увы и ах.. Аппаратно нечего модернизировать нельзя.

В условиях реального радиоканала DTMF работает весьма посредственно. 8870, 8880 - опробовано больше четверти века назад, ничего хорошего...
devlater
Я вот сейчас читаю, и не могу определится, что же в конечном счете мне необходимо?..
FSK, AFSK, PSK или же BPSK???
Обращу внимание, что данные передаются с динамика на микрофон, скорость не так важна, хотя желательна, ну к примеру за 1 секунду, нужно передать 20 символов.
Самое важное, - это достоверность переданных данных!!!
mvm54
Цитата(devlater @ Sep 27 2018, 11:18) *
Я вот сейчас читаю, и не могу определится, что же в конечном счете мне необходимо?..
FSK, AFSK, PSK или же BPSK???
Обращу внимание, что данные передаются с динамика на микрофон, скорость не так важна, хотя желательна, ну к примеру за 1 секунду, нужно передать 20 символов.
Самое важное, - это достоверность переданных данных!!!


Если действительно НАДО СДЕЛАТЬ, и чтобы нормально работало, возьмите за основу какой нибудь гироакустический модем,
как например http://rfdsp.ru/modem_ga.html. В них уже учтены все подводные камни, на какие можете напороться.

Если скоростью можно пожертвовать, то проще всего использовать BPSK, а информацию передавать в виде М-последовательности (несущая 1...10 кГц).
Здесь будет и помехоустойчивое кодирование, и защита от возможного эха (многолучевость), и на входе можно ставить усилитель-ограничитель:
- просто и работает как А-Калашникова.
Единственное условие - Система должна быть рассчитана на работу при отношении С/Ш < 0,5 в белом шуме.
rx3apf
Цитата(devlater @ Sep 27 2018, 11:18) *
FSK, AFSK, PSK или же BPSK???

Я бы предложил PSK (в примере, который приводил ранее, использовался PSK - результатом был более чем доволен).
Цитата
Самое важное, - это достоверность переданных данных!!!

Если достаточно только принимать достоверные данные - защитить посылку CRC. Не сойдется - отбрасываем, потеряна. Иначе тот же FEC (как в аппликухах от TI), попробовать восстановить.
20 байтов/сек - даже с FEC, синхронизацией и контрольными суммами прекрасно уместится с теми параметрами, которые я приводил (560 бит/сек на 1400 Hz).
Stanislav
Цитата(devlater @ Sep 25 2018, 00:25) *
Ситуация следующая: есть некая последовательность числа (в виде текста), одно устройство кодирует и передает это значение в виде DTMF сигнала, через динамик.
Другое устройство принимает этот сигнал микрофоном на расстоянии, и декодирует его.

DTMF не отвечает требованиям надежной (и достоверной) передачи информации, по крайней мере в той среде, где мы это используем. А это, в свою очередь, передача информации в условиях уличного "незначительного" зашумления. Никто не измерял сколько dB, но тем не менее, вопрос в том, что от этого зашумления никак не уйти..

Так вот: информация в целом передается, но с очень большим количеством ошибок...

До того, как задавать собственно вопросы, опишите физические свойства линии, ежли это не секрет.


Цитата(devlater @ Sep 25 2018, 00:25) *
Собственно вопросы:
Хорошие вопросы.

Цитата(devlater @ Sep 25 2018, 00:25) *
1) Как добиться максимально правильной передачи информации, по звуковому каналу? Напоминаю: от динамика к микрофону, другие варианты не рассматриваются.

1) "Максимально правильного" критерия передачи информации по звуковому каналу не существует.
Попытайтесь задать вопрос как-нибудь иначе.

Цитата(devlater @ Sep 25 2018, 00:25) *
2) Какие алгоритмы реализовать, для помехоустойчивого кодирования? Стоит отметить, что обычные CRC и т.д., не особо помогают..

2) Обеспечьте линию. Если у Вас не работает, DTMF, надо менять консерваторию.
Алгоритмы помехоустойчивого кодирования есть, но они Вам не нужны, до осмысления...

Цитата(devlater @ Sep 25 2018, 00:25) *
3) Существуют ли реализации подобного рода?..
3) Есть реализации. Например, вполне аутентичный вокодер на 2400 бит/с.

Цитата(devlater @ Sep 25 2018, 00:25) *
1) Максимально возможная скорость передачи данных, не в ущерб качеству распознавания сигнала.
Обалдеть.
Скажите, чем скорость передачи данных, скажем, 100 Мбит/с может быть ущербней скорости передачи 100 Кбит/с?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.