Dobermann 1 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба Проблема в том, что вы не можете задетектить ошибку, потому что не знаете исходный сигнал. Например, у меня 8 поднесущих, каждая поднесущая модулируется bpsk (0\180), т.е. 8битное слово передается за 2.5мс. В процессе передачи, фаза поднесущей может быть произвольно изменена, следовательно последовательность примет какое-то случайное значение. Надеюсь я правильно понял ваш вопрос. В данный момент я просто сравниваю принятые данные с отправленными, но в реальности этого не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба Это канальный байтовый протокол нижнего уровня (вроде UART "удлинителя")? Тогда обеспечение надежности передачи должны обеспечивать протоколы верхнего уровня. Зная из структуру можно туда "заглядывать". И использовать для детектирования ошибок пакетов. IMHO, если просто вообще ничего не знать о характере трафика (пакетах хотя бы 10-20 байт), то короткий БЧХ или Голей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба да, это самый низкий уровень, с которым сейчас эксперементируем, до высокого не добрались, потому что нет опыта с канальным кодированием, опять же уважаемый petrov пишет, что я не смогу исправлять ошибки, или я его не верно понял. Т.е. в моем представлении хотелось бы так: пакет полезных данных -> кодировщик, который добавляет определенное количество избыточных бит-> модулятор-> канал связи -> демодулятор -> декодер (произошла магия - получили пакет полезных данных идентичный отправленному). Как то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба В 02.08.2022 в 21:43, Dobermann сказал: я не смогу исправлять ошибки Это не так: все упирается в ограничения: требуемая вероятность (качество), скорость, задержка и, обязательно, вычислительная мощность. Следует определится с этими параметры, тогда можно предложить какие-то пути решения. То есть, какая задача системы, такая и оптимизация структуры (СКК) под нее. Универсального решения не существует. Уважаемый stealth-coder хорошо описал зависимость вероятности от размера пакета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба пока все крутиться и будет крутиться в матлабе, поэтому вычислительные способности можно игнорировать, скорость я указал, минимум 1200 полезной, без ошибок, 2400-3000 полная скорость, задержку я тоже указал, 20mc-30мс максимум. Размер пакета 80бит. Уважаемый stealth-coder указал данные для пакетов большой длины, у меня таких не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба Вот тут, IMHO, варианты есть. Но следует учесть, что у Вас - не радиоканал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 2 августа, 2022 Опубликовано 2 августа, 2022 · Жалоба В 02.08.2022 в 23:14, Dobermann сказал: пока все крутиться и будет крутиться в матлабе, поэтому вычислительные способности можно игнорировать, скорость я указал, минимум 1200 полезной, без ошибок, 2400-3000 полная скорость, задержку я тоже указал, 20mc-30мс максимум. Размер пакета 80бит. Уважаемый stealth-coder указал данные для пакетов большой длины, у меня таких не будет. Правильно я понимаю, что вы передаете сигнал в виде звука через GSM на 8 поднесущих? Могу конечно ошибаться, давно это было, на лекциях (поправьте если не верно), но осталось в памяти, что GSM для передачи речи использует интервал стационарности что-то порядка 20мс. Т.е. туда (в 20мс) войдет 8 слов по 8 бит, а предполагается (звуковым кодером GSM), что на интервале стационарности сигнал практически неизменен. А слова я полагаю, не гарантируется, что будут идти одинаковые по 8 штук... Я к тому, что если все вышеизложенное верно, то в вашем случае в зависимости от комбинации слов ошибки могут быть, а может их и не быть. И учтите что при снижении качества сигнала сотовой связи полоса может сильно урезаться, и тогда ситуация с ошибками может кардинально поменяться, и не в лучшую сторону. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба Да, вы понимаете правильно, 8 поднесущих с bpsk. То что ошибки будут, я это вижу и стационарным сигнал ну никак не сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба 13 hours ago, Dobermann said: Проблема в том, что вы не можете задетектить ошибку, потому что не знаете исходный сигнал. Например, у меня 8 поднесущих, каждая поднесущая модулируется bpsk (0\180), т.е. 8битное слово передается за 2.5мс. В процессе передачи, фаза поднесущей может быть произвольно изменена, следовательно последовательность примет какое-то случайное значение. как я понял, вы боритесь не шумами АБГШ (что отменяет все приведенные выше расчеты), а с речевым кодеком и его поведением, которое выглядит как сдвиг фазы. Причем, как я понял, всех поднесущих сразу, т.е. у вас один байт, случайно подменяется на другой байт. Так почему не рассмотреть этот ваш байт как "символ" в поле галуа GF(2^8) и не накрыть все это кодом РС? Жаль стирания вы определить не можете, нет эталона, а то было бы вообще клево. Но вообще, @petrov имел в виду изменить канальный алфавит, например брать 4 бита исходного сообщения и кодировать его в ваш "байт", тогда при сдвиге фазы, можно определить, была ли ошибка в слове и какое слово наиболее близком к результирующему. ЗЫ. Если ошибка такого поворота не пакетная, то можно класть в поток на блок из 8 слов слово с битами четности) Таким образом определите битый символ, который потом можно стереть в RS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба to des00, спасибо большое за группу FPGA в телеге, познакомился там с замечательными людьми, которые очень помогают в решении моей задачи))) далее, фаза может случайным образом поменяться у нескольких поднесущих, но не у всех. при чем характер изменения вроде как случайный, закономерности какойто не наблюдается. поэтому подменяется не весь байт, а один или несколько битов. РС - Рид\Соломон? думал над этим и скорее всего и буду это применять. Просто хотел узнать мнение более опытных инженеров в этом вопросе. On 8/3/2022 at 10:05 AM, des00 said: Но вообще, @petrov имел в виду изменить канальный алфавит, например брать 4 бита исходного сообщения и кодировать его в ваш "байт", тогда при сдвиге фазы, можно определить, была ли ошибка в слове и какое слово наиболее близком к результирующему. Поясните пожалуйста эту идею. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба 13 minutes ago, Dobermann said: to des00, спасибо большое за группу FPGA в телеге, познакомился там с замечательными людьми, которые очень помогают в решении моей задачи))) да, хоть телега мне и не нравится, но там тоже можно хорошо общаться) 13 minutes ago, Dobermann said: далее, фаза может случайным образом поменяться у нескольких поднесущих, но не у всех. при чем характер изменения вроде как случайный, закономерности какойто не наблюдается. поэтому подменяется не весь байт, а один или несколько битов. РС - Рид\Соломон? думал над этим и скорее всего и буду это применять. Просто хотел узнать мнение более опытных инженеров в этом вопросе. ну т.е. изменение может быть от 1 до 8 бит, в терминах RS, для кода в поле GF(2^8), это один символ поля. И не важно сколько в нем битовых ошибок. Если у вас все так хаотично, то я бы пошел по этому пути, взял бы что-то вроде усеченного кода РС 138/254 байта и попробовал в лоб. Он может исправить 58 битых байт или 116 стертых байтов на блок в 254 байта. Главное его правильно синхронизировать - указать где начало блока. 13 minutes ago, Dobermann said: Поясните пожалуйста эту идею. в самом простом случае, на пальцах. берем 0/1 и кодируем как {-1,-1,-1,-1,-1,-1,-1,-1}/{1, 1, 1, 1, 1, 1, 1, 1} (код повторения на 8). По приему складываем все 8 символов поднесуших, если сумма больше нуля то передавалась 1, если меньше то 0. Ну т.е. надо подобрать такой канальный алфавит, который при ошибке в некоторых поднесуших, позволит определить, что же именно передавалось, за счет евклидовой (геометрической) длинны до эталонного символа. ЗЫ. кодировать/декодировать РС на процах/плисах довольно просто, тема перепахана за последние 30 лет) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба я правильно понимаю, каждый бит информации мы кодируем 8 поднесущими? Т.е. фактически снижаем скорость в 8 раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба 3 minutes ago, Dobermann said: я правильно понимаю, каждый бит информации мы кодируем 8 поднесущими? Т.е. фактически снижаем скорость в 8 раз. да, естественно. за надежность платим скоростью. Это еще Шенон показал) Но это простой, примитивный пример. Можно еще например вспомнить банальный 8b/10b кодек. мажут массив 256 байт на массив 1024 слов и за счет этого, могут определить канальную ошибку (но без ее коррекции естественно). Общий смысл такой - разнести кодовые слова между собой на такое "расстояние", что бы ошибка в битах, не приводила к тому, что мы станем "ближе" к другому кодовому слову, чем к тому что передавалось. По сути все коды это и делают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба Еще сейчас подумал, у вас же BPSK, у вас фаза двигается больше чем 180 градусов? поставили точки по диагонали, в приемнике складываем квадратуры, если сумма больше нуля, то это точка {1,1} == ну положим 1, меньше нуля - точка {-1,-1} == ну положим 0. Это довольно широкий диапазон вариации решения, если фаза двигается +-45 градусов ошибок у вас вообще быть не должно. Или вы не выполняете начальную фазовую синхронизацию и у вас в принципе точки могут стоять с любым поворотом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 3 августа, 2022 Опубликовано 3 августа, 2022 · Жалоба On 8/3/2022 at 11:09 AM, des00 said: Еще сейчас подумал, у вас же BPSK, у вас фаза двигается больше чем 180 градусов? поставили точки по диагонали, в приемнике складываем квадратуры, если сумма больше нуля, то это точка {1,1} == ну положим 1, меньше нуля - точка {-1,-1} == ну положим 0. Это довольно широкий диапазон вариации решения, если фаза двигается +-45 градусов ошибок у вас вообще быть не должно. Или вы не выполняете начальную фазовую синхронизацию и у вас в принципе точки могут стоять с любым поворотом? отвечу за коллегу) символьная и фазовая синхронизации работают по преамбуле. эквалайзером по преамбуле восстанавливается поворот фазы. наблюдается случайное смещение фазы, частотного смещения нет. на всех 8 поднесущих поворот фазы более менее одинаковый. после демодуляции сравниваю фазу переданных и принятых символов и вижу что имеются случайные ошибки, которые равномерно распределены по времени и частотам, ошибка по фазе между ошибками не коррелирует. тестировали передачу 20 шт блоков по 3600 бит, и кол-во ошибок варьируется от 156 до 74, то есть от 4,3 до 2,1% Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться