О важности правильного выбора опорного генератора для FPGA при разработке приложений для аудио, видео

    Предыстория


    Как-то потребовалось в одно чисто аналоговое устройство добавить возможностей. Затея была такова, что был совершенно очевиден факт, что результат может быть достигнут только цифровыми методами.

    Устройство было достаточно сложным. Чтобы как-то оценить работу добавления, не нарушив функциональности уже отлаженной аналоговой части, появилась идея сделать модуль, который можно было бы испытать, а потом, в случае успеха, вставлять в уже работающий прибор. А если затея не получилась бы, то вместо модуля воткнуть заглушку, обеспечить прозрачный режим.

    Схемотеника


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

    image

    Как следует из рисунка, на входе установлен АЦП типа ADC12020, на выходе — ЦАП типа DAC7821. Некоторое неудобство создавалось тем, что ADC12020 имеет дифференциальный вход. Но это неудобство оборачивается подавлением синфазных шумов и помех, что немаловажно для полного динамического диапазона.

    Реализация


    Модуль бы реализован в виде 4-слойной платы с габритами 50х30 мм, с 19х2 контактами с шагом 2.54 мм. Т.е. модуль может монтироваться с помощью розеток для обычных штыревых разъёмов.

    image

    Меняя чип 10Mxx, можно строить устройства различной степени сложности при тех же габаритах и интерфейсе.

    Проблема


    В первой реализации были использованы опорные кварцевые генераторы из магазина «Кварц», на которые даже не было данных, кроме частоты.

    image

    Тестирование модулей показало, что всё задуманное работает. Однако при соединении полных изделий по линии связи (а речь в данном случае идёт про трансиверы) оказалось, что связь не работает, либо работает на скоростях значительно ниже тех, которые должны были быть.
    Внимательное исследование обнаружило, что имеются некие отклонения в граничных частотах синтезированных фильтров и выходных частотах модуля.

    Обнаружилось, что причина этого — разброс частот опорных кварцевых генераторов до 10 кГц от номинала.

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

    Путём замера конкретной частоты конкретного генератора и записи этой конкретной частоты в программу конфигурирования FPGA удалось устранить выявленную проблему.

    В работе [1] показано влияние отклонения частоты на качество приёма.

    Решение


    Стандартные кварцевые генераторы, которые в избытке имеются на рынке, имеют вот такие параметры, как, например, генераторы от Seiko Epson[2]:

    image

    Видно, что лучший параметр, это 2х10-5, что на несущей частоте 50 МГц даёт значение отклонения 1 кГц, что может быть весьма критичным. В таблице также нет такого параметра, как выбег частоты по включении генератора.

    Поиск на рынке по заданным параметрам отклонения частоты и возможности приобретения привёл к изделиям компании Taitien. На рисунке даны параметры серии TCXO[3]:

    image

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

    В результате стало возможным устанавливать связь между двумя устройствами без установки точной опорной частоты в FPGA. Реально используется генератор типа TYETBCSANF, который, правда, имеет выход в виде клипированной синусоиды. Но это преодолевается с помощью несложной схемы.

    Заключение


    При проектировании радиотехнических систем на базе FPGA нужно обращать внимание на качество опорного генератора, его стабильность. И выбирать опорный генератор в соответствии с требованиями к точности по частоте.

    1. БАТЫРЕВ И.А. ОЦЕНКА ВЛИЯНИЯ СДВИГА НЕСУЩЕЙ ЧАСТОТЫ НА КАЧЕСТВО ПРИНИМАЕМОГО OFDM СИГНАЛА
    2. CRYSTAL OSCILLATOR. SG-310 series
    3. Генераторы TCXO от Taitien
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 11

      0
      Да, именно так, тактовая для ADC задаётся с помощью PLL внутри FPGA. Что касается DAC, то там статический преобразователь.
      Фишка в том, что помимо фильтров, есть ещё как бы гетеродины со смесителями. Цель — сдвиг частоты. Вот из-за этого, в основном, проблема возникла. Плюс, когда полоса режектора 3 кГц, то 1 кГц отклонение, то это очень много.
      А насчёт длины связей — полноте. При максимальном габарите платы 50 мм задержка от одного конца платы до другого составит 6.67E-10 с с учётом диэлектрической проницаемости диэлектрика. Это на 3 порядка меньше, чем длина волны на частоте 50 МГц.
        +1
        Когда я был юным и безусым, меня невероятно бесило и удивляло, что в даташитах сложных радиотехнических компонентов сперва идет уйма каких-то странных графиков, цифр и таблиц, а все самое важное — описание интерфейсов, структура устройства и т.п. — где-то дальше. С тех пор прошло много лет, меня, в силу специфики моей специальности, это продолжает слегка раздражать, но я понял отчего так ;)
          0
          :-)
          0
          интересный опыт, но мне кажется что вы не докрутили исследовательскую задачу по выяснению причины неработоспособности схемы до конца) и она вас еще догонит. сложно судить без детальной схемы, но обычно проблема такого рода не в 1kHz разбросе для 50MHz тактового сигнала. два места на которые я бы обратил внимание: формирование опорного тактового сигнала для ADC, DAC(используются делители в FPGA и потом сигнал с нужной частотой идет на микросхемы?) и синхронизация данных ADC->FPGA and FPGA->DAC(судя по тексту у вас есть длинные линии связи между ADC, DAC and FPGA). Удачи!
            0
            Да, именно так, тактовая для ADC задаётся с помощью PLL внутри FPGA. Что касается DAC, то там статический преобразователь.
            Фишка в том, что помимо фильтров, есть ещё как бы гетеродины со смесителями. Цель — сдвиг частоты. Вот из-за этого, в основном, проблема возникла. Плюс, когда полоса режектора 3 кГц, то 1 кГц отклонение это очень много.
            А насчёт длины связей — полноте. При максимальном габарите платы 50 мм задержка от одного конца платы до другого составит 6.67E-10 с с учётом диэлектрической проницаемости диэлектрика. Это на 3 порядка меньше, чем длина волны на частоте 50 МГц.
            0
            к сожалению в статье не видно всего пути распространения тактового сигнала, поэтому мой мозг нарисовал проблему по пути OSC->FPGA->ADC->FPGA, вы к слову написали «связь не работает, либо работает на скоростях значительно ниже тех, которые должны были быть.» а это очень часто проблема таймингов. не знаком с MAX, но в таких системах нужно гарантировать что данные будут правильно приняты/отправлены относительно тактового сигнала: задержка в пути PLL->MAX(OUT_PIN) или доп инверсия тактовго сигнала(почему нет?), задерка в ADC по выдаче данных(почему нет?), задержка в линии(соединение проводом)) в FPGA. и это мы опускаем изменение таймингов при разных уровнях питания и температуры. прыг скок и у вас данные принимаются в режиме установления. Или это проблема с PLL который не мог нормально залочиться на сигнал от первого кварца(проблема с параметрами сигнала с кварца?). проверялось ли все это не видно. Без временых диаграмм и прямых измерений это все мои догадки. Надеюсь у вас действительно основная проблема была с разбросом генератора)
              0
              Судя по тому, что при конфигурации конкретного модуля при забивании частоты не 50000 кГц, а, скажем, 500010 кГц, а в другом модуле что-нибудь вроде 50003 кГц, и этим решалась проблема связи, дело было именно в точности частоты опорника.
              Дело в несущей частоте.

              А насчёт PLL, модули достаточно низкочастотные, тактовая ADC всего-навсего 4 МГц. На рабочих частотах, превышающих 1 МГц, модули не тестировались. Возможно, что на более высоких частотах могут вылезти вышеуказанные проблемы.
              +1
              Что то мне кажется проблему не нашли, а окостылили и проблема в другом. Без исходных данных судить трудно, но: во-первых отклонение 10кГц на 50МГц это 200ppm, просто так такое не получится, это или кривая схема генератора (например неверно выбраны емкость кварца и/или нагрузочные емкости) или кварцы с помойки или неотмытая плата.
              Идем дальше, в статье упоминается, что даже 1кГц на 50МГц уже проблема, т.е. если рабочая частота ацп 4Мгц, то 50МГц напрямую не делится, пусть будет х2, потом делим на 25, получаем 4МГц, но здесь уже ошибка 80Гц при начальном отклонении 1кГц (20ppm). Не забываем, что это лишь опорная частота, и по отношению к сигналу ошибка будет еще меньше, для простоты, если сигнал 40кГц, отклонение будет +-0,8Гц, подробно объяснять как это получается сейчас не буду, можете проверить. Если ваша PSK не работает при таком отклонении, то это однозначная проблема алгоритма. PSK простая как лопата и так же легко моделируется, это не OFDM. Дальше два варианта, откуда ошибки: Простая ошибка — вычисляете делитель на лету, не умножая кварц, получаете делить 12.5, округляете = 12, ошибка уже огромная. Второй вариант — джиттер. На самом деле требования к джиттеру существенно выше, чем собственно к частоте, а у PLL ПЛИС с этим печально, у генераторов, как правило, джиттер нормируется и он обычно неплохой.
              ЗЫ: ну и вообще, синхронизация или фапч по сигналу предусмотрена?
                0
                Во-первых, дана ссылка на статью, где даны развёрнутые данные.
                Во-вторых, применены не «кварцы», а готовые генераторы.
                В-третьих, ошибки в относительных единицах при делении частоты остаются такими же.
                В-четвёртых, это не просто QPSK. Нечто более сложное. Скажем, типа OFDM, но с поднесущими, формирующимися с помощью QPSK.
                В-пятых, я написал, что использован готовый чип в приёмнике.

                В общем, нужно внимательнее читать.

                Ещё раз, если проблема решается прописыванием в настройках FPGA реальной частоты опорного кварцевого генератора, то это не ошибки деления, не джиттер, а именно проблема точности.
                  0
                  Во-первых, в статье по ссылке формулы без результатов и вывод неоформлен, пара графиков не в счет. Погружаться в это читателю было бы странно, тем более здесь говорится о PSK, в статье об OFDM, я ее воспринял как иллюстрацию. Далее, по статье по ссылке, конкретики нету, ежу понятно, что если Вы сдвигаете частоту на четверть расстояния между каналами все становится плохо, только чтобы как то это соотнести с Вашей статьей, надо знать расстояние между каналами.
                  Про генераторы да, не обратил внимания.
                  «В-третьих, ошибки в относительных единицах при делении частоты остаются такими же».
                  — Именно про это я и написал, что ошибка относительная — для несущей 500кГц даже 200ppm (странное что-то, я такого не встречал) это будут 100Гц. Если брать просто типичный сверхдешевый генератор, имеем 50ppm (2,5кГц на 50МГц) или 25Гц смещения на 500кГц несущей и проблем это точно не должно вызывать.
                  — ладно, приемник взяли готовой, фапч не умеет, значит явно должны быть прописаны требования к стабильности и точности частот. Тогда смысл ставить генератор где этот параметр не нормируется, а потом героически преодолевать? Тем более что у Вас все данные на руках. Типично ардуиновый в полохом смысле слова подход, подать на 3-вольтовый чип 5 вольт, а потом удивляться, почему не работает.
                  Ваша статья была бы полезная если бы были подробности в цифрах. Добавили бы промежуточные пункты, что будет если задать частоту от номинальной к реальной с шагом 1кГц и результат. А так просто описали очевидный факт, можно всю статью уложить в два приложения: «Генератор с нормированной точностью лучше, чем непонятно какой, а в системе, где точность критична, непонятный будет работать плохо или вообще не будет. Хороший генератор должен обладать точностью не хуже 20ppm».
                    0
                    Я не анализировал по-битно, где собака зарыта. А есть участки структуры, где рекурсия по-чёрному используется. Может статься, что в этом дело.
                    Насчёт полезности. Я предостерёг от использования нестабилизированных, нетримированных кварцевых генераторов в синтезированных на базе FPGA радиоустройствах. Собственно, об этом статья. Только факты. Чтобы не повторили моих ошибок.

                    Был другой аналогичный случай, но там всё лежало на поверхности.
                    Была разработана система на базе CC1101. На тулкитах всё работало прекрасно. При переносе на реальные устройства связь не работала. Для формирования выходных частот в CC1101 используются кварцевые резонаторы на 27 МГц с обвязкой. И вот эта обвязка в виде конденсаторов давала разброс в 1 кГц опорной частоты между устройствами (кварцевые резонаторы использовались заведомо качественные). Этого было достаточно, чтобы GFSK с полосой примерно 10 кГц не состыковывался.
                    Каким образом TI выставляет на тулкитах опорную частоту в «0» — это загадка.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое