В чем разница между DCM и PLL, например, в Xilinx FPGA?

Некоторые ПЛИС имеют как DCM (Digital Clock Manager), так и PLL (Phase Lock Loop) для использования во внутренней генерации тактовых импульсов.

Документация Xilinx Spartan-6 FPGA Clocking Resources UG382 (v1.10) описывает ряд функций для DCM:

  • Устранение смещения часов
  • Фазовый сдвиг тактового сигнала
  • Умножьте или разделите входящую тактовую частоту или синтезируйте совершенно новую
  • Кондиционируйте часы, гарантируя чистые выходные часы с рабочим циклом 50%.
  • Зеркальное отображение, перенаправление или повторная буферизация тактового сигнала
  • Фильтрация входного джиттера тактового сигнала
  • Автономный осциллятор
  • Генерация тактового сигнала с расширенным спектром

Однако, насколько я понимаю, все это (или, по крайней мере, большинство, может быть, не «автономный осциллятор») также доступно при использовании PLL.

Итак, в чем разница между использованием DCM и PLL в конструкции FPGA?

Несколько советов по форуму xilinx: forums.xilinx.com/t5/Welcome-Join/DCM-MMCM-and-PLL/td-p/654372

Ответы (2)

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

Это (DLL) была линия задержки с ответвлениями, питаемая от исходного тактового сигнала, выбирая разные ответвления, вы могли получить разные задержки на выходном тактовом сигнале. Поскольку задержки непредсказуемы, логика сравнивала выходные данные с разных ответвлений, пока не находила, какой номер ответвления дает задержку полного тактового цикла — он был «разблокирован» до тех пор, пока не находил правильный ответвитель. Затем он обновлял этот номер отвода по мере дрейфа задержек (например, по мере изменения входной частоты или прогрева микросхемы), а затем из него вычислялись другие задержки (например, 90 градусов, 180 градусов).

Таким образом, он обеспечивал отдаленно похожее на PLL поведение без каких-либо аналоговых схем, чего было трудно достичь в их процессах в то время. Недостатком было то, что спектр джиттера отличался от PLL, поскольку задержка всегда представляла собой целое число отводов.

Если вы каскадировали DLL или DCM, второй, вероятно, будет работать, но третий может иметь трудности с блокировкой из-за джиттера, вызванного другими.

DCM основан на той же идее, но предоставляет другие функции, такие как умножение тактовой частоты.

Более новые FPGA предлагают как DCM (DLL), так и PLL, но я ожидаю, что DCM по-прежнему легче производить.

Спасибо за подробное техническое описание; это очень полезно для понимания технологии и использования. Существуют ли ситуации, когда следует использовать DCM вместо PLL или наоборот, или это больше вопрос об использовании того, где, например, джиттер и частота. обеспечит время закрытия?
Ну, если вам нужно ослабление джиттера или вам нужно отслеживать меняющиеся часы, вам нужен PLL. Кроме того, DCM обычно имеют низкое ограничение по частоте (где задержка в один цикл падает с конца линии задержки!), поэтому для медленных часов требуется PLL. Общее правило таково: используйте DCM там, где он будет выполнять свою работу, и используйте PLL там, где он вам нужен.
Спасибо, очень полезное и прекрасное правило использовать сначала дешевые ресурсы (DCM) там, где это возможно, а потом уже требуются более дорогие и универсальные (PLL).

Так что, во-первых, то, как производитель ПЛИС решает назвать компоненты, в основном является маркетинговым выбором. Так что в этом нет никакого внутреннего значения. Всегда приятно помнить.

Затем: PLL на самом деле это просто контур управления, в котором наблюдаемая / скорректированная величина является фазой (или ее производной) сигнала. Таким образом, это часть чего-то, что может генерировать часы, но не полный генератор часов. Конечно, это похоже на «транзистор», обозначавший маленькие радиоприемники в 1960-х и 70-х годах, потому что центральным компонентом был транзистор. Но из одного транзистора не получится радиоприемник.

Таким образом, все, что в вашем проекте называется PLL, должно сопровождаться описанием того, что оно на самом деле делает. Сравните это описание с описанием того, что делает DCM. Это лучший ответ, который мы можем дать — «PLL», опять же, на самом деле означает только один контур управления, а не тактовый генератор.

Спасибо за ответ. Однако, насколько я понимаю, это больше, чем маркетинговая игра с именами, поскольку Xilinx Spartan-6 имеет как DCM, так и PLL. По этой причине, вероятно, важно понимать разницу, поскольку у инженеров может быть веская причина для реализации двух разных компонентов, которые на первый взгляд могут выглядеть как обеспечивающие схожую функциональность.
Как я уже сказал, это маркетинговое название. Нет необходимости в обсуждении. PLL - это просто контур управления.
@MarcusMüller Давайте сформулируем вопрос OP по-другому: в каких конкретных случаях вы должны решить использовать ресурс DCM по сравнению с ресурсом PLL в Spartan 6 FPGA (поскольку они оба доступны)? Вы не обращаетесь к этому. PLL и DCM могут быть маркетинговыми названиями, но они оба обозначают разные фактические блоки, доступные в этой FPGA, поэтому они действительно, вероятно, имеют немного разные типичные применения.
@dim, но, задавая такой вопрос, нужно было бы спросить «с какой целью?», Чтобы вопрос ОП не остался неясным. В этом случае я взял ту часть вопроса, на которую можно ответить, и объяснил, как самому ответить на вопрос об использовании (путем сравнения спецификаций).
@MarcusMüller Его последнее предложение: «В чем разница в использовании DCM и PLL [...]», я бы сказал, довольно ясно.
@dim любит противоречить, вот. Это эквивалентно вопросу «какая разница в использовании шестигранника по сравнению с полупроводниковым переходом, находящимся под воздействием поля», и мне пришлось бы спросить «Для чего?» и: кстати, шестигранник — это просто маркетинговое название, а полупроводниковый переход — это просто часть МОП-транзистора. Но если вам нужно выяснить, сравните таблицы данных.». (дальше, более саркастические аналогии «В чем разница между Lamborghini и V8», предполагая, что Lamborghini обозначила свои заботы как V8, что является просто конфигурацией двигателя)
@MarcusMüller Я немного упрям. Я бы сказал, что это больше похоже на «какая разница в использовании USART и UART», на что можно было бы ответить: «ну, если вам просто нужна асинхронная связь, вы можете использовать оба, но USART, кроме того, также может обрабатывать синхронная связь». ОП не заботится об именах. Ему важно, какие функции обеспечивают оба блока в Spartan 6 и чем они отличаются. Как бы то ни было, мне кажется, что это вообще не касается его беспокойства.
@dim упрямство - одна из сильных сторон, обычно встречающихся в EE :) Но, тем не менее, я понимаю вашу точку зрения. Моя проблема действительно заключается в том, что документ, на который ссылается OP, представляет собой объяснение ресурсов тактирования на FPGA в формате 116p - есть отдельные главы, в которых освещается то, что делают модули DCM и PLL соответственно. Я не могу скопировать и вставить 20 стр. документации Xilinx, поэтому, чтобы OP не указывал, что ей/ему нужно делать, у меня нет идей, как ответить на вопрос.