Введите текст заголовка

Страница на этапе разработки

В данном Уроке мы с Вами не вдаваясь в подробности языка программирования и нюансов настроек напишем свою первую программу, зальем ее и проверим как она работает. Работать мы будем с PLIC xc7a35tfgg484в среде программирования Vivado.
После запуска программы нам необходимо указать, что мы будем создавать новый проект:

После нажимаем Далее и вводим название проекта и путь где он будет хранится:
При нажатии далее, мы попадаем в следующее меню, где мы все оставляем без изменений:

В следующем меню мы выбираем тип микросхемы с которой будем работать:
У меня микросхема XC7A35tfgg484abx.
Дальше нажимаем далее два раза и перед нами откроется рабочее окно:

Для ознакомления и проверки что у нас все работает, мы напишем не большую программу для мигания светодиодами. Многие вещи по началу покажутся сложными или не понятными, мы все детали обсудим далее в других уроках. Сейчас у нас цель залить первый наш программный код и убедится, что все работает.
Для начало нам нужно создать файл, где будет у нас описываться логика роботы. Для этого выбираем Design Source и нажимаем плюсик:
Нажимаем далее и добавляем в проект новый исходник:
Вписываем свое название файла и нажимаем кнопку Ок. Дальше нажимаем кнопку Далее и Финиш. На этом этапе файл создан.
Открываем данный файл двойным нажатием на него и вставляем внутрь данный код:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity led is
port(clk : in std_logic; — входной генератор 50МГц
         leds : out std_logic_vector (3 downto 0) — светодиоды
         );
end led;

architecture Behavioral of led is
— счётчик делителя
signal div_counter : unsigned(25 downto 0) := (others => ‘0’);
— состояние светодиодов
signal led_reg : std_logic_vector(3 downto 0) := «0001»;
begin
  process(clk)
     begin
        if rising_edge(clk) then
           if div_counter = 24999999 then — 0,5 секунды при 50МГц
             div_counter <= (others => ‘0’);
             — циклический сдвиг бегущего огонька
             led_reg <= led_reg(2 downto 0) & led_reg(3);
         else
           div_counter <= div_counter + 1;
        end if;
     end if;
  end process;
 leds <= led_reg;
end Behavioral;

Так как это нулевой урок, детально по коду мы пройдемся в следующих уроках. У меня на плате стоит кварц на 50МГц, по этому меандр который мы делаем рассчитывается так: (50000000/2)-1=24999999, то есть 0,5 секунд у нас будет логический ноль, 0,5 секунд логическая единица. Если у Вас стоит другой кварц, Вам нужно буде пересчитать значение.
У меня будет 4 светодиода, по этому в описании стоит (3 downto 0).
Теперь необходимо привязать наши ножки в программе к физическим ножкам. Для этого мы нажимаем Run Sinthesis:

После окончания синтеза, мы можем перейти к нашим ножкам нажав Open Synthesized Design:
Дальше назначаем физические ножки в соответствии с ножками в программе:
Пока оставляете как у меня, если у Вас светодиоды и тактирование сидит на других ножках — переназначьте их. Особенности настроек рассмотрим в следующих уроках.
Теперь нажмем Cntr+S , появится окно, в котором мы должны указать имя файла в котором у нас будут храниться наши настройки ножек:

После сохранения открываем наш файл:

Но перед этим нам надо еще выставить/рассчитать тайминги: для этого открываем редактор:
В открывшемся окне запускаем редактор:
Вводим сверху названия и нажимаем три точки:

 

 

SVG to HTML/CSS