Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра «Електронні обчислювальні машини»
Лабораторна робота №8
Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL
Мета роботи: Навчитися використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові. Отримати навички застосування констант generic для проектування структурних елементів. Розробити модель 8-розрядного 7-сегментного індикатора.
Теоретична частина
Постановка задачі
Створити блок - генератор сигналів для 8-розрядного 7-сегментного індикатора. Декодер розряду індикатора та паралельний регістр (моделі яких було розроблено в лабораторних роботах №2 і №5) мають входити до проекту як структурні складові.
Інтерфейс генератора сигналів містить:
вхідний 32-розрядний порт Х типу std_logic_vector (31 downto 0), на який у двійково-десятковій формі подається 8-розрядне десяткове число (на кожний десятковий розряд по 4 двійкові розряди);
вхідний порт WE типу std_logic, подання '1' на який дозволяє запис у проміжний регістр блоку;
сигнал синхронізації CLK типу std_logic,
вісім 7-розрядних вихідних портів LCD7 … LCD0 типу std_logic_vector (6 downto 0), що підключаються безпосередньо до відповідних розрядів 7-сегментного індикатора.
Порядок виконання роботи:
Створити новий порожній проект в Active-HDL.
Додати до проекту файл з описом декодера розряду 7-сегментного індикатора (розробленого в лабораторній роботі №2), для чого в менеджері проекту вибрати команду Add New File, і потім у діалоговому вікні - Add Existing File (додати існуючий файл), після чого вибрати необхідний файл.
Додати до проекту файл з описом паралельного регістра (розробленого в лабораторній роботі №5).
Введенням узагальнення generic до 8-розрядного регістру перетворити його на універсальний регістр.
Додати до проекту новий файл - блок-діаграму (Add New File -> Block Diagram).
Додати до діаграми вхідні та вихідні порти (за допомогою відповідної кнопки на панелі інструментів).
В робочій області створити схему блоку
Промоделювати роботу структурних складових та блоку в цілому (шляхом переключення Top Level на панелі Менеджера Проекту).
Проаналізувати отримані часові діаграми роботи розробленого пристрою та зробити висновки про його адекватність поставленому завданню.
Зконвертувати розроблену діаграму у VHDL-код, проаналізувати текст опису.
Код моделі:
library IEEE;
use IEEE.std_logic_1164.all;
entity Indecator is
port(
CLK : in STD_LOGIC;
WE : in STD_LOGIC;
X : in STD_LOGIC_VECTOR(31 downto 0);
LCD0 : out STD_LOGIC_VECTOR(6 downto 0);
LCD1 : out STD_LOGIC_VECTOR(6 downto 0);
LCD2 : out STD_LOGIC_VECTOR(6 downto 0);
LCD3 : out STD_LOGIC_VECTOR(6 downto 0);
LCD4 : out STD_LOGIC_VECTOR(6 downto 0);
LCD5 : out STD_LOGIC_VECTOR(6 downto 0);
LCD6 : out STD_LOGIC_VECTOR(6 downto 0);
LCD7 : out STD_LOGIC_VECTOR(6 downto 0)
);
end Indecator;
architecture Indecator of Indecator is
---- Component declarations -----
component Decoder
port (
X : in STD_LOGIC_VECTOR(3 downto 0);
Y : out STD_LOGIC_VECTOR(6 downto 0)
);
end component;
component DeMux
port (
CLK : in STD_LOGIC;
X : in STD_LOGIC_VECTOR(31 downto 0);
Y0 : out STD_LOGIC_VECTOR(3 downto 0);
Y1 : out STD_LOGIC_VECTOR(3 downto 0);
Y2 : out STD_LOGIC_VECTOR(3 downto 0);
Y3 : out STD_LOGIC_VECTOR(3 downto 0);
Y4 : out STD_LOGIC_VECTOR(3 downto 0);
Y5 : out STD_LOGIC_VECTOR(3 downto 0);
Y6 : out STD_LOGIC_VECTOR(3 downto 0);
Y7 : out STD_LOGIC_VECTOR(3 downto 0)
);
end component;
component register_p
port (
CLK : in STD_LOGIC;
Din : in STD_LOGIC_VECTOR(31 downto 0);
WE : in STD_LOGIC;
Dout : out STD_LOGIC_VECTOR(31 downto 0)
);
end component;
---- Signal declarations used on the diagram ----
signal BUS232 : STD_LOGIC_VECTOR (31 downto 0);
signal BUS377 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS418 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS433 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS446 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS461 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS481 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS489 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS497 : STD_LOGIC_VECTOR (3 downto 0);
begin
---- Component instantiations ----
U1 : register_p
port map(
CLK => CLK,
Din => X,
Dout => BUS232,
WE => WE
);
U2 : DeMux
port map(
CLK => CLK,
X => BUS232,
Y0 => BUS497,
Y1 => BUS489,
Y2 => BUS481,
Y3 => BUS461,
Y4 => BUS446,
Y5 => BUS433,
Y6 => BUS418,
Y7 => BUS377
);
U20 : Decoder
port map(
X => BUS497,
Y => LCD0
);
U3 : Decoder
port map(
X => BUS377,
Y => LCD7
);
U4 : Decoder
port map(
X => BUS418,
Y => LCD6
);
U5 : Decoder
port map(
X => BUS433,
Y => LCD5
);
U6 : Decoder
port map(
X => BUS446,
Y => LCD4
);
U7 : Decoder
port map(
X => BUS489,
Y => LCD1
);
U8 : Decoder
port map(
X => BUS461,
Y => LCD3
);
U9 : Decoder
port map(
X => BUS481,
Y => LCD2
);
end Indecator;
Результати моделювання у вигляді часових діаграм:
Висновки: Я навчився використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові.Я отримав навички застосування констант generic для проектування структурних елементів. Я розробив модель 8-розрядного 7-сегментного індикатора
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!