Настройка PLL FPGA серии iCE5 (iCE40 Ultra) в среде iCEcube2

Как и в любом уважающем себя FPGA, рассчитанном на достаточно высокое быстродействие, в iCE5LP2K есть один модуль PLL, и, скорее всего, он понадобится. Продолжим же с него. На самом деле, микросхема эта не настолько уж и шустрая, не дотягивает даже до уровня первого циклона (Altera Cyclone I).

Я провёл мини-тест, запускал моргалку светодиода на разных частотах.
  • 96 МГц: предупреждений нет, моргает нормально;
  • 120 МГц: есть предупреждения о превышениях временных порогов на каких-то путях, но ещё работает, сбоев в моргании нет;
  • 130 МГц: есть предупреждения, моргает со сбоями и зависаниями, всё плохо.
  • 150 МГц: есть предупреждения, не работает ничего, светодиод просто не включается.
Синтезатор не требует файла с временными ограничениями на сигналы и позволяет собрать даже нерабочий вариант. Файл ограничений, кстати, добавить можно.
То есть даже собранный правильный код не означает, что он будет работать. Думаю, более простая схема, без такого километрового счётчика, работала бы и на более высокой частоте, чем эта моргалка.

Тайминги и частоты PLL есть в даташите в разделе sysCLOCK PLL Timing. Кратко — входная частота от 10 до 133 МГц, выходная от 16 до 275.
Описание сигналов PLL есть, как минимум, в двух документах:
  • «iCE40 Ultra Family Data Sheet», Table 2-3. PLL Signal Descriptions;
  • «iCE40 sysCLOCK PLL Design and Usage Guide», Table 4. PLL Signals.
В минимальной версии простого изменятора частоты интересны только два сигнала: REFERENCECLK — вход, PLLOUTCORE — выход.

Для настройки PLL в этой среде разработки даже сделали окошко с настройками, которое может сгенерировать и отредактировать сгенерированный код на верилоге и VHDL.
Как видно по скриншотам, PLL достаточно гибкий и имеет достаточное количество разных настроек и вариантов работы. Настроим его на 96 МГц, удвоенную частоту генератора. Остальные опции оставим по умолчанию.
1. Tool -> Configure… -> Configure PLL Module…
Мастер настройки PLL
2. Создать новый файл test_pll (1 — создание, 2 — редактирование)
Создать новый файл для PLL
3. Настройки раз
Настройки раз
4. Настройки два
Настройки два
5. Настройки три
Настройки три
6. Выбор входной и выходной частоты. Входная(1) — 48 МГц, выход генератора, выходная(2) 96 МГц — в два раза больше.
Выбор частот
7. Проверка
Проверка
8. Сохраняем файл в виде VHDL-кода или Verilog-кода.
Сохранение
9. Добавим в проект test_pll.vhd, почему-то сам он не добавляется
Добавить в проект

В результате работы генератора кода получаем два файла: test_pll.vhd, где описано подключение PLL к внутреннему IP-блоку и test_pll_inst.vhd, в котором находится шаблон подключения к своему устройству:
test_pll_inst: test_pll
port map(
          REFERENCECLK => ,
          PLLOUTCORE => ,
          PLLOUTGLOBAL => ,
          RESET => 
        );


Файл test_pll_inst.vhd можно удалить — после копирования кода он больше не нужен.
Подключаем к нашему проекту. Создадим сигнал для тактового сигнала PLL:
signal pll_clk : std_logic;

Заведём этот сигнал pll_clk на выход PLL, clk на вход PLL, ресет в 1. И добавим ключевое слово entity к «шаблону», а то не соберётся.
test_pll_inst: entity test_pll
port map(
	REFERENCECLK => clk,
	PLLOUTCORE => pll_clk,
	PLLOUTGLOBAL => open,
	RESET => '1'
	);

И переназначим в процессе моргатора тактовый сигнал с clk на pll_clk. Всё, теперь светодиод должен моргать в два раза быстрее.
process (pll_clk)
 begin
	if rising_edge(pll_clk) then
		if(test_cnt = 23999999) then
			test_led <= not test_led; 
			test_cnt <= 0;
		else
			test_cnt <= test_cnt + 1;
		end if;  
	end if;
end process;


Через то же окно настройки можно PLL перенастроить, только надо выбирать в самом первом окне пункт «Modify». И проверяйте файл, который он предлагает менять — он запоминает последний использованный вообще, а не файл из данного проекта. а то можно долго ковырять настройки PLL и удивляться, почему же ничего не изменяется… И окно выбора файла у них калечное — мастер переваривает и VHDL, и Verilog, но в фильтрах есть только верилог :< Путь к файлам VHDL надо вводить вручную, хоть это можно.

Ссылки:
Файлы в топике: test_bitmap_pll.zip, ledex_pll.zip

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.