|
DBPSK, Демодуляция и детектирование |
|
|
|
Jun 19 2012, 05:45
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Добрго времени суток всем. Прошу помощи у специалистов по ЦОС. Имеется следующая задача: необходимо демодулировать сигнал с дифференциальной фазовой модуляцией. Скорость передачи данных 64 кбит/c. Структурная схема приемной части (точнее той части приемника, которая производит цифровую обработку сигнала) приведена ниже. Сигнал ПЧ (в моем случае fz=10,7 МГц) оцифровывается с частотой дискретизации fd = 8,56 МГц. Затем оцифрованный сигнал ПЧ-подается на синфазно-квадратурный смеситель и переносится на нулевую частоту. Далее осуществляется канальная фильтрация и децимация при помощи CIC-фильтра(кол-во каскадов 6, дифф. задержка 1, коэфф. прореживания 32). На выходе данного фильтра имеем уже частоту дискретизации соответственно 267,5 кГц. За CIC-фильтром стоит компенсирующий КИХ-фильтр который осуществляет прореживание еще в два раза. Таким образом полезный сигнал подается на детектор с частотой дискретизации 133,75 кГц. Детектор сравнивает текущий отсчет символа с предыдущим. Знак комплексной экспоненты и есть исходная информационная последовательность. В принципе данный алгоритм работает, но существуют определенные зоны информационной последовательности, где происходит ложная инверсия принятого символа (бита). Хотелось бы разобраться в причинах некоректной работы данной схемы. Есть несколько догадок что может вызывать такой эффект, но может быть кто-то сталкивался уже с подобным. Снятые осциллограммы исходной и принятой последовательности приведены ниже. Заранее благодарен.
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 19 2012, 08:02
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(litv @ Jun 19 2012, 10:58)  снято на реальном устройстве? Подстройка частоты нужна. Да снималось, на реальном устройстве. Методика следующая: кодируемая последовательность подавалась на внешний модулирующий вход генератора. Несущая частота генератора 10,7 МГц. С генератора сигнал оцифровывался и загонялся в ПЛИС. Цитата(Serg76 @ Jun 19 2012, 11:51)  Схема диффдекодера неправильная А в чем ошибка? Данный детектор был взят из книги Скляра. Своего ничего не мудрил. Единственное что я не стал делать, это усредняющий интегратор. Причина по которой я не стал этого делать: в моем случае частота отсчетов сигнала поступающего на детектор чуть больше чем скорость передачи сообщения 2*64 кбит/с. Есть ли смысл усреднять два отсчета. Одна из причин кстати и может заключаться в отсутствии интегратора и слишком высоком коэфф. децимации? Так ли это?
|
|
|
|
|
Jun 19 2012, 08:19
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 19 2012, 12:12)  Зачем Вам для бинарной PSK две задержки в каждом подканале? Если я все правильно понял, что не факт, то детектор DBPSK - работает след. образом: текущий сивол, именно символ а не отсчет, сравнивается с предыдущим. На основе этого сравнения и происходит принятие решения. Так как частота отсчетов составляет 133,75 кГц, а символьная скорость 64 кбит/с, то я соответсвенно и делаю задержку на два такта. Если это не так, то прошу Вас объяснить мне данный момент. Спасибо.
|
|
|
|
|
Jun 19 2012, 09:04
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
ха, ну тогда все ясно. Как же Вы получите правильный поток, если у вас дробное число отсчетов на символ? Понятное дело, что через определенное число отсчетов у вас накопится ошибка по фазе тактов и получится сбой в декодируемом потоке. Меняйте интерполятор или добавляйте еще один, чтобы получить целое число отсчетов на символ. Кроме того, оценку надо производить не по одному отсчету в символе, а по всем, таким образом чтобы на решающее устройство поступала уже интегральная оценка энергии символа, а не ее часть, чтобы не терять в помехоустойчивости.
|
|
|
|
|
Jun 19 2012, 09:27
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 19 2012, 13:04)  ха, ну тогда все ясно. Как же Вы получите правильный поток, если у вас дробное число отсчетов на символ? Понятное дело, что через определенное число отсчетов у вас накопится ошибка по фазе тактов и получится сбой в декодируемом потоке. Меняйте интерполятор или добавляйте еще один, чтобы получить целое число отсчетов на символ. Кроме того, оценку надо производить не по одному отсчету в символе, а по всем, таким образом чтобы на решающее устройство поступала уже интегральная оценка энергии символа, а не ее часть, чтобы не терять в помехоустойчивости. Спасибо Вам большое за ответ. Не подскижите еще вот какой момент? Если я сделаю коэффициент прореживания скажем 16. Тогда на детектор будут поступать данные с частотой отсчетов 535 кГц. Получается около 8 отсчетов на символ. Затем производить устреднение по 8 отсчетам. Или же необходимо добиваться целой кратности отсчетов на символ? Спасибо.
|
|
|
|
|
Jun 19 2012, 10:07
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 19 2012, 13:39)  Только целое число отсчетов на символ. И даже при таком условии утечки интерполятора не избежать, с чем и призвана бороться ФАПЧ по тактам. Спасибо Вам. Да видимо придется делать дециматор-интерполятор и полностью передсчитывать компенсирующий фильтр.
|
|
|
|
|
Jun 29 2012, 06:18
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 19 2012, 14:18)  так как у Вас уже имеется КИХ фильтр, я бы посоветовал интерполятор сделать на нем в виде полифазной структуры. Добрый день. Читая литературу по вопросу децимации/интерполяции, приминительно к своей задачи имеется следующее соображение: исходную частоту дискретизации 8,56 МГц, проредить ИГФ фильтром с коэфф. 32. Затем осуществит передескритезацию при помощи интерполятора Фарроу третьего порядка, получив таким образом новую частоту дискретизации 512 кГц, которая будет строго кратна 8-отсчетам на информационный символ. Верен ли ход моих рассуждений, или я слишком усложняю решение своей задачи???
|
|
|
|
|
Jun 29 2012, 06:31
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(PavPro @ Jun 29 2012, 09:18)  Добрый день. Читая литературу по вопросу децимации/интерполяции, приминительно к своей задачи имеется следующее соображение: исходную частоту дискретизации 8,56 МГц, проредить ИГФ фильтром с коэфф. 32. Затем осуществит передескритезацию при помощи интерполятора Фарроу третьего порядка, получив таким образом новую частоту дискретизации 512 кГц, которая будет строго кратна 8-отсчетам на информационный символ. Верен ли ход моих рассуждений, или я слишком усложняю решение своей задачи??? может проще будет сначала децимировать в 16 раз до 535 кГц (правда не понял, что такое ИГФ????), а затем уже структурой Фарроу до 512 кГц?
|
|
|
|
|
Jun 29 2012, 06:48
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 29 2012, 10:31)  может проще будет сначала децимировать в 16 раз до 535 кГц (правда не понял, что такое ИГФ????), а затем уже структурой Фарроу до 512 кГц? ИГФ - интегратор-гребенчатый фильтр. (То же самое что и CIC-в западной терминологии).
|
|
|
|
|
Jun 29 2012, 06:54
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(petrov @ Jun 29 2012, 10:46)  может сразу до 64 или 128? Извините, если я правильно понял то Вы предлагаете, на выходе Фарроу получить частоту отсчетов 64 кГц, (т. е. в моем случае один отсчет на символ)? Мне кажется так будет не совсем верно. Если я буду иметь один отсчет на сивмвол, то я сильно буду проигровать в чувствительности. У меня была задумка усреднять восемь отсчетов и уже по результатам усреднения принимать решение о принятом символе. Извините если, я что-то не так высказал. В этих вопросах пока не спец.
|
|
|
|
|
Jun 29 2012, 07:11
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 29 2012, 11:04)  2 PavPro Решающее устройство можно построить и при одном отсчете на символ, другой вопрос как Вы собираетесь проектировать остальные узлы демодулятора: ФАПЧи по тактам и несущей, в этом случае 1 sps может быть недостаточно. Вот и я о том же, поэтому задумка такая: 8-отсчетов на символ усреднить при помощи интегратора, а затем уже накопленную сумму подавать на решающее устройство с частотой 64 кГц. Детектор будет сравнивать предыдущию сумму с текущей и на основе этого сравнения (скажем знака) принимать решение о самом символе. Хотя может я и ошибаюсь?
|
|
|
|
|
Jun 29 2012, 07:37
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(petrov @ Jun 29 2012, 11:23)  Вы понимаете что эти 64 кГц должна быть частота передатчика а не приёмника, иначе у вас постоянно будут символы пропускаться или лишние появляться? На приёме вы должны восстанавливать символьную частоту передатчика или кратную ей. Да совершенно верно, 64 кГц - частота данных идущих на модулятор передающего устройства. Видимо в моих рассуждениях что-то не так? Попробую объяснить еще раз. Приемник принимает исходную несущую частоту и преобразует ее на ПЧ=10,7 МГц. Данная ПЧ оцифровывается с fдискретизации 8,56 МГц. Затем оцифрованный сигнал я преношу на 0 ПЧ. И на нулевой ПЧ пытаюсь восстановить исходную информационную последовательность при помощи описанного выше алгоритма. Символьный синхронизатор это уже следующий этап. Пока моя задача просто восстановить исходную последовательность. Прошу меня поправить если я что-то коряво изложил.
|
|
|
|
|
Jun 29 2012, 07:50
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 29 2012, 11:40)  Ну а как Вы ее восстановите, Вы даже не будете знать границы начала и/или конца символов? Накапливая 8 отсчетов на символ, и сравнивая текущее значение суммы с предыдущим, можно как я полагаю сделать вывод о том, принимается символ с той же фазой что и предыдущий, или произошла инверсия фазы. Осциллограмы которые приведены в начале поста, были получены именно так. Причем эти осцилограммы получены с реального макета, а не методом моделирования. Может Вы мне, укажите что конкретно в моих рассуждениях не так?
|
|
|
|
|
Jun 29 2012, 09:25
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 29 2012, 12:15)  Каким образом решающее устройство будет знать с какого момента (отсчета) начинать накопление? За это и отвечает тактовая синхронизация, кроме того, еще надо устранить начальное смещение фазы во всех отсчетах. На структурной схеме DBPSK-модулятора ( http://dspsys.org/dsparticles/26-dbpskdemod) видно, что схема символьной синхронизации стоит после детектора. Т.е. символьный синхронизатор осуществляет временную привязку каждого символа, после того как восстановлена двоичная последовательность (некий поток нулей и единиц). Кстати насколько я понимаю, одна из задач скремблирования, заключается в том чтобы избегать длинных последовательностей нулей или единиц при которых сбивается работа символьного синхронизатора. Как я могу восстановить синхронизацию не имея восстановленной двоичной последовательности мне непонятно? Приемник ведь ничего незнает о текущем символе. Он может быть даже включенным в момент середины передачи какого -либо символа.
|
|
|
|
|
Jun 29 2012, 09:40
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(PavPro @ Jun 29 2012, 12:25)  На структурной схеме DBPSK-модулятора ( http://dspsys.org/dsparticles/26-dbpskdemod) видно, что схема символьной синхронизации стоит после детектора. Т.е. символьный синхронизатор осуществляет временную привязку каждого символа, после того как восстановлена двоичная последовательность (некий поток нулей и единиц). По-моему, эта схема синхронизации не имеет никакого отношения к системе тактовой синхронизации демодулятора. На самом деле при потактной работе демодулятора все системы тоже вырабатывают свои решения и ошибки на каждом символьном интервале. Другой вопрос, что системы могут работать независимо (автономно) друг от друга и для подстройки использовать каждый свой детектор. Цитата(PavPro @ Jun 29 2012, 12:25)  Кстати насколько я понимаю, одна из задач скремблирования, заключается в том чтобы избегать длинных последовательностей нулей или единиц при которых сбивается работа символьного синхронизатора. да, это действительно так. Цитата(PavPro @ Jun 29 2012, 12:25)  Как я могу восстановить синхронизацию не имея восстановленной двоичной последовательности мне непонятно? Приемник ведь ничего незнает о текущем символе. Он может быть даже включенным в момент середины передачи какого -либо символа. Ну разные есть схемы, некоторые из них используют обратную связь по решению (feedback), некоторые используют так называемую связь "вперед" (feedforward).
|
|
|
|
|
Jun 29 2012, 09:54
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(PavPro @ Jun 29 2012, 13:25)  На структурной схеме DBPSK-модулятора ( http://dspsys.org/dsparticles/26-dbpskdemod) видно, что схема символьной синхронизации стоит после детектора. Т.е. символьный синхронизатор осуществляет временную привязку каждого символа, после того как восстановлена двоичная последовательность (некий поток нулей и единиц). Ну достаточно безграмотная схема в статье. Цитата(PavPro @ Jun 29 2012, 13:25)  Как я могу восстановить синхронизацию не имея восстановленной двоичной последовательности мне непонятно? Вот как раз этим и нужно заняться, всё с точность до наоборот чтобы восстановить последовательность нужна схема символьной синхронизации. Про схему Гарднера(Gardner) почитайте например. Ориентируйтесь и на англоязычные статьи. Сделать интерполятор Фарроу и не управлять им для точной синхронизации просто бестолково как-то. Почитайте ещё про согласованную фильтрацию, про фильтр с частотной характеристикой корень из приподнятого косинуса.
|
|
|
|
|
Jun 29 2012, 10:10
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(Serg76 @ Jun 29 2012, 13:40)  По-моему, эта схема синхронизации не имеет никакого отношения к системе тактовой синхронизации демодулятора. На самом деле при потактной работе демодулятора все системы тоже вырабатывают свои решения и ошибки на каждом символьном интервале. Другой вопрос, что системы могут работать независимо (автономно) друг от друга и для подстройки использовать каждый свой детектор.
да, это действительно так.
Ну разные есть схемы, некоторые из них используют обратную связь по решению (feedback), некоторые используют так называемую связь "вперед" (feedforward). Как я понимаю, в схеме приведенной выше используется символьная синхронизация осуществляющая, обратную связь по решению? Именно такой синхронизатор я и собираюсь использовать для своей задачи. Т.е. синхронизатор который работает по фронтам восттановленной последовательности. Есть еще несколько вопросов по интерполятору Фарроу cхема которого взята http://www.dsplib.ru/content/farrow/farrow.html:1. Правильно ли я понял, что все вычисления внутри фильтра проводятся с исходной частотой дискретизации входного сигнала y(n); 2. На выходе крайнего сумматора должен стоять регистр работающий уже на частоте которая нужна пользователю. 3. Величина x - константой или она также динамически изменяется? С x (заначение по времени) больше всего непоняток. 4. Пока никак немогу сообразить как эта величина будет фигурировать в моем случае. Цитата(petrov @ Jun 29 2012, 13:54)  Ну достаточно безграмотная схема в статье.
Вот как раз этим и нужно заняться, всё с точность до наоборот чтобы восстановить последовательность нужна схема символьной синхронизации. Про схему Гарднера(Gardner) почитайте например. Ориентируйтесь и на англоязычные статьи. Сделать интерполятор Фарроу и не управлять им для точной синхронизации просто бестолково как-то.
Почитайте ещё про согласованную фильтрацию, про фильтр с частотной характеристикой корень из приподнятого косинуса. Да, спасибо Вам большое буду разбираться. Надо взять таймаут.
|
|
|
|
|
Jun 29 2012, 10:14
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(PavPro @ Jun 29 2012, 13:57)  1. Правильно ли я понял, что все вычисления внутри фильтра проводятся с исходной частотой дискретизации входного сигнала y(n);
2. На выходе крайнего сумматора должен стоять регистр работающий уже на частоте которая нужна пользователю. Вычисления нужно проводить на выходной частоте, на входной только линия задержки с отводами работает. Цитата(PavPro @ Jun 29 2012, 13:57)  3. Величина x - константой или она также динамически изменяется? С x (заначение по времени) больше всего непоняток. 4. Пока никак немогу сообразить как эта величина будет фигурировать в моем случае. Например по обратной связи с детектора временной ошибки Гарднера через петлевой фильтр и NCO, c NCO будет x браться. Гляньте модельки симулинковские, помогает проверено http://electronix.ru/forum/index.php?showtopic=23652
|
|
|
|
|
Jun 29 2012, 10:19
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222

|
Цитата(petrov @ Jun 29 2012, 14:14)  Вычисления нужно проводить на выходной частоте, на входной только линия задержки с отводами работает. Например по обратной связи с детектора временной ошибки Гарднера через петлевой фильтр и NCO, c NCO будет x браться. Гляньте модельки симулинковские, помогает проверено http://electronix.ru/forum/index.php?showtopic=23652Спасибо Вам большое обязательно гляну.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|