Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Лабораторна робота №1
з дисципліни: «Основи проектування цифрових засобів на ПЛІС»
на тему: «САПР Xilinx WebPack. Проектування найпростіших вузлів»
Львів – 2015
Мета роботи: засвоєння навичок роботи у середовищі Xilinx WebPack, навчитись створювати проекти в САПР Xilinx WebPack.
Хід виконання роботи
Я вибрав наступну функцію - f = (a & b & /c) v (d xor e)
Створив новий проект, вибрав потрібні елементи та розмістив їх в робочій області схемного редактора. Зробив між ними зв’язки.
/
Рис. 1. Логічна схема для реалізації заданої ФАЛ
У вікні Processes запустив на виконання процес Synthesize. У процесі синтезу з файлів HDL-описів проектованого пристрою сформувався файл списку з'єднань. Відкрив звіт про результати синтезу (View Text Report).
/
Рис. 2. Звіт синтезування
Створюємо схеми.
/
Рис. 3. Умовний графічний образ
/
Рис. 4. Функціональна схема
/
Рис. 5. Технологічна схема
Створюємо test bench файл і вносимо в нього певні зміни (рис.5).
/
Рис. 5. Створення VHDL Test Bench
VHDL code from Test Bench:
krt_tb.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY UNISIM;
USE UNISIM.Vcomponents.ALL;
ENTITY KRT_sch_1_KRT_sch_1_sch_tb IS
END KRT_sch_1_KRT_sch_1_sch_tb;
ARCHITECTURE behavioral OF KRT_sch_1_KRT_sch_1_sch_tb IS
COMPONENT KRT_sch_1
PORT( krt_a : IN STD_LOGIC;
krt_b : IN STD_LOGIC;
krt_c : IN STD_LOGIC;
krt_d : IN STD_LOGIC;
krt_e : IN STD_LOGIC;
krt_res : OUT STD_LOGIC);
END COMPONENT;
SIGNAL krt_a : STD_LOGIC:='0';
SIGNAL krt_b : STD_LOGIC:='0';
SIGNAL krt_c : STD_LOGIC:='0';
SIGNAL krt_d : STD_LOGIC:='0';
SIGNAL krt_e : STD_LOGIC:='0';
SIGNAL krt_res : STD_LOGIC;
BEGIN
UUT: KRT_sch_1 PORT MAP(
krt_a => krt_a,
krt_b => krt_b,
krt_c => krt_c,
krt_d => krt_d,
krt_e => krt_e,
krt_res => krt_res
);
krt_a<=not krt_a after 10 ns;
krt_b<=not krt_b after 20 ns;
krt_c<=not krt_c after 40 ns;
krt_d<=not krt_d after 80 ns;
krt_e<=not krt_e after 160 ns;
-- *** Test Bench - User Defined Section ***
tb : PROCESS
BEGIN
WAIT; -- will wait forever
END PROCESS;
-- *** End Test Bench - User Defined Section ***
END;
Зміни в коді виділені червоним.
Після цього перевіряємо синтаксис і запускаємо симуляцію, в результаті чого отримуємо часову діаграму (рис.6).
/
Рис. 6. Часова діаграма
Виконуємо процеси Implement Design та Generate Programming File (Рис. 7).
/
Рис. 7. Implement Design та Generate Programming File
Реалізуємо ФАЛ за допомогою VHDL опису проекту (рис. 8).
/
Рис. 8. Створення нового модуля проекту реалізації ФАЛ
/
/
Рис. 9. Визначення входів/виходів VHDL моделі проекту
/
Рис. 10. Вікно навігації проектів
Виконуємо процес синтезування і витягуємо звіт (рис.11).
/
Рис. 11. Звіт етапу синтезу
/
Рис. 12. Функціональна схема
/
Рис. 13. Технологічна схема
LUT – це проста мала пам’ять, яка генерує функції базису Буля.
VHDL code from Module:
krt_v_1.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity krt_v_1 is
Port ( krt_a : in STD_LOGIC;
krt_b : in STD_LOGIC;
krt_c : in STD_LOGIC;
krt_d : in STD_LOGIC;
krt_e : in STD_LOGIC;
krt_res : out STD_LOGIC);
end krt_v_1;
architecture Behavioral of krt_v_1 is
begin
krt_res<=(krt_a and krt_b and not krt_c) or (krt_d xor krt_e);
end Behavioral;
Повторюємо вищезгадані процедури і створюємо Test Bench файл, асоційований з krt_v_1, після чого виконуємо часове симулювання та імплементування і генерування програмних файлів.
/
Рис. 14. Асоціювання з krt_v_1
VHDL code from Test Bench:
krt_tb_1.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY krt_tb_1 IS
END krt_tb_1;
ARCHITECTURE behavior OF krt_tb_1 IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT krt_v_1
PORT(
krt_a : IN std_logic;
krt_b : IN std_logic;
krt_c : IN std_logic;
krt_d : IN std_logic;
krt_e : IN std_logic;
krt_res : OUT std_logic
);
END COMPONENT;
--Inputs
signal krt_a : std_logic := '0';
signal krt_b : std_logic := '0';
signal krt_c : std_logic := '0';
signal krt_d : std_logic := '0';
signal krt_e : std_logic := '0';
signal clk : std_logic := '0';
--Outputs
signal krt_res : std_logic;
-- No clocks detected in port list. Replace <clock> below with
-- appropriate port name
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: krt_v_1 PORT MAP (
krt_a => krt_a,
krt_b => krt_b,
krt_c => krt_c,
krt_d => krt_d,
krt_e => krt_e,
krt_res => krt_res
);
krt_a<=not krt_a after 10 ns;
krt_b<=not krt_b after 20 ns;
krt_c<=not krt_c after 40 ns;
krt_d<=not krt_d after 80 ns;
krt_e<=not krt_e after 160 ns;
-- Clock process definitions
clk_process :process
begin
clk <= '0';
wait for clk_period/2;
clk <= '1';
wait for clk_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
wait for clk_period*10;
-- insert stimulus here
wait;
end process;
END;
/
Рис. 14. Часова діаграма з модулем krt_v_1
Проаналізувавши отримані стимуляційні часові діаграми можна дійти висновку, що поведінка імплементації проекту є відповідною заданій функції.
Висновок:
Виконавши дану лабораторну роботу, я засвоїв навички роботи у середовищі Xilinx WebPack, навчився створювати проекти в САПР Xilinx WebPack. Перший варіант розрахований на вибір елементів вами, тобто які елементи мають бути в схемі і як вони повинні бути створені, а в іншому варіанті описується тільки логіка роботи ПЛІС, середовище самостійно реалізовує цю логіку. Частота в першому варіанті – 1/5,677 = 176 MHz, в другому – 1/5,280 = 189 MHz.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!