реклама на сайте
подробности

 
 
12 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Демодуляция QAM
petrov
сообщение Jun 25 2008, 13:44
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(_Anatoliy @ Jun 25 2008, 17:25) *
http://upload.caxapa.ru/qam64.GIF
Посмотрите,пожалуйста.
Взял однобитный скремблер из DVB-C - не помогло.

Вот схема модулятора http://upload.caxapa.ru/Modulator.GIF


Это созвездие не подходит. И дифференциальное кодирование неправильно осуществляется у вас. Разберитесь для начала с диф кодированием QPSK. Диф кодирование для QAM для 2-х битов которые адресуют квадрант созвездия осуществляется так же как и для QPSK. Остальные биты адресуют точки внутри квадранта, вы должны пронумеровать их так чтобы при поворотах созвездия на +-90 и 180 эти биты не менялись, ну и по возможности соседние точки дожны отличаться в меньшем количестве битов.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 25 2008, 13:55
Сообщение #62


Утомлённый солнцем
******

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



О,сейчас приклеился файл...

Цитата(petrov @ Jun 25 2008, 16:44) *
Это созвездие не подходит. И дифференциальное кодирование неправильно осуществляется у вас. Разберитесь для начала с диф кодированием QPSK. Диф кодирование для QAM для 2-х битов которые адресуют квадрант созвездия осуществляется так же как и для QPSK. Остальные биты адресуют точки внутри квадранта, вы должны пронумеровать их так чтобы при поворотах созвездия на +-90 и 180 эти биты не менялись, ну и по возможности соседние точки дожны отличаться в меньшем количестве битов.


Спасибо! Да,с диффкодированием я намудрил.Буду переделывать.И квадранты проверю,результат сообщу уже видимо завтра.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2008, 06:26
Сообщение #63


Утомлённый солнцем
******

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



Цитата(petrov @ Jun 25 2008, 16:44) *
Это созвездие не подходит. И дифференциальное кодирование неправильно осуществляется у вас. Разберитесь для начала с диф кодированием QPSK.

Это созвездие было из DVB-T,заменил на DVB-C.
Прикрепленное изображение

Дифференциальное кодирование переделал,только не помогло это:-((
Прикрепленное изображение


Что-то происходит с узлом подстройки по частоте несущей:если убрать блок Phase/FrequencyOffset из линии связи и на перемножитель подать константу то дескремблер восстанавливает любой код без ошибок.Но так не интересно.Что ещё можно посмотреть?

Происходит ошибка выбора квадранта т.к. при большом коде ошибка кратна 16-ти.

Может попробовать диффкодирование из DVB-C?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 07:33
Сообщение #64


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Это созвездие подходит, только кодирование грея для двух старших битов уже встроено.
Не надо Phase/FrequencyOffset убирать, частоты нулевой делаете, а сдвиг фазы 0 +-90 180 перебираете для проверки вашего диф кодирования. Не надо бездумно из стандартов какие-то операции вытаскивать, всё должно работать как и для 16 QAM работает, никакой принципиальной разницы нет. Вы на приёмной стороне декодер не забыли изменить?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2008, 08:05
Сообщение #65


Утомлённый солнцем
******

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



Цитата(petrov @ Jun 26 2008, 10:33) *
Вы на приёмной стороне декодер не забыли изменить?


Нет,тогда бы он не восстанавливал код без блока Phase/FrequencyOffset.
Например,код "60" восстанавливается с блоком Phase/FrequencyOffset при FrequencyOffset=0 и Phase=270.При остальных фазах не восстанавливается.Вот ошибка при Phase=90.

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 08:09
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(_Anatoliy @ Jun 26 2008, 12:05) *
Нет,тогда бы он не восстанавливал код без блока Phase/FrequencyOffset.
Например,код "60" восстанавливается с блоком Phase/FrequencyOffset при FrequencyOffset=0 и Phase=270.При остальных фазах не восстанавливается.Вот ошибка при Phase=90.

Прикрепленное изображение


Ищите ошибки...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2008, 13:39
Сообщение #67


Утомлённый солнцем
******

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



Цитата(petrov @ Jun 26 2008, 11:09) *
Ищите ошибки...


При FrequencyOffset=0 и Phase=0 комплексный гетеродин компенсации частотной ошибки выдаёт на перемножитель сигнал 0-i*1,в результате этого на выходе перемножителя сигнал появляется уже сдвинутым на -90 градусов и неправильно демаппируется.Если поставить Phase=90 то происходит компенсация фазового сдвига и передаваемый код декодируется нормально.Поясните,пожалуйста,эту ситуацию.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2008, 14:40
Сообщение #68


Утомлённый солнцем
******

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



Александр,Ваша модель тоже так себя ведёт если поставить контрольный код "40".По модулю 16.

Странно,но сегодня повторить эту ситуацию с Вашей моделью мне не удалось,при тех же параметрах что вчера.
Похоже я поторопился с выводами,следствие продолжается...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2008, 05:56
Сообщение #69


Утомлённый солнцем
******

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



Как оказалось,алгоритм дифф-кодирования должен выбираться согласно формируемому созвездию.Я этого не знал.После замены алгоритма дифф-кодирования на нужный,проверочный код стал стабильно восстанавливаться при любой фазовой ошибке(0,-90,90,180) и независимо от значения кода.Только после этого почему-то стал хуже работать узел синхронизации по несущей,буду искать причину,после её устранения можно будет начать работать с FPGA.
Александр,большое Вам спасибо за помощь!
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 12 2008, 12:11
Сообщение #70


Утомлённый солнцем
******

Группа: Свой
Сообщений: 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?
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 12 2008, 16:53
Сообщение #71


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Комбинационная схема интерполятора работает на символьной частоте(ну или например на удвоенной для дробного эквалайзера), если вы понимаете как поступают отсчёты на отводы с линии задержки интерполятора при тупой реализации с повышением тактовой без полифазного фильтра, то коммутировать так же с двух шин полифазного фильтра не представляет никаких сложностей.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 14 2008, 05:03
Сообщение #72


Утомлённый солнцем
******

Группа: Свой
Сообщений: 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 Фарроу заработал только после ввода этих коэффициентов.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 14 2008, 11:37
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 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 Фарроу заработал только после ввода этих коэффициентов.


Да все эти вопросы конечной разрядности не приятные, но таких мест будет куча, надо научиться прикидывать где промасштабировать, где округлить разряды, где с повышенной точностью вычисления надо проводить и т. п. это никто кроме вас сделать не сможет. Какая у вас символьная скорость? Наверняка можно на одном умножителе весь интерполятор сделать.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 14 2008, 12:24
Сообщение #74


Утомлённый солнцем
******

Группа: Свой
Сообщений: 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.
А как можно интерполятор Фарроу сделать на одном умножителе?
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 14 2008, 13:22
Сообщение #75


Гуру
******

Группа: Свой
Сообщений: 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.
А как можно интерполятор Фарроу сделать на одном умножителе?


Да высокая символьная, наверное с последовательной обработкой нет смысла заморачиваться.
Go to the top of the page
 
+Quote Post

12 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 05:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016