Як виконати відновлення фази несучої у програмному забезпеченні?


13

Які варіанти відновлення фази сигналу BPSK в програмному забезпеченні? Єдині ресурси, які я можу знайти в Інтернеті, містять схеми - начебто, ніхто не бажає пояснювати це людям, незнайомим з аналоговими схемами.

Мені б хотілося пояснити, як теоретично працює відновлення оператора, і я також люблю приклади псевдокоду чи коду.


Ми зазвичай не надаємо приклади коду, особливо для чогось такого складного, як демодулятор BPSK.
Джим Клей

1
Як вказував JimClay, ви, швидше за все, не знайдете когось з достатньо часу, щоб надати повний вихідний код для реалізації демодулятора. Однак механізм створення реалізації повинен бути легким, якщо ви розумієте поняття. Взагалі, приймач програмного забезпечення має подібну структуру до відповідної апаратної техніки (наприклад, синхронізатор на основі нелінійності подачі або підхід, заснований на PLL на основі зворотного зв'язку). Чи була у вас конкретна топологія, яку ви планували націлити?
Джейсон R

Дякуємо за ваші коментарі @JimClay та JasonR - я не хотів просити робочий вихідний код. Я оновив питання, щоб бути більш конкретним: я просто шукаю будь-яке пояснення, яке не передбачає розуміння аналогових схем і схем.
Кіт

Відповіді:


25

Щоб демодулювати сигнал фазового зсуву, з якого BPSK є найпростішим, вам потрібно відновити несучу частоту, фазу та символи часу.

Сигнали про розриви Деякі сигнали є бурхливими і надають відому послідовність даних, яку називають преамбулою або серединою амбла (залежно від того, відображається вона на початку або середині зйомки). Демодулятори можуть використовувати відповідний фільтр, який "шукає" відому послідовність даних, і використовувати його для визначення частоти, фази і часу синхронізації. Вони роблять це під час кожного вибуху і не потрібно заважати "дрейфу" (поступова відстань, яка накопичується між демодулятором і отриманим сигналом у міру накопичення невеликих помилок), оскільки сплески, як правило, досить короткі, щоб дрейф не був проблема.

Постійні сигнали Тоді виникають безперервні сигнали. Вони багато в чому складніші для відновлення, ніж бурхливі сигнали, оскільки зазвичай у вас немає відомої послідовності даних, яка б допомогла зафіксувати сигнал, і вам доведеться турбуватися про дрейф навіть після замикання на сигнал. Я спробую описати на високому рівні основні кроки, які зазвичай використовуються для відновлення безперервних сигналів.

Відновлення перевізника

Зазвичай ви знаєте, на якій частоті буде шуканий сигнал, або хоча б на якому наборі частот він може бути. Навіть маючи ці знання, однак, як правило, ви повинні бути в змозі виправити зміщення частоти, оскільки два передавачі не передають однакову частоту. Завжди є якась помилка. Звичайним методом є змішання частоти, на яку ви думаєте, що сигнал буде, та виправлення помилки залишкової частоти. Це можна зробити за допомогою петлі Костасаабо взявши четверту потужність даних сигналу базової смуги та шукаючи сплеск частоти. На зміщенні несучої * 4 має бути сплеск частоти (наприклад, якщо ви приймаєте FFT даних до 4-ї потужності і бачите сплеск частоти при 8300 Гц, це означає, що зсув несучої - 8300/4 = 2075 Гц). Це дуже ефективний засіб отримання початкового блокування на зміщення частоти. Ви також можете використовувати його для компенсації дрейфу, якщо ви робите це періодично. Є ще один спосіб компенсувати дрейф, якого я торкнуся пізніше.

Фаза носія

У цей момент, якщо ви побудували свої складні дані у складній площині (вісь x реальна, вісь y уявна), вона повинна виглядати приблизно так:

Поворот BPSK

ejπ

Повернутий і дзеркальний BPSK

ejω

Шумний БПСК

Після виправлення даних фази ви можете скинути уявну частину даних, оскільки вона не додає ніякої інформації.

Символ

Ви, звичайно, апріорно знаєте період символу, який ви намагаєтеся демодулювати. Якщо вам потрібно визначити період / частоту символу, ви можете зробити це аналогічно тому, як було виявлено зміщення несучої. Ви можете розподілити квадратні дані, що спричинить стрибок частоти вдвічі більше частоти символу.

Як і з носієм, вам доведеться виправити фазу (терміни) правильно, а потім компенсувати дрейф. Звичайний метод для обох цих проблем - пошук нульових перетинів. Якщо шум не поганий, він повинен перетинати нульову точку посередині переходу символу від -1 до 1 або від 1 до -1. Навіть якщо шум викликає це в середині символу, це буде не дуже часто.

Очна діаграма

Малюнок вище називають «діаграмою очей» або «очним малюнком». Це два періоди символів в ширину і має безліч символів, "складених" один над одним. Я не знаю, знайомі ви з осцилоскопами чи ні, але ви можете отримати осцилоскоп, щоб показати подібну картину. У будь-якому випадку два "X" - це символьні переходи. Високі до низьких ліній у X є, коли символ переходить від 1 до -1, а низький до високого рядків у X - це коли символ переходить від -1 до 1. Точка між ними, де рожева лінія - це оптимальне місце для вибірки даних, щоб побачити, чи є символ 1 або -1.

Цей самий прийом можна використовувати для обробки дрейфу символів. Візьміть середнє пробіг відстані від попереднього нульового переходу та наступного переходу нуля. Якщо два середніх значення приблизно однакові, все добре. Якщо одна більша за іншу, то вам потрібно зрушити туди, де ви захоплюєте зразок.

Після того, як ви відібрали символи у правильних точках, ваші точки даних повинні отримати щось подібне до класичних точок сузір'я BPSK.

Шумне сузір'я BPSK

Я сподіваюся, що це допомагає.


Щоб зробити цю чудову публікацію кращою, можливо, ви можете додати розділ відновлення годин перед тимчасовим позначенням символів?
LWZ

Я думаю, я можу знати, що ви маєте на увазі, але я не впевнений. Що конкретно ви мали на увазі?
Джим Клей

Дуже дякую! Я не думав шукати нульові переходи або будувати реальне / уявне на x / y таким чином. Я щойно дивився на графіки фази і цікавився, як все синхронізувати. Знову дякую!
Кіт

@JimClay, На початку розділу розділ " Символ часу " ви згадали, що "Ви, як правило, знаєте період символу, який ви намагаєтеся демодулювати.", І це, як правило, досягається блоком відновлення годинника, тому що зазвичай ви виграли " не надсилайте годинник разом із вашими даними. Для сигналу BPSK це легко, де ви можете просто квадратний сигнал, який видаляє дані. Потім ви дивитесь на спектр потужності, має бути пікова частота, яка називається тактовою тональністю , яка дає вам період символу.
LWZ

Додано абзац по частоті символів.
Джим Клей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.