МАРСОХОД

Open Source Hardware Project

Использование 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.

Комментарии  

0 #19 umarsohod 02.06.2017 05:58
Цитирую asnmedd:
А у второго циклона?

ЕМНИП - 10
0 #18 asnmedd 02.06.2017 05:52
А у второго циклона?
0 #17 umarsohod 02.06.2017 05:06
Цитирую asnmedd:
Какая минимальная частота входного сигнала необходима для работы PLL?

Для 3 ,4 циклонов и 10 макса - 5Мгц
0 #16 Leka 01.06.2017 15:03
Цитирую asnmedd:
Какая минимальная частота входного сигнала необходима для работы PLL?

Проще в мегавизарде для конкретного чипа посмотреть, задавая разные входные частоты. Если частота будет слишком низкой, Квартус выдаст сообщение.
0 #15 asnmedd 01.06.2017 13:20
Какая минимальная частота входного сигнала необходима для работы PLL?
0 #14 nckm 22.02.2017 05:26
Цитирую Yuva:
Тогда каким получить нужную частоту, когда кварцевые генераторы имеют разную погрешность?
Насколько разную? Точность кварцевых генераторов обычно выражается в ppm - parts per million. Это как проценты, только вместо основания '100' используется основание '1000000'. Обычный генератор может иметь точность 20ppm ~ 20кГц при частоте 100МГц
0 #13 Yuva 21.02.2017 08:25
Тогда каким получить нужную частоту, когда кварцевые генераторы имеют разную погрешность?
0 #12 Leka 21.02.2017 08:04
Цитирую Yuva:
Здравствуйте! Объясните пожалуйста. Если на вход ALTPLL с настройками < вход.частота 100 МГц, вых.частота 50МГц > подать не 100, а 105 МГц, то какая частота будет на выходе?

52,5 МГц
0 #11 Yuva 21.02.2017 06:56
Здравствуйте! Объясните пожалуйста. Если на вход ALTPLL с настройками < вход.частота 100 МГц, вых.частота 50МГц > подать не 100, а 105 МГц, то какая частота будет на выходе?
0 #10 Leka 17.03.2016 22:35
Цитирую Pavel_Pavel:
Добрый день, подскажите пожалуйста, как подключить выход pll к произвольному выводу I/O. пины задействоваы на отладе, а на разъем выходят обычные I/O?
Спасибо

Использовать режим DDR выхода, по положительному фронту клока выводить "1", а по отрицательному - "0". Можно поискать в инете, как выводить наружу клок.
0 #9 Pavel_Pavel 17.03.2016 13:34
Добрый день, подскажите пожалуйста, как подключить выход pll к произвольному выводу I/O. пины задействоваы на отладе, а на разъем выходят обычные I/O?
Спасибо
0 #8 Инокентий 13.03.2016 22:26
В Quartus 13.1 похоже что нет IP-блока PLL для Cylcone III (((
+1 #7 Alexx 09.02.2015 20:23
>а насчет Dynamic Reconfiguration ? как им пользоваться?

удваиваю. Было бы неплохо узнать.
+1 #6 cyttic 24.02.2014 12:46
а насчет Dynamic Reconfiguration ? как им пользоваться?
0 #5 Ю р и й 25.03.2013 05:07
Цитирую machin:
А как поступить, если существует необходимость получить значительно меньшую частоту, нежели позволяет PLL. Например 100Hz с 50MHz? Неужели в этом случае нужно использовать уже стандартные ресурсы (FF + LUT) и делать делитель частоты на счетчике с развязкой через En?

Да, именно так и делать. :-)
+1 #4 machin 24.03.2013 19:05
А как поступить, если существует необходимость получить значительно меньшую частоту, нежели позволяет PLL. Например 100Hz с 50MHz? Неужели в этом случае нужно использовать уже стандартные ресурсы (FF + LUT) и делать делитель частоты на счетчике с развязкой через En?
0 #3 Савицкий Дмитрий 12.03.2013 16:07
Цитирую nckma:
Цитирую Дмитрий Савицкий:
Есть ли тонкости при использовании Pll?Скажем я наблюдал, что в cyclone присутствуют специальные пины для PLL, как я смог разобраться - это земля аналоговая и питание, еще вопрос, когда компилировал проект, квартус выдал, что входной пин altpll не подключен к специальному входу PLL.Помогите разобраться пожалуйста.

Действительно внешние генераторы нужно/желательно подключать к специальным пинам ПЛИС - это так называемые dedicated pins

спасибо за ответ!
0 #2 nckma 12.03.2013 06:34
Цитирую Дмитрий Савицкий:
Есть ли тонкости при использовании Pll?Скажем я наблюдал, что в cyclone присутствуют специальные пины для PLL, как я смог разобраться - это земля аналоговая и питание, еще вопрос, когда компилировал проект, квартус выдал, что входной пин altpll не подключен к специальному входу PLL.Помогите разобраться пожалуйста.

Действительно внешние генераторы нужно/желательн о подключать к специальным пинам ПЛИС - это так называемые dedicated pins
0 #1 Дмитрий Савицкий 12.03.2013 06:12
Есть ли тонкости при использовании Pll?Скажем я наблюдал, что в cyclone присутствуют специальные пины для PLL, как я смог разобраться - это земля аналоговая и питание, еще вопрос, когда компилировал проект, квартус выдал, что входной пин altpll не подключен к специальному входу PLL.Помогите разобраться пожалуйста.

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



facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Статьи о разном Использование PLL