|
Демодуляция QAM |
|
|
|
Apr 9 2008, 08:55
|
Группа: Новичок
Сообщений: 7
Регистрация: 5-06-06
Пользователь №: 17 773

|
Несущая частота должна быть известна из условия. А вот случайная блуждающая фаза нет. Её то и нужно оценить системой ФАПЧ. В журнале Радиотехника №11 2004 есть статья: "Оптимальные алгоритмы приёма сигналов квадратурной амплитудной манипуляции" В.Е. Мартиросов. стр 41. Там есть всё от уравнения до структурной схемы в терминах которые должны быть понятны электронщикам. Статью готов обсудить если будет интерес.
|
|
|
|
|
Apr 9 2008, 12:44
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(_Anatoliy @ Apr 9 2008, 08:40)  Коллеги,посоветуйте с чего начать,в этих делах пока новичёк. Как я понимаю, для демодуляции QAM нужно восстановить частоту несущей и частоту символов.Порыскав по сети нашёл несколько алгоритмов восстановления частоты несущей,в основном везде предлагается умножать текущий символьный отсчёт на предыдущий и результат пропустить через полосовой фильтр.Попробовал в матлабе,получилось,но уж сильно зашумлённый данными синус получается после умножения,для качественной фильтрации нужно ставить FIR с не менее 4096 тапов,а то и больше.Может есть какие другие алгоритмы для выделения этих частот? Какой имеено сигнал предполагается демодулировать. QAM16 или QAM256?
|
|
|
|
|
Apr 9 2008, 15:18
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Михаил_K @ Apr 9 2008, 17:40)  Тогда попробуйте схему по решению. Михаил,извините но что значит по решению? Я не зря написал в корневом посте "Коллеги,посоветуйте с чего начать,в этих делах пока новичёк." Цитата(petrov @ Apr 9 2008, 15:01)  Даже нужно, форум для этого и существует. Спасибо! Первый вопрос по модели qam_fb_gardner_symbol_farrow_sync_fb_phase_sync_agc_2007_06_18.mdl Для подстройки символьной скорости у Вас используется Gardner timing error detector. Как я понял это требует "вылавливания на приёмной стороне" периодической последовательности +- 1. В случае М-арных сигналов создаётся впечатление что такую последовательность нужно периодически вставлять в поток на передающей стороне. Так ли это?
|
|
|
|
|
Apr 10 2008, 06:43
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(_Anatoliy @ Apr 9 2008, 19:18)  Михаил,извините но что значит по решению? Я не зря написал в корневом посте "Коллеги,посоветуйте с чего начать,в этих делах пока новичёк." Спасибо! По решению значит вот что. Например для ФМ4. Для определенности считаем, что точки должны находиться на диагоналях. Поэтому берем конкретный отсчет (символ) и смотрим по его координатам, где он находится. В зависимости от его нахождения вырабатываем сигнал ошибки для системы ФАПЧ. Строго говоря, для сигнала ФМ4 нужно брать арктангенс отношения Q/I. Но для практической реализации это не удобно. Я например делал так: 1. Проводится преобразование координат (знаков координат) текущей точки так, чтобы она попала в первый квадрант. 2. Берется разность координат - это и есть ошибка. Вот кусок кода. Iin, Qin - координаты текущего символа Int_I<=Iin; Int_Q<=Qin; Int_In<=(not Iin) + '1'; Int_Qn<=(not Qin) + '1'; if (Int_I(7) = '0' and Int_Q(7) = '0') then IQuad<=Int_I; QQuad<=Int_Q; elsif (Int_I(7) = '1' and Int_Q(7) ='1') then IQuad<=Int_In; QQuad<=Int_Qn; elsif (Int_I(7) = '0' and Int_Q(7) = '1') then IQuad<=Int_Qn; QQuad<=Int_I; else IQuad<=Int_Q; QQUad<=Int_In; end if; Error<=IQuad - QQuad; Для высших порядков QAM решающее устройство будет сложнее. Кстати, если качество несущей частоты хорошее, можно пользоваться схемой костаса.
|
|
|
|
|
Apr 10 2008, 10:29
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Apr 10 2008, 08:05)  Пишите здесь, это может быть ещё кому-нибудь интересно, больше людей смогут вам помочь. Хорошо. За какое время (количество символов) происходит символьная синхронизация(скажем при заданном Eb/N0 и заданном символьном рассогласовании)? Чем вызвано применение символьной задержки по сигналу ошибки,а не подстройка ГУНТ? Цитата(Михаил_K @ Apr 10 2008, 09:43)  По решению значит вот что. Например для ФМ4. Для определенности считаем, что точки должны находиться на диагоналях. Поэтому берем конкретный отсчет (символ) и смотрим по его координатам, где он находится. В зависимости от его нахождения вырабатываем сигнал ошибки для системы ФАПЧ. Строго говоря, для сигнала ФМ4 нужно брать арктангенс отношения Q/I. Но для практической реализации это не удобно. Я например делал так: 1. Проводится преобразование координат (знаков координат) текущей точки так, чтобы она попала в первый квадрант. 2. Берется разность координат - это и есть ошибка. Спасибо,приму к сведению.Сейчас просто накапливаю информацию.
Сообщение отредактировал _Anatoliy - Apr 10 2008, 10:36
|
|
|
|
|
Apr 10 2008, 10:50
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Apr 9 2008, 23:54)  За какое время (количество символов) происходит символьная синхронизация(скажем при заданном Eb/N0 и заданном символьном рассогласовании)? Это определяется коэффициентами передачи интегрирующего и пропорционального звена в ФАПЧ, у Незами посмотрите этот вопрос кратенько рассматривается, это теория автоматического управления в чистом виде. Цитата(_Anatoliy @ Apr 9 2008, 23:54)  Чем вызвано применение символьной задержки по сигналу ошибки,а не подстройка ГУНТ? Не понял вопроса.
|
|
|
|
|
Apr 10 2008, 11:25
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(petrov @ Apr 10 2008, 15:22)  Там и подстраивается генератор импульсов плюс дробная часть с NCO используется в интерполяторе фарроу для точного вычисления символа, иначе отсчёт с выхода согласованного фильтра брался бы с точностью до частоты дискретизации и не попадал бы в максимум раскрытия глазка. Он кажется не о том спросил. Если я понял правильно. Он, кажется, спросил: Почему бы не использовать АНАЛОГОВЫЙ фапч, вместо того чтобы использовать интерполяцию на заданной фиксированой последовательности отсчётов. Тогда ответ не лучше или хуже. Ответ: Чтобы двигать фазу отсчётов АЦП прямо в аналоге нужен дорогой и развесистый фронт-энд. Часто такой возможности нет. И для полностью цифровой модели это криво Т.е. если АЦП позволяет двигать фазу отсчётов с нужной точностью можно использовать аналоговый ФАПЧ с сигналом рассогласования по алгоритму например Гарднера. Если фазу АЦП двигать нельзя или точность недостаточна, задача решается в цифре интерполятором. Это скорее альтернативные подходы, чем взаимозаменяющие лучше-хуже
|
|
|
|
|
Apr 10 2008, 12:39
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Apr 10 2008, 14:22)  Там и подстраивается генератор импульсов плюс дробная часть с NCO используется в интерполяторе фарроу для точного вычисления символа, иначе отсчёт с выхода согласованного фильтра брался бы с точностью до частоты дискретизации и не попадал бы в максимум раскрытия глазка. Я правильно понял - NCO подстраивается под символьную частоту, а интерполятор обеспечивает нулевой фазовый сдвиг(попадание в максимум раскрытия глазка)? Но у Вас на выходе фазового детектора стоит интегратор,значит NCO и так будет подстроен с точностью до фазы(т.е. в установившемся режиме разность фаз будет равна нулю и без интерполятора)? Цитата(fontp @ Apr 10 2008, 14:25)  Понял,спасибо.
|
|
|
|
|
Apr 11 2008, 07:17
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(petrov @ Apr 11 2008, 10:55)  Смотря что понимать под упрощением. Так ведь можно модем в аналоге реализовать без FPGA и сигнальных процессоров. Дополнительные ГУН, ЦАП, обвязка, разводка печатной платы, отладка всего этого хозяйства вместо простого, сразу работающего, математического алгоритма это упрощение? И не будет это стоить дешевле. В серьёзном модеме интерполятор символьной синхронизации занимает незначительную часть вычислительных ресурсов. Современные средства ЦОС позволяют сделать всё в цифре не понимаю зачем нужно делать шаг назад. Иметь в аналоге, что-то что можно сделать в цифре есть шаг назад, поскольку аналог это источник нестабильности и разброса параметров. Но не всё так однозначно. ФАПЧ на самом деле может быть полностью цифровым (хоть и на уровне аналогового фронт-энда), если АЦП имеет функцию в цифре линейно двигать фазу отсчётов. Такие АЦП есть. И хотя возникают вопросы с какой точностью они реально это делают, с какими переходными характеристиками, особенно задержкой, и всё такое - если это регулирование адекватно задаче, то это возможно лучшее решение. Остаётся только единственный недостаток: интерполятор это алгоритм который полностью и легко отлаживается в модельной обстановке, а программа ФАПЧ с управлением АЦП - риал-тайм процесс, отладить который значительно сложнее. Но это ж не смертельно
|
|
|
|
|
Apr 11 2008, 07:52
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Михаил_K @ Apr 11 2008, 09:18)  Если предполагается прием сигнала на определенной тактовой частоте, то для АЦП хорошо подходит кварцевый гун, который и подстраивается. У меня во всех модемах на фиксированную скорость так сделано. Соотвественно не нужно делать интерполятор, который отъедает приличный кусок ПЛИСа. Вот-вот,и я об этом же подумал. Только как нормально выделить несущую и символьную тактовую? У Незами всё вроде красиво получается,я попробовал в матлабе модель по рисунку 7-3 для QAM-16. Работает,выделяет ошибку несущей,но почемуто не точно,даёт ошибку в пределах +- 1,5 Гц, как ни бился уменьшить её не получилось.Да и для QAM-256 возводить отсчёты в 256-ю степень мало приятного... Цитата(petrov @ Apr 11 2008, 09:55)  Смотря что понимать под упрощением. Так ведь можно модем в аналоге реализовать без FPGA и сигнальных процессоров. Дополнительные ГУН, ЦАП, обвязка, разводка печатной платы, отладка всего этого хозяйства вместо простого, сразу работающего, математического алгоритма это упрощение? И не будет это стоить дешевле. В серьёзном модеме интерполятор символьной синхронизации занимает незначительную часть вычислительных ресурсов. Современные средства ЦОС позволяют сделать всё в цифре не понимаю зачем нужно делать шаг назад. Спасибо! Я Вас понял.
|
|
|
|
|
Apr 11 2008, 11:04
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Apr 11 2008, 10:55)  Смотря что понимать под упрощением. Так ведь можно модем в аналоге реализовать без FPGA и сигнальных процессоров. Дополнительные ГУН, ЦАП, обвязка, разводка печатной платы, отладка всего этого хозяйства вместо простого, сразу работающего, математического алгоритма это упрощение? И не будет это стоить дешевле. В серьёзном модеме интерполятор символьной синхронизации занимает незначительную часть вычислительных ресурсов. Современные средства ЦОС позволяют сделать всё в цифре не понимаю зачем нужно делать шаг назад. В модеме, который я делал почти 5 лет назад, первый интерполятор был сделан на GC3011 (вроде бы, давно было). Затем переделали его на Virtex2. Интерполятор в месте с системой тактовой синхронизации занял отдельный плис 1500. Он требовал 30 умножителей, блок ОЗУ для хранения 15х4096 12-разярдных коэффициентов. Но зато позволял принимать сигналы на любой тактовой частоте, от 1 кГц до 50 МГц. Полностью весь демодулятор был сделан на 5 плисах Virtex2. 2 полуторотысячника и 3 тысячника. В модеме, который я делал два года назад, на фиксированную частоту использовался ГУН, который стоит 30 долларов. Весь демодулятор поместился в четырехсотый спартан.
|
|
|
|
|
Apr 11 2008, 12:01
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Михаил_K @ Apr 11 2008, 15:04)  В модеме, который я делал почти 5 лет назад, первый интерполятор был сделан на GC3011 (вроде бы, давно было). Затем переделали его на Virtex2. Интерполятор в месте с системой тактовой синхронизации занял отдельный плис 1500. Он требовал 30 умножителей, блок ОЗУ для хранения 15х4096 12-разярдных коэффициентов. Но зато позволял принимать сигналы на любой тактовой частоте, от 1 кГц до 50 МГц. Полностью весь демодулятор был сделан на 5 плисах Virtex2. 2 полуторотысячника и 3 тысячника.
В модеме, который я делал два года назад, на фиксированную частоту использовался ГУН, который стоит 30 долларов. Весь демодулятор поместился в четырехсотый спартан. http://www.altera.ru/cgi-bin/price/priceAltera Cyclone III EP3C16E144C8 31,36$ 15408 логических элементов, логический элемент - 4-х входовой LUT + триггер 56 18bit умножителей Согласитесь что сейчас символьная синхронизация на внешнем ГУНе будет худшим решением с любой точки зрения?
|
|
|
|
|
Apr 11 2008, 13:27
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Apr 11 2008, 15:01)  А можно ещё вопросики по Незами рис. 7-3?Хочется разобраться. 1).Какова цель введения нелинейности [x]^M? 2).Это схема является частотным детектором?Вроде у него полоса захвата должна быть пошире чем фазового(в фазовом детекторе сигнальный вектор за счёт частотного сдвига не должен попасть в область соседней сигнальной точки созвездия). 3).Схема по Незами рис. 7-3 имеет область захвата dF <= +- 1 / (2*M*T),для QAM16 это будет +- 1/32T. А Ваша модель работает при 1/18T,Вы можете это как-то прокомментировать?
|
|
|
|
|
Apr 11 2008, 14:33
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Apr 11 2008, 17:27)  А можно ещё вопросики по Незами рис. 7-3?Хочется разобраться.
1).Какова цель введения нелинейности [x]^M? 2).Это схема является частотным детектором?Вроде у него полоса захвата должна быть пошире чем фазового(в фазовом детекторе сигнальный вектор за счёт частотного сдвига не должен попасть в область соседней сигнальной точки созвездия). 3).Схема по Незами рис. 7-3 имеет область захвата dF <= +- 1 / (2*M*T),для QAM16 это будет +- 1/32T. А Ваша модель работает при 1/18T,Вы можете это как-то прокомментировать? 1) для того чтобы избавиться о модуляции, посмотрите модельки для QPSK, при умножении фазы на 4 она превращается в линию(по модулю 2pi ессно), для QAM16 не надо на 16 фазу умножать, а на 4 как для QPSK, но только плохой это детектор для QAM 2) да является, она работает как она работает, с чем сравнивать? 3)вот представьте себе передачу подряд какой-то одной точки QAM созвездия,пусть на приёме один вектор в точности попадает в решение, из-за сдвига частоты dF на следующем символьном интервале принимаемый вектор повернётся на 2*pi*dF*T радиан, если он попадает в область другого решения то захвата не будет
|
|
|
|
|
Apr 11 2008, 15:58
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Apr 11 2008, 16:01)  http://www.altera.ru/cgi-bin/price/priceAltera Cyclone III EP3C16E144C8 31,36$ 15408 логических элементов, логический элемент - 4-х входовой LUT + триггер 56 18bit умножителей Согласитесь что сейчас символьная синхронизация на внешнем ГУНе будет худшим решением с любой точки зрения? Не соглашусь. XC3S400-4TQ144C XC3S400-4TQ144C - 400,000 SYSTEM GATE 1.2 VOLT FPGA $16,10 Кстати, ГУНы тоже бывают разные. Например делал я и с использованием ГУНов HOSONIC. Вроде доллара по 3 за штуку. И не забывайте, что генератор для АЦП нужен все равно. И еще, дополнительная логика в ПЛИСе приводит к увеличению выделяемого тепла, что между прочим становится довольно серьезной проблемой, особенно если устройство стоит на улице. Посмотрите сюда http://www.grpz.ru/projects/index.shtml. Станция "Струна-8". Там как раз стоит мой модем в котором hosonic. Коробочка у антенны содержит УМ, МШУ, дуплексер и полноценный модем с мультиплексором, демультиплексором, системой ТУТС. А размер у нее не такйо уж и большой. И каждые лишние 200-300 мВт тепла на плисе пагубно сказываются на надежности устройства.
|
|
|
|
|
Apr 11 2008, 19:28
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Михаил_K @ Apr 11 2008, 18:58)  Не соглашусь. XC3S400-4TQ144C XC3S400-4TQ144C - 400,000 SYSTEM GATE 1.2 VOLT FPGA $16,10 Кстати, ГУНы тоже бывают разные. Например делал я и с использованием ГУНов HOSONIC. Вроде доллара по 3 за штуку. И не забывайте, что генератор для АЦП нужен все равно. И еще, дополнительная логика в ПЛИСе приводит к увеличению выделяемого тепла, что между прочим становится довольно серьезной проблемой, особенно если устройство стоит на улице. Посмотрите сюда http://www.grpz.ru/projects/index.shtml. Станция "Струна-8". Там как раз стоит мой модем в котором hosonic. Коробочка у антенны содержит УМ, МШУ, дуплексер и полноценный модем с мультиплексором, демультиплексором, системой ТУТС. А размер у нее не такйо уж и большой. И каждые лишние 200-300 мВт тепла на плисе пагубно сказываются на надежности устройства. Что-то сильно монстроидальный интерполятор получился у Вас. У меня полиномиальный интерполятор 3го порядка , структура Farrow, порядка 2000LE в первом циклоне занимал. На 100 Мгц работает, при том что умножителей в этой плисине нет вообще.
--------------------
ну не художники мы...
|
|
|
|
|
Apr 12 2008, 11:45
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Apr 12 2008, 12:48)  А можно немного подробнее?В чём тут хитрость?Мне казалось что лучше изменять тактовую,тогда параметры фильтров вроде менять не нужно. Да никаких хитростей нет. Аналоговые фильтры перед АЦП тоже будете изменять? "Лучше" это только проще для понимания, это опять к вопросу аналоговой реализации, характеристики модема будут хуже. Цитата(proxi @ Apr 12 2008, 14:25)  ...а на практике их еще нужно подбирать так как реальный тракт имеет разные искажения для разный потоков.. Для этого эквалайзер есть.
Сообщение отредактировал petrov - Apr 12 2008, 11:46
|
|
|
|
|
Apr 12 2008, 14:57
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(_Anatoliy @ Apr 11 2008, 23:44)  И ещё один вопросик. Если у меня символьная скорость будет находиться в диапазоне,скажем от 10 до 20 msps(к примеру приёмник должен уметь принимать данные от разных передатчиков,а у каждого передатчика своя символьная скорость),то как правильно поступить - изменять тактовую частоту АЦП по принципу ВСЕГДА 4 ТАКТА НА СИМВОЛ или установить фиксировано 80 МГц?  Да, и вот тут-то интерполятор и понадобиться. Цитата(alex_os @ Apr 11 2008, 23:28)  Что-то сильно монстроидальный интерполятор получился у Вас. У меня полиномиальный интерполятор 3го порядка , структура Farrow, порядка 2000LE в первом циклоне занимал. На 100 Мгц работает, при том что умножителей в этой плисине нет вообще. Все зависит от того, какое качество вы хотите получить  . У нас для идеального сигнала (с тестового генератора) С/Ш на выходе демодулятора для сигнала QAM256 порядка 41 - 43 дБ на тактовых порядка 40 МГц.
|
|
|
|
|
Jun 25 2008, 11:57
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Jun 25 2008, 15:05)  Александр,видимо к Вам вопрос. Я переделал Вашу модель qam_fb_gardner_symbol_farrow_sync_fb_phase_sync_agc_2007_06_18.mdl для QAM64,всё работает (пока в матлабе),осталась одна непонятка.Вы в своей модели скремблируете число "5" и после демодуляции и дескремблирования получаете те же "5".У меня же созвездия стоят устойчиво,а на выходе вместо пятёрки мусор.Скремблер я переделал под QAM64,дескремблер его код восстанавливает нормально(если его включить сразу в модуляторе).Что нужно проверить?Может у меня созвездие повёрнуто на 90(180,270) градусов?Как это проверить? У вас должна неоднозначность фазы как то восстанавливаться, через дифференциальное кодирование например или через передачу какой-то известной последовательности. У меня было сделано дифференциальное кодирование, при этом нужно специальным образом пронумерованное созвездие, оно кстати не наилучшее с точки зрения битовой ошибки. В блоке который сдвиг несущей задаёт, можно и фазу сдвинуть, попробуйте +-90, 180, при каком то должно заработать если других ошибок нету.
|
|
|
|
|
Jun 25 2008, 12:48
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jun 25 2008, 14:57)  У вас должна неоднозначность фазы как то восстанавливаться, через дифференциальное кодирование например или через передачу какой-то известной последовательности. У меня было сделано дифференциальное кодирование, при этом нужно специальным образом пронумерованное созвездие, оно кстати не наилучшее с точки зрения битовой ошибки. В блоке который сдвиг несущей задаёт, можно и фазу сдвинуть, попробуйте +-90, 180, при каком то должно заработать если других ошибок нету. Спасибо Александр! Установил фазу 180 градусов и проверочный код "4" - всё заработало!Но при коде "5" ни при какой фазе восстановления нет.Такого же не должно быть...Дифференциальное кодирование у меня есть. И ещё,при коде "5" в захват система входит примерно за 5000 символов,а при коде "23" - более 20000 символов.Может глянете надосуге? Не удаётся файл присоединить....Сейчас куда-нибудь выложу. http://upload.caxapa.ru/u8tq64fpga_temp.mdlКод "17" восстанавливается только при фазе 270 градусов,чехарда какая-то:-(((
|
|
|
|
|
Jun 26 2008, 06:26
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jun 25 2008, 16:44)  Это созвездие не подходит. И дифференциальное кодирование неправильно осуществляется у вас. Разберитесь для начала с диф кодированием QPSK. Это созвездие было из DVB-T,заменил на DVB-C.
Дифференциальное кодирование переделал,только не помогло это:-((
Что-то происходит с узлом подстройки по частоте несущей:если убрать блок Phase/FrequencyOffset из линии связи и на перемножитель подать константу то дескремблер восстанавливает любой код без ошибок.Но так не интересно.Что ещё можно посмотреть? Происходит ошибка выбора квадранта т.к. при большом коде ошибка кратна 16-ти. Может попробовать диффкодирование из DVB-C?
|
|
|
|
|
Jul 12 2008, 12:11
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Apr 11 2008, 12:35)  Можно частоту дискретизации уменьшить вплоть до минимально необходимой по котельникову. Интерполятору фарроу необходима передискретизация примерно больше 4.5 отсчётов на символ, зависит от требуемой точности, тогда придётся полифазным фильтром увеличить количество отсчётов необходимое для нормальной работы интерполятора фарроу, всё это ессно делается без увеличения тактовой частоты в FPGA. Александр,а можно немного подробнее об этом?Я упёрся в эту проблему,не получается сделать в FPGA интерполятор Фарроу при Ftakt = 8*Fsymb,слишком высокая частота тактов. А 4 такта на символ не нравится,проверял.Как это можно обойти?Мне очень понравилось Ваше"всё это ессно делается без увеличения тактовой частоты в FPGA". Допустим,после полифазного интерполятора c R=2 есть две шины данных,одна с основными отсчётами,другая с интерполированными.Обе шины тактируются клоком Ftakt = 4*Fsymb.Можно эти шины как-то завести в Фарроу чтобы он тоже работал с Ftakt = 4*Fsymb,но при этом вёл себя так,как будто работает с Ftakt = 8*Fsymb?
|
|
|
|
|
Jul 14 2008, 05:03
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jul 12 2008, 19:53)  Комбинационная схема интерполятора работает на символьной частоте Это как?Сигнал Mu приходит с символьной частотой,но внутри символа он обрабатывается с частотой входных данных. Цитата(petrov @ Jul 12 2008, 19:53)  если вы понимаете как поступают отсчёты на отводы с линии задержки интерполятора при тупой реализации с повышением тактовой без полифазного фильтра Так отсчёты на отводы тупо задерживаются на такт для каждого отвода,без обработки,что тут понимать?Или Вы имели ввиду отводные множители?Тут пока ясности нет. Цитата(petrov @ Jul 12 2008, 19:53)  коммутировать так же с двух шин полифазного фильтра не представляет никаких сложностей. То есть,интерполятор Фарроу изменять не нужно,следует изменить только алгоритм заполнения линии задержки?Но ведь если на выходах полифазного фильтра мы имеем два отсчёта на такт(8 отсчётов на символ) то интерполятор Фарроу должен будет их обработать за 4 такта на символ?Тогда видимо из двух отсчётов полифазного фильтра нужно сформировать неким образом один отсчёт и подсунуть его Фарроу? И ещё одна неприятность.В общем виде Фарроу представляет собой Out = A*Mu^3+B*Mu^2+C*Mu+D, где A,B,C,D - выходы отводных сумматоров.У Вас в модели Mu изменяется от -1 до 0.Для реализации в FPGA мне нужно Mu представить некой шиной например 8 бит(Mu изменилось в 2^8).Тогда чтобы не изменить рабочую точку Фарроу мне нужно вместо А,B,C подставить (А / 2^24,B/2^16,C/2^8).Для того чтобы после деления от А осталось хотя бы 8 бит, изначально А дожен иметь разрядность 2^32.Неприятно умножать такие числа,особенно с большой скоростью.Или то,о чём я сейчас пишу не является обязательным условием?Но в матлабе после изменения Mu Фарроу заработал только после ввода этих коэффициентов.
|
|
|
|
|
Jul 14 2008, 11:37
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Jul 14 2008, 09:03)  Это как?Сигнал Mu приходит с символьной частотой,но внутри символа он обрабатывается с частотой входных данных.
Так отсчёты на отводы тупо задерживаются на такт для каждого отвода,без обработки,что тут понимать?Или Вы имели ввиду отводные множители?Тут пока ясности нет.
То есть,интерполятор Фарроу изменять не нужно,следует изменить только алгоритм заполнения линии задержки?Но ведь если на выходах полифазного фильтра мы имеем два отсчёта на такт(8 отсчётов на символ) то интерполятор Фарроу должен будет их обработать за 4 такта на символ?Тогда видимо из двух отсчётов полифазного фильтра нужно сформировать неким образом один отсчёт и подсунуть его Фарроу? В интерполяторе вычисления производятся с символьной частотой а не с частотой входных данных, вы можете поместить его в следующий клок домен и вытащить наружу только 4 шины на которые сейчас у вас поступают отсчёты с линии задержки с отводами и шину для mu, и на эти отводы должно то же самое поступать как бы вы не делалали с полифазным фильтром или без или ещё как, просто в нужный момент надо те же самые остчёты подать что и в случае более тупой реализации, ну были отсчёты у вас последовательно во времени, теперь они в пространстве ещё разнесены на выходе полифазного фильтра, это вопрос внимательной манипуляции с отсчётами. Цитата(_Anatoliy @ Jul 14 2008, 09:03)  И ещё одна неприятность.В общем виде Фарроу представляет собой Out = A*Mu^3+B*Mu^2+C*Mu+D, где A,B,C,D - выходы отводных сумматоров.У Вас в модели Mu изменяется от -1 до 0.Для реализации в FPGA мне нужно Mu представить некой шиной например 8 бит(Mu изменилось в 2^8).Тогда чтобы не изменить рабочую точку Фарроу мне нужно вместо А,B,C подставить (А / 2^24,B/2^16,C/2^8).Для того чтобы после деления от А осталось хотя бы 8 бит, изначально А дожен иметь разрядность 2^32.Неприятно умножать такие числа,особенно с большой скоростью.Или то,о чём я сейчас пишу не является обязательным условием?Но в матлабе после изменения Mu Фарроу заработал только после ввода этих коэффициентов. Да все эти вопросы конечной разрядности не приятные, но таких мест будет куча, надо научиться прикидывать где промасштабировать, где округлить разряды, где с повышенной точностью вычисления надо проводить и т. п. это никто кроме вас сделать не сможет. Какая у вас символьная скорость? Наверняка можно на одном умножителе весь интерполятор сделать.
|
|
|
|
|
Jul 14 2008, 12:24
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jul 14 2008, 14:37)  В интерполяторе вычисления производятся с символьной частотой а не с частотой входных данных, вы можете поместить его в следующий клок домен и вытащить наружу только 4 шины на которые сейчас у вас поступают отсчёты с линии задержки с отводами и шину для mu, и на эти отводы должно то же самое поступать как бы вы не делалали с полифазным фильтром или без или ещё как, просто в нужный момент надо те же самые остчёты подать что и в случае более тупой реализации, ну были отсчёты у вас последовательно во времени, теперь они в пространстве ещё разнесены на выходе полифазного фильтра, это вопрос внимательной манипуляции с отсчётами. Често говоря не понял ответа.Ведь после интерполятора в блоке one_sps_clock_domain стоит ещё одна линия задержки из двух регистров,и данные в нее пишутся два раза за символ.А Вы говорите что в интерполяторе вычисления производятся с символьной частотой. Я пробовал вот такой коммутатор:
interpolator.doc ( 143.5 килобайт )
Кол-во скачиваний: 168 Здесь входы - выход полифазника,а выходы через коммутатор используются в качестве линии задержки,коммутация выполняется каждый такт(чётный-верхний выход,нечётный - нижний выход).Но тут идёт потеря данных,два такта правильные данные,два потеряны. Цитата(petrov @ Jul 14 2008, 14:37)  Да все эти вопросы конечной разрядности не приятные, но таких мест будет куча, надо научиться прикидывать где промасштабировать, где округлить разряды, где с повышенной точностью вычисления надо проводить и т. п. это никто кроме вас сделать не сможет. Какая у вас символьная скорость? Наверняка можно на одном умножителе весь интерполятор сделать. Ну да,я в матлабе разрядности и проверяю. Fsymb = 35 Msps. А как можно интерполятор Фарроу сделать на одном умножителе?
|
|
|
|
|
Jul 14 2008, 13:22
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Jul 14 2008, 16:24)  Често говоря не понял ответа.Ведь после интерполятора в блоке one_sps_clock_domain стоит ещё одна линия задержки из двух регистров,и данные в нее пишутся два раза за символ.А Вы говорите что в интерполяторе вычисления производятся с символьной частотой. В смысле вычисления производятся столько раз сколько нужно вам отсчётов на символ но не как не с входной частотой, я ж не знаю сколько у вас там отсчётов на символ нужно для обработки последующей, можно и с одним сделать и с двумя и с дробным, просто условно писал с символьной частотой и даже выше оговаривался в скобках что может и два осчёта быть напрмер для дробного эквалайзера. Цитата(_Anatoliy @ Jul 14 2008, 16:24)  Я пробовал вот такой коммутатор: Пробуйте ещё :) Цитата(_Anatoliy @ Jul 14 2008, 16:24)  Fsymb = 35 Msps. А как можно интерполятор Фарроу сделать на одном умножителе? Да высокая символьная, наверное с последовательной обработкой нет смысла заморачиваться.
|
|
|
|
|
Jul 14 2008, 13:54
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jul 14 2008, 16:22)  В смысле вычисления производятся столько раз сколько нужно вам отсчётов на символ но не как не с входной частотой, я ж не знаю сколько у вас там отсчётов на символ нужно для обработки последующей, можно и с одним сделать и с двумя и с дробным, просто условно писал с символьной частотой и даже выше оговаривался в скобках что может и два осчёта быть напрмер для дробного эквалайзера. Понял,спасибо! Цитата(petrov @ Jul 14 2008, 16:22)  Пробуйте ещё  Конечно буду копать дальше,что ещё остаётся.Сейчас придумал методику проверки Фарроу на "вшивость",удалось уменьшить размерность входных данных до 16-ти бит!!! Цитата(petrov @ Jul 14 2008, 16:22)  Да высокая символьная, наверное с последовательной обработкой нет смысла заморачиваться. Это точно,я такой вариант даже не рассматривал.
|
|
|
|
|
Jul 15 2008, 07:24
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(petrov @ Jul 14 2008, 16:22)  В смысле вычисления производятся столько раз сколько нужно вам отсчётов на символ но не как не с входной частотой, я ж не знаю сколько у вас там отсчётов на символ нужно для обработки последующей, можно и с одним сделать и с двумя и с дробным, просто условно писал с символьной частотой и даже выше оговаривался в скобках что может и два осчёта быть напрмер для дробного эквалайзера. А я всё о Фарроу... Не сростается у меня общая картина. Не могу увязать то что Вы говорили раньше с тем что говорите сейчас. Раньше Вы говорили так: Цитата(petrov @ Aprel 11 2008, 16:22)  Можно частоту дискретизации уменьшить вплоть до минимально необходимой по котельникову. Интерполятору фарроу необходима передискретизация примерно больше 4.5 отсчётов на символ[color=#FF0000], зависит от требуемой точности, тогда придётся полифазным фильтром увеличить количество отсчётов необходимое для нормальной работы интерполятора фарроу, всё это ессно делается без увеличения тактовой частоты в FPGA. Если посмотреть АЧХ Фарроу то видно,что при менее 5-ти отсчётов на символ растёт нелинейность фильтра,а при трёх отсчётах он вообще не будет работать. На картинке по оси х число 10 соответствует частоте дискетизации.
|
|
|
|
|
Jul 15 2008, 07:53
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Jul 15 2008, 11:46)  Спасибо,теперь понятно о чём речь. Я с удовольствием взял бы 8 отсчётов,да по скорости не вписываюсь.Идея фикс - придумать полифазный интерполятор Фарроу,что бы он работал при 4-х отсчётах на символ так же,как обычный при 8-ми. Бредовая идея? Не надо ничего выдумывать, всё уже придумано, даже разобраться в этом сложно, не говоря о том чтобы новое придумать. Хотите чтобы при четырёх отсчётах интерполятор удовлетворительно работал берите более высокого порядка, только может так получиться что он будет сложнее чем комбинация полифазного фильтра и кубического интерполятора, последнее очень часто используется на практике, не с проста видимо.
|
|
|
|
|
Jul 25 2008, 02:12
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Всем привет! я разрабатываю радиорелейную станцию, так сказать all-in-one. на данный момент я сваял модем для приема/передачи QPSK, вся обработка в цифре, вход/выход -ПЧ. хочу попробовать модифицировать проект под 16-QAM и в связи с этим есть ряд вопросов (с QAM я не работал). 1. про ФАПЧи и АРУ. Я так понимаю, что сначала нужно нормализовать амплитуду принятого сигнала (АРУ), т.к. виденные мной детектора фазовых ошибок используют информацию об амплитуде сигнала. это так? 2. про скремблер. насколько я понял, при восстановлении тактовой частоты используются те же алгоритмы, что и для QPSK (я у себя в проекте использую дет. Гарднера). в 16-QAM переходы через 0 реже, т.е. скремблер необходим? имеются в виду практичексие соображения, ведь скремблер размножает ошибки. 2 petrov, я сейчас разбираю ваш пример в матлабе qam_fb_gardner_symbol_farrow_sync_fb_phase_sync_agc_2007_06_18.mdl не понял часть схемы. там в модуляторе есть умножение на 1/4 округление, умножение на 4 и сложение с исходным сигналом. это для чего? еще там есть дифференциальное кодирование, оно же 3дБ чувствительности крадет, нет? не пинайте, если часть вопросов уже здесь обсуждались, мог прохлопать.
|
|
|
|
|
Jul 25 2008, 09:32
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(vadimuzzz @ Jul 25 2008, 13:19)  по п.1 я не то имел в виду, я про последовательность(во времени) включения цепей: т.е. сначала включается АРУ, после захвата АРУ включается захват тактовой, потом несущей. так? Ну ессно сначала АРУ должно отработать чтобы хотя бы в ворота АЦП попасть, ну и само собой если у вас используется восстановление фазы управляемое решениями то АРУ должно быть настроено более-менее для получения этих решений . "Включается" "после" это всё условно ведь схемы синхронизации совместно могут работать. Цитата(vadimuzzz @ Jul 25 2008, 13:19)  про дифф. кодирование: а для чего оно, если демодуляция не дифференциальная? 90гр. неоднозначность устранять? да +-90,180
Сообщение отредактировал petrov - Jul 25 2008, 09:38
|
|
|
|
|
Jul 25 2008, 09:40
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(petrov @ Jul 25 2008, 16:32)  Ну ессно сначала АРУ должно отработать чтобы хотя бы в ворота АЦП попасть, ну и само собой если у вас используется восстановление фазы управляемое решениями то АРУ должно быть настроено более-менее для получения этих решений . "Включается" "после" это всё условно ведь схемы синхронизации совместно могут работать. да про ворота АЦП ясно, у меня так и работает. а как на малом сигнале быть? когда АРУ уже не тянет? как я выше написал? ведь если нормализовать амплитуду на входе АЦП, то его динамический диапазон не используется, а у меня вся схема на этом основана и усиление в тракте относительно небольшое. а про восстановление фазы: а где посмотреть на схемы без управления решениями?
|
|
|
|
|
Jul 26 2008, 00:05
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(petrov @ Jul 25 2008, 17:03)  Можно и в цифре сделать АРУ. Всё же разрядность АЦП должна определяться динамическим диапазоном сигнала, зачем более дорогой АЦП брать и потом то же АРУ ещё в цифре делать? Ну погуглите чтоли. А лучше делайте управляемое решениями.  ну это вроде тенденции в мире, чтоб АЦП как можно раньше ставить и эффективно его ДД использовать. ну а динамики хочется побольше  просто раньше хороших АЦП не было, а сейчас каждый месяц все круче и круче выходят. это я книжек начитался, вот здесь неплохо об этом написано: "RF and Baseband Techniques for Software Defined Radios" Peter B. Kenington. там идея такая, чтоб не гнать усиление по ВЧ/ПЧ и вообще минимизировать количество аналоговых цепей. АЦП вроде тоже не такие дорогие, по крайней мере дешевеют. а АРУ в цифре сделать несложно, несколько десятков LE в FPGA. вопрос в необходимости, но раз она есть, то сделаю. "А лучше делайте управляемое решениями.  " лучше в каком смысле? чтоб не гуглить?  или есть какие-то еще соображения (ну там проще/дешевле), я просто не в теме
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|