komah
Участник-
Постов
45 -
Зарегистрирован
-
Посещение
Репутация
4 ОбычныйИнформация о komah
-
Звание
Участник
Информация
-
Город
Array
Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
-
В LTE и Wimax используется SFBC - space–frequency block code. На первую антенну символы идут без изменений. На вторую - с перестановкой. K. Fazel and S. Kaiser, Multi-Carrier and Spread Spectrum Systems Second Edition
-
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
А какой нужен диапазон, чтобы не было разрывов? И что переполнилось в первом разрыве на первом рисунке? -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
На первом графике могут быть разрывы, обусловленные тремя причинами: 1. Некорректным преобразованием 7-bit signed в 8-bit signed 2. Пропуском отсчетов при считывании из буфера 3. Периодичностью арктангенса. Они явно видны. Если смущают циферки на вертикальной оси - не надо на них смотреть. Первые две причины победил ТС. Третью победил unwrap. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Убирает разрывы на графике полной фазы, возникающие из-за того, что арктангенс возвращает значения в диапазоне от -Pi до Pi. Разность мгновенных фаз между соседними отсчетами не должна превышать Pi, если она больше - добавляется или вычитается 2Pi. В данном случае (детектор ЧМ) целиком восстанавливать полную фазу не нужно, достаточно скорректировать разность фаз. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Отвечу за ТС 😉 Да, прокатит. Там ЧМ с непрерывной фазой. -
HART FSK протокол
komah ответил dips11 тема в Алгоритмы ЦОС (DSP)
Если стартовый бит - низкий уровень (0), то проблем никаких. Преамбула дает 1 на выходе RxD, подключенное устройство ждет стартового бита, пока его нет - никакие биты не считает. 11 бит - это, очевидно, без преамбулы. 5 и более преамбул вида FF - это ведь больше 11? -
FFT + FIR на ядре CORTEX M4
komah ответил TAutomatic тема в Алгоритмы ЦОС (DSP)
Если фильтр реализован правильно, то новых спектральных составляющих он добавлять не должен. Думаю, дело не в нем. Код на Си, можно просто просто проверить на ПК, с модельным сигналом. Самый главный вопрос - соотношение между частотой сигнала и частотой дискретизации. Ну и посмотреть, нет ли ограничения при оцифровке - амплитуда слишком большая, опорное напряжение неправильное... -
FFT + FIR на ядре CORTEX M4
komah ответил TAutomatic тема в Алгоритмы ЦОС (DSP)
Это модуляция или все-таки сумма двух сигналов, один из которых с очень низкой частотой? Если частота сигнала Fs на входе АЦП превышает Fd/2, цифровой фильтр уже не поможет. Если сигнал узкополосный (чистый синус), то его можно и с меньшей, чем Fs*2 частотой оцифровывать (вторая зона Найквиста и т.д.). Но если частота сигнала близка к Fd, то разностная частота попадет в первую зону и соответственно в спектр. КИХ фильтр это ФНЧ? Вот он эту частоту и приподнял. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Там уже и деления никакого нет. Информация об амплитуде отсутствует, делить на 1 не имеет смысла. Фазовый сдвиг за счет разности времени прохождения сигнала на частоте манипуляции явно меньше погрешности взятия отсчетов в получившейся схеме. Можно сразу битовые потоки суммировать. Главное, в нечетном количестве. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Так-то не должны быть больше. Главное, чтобы динамического диапазона хватало. А это про мягкие решения для многоуровневой PAM. Весь диапазон выходных напряжений синхронизатора нужно разделить на области, соответствующие принятым символам. И нормировать значение относительно размера этих областей. Но если символ соответствует двум и более битам, а декодеру нужно мягкое решение для каждого бита, придется подумать. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Это про нормировку: Мягкие решения для (G)FSK2 - это амплитуда на выходе синхронизатора. Если нужны целочисленные - умножьте на максимальное значение и округлите. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
1. Амплитуду входного сигнала для синхронизатора к 1 подтяните. Я писал, как правильно нормировать. 2. Попробуйте оценить, сколько в среднем отсчетов на бит приходится. Может, там не целое число. Просто поделите число полученных отсчетов на число бит в пакете. 3. В настройках синхронизатора loop bandwidth я бы для начала в 0,0001 поставил. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Сомнительная информация. GNU Radio генерит скрипт на питоне на основе блок-схемы. Но сами библиотеки в основном на с++. Код открыт и естественно его можно использовать. Но это не самый простой вариант, особенно для переноса на слабое железо. Зачастую выгоднее просто разобраться с алгоритмом (посмотрев его в том же GNU Radio) и реализовать уже на основе своих базовых элементов. Насчет фильтров - в Матлабе есть инструмент для их расчета. Можно им пользоваться, если характеристика фильтра предполагается неизменной. Просто скопировать оттуда коэффициенты в код на Си. Не знаю, какого качества там HDL, думаю примерно как Cи. То есть, посмотреть и забыть. Хотя, понемногу система совершенствуется, в языке уже вполне себе типизация данных появилась. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Выше petrov уже в основном ответил, добавлю от себя Я разделил схему на два интерполятора. Задача первого - из имеющихся, например, 12,5 отсчета на символ, получить целое число, например, 4. Без привязки к моменту тактирования. Второй интерполятор уже должен вычислить значение между отсчетами в оптимальный момент. Мне так удобнее, но в общем это не лучший вариант и я даже знаю, почему. До первого интерполятора. Если у него на входе 1,2 отсчета на символ, делать из них 10 не имеет смысла. С мгновенной частотой. Еще точнее, с сигналом PAM с выхода частотного дискриминатора. Там еще несколько статей в продолжение - конкретные варианты TED рассматриваются. С двумя - это алгоритм на основе максимума правдоподобия. Теоретически, наверное, оптимальный. Для определенных условий. В статье нарисована глазковая диаграмма. Наша задача - взять отсчет в точке максимального раскрытия этого глаза. И это не зависит от вида модуляции. Не применяя схем по стабилизации тактовой, мы к концу пакета (а может и раньше) уползем на границу между символами. Если при оптимальной синхронизации и почти без шумов в вашем сумматоре накапливается значение около 12, то сместившись на 6 отсчетов мы рискуем получить 0. Как насчет помех? Кстати, декодируя на глаз, тактовую тоже приходится восстанавливать. И у вас это делается - по переходам через 0. out = (1.0-alpha)*out + alpha*current_sample; alpha обычно 0,0001..0,001 Ну, коэффициент децимаиции 8,3 : 1. Я хотел обратить внимание, что синхронизатор может выдавать отсчеты асинхронно, главное, чтобы количество было правильным. Визуальные перепады, как и пик импульса, не всегда легко найти алгоритмически. К глазам нейронка более мощная подключена. Лучше какой-нибудь готовой библиотекой пользоваться. Например, liquid-dsp. -
Вытащить биты из фазового демодулятора
komah ответил repstosw тема в Алгоритмы ЦОС (DSP)
Вот хорошее начало: https://wirelesspi.com/phase-locked-loop-pll-for-symbol-timing-recovery/ Без восстановления тактовой все остальное не имеет смысла. А в учебниках про это пишут мало и неправильно. А можно записать сигнал передатчика свистком (RTL-SDR) и демодулировать полностью. И сравнивать не только программные реализации, но и условно железную (в трансивере).