алгоритмы сжатия на лету подскажите

Anna74

Данные передаются по радиоканалу, с потерями, в real time. На одном конце надо быстро сжать, на другом восстановить с обнаружением ошибок. Киньте ссылки на обзоры текущего состояния теории или подскажите где копать. Может готовые реализации.

AlexV769

жать чем угодно (чем удобно обнаружение потерь и ошибок оставь на долю TCP.

Dasar

жать чем угодно (чем удобно обнаружение потерь и ошибок оставь на долю TCP.
зачем тогда в gsm запихали обнаружение потерь и ошибок?

uncle17

а когда появилась нынешняя редакция TCP?
UPD: упс, сентябрь 81:)

vall

TCP и realtime вещи не очень совместимые

AlexV769

зачем тогда в gsm запихали обнаружение потерь и ошибок?
Вопрос на засыпку: на каком уровне OSI находится TCP, а на каком - GSM?

AlexV769

что ты вкладываешь в понятие realtime?

Anna74

Я на передающем инфу микроконтроллере писать TCP не буду, он не успеет обсчитать при передаче и в память ему это не влезет :) По-идее каждая инструкция во внутреннем цикле на счету из-за быстродействия. На расшифровывающей стороне можно что угодно в принципе реализовать. Можно несимметричную схему, сжать легко, расшифровать сложнее, но сильно сложно это не стоит IMHO делать. Сейчас написан самопальный кодер-декодер, но есть большие сомнения, что это оптимально.

yolki

а чё там про кодирование имени Рида-Соломона? кодировать тривиально, восстанавливать слегка трудоёмко, но если делать через таблицы то приемлемо

Dasar

Вопрос на засыпку: на каком уровне OSI находится TCP, а на каком - GSM?
а на каком уровне находится радиоканал?
имхо, там же где и gsm.
соответственно, если в gsm все это делают (и в целом - понятно почему то почему не делать в радиоканале - мне не понятно.

AlexV769

ТЗ изначально сформулировано так, что неясно, что из себя представляет этот самый радиоканал.
Я, например, представил себе 2 ethetnet-радиомодема с направленными антеннами.
А тут оказывается радиоканал типа ZigBee c соотв классами сопряженных устройств.

yolki

кодер-декодер для хэмминга писал?

dgaf

если читать только заголовок, то lzo (lzop очевидно
и tcp
а да, прочитав тему, тут о другом речь. надо чётче первый пост писать

bleyman

Кодировать можно вот:
http://en.wikipedia.org/wiki/BCH_code
Кодирование - обычное CRC со специальным полиномом. То бишь длинный сдвиговый регистр, очередной бит ксорится с его младшим битом, регистр сдвигается, результат первого ксора ксорится с несколькими его битами (собственно, их позиции и описывают полином).
Декодирование - геморрой с табличками, особенно если хочется эффективности. Но в интернетах есть имплементации.
От Хэмминга отличается жуткой устойчивостью к bursts - куче обнулённых/объединиченных байтов подряд, что в радиоканале обычно и случается. Ну, потому что CRC. Вроде даже используется много где.
А как сжимать - не знаю. Особенно в условиях ограниченного времени. Особенно если у тебя данные случайные. Если всегда похожие, то тупо запусти генератор префиксного кода на типичном потоке и зафигачь в статическую табличку, на сколько памяти хватит.

Anna74

Данные не сильно случайные, ну скажем типа отсчётов псевдопериодических функций по нескольким каналам параллельно, периодов много и конечно плывут со временем, фазы тоже, отсчёты снимаются АЦП.
Жать сигнал надо. Сейчас связь двусторонняя, передача пакетами, на битые пакеты отправляется запрос на повтор передачи если ошибок много и не успевают переслаться - старые пакеты опускаем и игнорим вывешивая признак ошибки передачи конкретного пакета, какая-то минимальная задержка на долю секунды некритична. В некоторых приложениях наверное и на секунду и больше задержка некритична.

yolki

а на стороне передатчика-съёмщика сигнала нельзя сколь-нибудь нетривиальную арифметику применить?
FFT применять, шумы отсекать и прочее?

Anna74

Пердатчик "тонкий", FFT напрашивается, но наверное не для всех приложений прокатит из-за задержки расшифровки, надо попробовать как-нить. Но я никогда не писал и буду благодарен за ссылки. Мозги есть, систематическо-специфического образования нет. :) Может какие ММ или ВМК курсы лекций где есть для соответсвующих специальностей-специализаций, англоязычные можно, без разницы мне, в электронноим виде может где. Если в дело не пойдёт, то хоть в систему привести отрывочную картину в своих мозгах по сжатию и кодам, исправляющим ошибки.
Реальных сигналов у меня ещё нет, статистику набирать негде.

yolki

Пару лет назад делали съём и передачу сигналов по сети обыкновенной (TCP/IP, OPC).
Частота дискретизации у нас была примерно 100Кгц, были характерные наводки на 10КГц (аппаратура в соседней лаборатории 4.2КГц (видимо радио-точка, потому что я ради хохмы пытался выделить что на этой частоте есть - получилась какая-то болтовня неразборчивая) , 50Гц (ггг, от этого никуда походу не деться).
Я в этом сам мало понимал, надыбыл кое-какую литературу по обработке сигналов. ключевые слова - DSP (digital signal processing ЦОС (цифровая обработка сигналов цифровые фильтры (digital filter low-pass, band-pass, band-stop filters, рекурсивные фильтры, нерекурсивные фильтры, и т.п.
Мехматских знаний комплексного анализа, функана и численных методов из области обработки последовательностей хватает, чтобы разобраться что к чему.
взял сэмпл сигнала, рассчитал спектр, рассчитал фильтр, через десяток попыток заработало.
рекурсивные фильтры очень эффективны, однако дают лаг в несколько тактов дискретизации.
считывались сэмплы по 256кб. ошибок не было, потому что ethernet

yolki

fft можно использовать для сжатия сигнала. но это зависит от того, что требуется сохранить а что можно отсечь.
после кодирования сигнала, оборачивать его во что-нибудь типа BCH (кодирование Рида-Соломона это частный случай BCH, который используется в CD/DVD/спутниковых каналах)
По поводу трудоёмкости всего этого.
фильтрация - реалтайм
fft - почти реалтайм (что-то типа O(N*log(N
кодирование - реалтайм.

Julyk

Для начала, я бы порекомендовал посмотреть книгу:
Скляр Б. — Цифровая связь. Теоретические основы и практическое применение
(http://elib.hackers/books/7964)
Про БЧХ коды можно почитать тут:
Блейхут Р. — Теория и практика кодов, контролирующих ошибки
(http://elib.hackers/books/10979)
На практике используются только две их разновидности: двоичные БЧХ коды (их часто просто называют БЧХ кодами) и коды Рида-Соломона.
Стандартный алгоритм декодирования следующий:
1) Вычисление синдромов
2) Решение ключевого уравнения (Berlakamp-Massey алгоритм или алгоритм Евклида)
3) Нахождение позиций и значений ошибок (формула Forney и процедура Chien search). В случае с двоичными БЧХ, значения ошибок не нужны.
В современных беспроводных стандартах связи от БЧХ кодов уже практически полностью отказались. Используются чаще всего сверточные(convolutional turbo коды либо LDPC коды.
Можете почитать о них тут:
1) Moon T.K. — Error Correction Coding: Mathematical Methods and Algorithms
(http://elib.hackers/books/26543)
2) MacKay D.J.C. — Information theory, inference, and learning algorithms
(http://elib.hackers/books/3972)
Оставить комментарий
Имя или ник:
Комментарий: