close

Вход

Забыли?

вход по аккаунту

?

laba3

код для вставкиСкачать
 Министерство образования и науки Российской Федерации
Калужский филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
"Московский государственный технический университет имени Н.Э. Баумана"
(КФ МГТУ им. Н.Э. Баумана)
ФАКУЛЬТЕТ"ЭИУК"КАФЕДРА"Компьютерные системы и сети"
О Т Ч Е Т
ЛАБОРАТОРНАЯ РАБОТА №3
ДИСЦИПЛИНА:"Дисциплина специализации: A"ТЕМА: " Программирование на ПЛИС"
Выполнил: студент гр. ЭВМ-91Салтыков В.С.___________________
Проверил:Онуфриева Т.А._________________
Дата сдачи ЛР:
Калуга, 2013 г.
Цель работы: Рассмотреть пример программирования ПЛИС. Для реализации воспользоваться языком программирования VHDL в среде разработки Xilinx ISE Project Navigator v12.3.
Для реализации используется Spartan-3E Starter Kit (DataSheet). Рассмотрен пример изменения яркости светодиода. Задачи:
1. Изучение примера кода программы для плавного изменения яркости светодиода на Spartan-3E.
2. Изучение примера кода программы постоянной яркости светодиода на Spartan-3E.
Порядок работы: 1. Выполняется создание нового преокта.
2.Выбираем ПЛИС - Family: Spartan3E; Device: XC3S500E; Package: FG320; Speed: -4.
3. Далее нам нужно сопоставить имена портов с именами ножек ПЛИС.
Правой кнопкой выбираем имена файла shim_habr.vhd в иеархии и выбираем пункт New Source. Далее создаем Implementation Constrains и вписываем туда следующий код.
NET "clk" LOC = "C9";
NET "led1" LOC = "F12";
NET "led2" LOC = "E12";
Имена (C9, F12,E12) - узнаем на плате под светодиодами.
4. Программирование постоянной яркости светодиода.
Листинг программы:
architecture Behavioral of shim_habr is
constant clk_freq : integer := 50_000_000; -- частота кварца
constant shim_freq : integer := 10_000; -- частота ШИМ
constant max_count : integer := clk_freq / shim_freq; -- разрядность ШИМ
signal count: integer range 0 to max_count := 0; -- счетчик делителя частоты
constant porog: integer := max_count / 48; -- ширина импульса логической единицы
begin
process(clk)
begin
if rising_edge(clk) then
if count = max_count then
count <= 0;
else
count <= count + 1;
end if;
end if;
end process;
led1 <= '1' when count < porog else '0';
led2 <= '1';
end Behavioral;
5. Компилируем проект и прошиваем на плис с помощью iMPACT.
В iMPACT выбираем нашу микросхему. Выбираем наш скомпилированный файл и жмем program.
6. Проверяем работоспособность на Spartan-3E.
Далее повторяем пункты 1-3.
В пункте 3 дописываем ножки
NET "clk" LOC = "C9";
NET "led1" LOC = "F12";
NET "led2" LOC = "E12";
NET "led3" LOC = "F11";
NET "led4" LOC = "E11";
3. Программирование плавного изменения яркости светодиода.
Листинг программы:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity shim_habr is
Port ( clk : in STD_LOGIC;
led1 : out STD_LOGIC;
led2 : out STD_LOGIC);
led3 : out STD_LOGIC);
led4 : out STD_LOGIC);
end shim_habr;
architecture Behavioral of shim_habr is
constant clk_freq : integer := 50_000_000; -- частота кварца
constant shim_freq : integer := 10_000; -- частота ШИМ
constant max_count : integer := clk_freq / shim_freq; -- разрядность ШИМ
signal count: integer range 0 to max_count := 0; -- счетчик делителя частоты
constant porog: integer := max_count / 48; -- ширина импульса логической единицы begin
process(clk)
begin
if rising_edge(clk) then
if count = max_count then
count <= 0;
else
count <= count + 1;
end if;
end if;
end process;
led1 <= '1' when count < porog else '0';
led2 <= '1';
led3 <= '1';
led4 <= '1';
end Behavioral;
Вывод: в ходе выполнения лабораторной работы мы научились подавать сигналы на Spartan-3E. Компилировать Проект и зашивать код на схему.
Индивидуальное задание:
a) Горение постоянного светодиода:
Для этого было изучено, как объявлять переменные через файл для индикаторов led1 и led2. И был изучен листинг программы(4).
б) Мигание индикаторов F12; E12,E11,F11 - постоянное свечение.
Для этого в Implementation Constrains были добавлены NET "clk" LOC = "C9";
NET "led1" LOC = "F12";
NET "led2" LOC = "E12";
NET "led3" LOC = "F11";
NET "led4" LOC = "E11";
В Port ( clk : in STD_LOGIC;...) были добавлены led3 и led4.
Документ
Категория
Рефераты
Просмотров
39
Размер файла
128 Кб
Теги
laba
1/--страниц
Пожаловаться на содержимое документа