Сохраняем программу в энэргонезависимой памяти CPLD XC7A35TFGG484, подключаем внешнее тактирование.

В данном уроке мы научимся сохранять нашу программу в энерго не зависимую память и подключим внешнее тактирование. 
Начнем с тактирования (частота тактирования у меня составляет 50МГц), у меня внешний генератор подключен к ножке W19
Именно к ней мы подключимся, для этого пропишем в нашем файле подключения IO следующие строчки:

set_property PACKAGE_PIN W19 [get_ports clk]
set_property IOSTANDARD LVCMOS25 [get_ports clk]
create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]

Остальной текст оставляем без изменений.

Теперь скорректируем наш основной код, в котором уже используется внешний тактовый сигнал.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity LED is  Port (
        clk  : in  STD_LOGIC;
        led0 : out STD_LOGIC;
        led1 : out STD_LOGIC;
        led2 : out STD_LOGIC
    );
end LED;

architecture Behavioral of LED is
    signal divider : unsigned(24 downto 0) := (others => ‘0’);
    signal state   : unsigned(1 downto 0) := (others => ‘0’);
begin

    process(clk)
    begin
        if rising_edge(clk) then
            — При 50 МГц переключение каждые 0.5 секунды
            if divider = 24999999 then
                divider <= (others => ‘0’);
                if state = 2 then
                    state <= (others => ‘0’);
                else
                    state <= state + 1;
                end if;
            else
                divider <= divider + 1;
            end if;
        end if;
    end process;

    process(state)
    begin
        led0 <= ‘0’;
        led1 <= ‘0’;
        led2 <= ‘0’;
        case state is
           when «00» => led0 <= ‘1’;
           when «01» => led1 <= ‘1’;
           when «10» => led2 <= ‘1’;
            when others => null;
        end case;
    end process;
end Behavioral;

 
 

 

 

Теперь мы скомпилируем наш код и запишем его в энерго не зависимую память.
Для начало нам нужно указать какой тип памяти у нас используется, для это нажимаем ADD Configuration Memory Device:

Теперь выбираем тип памяти которую мы используем для хранения нашего программного кода:

У нас используется память Тип: SPI / Quad-SPI Flash
Модель: MT25QL128
Объём: 128 Mbit = 16 MB
Интерфейс: SPI x1/x2/x4
Питание: 3.3 В
Нажимаем ОК и в появившемся окне выбираем действия которые нужно сделать (ставив галочки) и указываем путь к файлу прошивки:


Теперь после того как наш код был залит в нашу Flash память мы можем снять питание и подав снова убедиться, что код не удалился и работает стабильно.