ПЛИС PLL.

ПЛИС PLL.

В прошлой статье про ПЛИС мы написали программу которая мигала светодиодами, но разбираться с ПЛИС, чтобы помигать светодиодами — это неоправданная трата времени. В реальной жизни ПЛИС применяют либо для захвата и обработки данных на больших скоростях, например, чтобы забирать данные у АЦП, работающего на сотнях мегагерц , либо там где нужна нестандартная периферия, например десяток модулей SPI. И если второй вариант хоть как-нибудь можно реализовать на МК, то забирать данные на большой скорости средствами МК нереально.

Для того, чтобы забирать данные на больших скоростях необходимо, чтобы сама ПЛИС работала на частоте в несколько раз превышающей, частоту забора данных, для этих целей в ПЛИС как и в МК предназначен модуль PLL. Его настройкой мы и займемся в этой статье.

Первым делом, открываем даташит и смотрим какую максимальную частоту мы можем получить на выходе PLL.
ПЛИС PLL.

ПЛИС PLL.


Создаем проект в Quartus. В правой части окна программы должен располагаться IP Catalog, если его там нет, во вкладке Tools, находим IP Catalog, кликаем по нему и уже в нем выбираем ALTPLL.
ПЛИС PLL.

Перед нами откроется окно в котором надо указать название файла и на каком языке его необходимо генерировать.
ПЛИС PLL.

Перед нами откроется окно настройки самого PLL в котором необходимо указать частоту, которая подается на его вход, остальные настройки по желанию.
ПЛИС PLL.

В следующем окне, можно выбрать нужен ли нам: сигнал сброса PLL, сигнал запуска PLL, сигнал о том, что произошел захват частоты PLL.
ПЛИС PLL.

Следующие несколько шагов пропущу, в них ничего не изменял. Перейду сразу непосредственно к настройке выхода PLL. В данном окошке можно либо задать коэффициенты вручную, либо задать необходимую частоту, а wizard сам рассчитает коэффициенты.
ПЛИС PLL.

Хотелось бы отметить,что PLL у данной ПЛИС может иметь до 5 выходов, которые могут быть сконфигурированы на нужную частоту. Оставлю тут картинку для лучшего понимания.
ПЛИС PLL.

Но надо отметить, что тут присутствует ограничение, получить на выходе PLL можно только кратные частоты, то есть отличающиеся в целое число раз. Например, если при настройке выхода C1 указать частоту 350MHz, wizard скажет, что нет возможности её получить.
ПЛИС PLL.

В последнем окне, можно выбрать типы файлов, которые генерирует wizard по завершению настройки. Нам хватит тех двух, которые выделены по умолчанию.
ПЛИС PLL.


В итоге wizard должен создать файл pll.v и в нем одноименный модуль с двумя параметрами, входной и выходной сигналы.
ПЛИС PLL.


Напишем код который по возрастающему фронту будет изменять состояние вывода. Так как PLL в нашем проекте работает на частоте 400MHz, а изменять состояние выводы мы будем только по возрастающему фронту, по факту на экране осциллографа мы должны увидеть сигнал с частотой 200MHz.

module pll_project(input clk_50MHz, output reg pll_out);

wire wc0;

pll pll1(.inclk0( clk_50MHz ), .c0( wc0 ));

always@(posedge wc0)
begin 
	pll_out <= pll_out^1'b1;//изменяем состояние вывода
end

endmodule

Назначим сигналам выводы, учитывая знания из прошлой статьи о том, что у ПЛИС есть ножки предназначенные для вывода сигнала PLL наружу.
ПЛИС PLL.

Картинка на экране осциллографа говорит о том, что мы все сделали правильно, но думаю кого-то может смутить амплитуда сигнала. Смущаться не стоит потому, что полоса пропускания осциллографа всего 100MHz, а сигнал частота сигнала 200MHz.
ПЛИС PLL.
комментарии
0