Jump to content

    

Отсутствие повторяемости работы демодулятора при эталонном сигнале с векторного генератора

Несколько дней уже бьюсь со следующей проблемой. Есть эталонный сгенерированный OFDM сигнал в MATLAB. Он загружается в векторный генератор, по кабелю подаётся на AD9361, а затем в демодулятор. Запускаю на генераторе однократно по одному фрейму. Помимо демодуляции, пишу сами IQ в приемнике. Fs = 61.44, BW = 56 МГц, в демодуляторе выфильтровываются каналы по 10 МГц. От запуска к запуску спектр сигнала может сильно отличаться. Это даже при сильном сигнале. При -90 dBm я даже корреляции с пилотом не могу найти. Бред какой-то. Шум -174 dBm/Hz, полоса 70 dB, 4 dB на МШУ. Где-то десятка должна оставаться. PAPR 10 дБ. По спецификации для данной полосы и QPSK чувствительность -97 дБм. Да и сама корреляция в модели в fixed point вытягивается при -15 дБ спокойно.

На более низких частотах AD9361 в других проектах работала. Буду ещё раз разбираться с AGC в ней.

На что-то ещё стоит обратить внимание в самом тракте? Вряд ли кабели и разъемы будут так на АЧХ влиять. Если, конечно, кабель не сломан где-то.

Share this post


Link to post
Share on other sites

У вас очень много неизвестных в задаче в ее исходной постановке: и генератор, и мшу, и линейный тракт, и BB. Вам надо начать с декомпозиции: Отключите АРУ, отладьте мшу, гетеродины все, линейный тракт. Потом АЦП. Потом посмотрите, что выдает векторный генератор. А дальше уже замыкайте ару и подключайте ваш ofdm baseband.

Или же идите с другого конца: подайте IQ с векторного генератора на ацп. только сперва убедитесь, что вы генерируете то, что нужно, и что BB не "захлебывается" на Fs.

Помните, в журнале Радио в рубрике "конструкция выходного дня" была формулировка: "устройство в наладке не нуждается и начинает работать сразу после включения". Это не ваш случай скорее всего.

 

1 hour ago, Grizzly said:

 Бред какой-то.

Share this post


Link to post
Share on other sites
8 минут назад, FatRobot сказал:

Отключите АРУ, отладьте мшу, гетеродины все, линейный тракт. Потом АЦП. Потом посмотрите, что выдает векторный генератор. А дальше уже замыкайте ару и подключайте ваш ofdm baseband.

Первым делом завтра как раз выключить АРУ, вручную задавать rxGain на AD и смотреть на квадратуры. С гетеродинами всё нормально. Я уже на RF подаю с генератора. Отстройка не более 2 кГц, так что даже не надо искать целочисленную часть. Оценка частоты происходит корректно. Кстати, даже почти для всех случаев с последующей "кривой" демодуляцией.

А про генератор и такую частоту дискретизации не подумал. До этого на нем гораздо меньшие значения использовали. Спасибо.

Share this post


Link to post
Share on other sites

Созвездия покажите, снятые нормальным анализатором векторных модуляций. По внешнему виду созвездий можно сказать много чего.

Share this post


Link to post
Share on other sites
13 часов назад, khach сказал:

Созвездия покажите, снятые нормальным анализатором векторных модуляций. По внешнему виду созвездий можно сказать много чего.

Не работал МШУ на входе, с которого заводился сигнал. На соседнем входе на 15 дБ чувствительность лучше. Ожидаемые значения, прописанные в стандарте LTE, увидел. Эх...

Share this post


Link to post
Share on other sites

Снова вернулся к этому проекту. На канале с исправным МШУ от запуска к запуску вот такая фигня. При этом чувствительность стала лучше по сравнению с неисправным каналом. Но есть еще проблемы. Уровень -60 дБм идет с генератора, а повторяемости в приемнике нет. Под рукой, к сожалению, нет эталонного векторного анализатора сигналов, чтобы проверить сигнал с генератора.

Fs = 61.44 МГц -> dds в 4 раза (ширина нужного сигнала стандартные 10 МГц для LTE). Обработка на 15.36 МГц. И такое через раз :( Может, на плисине клоки гуляют...

spectrum_bad.png

spectrum_good.png

 

Созвездия после демодуляции:

scatter_bad.png.22a29541c606250d3d219570b484f3df.pngscatter_good.png.1d207820899d118b63a67f45032190fc.png

 

Оценка частоты при "плохом" спектре неверная. В 2,5 раза отличается от истинной. Ну и с оценкой канала беда. За один пилот такую изрезанность не вытянуть. Не понимаю, откуда она берется.

Share this post


Link to post
Share on other sites
В 24.10.2019 в 23:36, Grizzly сказал:

Запускаю на генераторе однократно по одному фрейму.

А это как? И что такое "фрейм"? Это часом не один единственный OFDM символ?:)

 

1 час назад, Grizzly сказал:

Под рукой, к сожалению, нет эталонного векторного анализатора сигналов, чтобы проверить сигнал с генератора.

У Вас полоса узкая, меньше 30МГц, сделайте несущую на генераторе под 100МГц и смотрите любым хорошим осциллографом:)

 

Share this post


Link to post
Share on other sites
13 минут назад, Самурай сказал:

А это как? И что такое "фрейм"? Это часом не один единственный OFDM символ?:)

То есть однократное "проигрывание" записи при нажатии кнопки. 7 OFDM символов, стандартная половина слота LTE.

 

13 минут назад, Самурай сказал:

У Вас полоса узкая, меньше 30МГц, сделайте несущую на генераторе под 100МГц и смотрите любым хорошим осциллографом:)

На картинках уже снесенный в ноль сигнал после прореживания в 4 раза и фильтрации. Так-то с генератора идет на несущей в полосе 56 МГц, но должно всё равно схватить осциллографа.

 

Из-за АРУ могут быть такие искажения в спектре? Я ожидал, что при подключении по кабелю будет примерно одинаковая картина при каждой генерации, а на деле половина не демодулируется.

 

P.S. В модели по этой записи я всё хорошо демодулирую и декодирую. При добавлении АБГШ получаю ожидаемые результаты.

Share this post


Link to post
Share on other sites
5 hours ago, Grizzly said:

Из-за АРУ могут быть такие искажения в спектре? Я ожидал, что при подключении по кабелю будет примерно одинаковая картина при каждой генерации, а на деле половина не демодулируется.

если включен fast attack, то АРУ очень быстро обучается. проверьте дефолтные параметры трансивера. если используете готовую отладочную плату от AD или если в своей плате вывели сигналы ctrl_out[7:0], то можно посмотреть уровень усиления АРУ и проследить его устаканивание. кстати, а случаем не подключили ли управление внешним МШУ на трансивер? если, конечно, его у вас можно байпасить

либо настройте АРУ в мануальный режим и через ctrl_in настройте на нужное усиление.

есть ощущение, что вход трансивера в перегрузке

протестируйте с непрерывным сигналом без модуляции, будет ли идеальный синус после АЦП

как захватывайте данные с axi корки трансивера в ПЛИС? насколько я помню она там выдает и забирает сэмплы на клоке 245,76 МГц. в своей реализации я выбросил dma и подключил разноклоковые fifo на передачу 61,44->245,76 и прием 245,76->61,44 и не имел проблем.

у меня с трансивером проблем не было почти, единственное что фильтры цифровые по умолчанию почему-то не включались.

Share this post


Link to post
Share on other sites
15 минут назад, quato_a сказал:

если включен fast attack

slow attack, fast attack сконфигурировать не удалось, но буду еще пробовать

я тоже думал про перегруз, реакция на такой короткий фрейм

но в реальности у меня во всей полосе разные каналы по 10 МГц, поэтому slow attack был выбран. правда, в этом случае АРУ может в основном учитывать во всей полосе самый сильный сигнал, а потом после выфильтровывания придется обрабатывать какой-нибудь слабый канал. хоть ещё одно цифровое АРУ ставь на каждый канал в таком случае

15 минут назад, quato_a сказал:

то можно посмотреть уровень усиления АРУ

плата собственного изготовления. уровень мощности с каналов есть, раз в секунду мониторится, но это, конечно, слишком большой период для моего случая. попробую чаще

 

15 минут назад, quato_a сказал:

будет ли идеальный синус после АЦП

да, это первым делом проверил, всё хорошо.

 

15 минут назад, quato_a сказал:

как захватывайте данные с axi корки трансивера в ПЛИС? насколько я помню она там выдает и забирает сэмплы на клоке 245,76 МГц. в своей реализации я выбросил dma и подключил разноклоковые fifo на передачу 61,44->245,76 и прием 245,76->61,44 и не имел проблем.

уточню у наших плисоводов. я делаю дальнейшую обработку. самое интересное, что на 30,72 проблем особых нет, но сама прошивка несколько иная. FIR в ad9361, отрабатывается один канал 20 МГц

 

15 минут назад, quato_a сказал:

у меня с трансивером проблем не было почти, единственное что фильтры цифровые по умолчанию почему-то не включались.

у нас включаются, но на 61,44 он какой-то не очень, даже с децимацией 2. в моей задаче надо из всей полосы выфильтровывать каналы по 10 МГц, поэтому я решил ограничиться только аналоговым фильтром на 56 МГц, а цифровой сделать с одним коэффициентом 2^15 :) в ПЛИС при децимации канальные фильтры фильтруют нужное

я уже начал сомневаться в том, что можно ли на 2 ГГц пользоваться кабелем для передачи сигнала с векторного генератора в ad9361. не искажает ли он :-)))

Share this post


Link to post
Share on other sites
37 minutes ago, Grizzly said:

я уже начал сомневаться в том, что можно ли на 2 ГГц пользоваться кабелем для передачи сигнала с векторного генератора в ad9361. не искажает ли он :-)))

ничего кабель кроме потерь не сделает, если КСВН норм. на моей практике 2,4 ГГц норм по кабелю проходит. можно взять даже самые простейшие ВЧ-кабели на 300 МГц, там будет просто больше затухание.

40 minutes ago, Grizzly said:

отрабатывается один канал 20 МГц

я не совсем понял. у Вас в полосе 56 МГц на один физический приемный канал трансивера приходит несколько сигналов на разных частотах и разной полосы и Вы одновременно их оцифровывайте и обрабатываете? это несколько реализаций/прошивок?

48 minutes ago, Grizzly said:

плата собственного изготовления. уровень мощности с каналов есть

или подключено несколько физических каналов трансивера и каждый раз переконфигурируете его на нужный канал?

 

43 minutes ago, Grizzly said:

хоть ещё одно цифровое АРУ ставь на каждый канал в таком случае

в таком случае лучше написать самому и оценивать уровень и степень управления усилением сигнала в интересующей полосе. благо AD позволяет удобно управлять усилением по таблице усиления с шагом в 1 дБ и сама за нас перещелкивает каскады миксера, мшу, тиа и прочего у себя внутри.

 

попробуйте захватить сырые сэмплы с АЦП, будет видно что происходит с сигналом во временной области

Share this post


Link to post
Share on other sites
22 минуты назад, quato_a сказал:

у Вас в полосе 56 МГц на один физический приемный канал трансивера приходит несколько сигналов на разных частотах и разной полосы и Вы одновременно их оцифровывайте и обрабатываете? это несколько реализаций/прошивок?

Оцифровываю сразу всю полосу 56 МГц одним каналом трансивера, а затем выбираю, с каким именно частотным каналом работать. Вот эта фильтрация идёт уже в ПЛИС. Может понадобиться часто и быстро переключаться между каналами, поэтому фильтрация идёт в параллель, а уже решение о том, какой канал демодулировать, принимается позднее.

В случае с полосой 20 МГц - это другой проект. Там всегда только один канал, поэтому на трансивере 30.72 и фильтрация на ПЛИС не требовалась.

22 минуты назад, quato_a сказал:

попробуйте захватить сырые сэмплы с АЦП, будет видно что происходит с сигналом во временной области

Спасибо. Буду пробовать. В версии без фильтрации на ПЛИС это было просто, в нынешней ко мне идут уже расфильтрованные отсчеты с каналов. Попрошу разработчиков, чтобы вывели весь сырой поток.

Share this post


Link to post
Share on other sites

Да, забыл, что трансивер 2tx-2rx MIMO.

9 hours ago, Grizzly said:

Попрошу разработчиков, чтобы вывели весь сырой поток.

Попросите разработчиков сделать вам блок управляемого захвата. На подобие ILA отладчика. У меня так в проектах по ЦОС в ПЛИС вставляю блок захвата, который синхронной на клоке работы интересующего блока захватывает массив данных в FIFO и потом выдает этот массив по внешнему интерфейсу на ПК, где можно быстро проанализировать. С ПК отправляется адрес интересующей контрольной точки (например, данных с АЦП, после фильтров, после дециматора, эквалайзера, частотного синхронизатора и проч и проч) на основе которого мультиплексируються входные данные на блок захвата с разных интересующих отлаживаемых блоков. Можно добавить и триггер, по которому будет захват синхронный по нужному событию (например, порог входной мощности превышен и значит пошли символы с АЦП). У меня так в разных проектах блок захвата передает данные по eth или COM-порту сразу в matlab (из него же и управляю захватом).

Ниже скрин примера подключения блока захвата modem_capture к интересующему отлаживаемому блоку.

modem_capture.png

Share this post


Link to post
Share on other sites

Имхо чисто в цифре ( внутри плис) разобраться  с проблемой не получится. Надо что то типа https://www.allaboutcircuits.com/news/rigol-introduces-vector-signal-analysis-option-RSA5000-spectrum-analyzer/

Или возможно кто подскажет проект анализатора векторных модуляций с открытым кодом? В принципе из высокосокростных цепей там только УВХ нужно, а остальную обработку  можно делать медленно и печально с набором статистики по точкам ( если конечно не стоит задача захвата информации).

По картинкам созвездий - область принятия решений размазана. Но с чем это связано ( джиттер, шум АЦП, проблемы с алгоритмом)- сказать пока нельзя.

Share this post


Link to post
Share on other sites
44 minutes ago, khach said:

По картинкам созвездий - область принятия решений размазана. Но с чем это связано ( джиттер, шум АЦП, проблемы с алгоритмом)- сказать пока нельзя.

достаточно лишь захватить сырые данные с АЦП в матлаб и демодулировать. тогда будет точно ясно: ошибка в демодуляторе или в формировании эталонного сигнала с генератора

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now