|
Программный демодулятор, помогите новичку |
|
|
|
Apr 26 2012, 15:58
|
Частый гость
Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584
|
Цитата(Serg76 @ Apr 26 2012, 17:58) неплохое такое соотношение что за канал, если не секрет, и почему программная реализация? Происхождение сигнала мне точно не известно. Но параметры сигнала точны. Цитата(Anton1990 @ Apr 26 2012, 18:56) Происхождение сигнала мне точно не известно. Но параметры сигнала точны. Программная реализация потому, что сигнал уже оцифрован, но больше требуется просто научиться.
|
|
|
|
|
Apr 26 2012, 17:03
|
Профессионал
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775
|
Цитата(Anton1990 @ Apr 26 2012, 18:58) Происхождение сигнала мне точно не известно. Но параметры сигнала точны. Демодулятор разрабатывается под конкретный канал. Самое простое это AWGN, есть смысл начать пробовать с него, если конечно ваш сигнал приближен к нему. Да и скорость в 2,5 Мсим/сек довольно проблематично будет получить. Цитата(Anton1990 @ Apr 26 2012, 17:51) Думаю после передискретизатора необходим ФНЧ (а какой? Одинаковый в обоих каналах?). Фильтровать надо в любом случае после передискретизации, фильтры в квадратурных каналах одинаковые.
|
|
|
|
|
Apr 27 2012, 09:49
|
Эксперт
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183
|
QUOTE (Anton1990 @ Apr 26 2012, 18:51) Собственно взялся написать программный демодулятор. Есть файл с оцифрованными квадратурами I, Q. Частота дискретизации 90 МГц. Символьная скорость сигнала 2,5 МГц, сигнал QPSK, с/ш 40 дБ. Программно реализовал примитивный передискретизатор (алгоритм билинейной интерполяции). Я так понимаю после этого на сигнальном созвездии я должен уведеть круг (не полность удалена несущая), но я вижу только подобие круга (слишком зашумлен, в том числе в центре круга). Думаю после передискретизатора необходим ФНЧ (а какой? Одинаковый в обоих каналах?). Прошу сильно не пинать за корявые вопросы? Если можно опишите поподробней что за чем делать, и что я должен видеть на сигнальном созвездии на промежуточных этапах (дабы контролировать провильность работы). Заранее спасибо за ответы. Чтобы увидеть круг нужно выборку делать в правильных точках. Другими словами нужно восстановить фазу символьной частоты (да и то,если Вам абсолютно точно известна её частота, обычно для непрерывного сигнала ещё требуется и её подстройка, но на каком-то ограниченом участке сойдут априорные 2.5). Если брать выборку где попало Вы и увидите что попало... А в вашем сообщении как-то это не прозвучало, что символьная фаза восстановлена с достаточной точностью. Только если выборку брать там где надо, появится вращающееся созвездие. После точной настройки частоты несущей - действительно вращение прекратится и получится демодулятор При моделировании на компе Вы можете просто подвигать фазу выборки и перебором выбрать тот вид где есть круг, а в центре наоборот сигнал отсутствует.
|
|
|
|
|
Apr 27 2012, 15:09
|
Частый гость
Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584
|
Цитата(fontp @ Apr 27 2012, 12:49) Чтобы увидеть круг нужно выборку делать в правильных точках. Другими словами нужно восстановить фазу символьной частоты (да и то,если Вам абсолютно точно известна её частота, обычно для непрерывного сигнала ещё требуется и её подстройка, но на каком-то ограниченом участке сойдут априорные 2.5). Если брать выборку где попало Вы и увидите что попало... А в вашем сообщении как-то это не прозвучало, что символьная фаза восстановлена с достаточной точностью. Только если выборку брать там где надо, появится вращающееся созвездие. После точной настройки частоты несущей - действительно вращение прекратится и получится демодулятор
При моделировании на компе Вы можете просто подвигать фазу выборки и перебором выбрать тот вид где есть круг, а в центре наоборот сигнал отсутствует. Сигнал точно на нулевой частоте. Параметры сигнала точно верны. Данные обрабатываю пачками по 2048 отсчета. 2048 отсчета на 90 МГерцах, мне требуется частота 2,5 МГц, следовательно, я должен весь интревал отсчетов разбить на 2,5 * 2048/90=56,88888 отсчетов? пробую 56 или 57 отсчетов. Ни втом ни в другом случае "хорошего" круга не получаю. Так и должно быть или я круги должен видеть только после фильтрации?
|
|
|
|
|
Apr 27 2012, 17:13
|
Профессионал
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775
|
Цитата(Anton1990 @ Apr 27 2012, 18:09) Сигнал точно на нулевой частоте. Параметры сигнала точно верны. Данные обрабатываю пачками по 2048 отсчета. 2048 отсчета на 90 МГерцах, мне требуется частота 2,5 МГц, следовательно, я должен весь интревал отсчетов разбить на 2,5 * 2048/90=56,88888 отсчетов? выше Вам уже писали: ...(да и то,если Вам абсолютно точно известна её частота, обычно для непрерывного сигнала ещё требуется и её подстройка...Следовательно, кроме самого ресамплера, требуется еще и контур ФАПЧ, который будет подстраивать фазу тактов в ресамплере. И еще, Вы не должны обращать внимания как в демодулятор поступают данные, отсчетами или пачками, причем эти пачки зачастую могут быть и разной длины, алгоритм работы демодулятора строится, как правило, потактно, т.е. все решения и ошибки в системах вырабатываются тоже на каждом символьном интервале. могут быть, конечно, и исключения какие-то, но в целом это так.
Сообщение отредактировал Serg76 - Apr 27 2012, 17:14
|
|
|
|
|
Apr 27 2012, 17:16
|
Эксперт
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183
|
QUOTE (Anton1990 @ Apr 27 2012, 19:09) Сигнал точно на нулевой частоте. Параметры сигнала точно верны. Данные обрабатываю пачками по 2048 отсчета. 2048 отсчета на 90 МГерцах, мне требуется частота 2,5 МГц, следовательно, я должен весь интревал отсчетов разбить на 2,5 * 2048/90=56,88888 отсчетов? пробую 56 или 57 отсчетов. Ни втом ни в другом случае "хорошего" круга не получаю. Так и должно быть или я круги должен видеть только после фильтрации? Зачем 56? 90/2.5=36. 36 отсчетов символьный интервал. Но вы можете взять выборки 0, 36, 72, 108... А можете взять 10, 46, 82, 118.... Только при правильной фазировании будет круг. Более того даже "точно верные" частоты отличаются хотя бы на 10 в минус седьмой. А это означает, что даже правильная на малом интервале фаза со временем будет уползать. Т.е. в непрерывных модемах нужно подстраивать не только фазу, но и частоту символьного тактирования. Без подстройки частоты (но в любом случае с подстройкой символьной фазы) работают только пакетные модемы, где вся синхронизация повторяется периодически на интервале пакета Фильтрация должна быть просто чтобы подавить внеполосный шум. Отфильтруйте для начала прямоугольным фильтром, по сравнению с оптимальным разница будет небольшая. Однако внеполосные шумы у вас могут превышать шумы в полосе максимум в 36 раз (примерно 30дб), а это значит, что при ваших 40 дб Вы размытый шумом круг должны увидеть даже без всякой фильтрации
|
|
|
|
|
Apr 27 2012, 18:02
|
Знающий
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730
|
Цитата fontp: Фильтрация должна быть просто чтобы подавить внеполосный шум. У топикстартера и так снр 40 дб. Чего там подавлять?
|
|
|
|
|
Apr 27 2012, 18:29
|
Знающий
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730
|
Цитата Serg76: фильтровать все-таки необходимо Куда более необходимо ознакомиться с книжками типа прокиса/скляра/... А уж потом открывать глубокомысленные топики на електрониксе... На радость телепатам...
|
|
|
|
|
Apr 30 2012, 11:01
|
Частый гость
Группа: Участник
Сообщений: 112
Регистрация: 27-12-08
Пользователь №: 42 786
|
Алгоритм программной демодуляции сигналов QPSK: 1. Если сигнал записан на промежуточной частоте, необходимо выполнить снос сигнала на нулевую частоту путем умножения отсчетов сигнала на комплексную гармонику промежуточной частоты; 2. Осуществить передискретизацию сигнала таким образом, чтобы новая частота дискретизации была кратна тактовой частоте. Обычно для QPSK берут 4 или 8 отсчетов на посылку, чем больше, тем лучше, но вычислительно затратнее. При передискретизации не забыть про антиалайзинговый фильтр; 3. Осуществить согласованную фильтрацию полученного сигнала, обычно согласованным фильтром является тот же фильтр, который используется на передающей стороне (например, если на передающей стороне использовался фильтр Root Raised Cosine с коэффициентом альфа=X, то и на приемной стороне должен быть использован такой же фильтр). Согласованная фильтрация в конечном итоге приводит к увеличению соотношения сигнал/шум. Если фильтр неизвестен, то можно рассчитать ФНЧ, подходящий по полосе и имеющий достаточную величину подавления в полосе задерживания. Фильтр применяется к каждой квадратурной составляющей независимо. При скорости 2.5 Мбод полоса фильтра должна быть чуть больше половины скорости передачи, в данном случае, около 1.3 МГц. 4. Выполняется грубая оценка частотной расстройки. В данном случае необходимо возвести сигнал в 4-ю степень путем комплексного умножения отсчетов сигналов на самих себя и затем аналогично сами на себя умножаются полученные отсчеты. Далее вычисляется амплитудный спектр свернутого таким образом сигнала, если посмотреть на рассчитанный спектр глазами, то будут явно видны 3 гармоники: центральная (наиболее мощная) будет указывать на частотную расстройку сигнала, а расстояние от центральной до любой из боковых укажет на бодовую скорость. 5. Выполняется компенсация частотной расстройки (см. пункт 1), отстройка должна компенсироваться до согласованной фильтрации; 6. Пункт 4 периодически повторяется, для предотвращения сбоя синхронизации оценка умножается на некоторый коэффициент (например, 0.1) с целью итеративного приближения к истинному значению частотной расстройки; 7. Из сигнала с N отсчетов на посылку необходимо выбрать отсчеты в позициях, наиболее близких к идеальным, и, таким образом, свести сигнал к 1-му отсчету на посылку: 1). Выбирается интервал, на котором оценивается позиция точки дискретизации, наиболее близкой к идеальной (в англоязычной литературе эта точка называется Maximum Effective Point или MEP). Если брать отсчеты в идеальных точках, то сигнал/шум будет максимальным, длина интервала определяется нестабильностью опорных генераторов передатчика/приемника (чем стабильней, тем меньше интервал) и соотношением сигнал/шум (чем больше, тем меньше требуется данных для оценки); 2). Выбранный интервал разбивается на подынтервалы с длиной, соответствующей количеству отсчетов на посылку (например, 4 отсчета); 3). Из каждого интервала выбираются 1-ые отсчеты, вычисляется их амплитуда (модули векторов, можно брать квадраты модулей), значения из всех интервалов суммируются; 4). Аналогичные действия выполняются для 2-ых, 3-их, 4-ых отсчетов; 5). В результате для сигнала 4 отсчета на посылку получим 4 значения, если из них построить гистограмму, то будет виден столбец с максимальным значением, а столбцы справа/слева от него будут иметь уменьшающуюся амплитуду. Столбец с максимальной амплитудой соответствует точке оцифровки, наиболее близкой к идеальной (если точка будет соотвествовать идеальной, то амплитуды "плеч" будут одинаковы); 6). Приводим сигнал к 1-му отсчету на посылку путем выборки MEP значений (если максимальную амплитуду имел столбец для каждого 2-го (из 4-ых) отсчета, то выбираем каждый 2-ой). 8. К этому этапу имеем выборку 1 отсчет на посылку с максимальным соотношением сигнал/шум с удаленной частотной расстройкой. Теперь необходимо удалить фазовую расстройку, выполняется это с помощью системы фазовой автоподстройки частоты (ФАПЧ): 1). Начальная фаза ошибки равна 0; 2). Первый отсчет сигнала умножается на вектор с нулевым аргументом и попадает на слайкер (slicer - нож для резки пиццы); 3). Слайкер определяет ближайшую точку сигнального созвездия к принятому отсчету (для QPSK по знаку синфазной и квадратурной составляющих) и вычисляет фазовую ошибку (разница фаз ближайшей точки сигнального созвездия и фазы принятого вектора); 4). Рассчитанная фазовая ошибка умножается на некоторый коэффициент К=0.01...0.001, который определяет полосы захвата и удержания ФАПЧ и аккумулируется в накопленной фазовой ошибке; 5). Рассчитывается вектор ошибки (аргумент - накопленная фазовая ошибка, амплитуда 1); 6). 2-ой отсчет принятого сигнала умножается на комплексно-сопряженный вектор ошибки (для комплексного сопряжения необходимо поменять знак мнимой составляющей на противоположный); 7). Далее повторяем пункты 3-6 для всех принимаемых отсчетов. Как только система ФАПЧ захватит фазовую расстройку сигнала, на выходе будет получен сигнал 1 отсчет на посылку с точками, расположенными вокруг точек сигнального созвездия, "размытость" пятен будет определяться соотношением сигнал/шум.
Собственно демодулятор как устройство оценки первичного электрического сигнала на этом этапе заканчивает свое функционирование. Далее для сигнала QPSK необходимо устранить фазовую неоднозначность (в общем случае демодулятор не может точно восстановить фазу сигнала на передающей стороне и в процессе демодуляции полученный сигнал может иметь ошибку 90, 180 или 270 градусов). Если используется дифференциальный декодер, то исходный битовый поток будет восстановлен им, в противном случае должна быть определена и устранена фазовая неоднозначность: 1). По имеющейся в сигнале известной синхропоследовательности; 2). По попыткам декодировать демодулированный поток с использованием различных фазовых неоднозначностей. Фазовую неоднозначность можно устранять путем перекодировки битового потока.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|