МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ
ЗВІТ ЛАБОРАТОРНОЇ РОБОТИ №8
З ПРЕДМЕТУ: «Моделювання комп'ютерних систем»
ТЕМА: «Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL»
Підготувала: студентка групи КІ-21
Петруняк Марта
Перевірив: Колодчак О.М.
Львів – 2012
Мета: Навчитися використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові. Отримати навички застосування констант generic для проектування структурних елементів. Розробити модель 8-розрядного 7-сегментного індикатора.
Теоретичні відомості
Опис методики застосування констант generic в VHDL.
Цифрова схема проектується, як правило, ієрархічним набором елементів. Кожен елемент має набір портів для реалізації інтерфейсу із зовнішним світом. При цьому кожен елемент в свою чергу може складатись з інших елементів.
Синтаксис декларації елемента наступний:
ENTITY <ім'я> IS
<заголовок>;
BEGIN
<тіло>;
END <ім'я>;
.
GENERIC CONSTANT описуються так само, як і декларація підпрограм. Всі вони повинні мати клас констант. Дійсні значення констант передаються тоді, коли елемент буде використано. PORTS описуються так Заголовок елементу може використовуватись для декларування речей, які потім будуть використовуватись у тілі елемента. В заголовку також можуть записуватись спеціальні пункти, що допомогають при симуляції.
Тут можуть вказуватись константи, що описують поведінку елемента GENERIC CONSTANT, та канали вводу/виводу PORTсамо, як і GENERIC CONSTANT, але їх клас повинен бути SIGNAL. Це є новий клас, тому покажемо його синтаксис:
SIGNAL <список_ідентифікаторів>:[<режим>] <тип> [BUS] [:=<статистичний вираз>]
Так, як клас повинен бути SIGNAL за замовчуванням, слово SIGNAL може бути пропущене.
Слово BUS (шина) показує, що порт буде під'єднано до кількох виходів.
Характеристика застосування блок-діаграм в САПР Active-HDL.
The Block Diagram Editor is a graphical design entry tool. It allows you to create hierarchical block diagrams as an alternative to writing a HDL code directly. The editor supports automatic generation of HDL from the diagram along with the advanced design rule checking (DRC). It allows you to mix all design description methods (pure HDL code, state diagrams and block diagrams).
Схема блоку, створеною за допомогою блок-діаграм САПР Active-HDL.
Лістинг програми:
-------------------------------------------------------------------------------
-- Title : Block_Diag
-- Design : Block_7segm
-- Author : Ада
-- Company : BlackShine
-------------------------------------------------------------------------------
-- File : c:\My_Designs\ Block_7segm\compile\skaner.vhd
-- Generated : Tue Oct 11 19:23:28 2011
-- From : c:\My_Designs\ Block_7segm\src\skaner.asf
-- By : Bde2Vhdl ver. 2.6
---------------------------------------------------------------------------------
-- Description :
-------------------------------------------------------------------------------
-- Design unit header --
library IEEE;
use IEEE.std_logic_1164.all;
entity Block_Diag 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 Block_Diag;
architecture A_Block_Diag of Block_Diag is
---- Component declarations -----
component demux
port (
CLK : in STD_LOGIC;
DATA_IN : 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 para_register_8
generic(
BusWidth : INTEGER := 8
);
port (
CLK : in STD_LOGIC;
DATA_IN : in STD_LOGIC_VECTOR(31 downto 0);
WE : in STD_LOGIC;
DATA_OUT : out STD_LOGIC_VECTOR(31 downto 0)
);
end component;
component Segm7
port (
X : in STD_LOGIC_VECTOR(3 downto 0);
Y : out STD_LOGIC_VECTOR(6 downto 0)
);
end component;
---- Signal declarations used on the diagram ----
signal BUS1125 : STD_LOGIC_VECTOR (31 downto 0);
signal BUS364 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS381 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS390 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS407 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS416 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS429 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS705 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS794 : STD_LOGIC_VECTOR (3 downto 0);
begin
---- Component instantiations ----
U0 : Segm7
port map(
X => BUS429,
Y => LCD7
);
U1 : Segm7
port map(
X => BUS416,
Y => LCD6
);
U2 : Segm7
port map(
X => BUS407,
Y => LCD5
);
U3 : Segm7
port map(
X => BUS390,
Y => LCD4
);
U4 : Segm7
port map(
X => BUS381,
Y => LCD3
);
U5 : Segm7
port map(
X => BUS364,
Y => LCD1
);
U6 : Segm7
port map(
X => BUS705,
Y => LCD2
);
U7 : Segm7
port map(
X => BUS794,
Y => LCD0
);
U8 : demux
port map(
CLK => CLK,
DATA_IN => BUS1125,
Y0 => BUS429,
Y1 => BUS416,
Y2 => BUS407,
Y3 => BUS390,
Y4 => BUS381,
Y5 => BUS364,
Y6 => BUS705,
Y7 => BUS794
);
U9 : para_register_8
port map(
CLK => CLK,
DATA_IN => X,
DATA_OUT => BUS1125,
WE => WE
);
end A_Block_Diag;
Висновки: виконавши дану лабораторну роботу, я навчилась використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові та отримала навички застосування констант generic для проектування структурних елементів, розробивши модель 8-розрядного 7-сегментного індикатора.