komah 4 10 марта Опубликовано 10 марта · Жалоба 15 минут назад, repstosw сказал: Unwrap не получается сделать так, чтобы он правильно работал: он ползёт куда-то вверх, и не всегда срабатывает - оставляются переполнения. По всему массиву unwrap делать нет смысла - это не матлаб. Нужна всего лишь разница между двумя отсчетами. Если Си алгоритм дает фигню, значит он неправильный. Если результат unwrap неоднозначен - выбирайте меньшее по модулю значение. Выбросы потом (возможно) отфильтруются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
komah 4 10 марта Опубликовано 10 марта · Жалоба 42 минуты назад, repstosw сказал: Unwrap не получается сделать так, чтобы он правильно работал Вот такой unwrap должен работать лучше: while ( (phi_1 - phi_0) > (M_PI + dphi_avg)) phi_1 -= 2*M_PI; while ( (phi_1 - phi_0) < -(M_PI + dphi_avg)) phi_1 += 2*M_PI; theta = phi_1 - phi_0; dphi_avg - среднее значение разности фаз между отсчетами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 10 марта Опубликовано 10 марта · Жалоба 32 minutes ago, komah said: По всему массиву unwrap делать нет смысла - это не матлаб. Нужна всего лишь разница между двумя отсчетами. Если Си алгоритм дает фигню, значит он неправильный. Если результат unwrap неоднозначен - выбирайте меньшее по модулю значение. Выбросы потом (возможно) отфильтруются. Заработал нормально diff (unwrap ( ) ) Нужно было диапазон -64...+63 привести к 8 битному. Иначе скругление разницы не работало. Пока просто умножил на 2: диапазон -128... +126. Правильнее надо -128...+127 s8 BufferIn[SIZE]; s8 BufferOut[SIZE]; BufferOut[0]=0; for(int i=1;i<SIZE;i++) { BufferOut[i]=2*(BufferIn[i]-BufferIn[i-1]); } Выбросы как я понимаю из-за погрешностий интервала взятия отсчётов. 2 minutes ago, komah said: Вот такой unwrap должен работать лучше: while ( (phi_1 - phi_0) > (M_PI + dphi_avg)) phi_1 -= 2*M_PI; while ( (phi_1 - phi_0) < -(M_PI + dphi_avg)) phi_1 += 2*M_PI; theta = phi_1 - phi_0; dphi_avg - среднее значение разности фаз между отсчетами. При нахождении разницы unwrap не нужен. Так как происходит переполнение 8-бит с скругление с + на -. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
komah 4 10 марта Опубликовано 10 марта · Жалоба 2 минуты назад, repstosw сказал: Заработал нормально diff (unwrap ( ) ) Отлично! Уже похоже на правду. А сигнал на входе откуда? Такой же трансивер? Как подключен? Визуально, 4FSK с таким качеством проблематично будет демодулировать. 12 минут назад, repstosw сказал: При нахождении разницы unwrap не нужен. Так как происходит переполнение 8-бит с скругление с + на -. Если вся арифметика 8-битная, то наверное не нужен. Входные отсчеты можно сразу на 1 бит влево сдвинуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 10 марта Опубликовано 10 марта (изменено) · Жалоба 20 minutes ago, komah said: Отлично! Уже похоже на правду. А сигнал на входе откуда? Такой же трансивер? Как подключен? Визуально, 4FSK с таким качеством проблематично будет демодулировать. Сигнал принимаю по эфиру со второго трансивера Si4463. Модемы настроены одинаково. Модуляция, как я уже писал - пока выбрана 2FSK, битрейт 625 кбит/c. Si4463 разогнана немного: припаял кварц 37.5 МГц вместо шатного кварца30 МГц. Это позволило на 25% увеличить битрейт и увеличить скорость SPI до 15 МГц. До этого сделал стандартно обработку пакетов в дуплексном режиме. На два MJPEG кадра 160x240 + два потока сжатого звука хватает. Прикрутил коррекцию ошибок - длинный RS-кодек, исправляющий до 10...12.5% ошибок в пакете . Коррекция ошибок помогает когда сигнал сильно слабый (проверял). Чем слабже сигнал, тем больший % пакетов исправляется коррекцией. Вот статистика для выходной мощности 0,1 мВт (-10 дБм): из принятых 2160 пакетов - 602 пакета пришли битыми - они успешно исправлены, и 54 битых пакета с невозможностью исправить. ! - пакет пришёл без ошибок * - пакет с ошибками, успешно восстановлен ? - пакет исправить не удалось. перемещение по комнатам с приёмопередатчиком в руках. Quote !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?*!!!!!!!!!!!!!!!!!!!!!!!!!**!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!***!!!!!!!!!!!!!****!!!!!!*******!*!*!!!!*!!!!!!!!!!!!!!!!*******!!!!!***!?*******!*!!!******!!**!!!**************??**********!!*!!*!!!!!!!!!*!*********!*!***!*************!*****???***!!!!!*************************!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!**!!!!!!!!!!!****?!**!****************!!!?!*****!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!*!!*!***!!!!!!!!!!!!!!!!!!!!!!!**!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!*!!!!!**!!!!!*?!!!*!!!**!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!********!!**!!!!!!!!!!!!!!!****!******!!?*****???*********!!!!!****!***************************!!!!!!!!*!!**?****!!!!!!!!!!*!***!!!!?!******?**********?????********?************??***!!!!*!!!*!!!!*****?????*!*!!!!!!!!****!****!!!!!**!**!*!!**!**!!!!*!!!!!!!!!!********!*!!*****!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!******!!!!!!!!!!**!!!!**?!!!!*!!!!!!*?**!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!******!!!!!!!!!!!!!***!!!!!*!!!!!!!!!!!!!!!!*!***!!!*!!!!!!!!!!!!***!!!!!!!**!!!!!**!!!!!?*??*!!!!!!!!!!!!!!!!***!*!*!*!!**!*!!***************!*!*!!!!!!!!!!!!!!!!!!!!!!!*!!**!!!!!!!!!!!!!!!!!!!!!!!!!!**!!*!********!!!!!!!***!*!*!!!*****!!**!!!!!!!!!!!!!!!!!!!!!!!********!*!****!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!**!!!!!!!!!!!!!!!!!!!!!!*!!*!*!!!*!!********!**!************!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!**!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*?*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!************************?****?!!**?!!**?*!*?**!*!*******?**!****!*****???************!*!!!!!!*!******?*!*******??***!!!****!!!?*!*!!!!!!!!!!!!****!!!!*!!!!!!*****?*********!*******????**!!!*******!!! Изменено 10 марта пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
komah 4 10 марта Опубликовано 10 марта · Жалоба 4 минуты назад, repstosw сказал: Сигнал принимаю по эфиру со второго трансивера Si4463. Есть смысл кабелем соединить через затухатель и фиксированную последовательность передавать. Можно будет вероятность ошибки на приеме оценить и сравнить с железным детектором в микросхеме. На этом этапе важно разобраться, какие всплески из-за помех образуются, а какие из-за косяков приемника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 11 марта Опубликовано 11 марта · Жалоба 12 hours ago, komah said: Есть смысл кабелем соединить через затухатель и фиксированную последовательность передавать. Можно будет вероятность ошибки на приеме оценить и сравнить с железным детектором в микросхеме. На этом этапе важно разобраться, какие всплески из-за помех образуются, а какие из-за косяков приемника. Соединил ВЧ входы двух устройств через аттенюатор -30 дБ. Мощность -10 дБм. Снял фазу сигнала. Результат ничем не отличается от сигнала, принятого с эфира. Потому что оба устройства находятся рядом. И всё-же КМК форма сигнала, найденная через квадратуры и раскрытую производную арктангенса лучше смотрится, чем производная с раскрытого арктангенса. Проще говоря, рисунок ниже - лучше (нет АМ и меньше заусенцев): И кстати, почему когда передаётся преамбула, видно на графике, что частота слегка подплющивается периодически? Ну тоесть она как бы слегка частотно-модулированная визуально. 13 hours ago, repstosw said: Выбросы как я понимаю из-за погрешностий интервала взятия отсчётов. Выровнял чтения регистра фазы. Теперь отсчёты фазы бирутся через одинаковый временной интервал. Стало лучше. Но выбросы всёравно остались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
komah 4 11 марта Опубликовано 11 марта · Жалоба 1 час назад, repstosw сказал: И кстати, почему когда передаётся преамбула, видно на графике, что частота слегка подплющивается периодически? Ну тоесть она как бы слегка частотно-модулированная визуально. Амплитудно-модулированная. Такая АЧХ у приемника получилась, НЧ ослабляются больше. А ровнее нижний график наверное потому, что A и B в знаменателе формулы для вычисления производной найдены через sin и cos. И одновременно нулю никогда не равны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
тау 31 11 марта Опубликовано 11 марта (изменено) · Жалоба 1 час назад, repstosw сказал: И всё-же КМК форма сигнала, найденная через квадратуры и раскрытую производную арктангенса лучше смотрится, чем производная с раскрытого арктангенса. в модели у меня получалось несколько лучше (меньше выбросов) , если выбросить деление в конце на сумму квадратов амплитуд A^2+B^2. Дело прошлое, и емнип. Попробуйте и Вы , посмотрите разницу, будет ли лучше ( и кстати проще). Изменено 11 марта пользователем тау 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 11 марта Опубликовано 11 марта · Жалоба Сделал замеры. На битовой скорости 625 кБит/c получается 2,19 отсчётов. Грубо - 2 отсчёта на символ. Ни о каких мягких решениях нельзя говорить при таком битрейте. Но для скоростей десятки килобит в секунду сгодится. Всё из-за ограниченной пропускной способности SPI: максимально работает на половине тактовой частоты кварца: 37.5/2 = 18.75 МГц. Дальше только усекать разрядность выборок и толкать в байт. ЕМНИП для мягких решений достаточно трёх бит, остальное лишнее. Попробовал ещё включить логарифмическую визуализацию - с ней красивше смотрится: Вверху - через квадратуры, внизу - через разность. 16 hours ago, petrov said: . Уже писал, что стоит поучиться на чужом опыте, первый GSM близок, можно посмотреть И что там в первом GSM смотреть? Слишком много всего написано, и не факт что найду нужное. К тому же я не припомню, чтобы первый GSM решал вопросы скоростей выше 0,5 МБит/c Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 11 марта Опубликовано 11 марта (изменено) · Жалоба 2 hours ago, тау said: в модели у меня получалось несколько лучше (меньше выбросов) , если выбросить деление в конце на сумму квадратов амплитуд A^2+B^2. Дело прошлое, и емнип. Попробуйте и Вы , посмотрите разницу, будет ли лучше ( и кстати проще). Проверил. Эта сумма квадратов всегда равна единице. Выкинул её. График без изменений. Облегчило конвеер вычислений. Почему-то сразу вспомнил основное тригонометрическое тождество... Изменено 11 марта пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
тау 31 11 марта Опубликовано 11 марта · Жалоба 52 минуты назад, repstosw сказал: Эта сумма квадратов всегда равна единице. Выкинул её. Это в частном случае , у вас, т.к. квадратуры были в идеальной "квадратуре" float I=cosf(fi); float Q=sinf(fi); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 11 марта Опубликовано 11 марта · Жалоба Какие следующие шаги должны быть? Нужно засинхронизироваться и начать по выборкам определять биты. Сделал полифазный фильтр, работающий в сторону апсемплинга. Код брал на гитхабе. Вышла лажа: отсчёты делает некорректно. Попробовал ресемплинг в Audacity - довольно неплохо 4:1. Как теперь найти интервал взятия отсчётов и нужна ли энергия битов? Пробовал вручную найти интервал выборки - получается уход постоянно: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 11 марта Опубликовано 11 марта · Жалоба repstosw И что там в первом GSM смотреть? К тому же я не припомню, чтобы первый GSM решал вопросы скоростей выше 0,5 МБит/c Модель канала и алгоритмы для надёжной передачи в таком канале. В общем случае глазок у вас будет полностью закрыт и никакие мощнейшие коды с мягким входом не смогут этого исправить, и более высокая скорость только усугубляет проблему. _ Далее получается, что от Si4463 требуется только квадратурный трансивер, к которому нет нормального доступа, Si4463 не нужен. _ Какие следующие шаги должны быть? Что ли так и ещё многое другое. Негодный, грубый способ изучения и разработки обработки цифровых сигналов средств связи, не видно нюансов, в лучшем случае потери небрежной реализации перекроют выигрыш от кодов с мягки входом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 11 марта Опубликовано 11 марта (изменено) · Жалоба 1 hour ago, petrov said: Модель канала и алгоритмы для надёжной передачи в таком канале. В общем случае глазок у вас будет полностью закрыт и никакие мощнейшие коды с мягким входом не смогут этого исправить, и более высокая скорость только усугубляет проблему. Почитал ваши сообщения на другом форуме: https://www.radioscanner.ru/forum/topic42854.html Вы постоянно занимаетесь тем, что из мухи раздуваете слона. Одни заумные рассуждения и только. Практического толку от таких рассуждений - ноль. Как говорится, у одного хобби пытаться что-то делать. А у другого - гнуть пальцы и демонстрировать свою крутость. Изменено 11 марта пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться