Использование PLL

блок схема устройства PLL Phase-Lock Loop
PLL (Phase-Locked Loop) - это специальный генератор со схемой подстройки частоты, это генератор, управляемый напряжением (VCO - voltage-controlled oscillator). В генераторе реализовано сравнение фаз сигнала входной частоты и сигнала выходной частоты. Измеренная разность фаз этих частот через отрицательную обратную связь как раз и управляет частотой генератора, фиксируя ее на заданном значении.

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

Замечу, что в микросхеме серии MAX II, которая стоит на нашей первой плате Марсоход, не было встроенных PLL. Серия Altera MAX II слишком простая.

В микросхеме Altera Cyclone III, установленной на новую плату Марсоход2, есть встроенные PLL. Это очень важный компонент, так как с помощью PLL обычно в проекте создаются все частоты, нужные для дизайна. Именно поэтому нужно познакомиться с PLL поближе.



Рассмотрим принцип действия PLL.

На вход PLL подается некая входная частота опорного генератора Fin. Далее на счетчике N-counter опорная частота делится и получается другая частота Fref, которая поступает на фазовый детектор PFD (phase-frequency detector).
Фазовый детектор сравнивает фазы частот Fref и той, что поступает с делителя M-counter. Разность фаз, фильтруется и управляет генератором VCO.
На выходе управляемого генератора - новая частота Fvco. Фазовый детектор подает управляющее воздействие на генератор VCO до тех пор, пока не выполнится условие Fref = Fvco / M. При этом условии частоты подаваемые на детектор фаз равны. Таким образом, например, если M=2, то частота генератора VCO должна получиться в 2 раза выше частоты Fref. Последний этап - частота Fvco делится на выходном счетчике K-counter.
Подбирая коэффициенты N, M, K можно синтезировать довольно большой диапазон частот. Более сложные компоненты PLL позволяют перезагружать коэффициенты в процессе работы системы.

Это было достаточно упрощенное изложение. Более подробно о работе PLL можно почитать в документации компании Альтера например про микросхему Cyclone III: Clock Networks and PLLs in the Cyclone III Device Family.

В этой Альтеровской документации, например, блок-схема PLL изображена вот так:

Блок схема PLL микросхемы Altera Cyclone III

Вроде бы сложно, но по сути так же, как я нарисовал выше.

 

Теперь спустимся с небес на землю и посмотрим, как же эти PLL использовать в проектах для Cyclone III и в частности для платы Марсоход2.

Здесь все довольно просто. В среде ALtera Quartus II запускаем визард через меню Tools => MegaWizard Plug-In Manager.

Пошаговое создание компонента PLL в Quartus II

Выбираем Create a new custom megafunction variation и нажимаем Next.

Пошаговое создание компонента PLL в Quartus II

В новом окне, слева выбираем Installed Plug-Ins => I/O => ALTPLL.
Справа выбираем на каком языке HDL генерировать компоненту, например, Verilog, и ниже задаем имя нового файла. Нажимаем кнопку Next.

Пошаговое создание компонента PLL в Quartus II

Тут запускается уже визард собственно связанный с компонентой ALTPLL.
Задаем нужные нам параметры. Параметров много. В большинстве случаев многие из них можно не устанавливать. Например, использовать Select the PLL type automatically и еще In normal mode. Из важных параметров - это тип микросхемы согласно проекта (Cyclone III), значение входной частоты - это частота генератора, установленного на плате. У нас на плате Марсоход2 - это 100Мгц. И еще указать быстродействие (speed grade) микросхемы - у нас это 8.
Нажимаем кнопку Next.

Пошаговое создание компонента PLL в Quartus II

На следующем экране визарда отмечаете, какие сигналы PLL вам нужны. Нужен ли вам в проекте сброс PLL areset? или разрешение работы PLL pfdena? Нужен ли сигнал сигнализирующий о том, что нужная частота установлена locked? Принимаете решение об этих сигналах и нажимаете Next.

Я позволю себе пропустить 3 экрана визарда, чтобы сильно не утомлять читателя. Я пропущу настройки Spread Spectrum - это про возможность девиации частоты на выходе PLL, еще пропускаю ClockSwitchover - возможность подключить вторую входную частоту и пока пропускаю Dynamic Reconfiguration. Это довольно специальная тема. Может быть как нибудь в другой раз.

Пошаговое создание компонента PLL в Quartus II

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

Коэффициенты можно задать самостоятельно вручную или задать желаемую частоту и Quartus II Wizard сам расчитает коэффициенты, которые нужно потом скопировать.

Вот, например, для работы первого проекта для платы Марсоход2 для видеорежима 1440x900 60Hz нужна по стандарту VESA частота 106.5Мгц.

Я указываю в окошке Requested Settings 106,5 и мне предлагают умножить частоту на 213 и разделить на 200! Ну и отлично! Если вверху окошка написано синим цветом Able to implement requested PLL, значит, у нас все получается.

Заметьте, что у Cyclone III PLL может иметь 5 выходов: C0, C1, C2, C3, C4. Каждый из выходов может быть самостоятельно сконфигурирован на заданную частоту. Правда частоты получатся более или менее связанными. Например можно получить сетку 33Мгц, 66Мгц, 133Мгц, 166Мгц - у них общий коэффициент 33. Трудно или не возможно получить сетку не связанных частот.

Для каждого выxода PLL будет соответствующая страница визарда с настройками.

Пошаговое создание компонента PLL в Quartus II

Пройдя визард до конца мы получаем некоторые сгенерированные файлы.
Файл с расширениями *.BSF - это компонент, который можно вставить в схему, если вы делаете проект в схематическом виде. Файл вида mypll.v это модуль на Verilog, экземпляры которого можно вставлять в свои модули Verilog.

Вот пожалуй все первоначальные сведения для использования PLL в проектах для микросхему Altera Cyclone III.

Добавить комментарий