Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра «Електронні обчислювальні машини»
Лабораторна робота №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-сегментного індикатора