DCM – архиважный элемент в ПЛИС. Часть третья

Блок DCM

Структура блока DCM в ПЛИС

Гораздо более широкие возможности для синтеза частот предоставляет нам модуль DFS, выходными сигналами которого являются CLKFX и CLKFX180. Коэффициент умножения частоты задается атрибутами CLKFX_MULTIPLY и CLKFX_DIVIDE.

Атрибуты модуля DFS
Атрибуты модуля DFS блока DCM

При этом выходная частота рассчитывается по следующей формуле:

fCLKFX = fCLKIN(CLKFX_MULTIPLY/CLKFX_DIVIDE)

Когда Вы назначаете атрибуты CLKFX_MULTIPLY и CLKFX_DIVIDE, придерживайтесь простого правила: значение выходной частоты fCLKFXне должно выходить за рамки диапазона, указанного в таблице:

Диапазон выходных частот модуля DFS
Диапазон выходных частот модуля DFS

Модуль DFS также может работать в одном из двух режимов – низкочастотный и высокочастотный. Чтобы выбрать тот или иной режим, необходимо присвоить атрибуту DFS_FREQUENCY_MODE соответствующее значение LOW или HIGH.

Очень важно отметить, что модуль DFS можно использовать как совместно с модулем DLL, так и отдельно от оного. Если мы не задействуем модуль DLL, то коррекции задержки распространения сигналов CLKFX и CLKFX180 не происходит. Это, конечно, большой минус, но есть и неоспоримый плюс работы без DLL. Минимальная частота, которую можно в данном случае подавать на вход, уменьшается почти на два порядка (до 1 МГц).

Входная частота DFS без DLL
Диапазон входных частот модуля DFS (при работе без DLL)

Если мы решим задействовать модуль DLL в купе с DFS, то в этом случае нам необходимо организовать петлю обратной связи с выхода CLK0 на вход CLKFB (иначе говоря, физически соединить эти порты). Тогда модули DLL и DFS устраняют расфазировку следующим образом. В зависимости от значений атрибутов CLKFX_MULTIPLY  и CLKFX_DIVIDE модуль DLL подбирает количество элементов задержки так, чтоб фронты выходного и входного сигнала совпадали там, где это математически возможно. Например, для CLKFX_MULTIPLY = 5 и CLKFX_DIVIDE = 3 фронты сигналов будут совпадать  каждый  третий  такт входного  сигнала,  что  эквивалентно  по  времени каждому пятому такту выходного сигнала. Полезный совет: старайтесь брать как можно меньшее значение атрибута CLKFX_DIVIDE – устранение расфазировки будет быстрее.

Однако, что касается минимальной входной частоты на входе CLKIN при работе DLL с DFS, то здесь мы можем обратить внимание на таблицу:

Входные частоты блока DCM при включенном модуле DLL
Диапазон входных частот блока DCM для DFS c DLL

Видим, что минимальная входная частота при этом соответствует минимальной входной частоте модуля DLL (т.е. 18 MГц). Это может оказаться не подходящим для некоторых применений, когда например, Вам, во что бы то ни стало, нужно подать на вход сигнал с частотой меньше 18 МГц.

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

Об авторе admin

Инженер. Окончил НГТУ по специальности "Радиосвязь, телевидение и радиовещание". С 2003 г. занимаюсь разработкой электронной начинки различных радиотехнических устройств и приборов.
Запись опубликована в рубрике Все статьи, Начинающему. Добавьте в закладки постоянную ссылку.

7 комментариев на «DCM – архиважный элемент в ПЛИС. Часть третья»

  1. brucemax говорит:

    Очень классно всё написано.. особенно хорошо что есть рекомендации. А как этот блок юзать когда пишешь на VHDL, а не используешь схему? Не сочтите за нагласть, но было бы очень классно.. если была бы статья.. или видеоурок.. описывающий более менее глобальный проект с разными фичами.. например там использование в проекте одновременно несколько модулей (shematic и VHDL) и вплоть до распиновки.. плюс обеспечение обвески самой ПЛИС.. ух.. “и тут Остапа понесло”))

  2. Александр говорит:

    Честно говоря, я и сам задумывался над этим. Но я пока только два года с переменным успехом занимаюсь ПЛИСками и где-то 1.5 года – непосредственно VHDL c перерывами на другие проекты ( в основном из области ВЧ радиоэлектроники).

    Но, как правило, в верхем уровне иерархии у меня (собственно, как и у многих) всегда стоит СХЕМА. И лишь некоторые элементы пишу на VHDL и вставляю в схему в виде “черного ящика” (пока мне так удобней). Например, это делители, элементы задержки, интерфейсы разного рода, и вообще все элементы с нестандартной разрядностью.
    Скоро на сайте будет небольшой видеоурок по общим принципам создания VHDL -компонента и его включения в схему.

    По поводу обвески ПЛИС – могу только выложить стандартную схему, которой я пользуюсь… Что там можно ещё добавить, например?

    Вообще, сайт ещё очень молодой (1,5 месяца), со временем он будет наполняться информацией по ПЛИС, VHDL. Так же могу гарантировать появление большого количества новых ВИДЕОУРОКОВ (принимаю заказы в комментариях:-) )

  3. brucemax говорит:

    Какой всё таки удобный сайт, даже заказывать можно=)
    По поводу обвески я вероятно узко выразился. Можно добавить (кроме стандартной вашей схемы) общие правила проектирования.. как расположить.. как защитить входы.. как делать чтобы была менее чувствительна к наводкам.. как не надо делать и т.д….

  4. Руслан говорит:

    И снова я ) Создаю DCM с помощью КОРЕ ГЕНЕРАТОРа. На CLK_IN подаю тактову частоту 25МГц, на выходе хочу 100МГц. То есть домножаем на 4 и делим на 1. Но на выходе CLKFX мёртво. Висит ноль и ничего не меняется. И делал обратную связь, и менял все настройки – ничего не выходит. Подключены только 2 пина – описанные вход и выход. Может надо ещё чё подцепить? Помогите получить нужную частоту?

    • admin говорит:

      Для начала может стоит попробовать использовать библиотечный стандартный DCM? Убедиться, что все режимы стоят LOW (для этих частот самый оптимальный). Убедиться, что 25 на вход подается через BUFG. Вход DSSEN – это артефакт, должен висеть в воздухе, а входы RST, PSINCDEC, PSEN, PSCLK – сажаем обязательно на землю, если не применяются.

      Какой кристалл, какая плата (Отладочная или уникальная), или в симуляторе? Если на живом кристалле, стоит сначала проверить прохождение насквозь 25 Мгц мимо DCM (возможно в свойствах выводов чипа ошибка).

      • Руслан говорит:

        Делаю всё в симуляторе от ISE. Библиотечный тоже использовал – результат такой же. Режимы все стоят LOW. Единственный результат что я получаю – это на CLK0 входную частоту. А что значит BUFG?

        • Александр говорит:

          BUFG – библиотечный элемент (глобальный тактовый буфер), рекомендуется ставить на все тактовые входы.
          Вообще, я с DCM в симуляторе не работал, чаще сразу проверяю на железе. Скоро постараюсь выложить русскоязычное описание ПЛИС Spartan (в pdf). Там гораздо больше написано по работе DCM (азы, так сказать), а в этих статьях сделан упор только на некоторые специфические моменты.

Оставить комментарий