Я рассчитываю реализовать фазовую синхронизацию в FPGA без использования каких-либо внешних компонентов (кроме АЦП). Для простоты достаточно привязки к простому двоичному импульсу. Частота сигналов составляет ~ 0,1-1% от тактовой частоты. Я не могу использовать встроенные часы PLL, потому что они обычно:
- Не настраивается (устанавливается во время синтеза).
- Дрожит.
- Не поддерживайте частоту, которая мне нужна.
Я перебирал литературу и нашел несколько двоичных циклов фазовой синхронизации. Наиболее заметен дизайн «импульсного кражи», на который я могу при желании выложить ссылку. Я реализовал и синтезировал с некоторым успехом, но его диапазон джиттера и блокировки был не так хорош, как рекламировался. Я также имел успех, используя внешний DVCO, но я бы предпочел, чтобы я мог реализовать все на чипе.
Цифровая схема или даже подсказка в правильном направлении были бы полезны (я бился головой об это некоторое время), проверенная реализация FPGA была бы замечательной, но не ожидаемой.
ДОБАВЛЕНО 10-27-2010
Фактический дизайн DPLL, который я использовал, имеет «Фильтр случайного обхода» в качестве фильтра контура (а не «перехвата импульса», описанного ранее, просматривая мои записи, которые не сработали хорошо), который затем направляет тактовые импульсы в DCO , Диапазон блокировки устанавливается через делитель в DCO. Чувствительность петли устанавливается путем варьирования длины случайного блуждания.
Статья, в которой это найдено, цитируется в конце этого поста. После того, как я сам реализовал некоторые его части, я обнаружил, что на самом деле он уже был реализован в OpenCores, однако оказывается, что в последние несколько месяцев проект был удален, но у меня есть файлы Verilog, которые будут сохранены, если кто-нибудь захочет их.
Ямамото, Х .; Mori, S .; , "Производительность бинарного квантования всей цифровой фазовой автоподстройки частоты с новым классом последовательного фильтра", Связь, транзакции IEEE, т. 26, № 1, с. 35-45, январь 1978 г.
doi: 10.1109 / TCOM.1978.1093972
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895
Ответы:
Можете ли вы опубликовать более подробную информацию о целевой частоте, дрожании и полосе пропускания петли (требуемое время установления)? Кроме того, какой тип генератора вы хотите использовать (внешний с ЦАП, с / без сглаживания?, Встроенный цифровой счетчик / аккумулятор)?
Если вы довольны цифровым «генератором» (т. Е. Переполненным аккумулятором) и его джиттером, то остальная часть схемы может быть довольно простой:
Что касается полосы пропускания контура, если она не обеспечивается временем установления, решите ее на основе шумовых вкладов всех компонентов.
В случае, если опорный сигнал модулирован по фазе или частоте - используйте ширину полосы контура ниже, чем наименьшая частота сигнала, модулирующего опорный сигнал.
Более сложные методы используются, если выходная частота близка или равна тактовой частоте и / или если требуется низкий джиттер или очень быстрый диапазон синхронизации. Возможно, в вашем случае они не нужны, к тому же они могут не очень хорошо подходить для реализации FPGA.
источник
Если вы можете терпеть небольшую дрожь, но в большинстве случаев вам просто нужно точное тактирование против дремотных часов для восстановления данных, вы можете реализовать что-то вроде CAN Standard PLL (начинается на странице 67 этого PDF). Это работает на основе счетчика переполнения, который должен быть номинально настроен правильно, но синхронизируется по фронту во входящем импульсном потоке.
источник