Мета роботи: Навчитися використовувати блок-діаграми (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.
Результат роботи:
library IEEE;
use IEEE.std_logic_1164.all;
entity Gensyg 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 Gensyg;
architecture Gensyg of Gensyg is
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 RegisterPE
generic(
BusWidth : INTEGER := 8
);
port (
CLK : in STD_LOGIC;
Data_In : in STD_LOGIC_VECTOR(7 downto 0);
WE : in STD_LOGIC;
DATA_Out : out STD_LOGIC_VECTOR(7 downto 0)
);
end component;
constant DANGLING_INPUT_CONSTANT : STD_LOGIC := 'Z';
signal BUS214 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS260 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS268 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS276 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS284 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS292 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS300 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS312 : STD_LOGIC_VECTOR (3 downto 0);
signal BUS510 : STD_LOGIC_VECTOR (31 downto 0);
signal Dangling_Input_Signal : STD_LOGIC;
begin
U0 : decoder
port map(
X => BUS214,
Y => LCD0
);
U1 : decoder
port map(
X => BUS260,
Y => LCD1
);
U10 : DeMux
port map(
CLK => CLK,
X => BUS510,
Y0 => BUS214,
Y1 => BUS260,
Y2 => BUS268,
Y3 => BUS276,
Y4 => BUS284,
Y5 => BUS292,
Y6 => BUS300,
Y7 => BUS312
);
U2 : decoder
port map(
X => BUS268,
Y => LCD2
);
U3 : decoder
port map(
X => BUS276,
Y => LCD3
);
U4 : decoder
port map(
X => BUS284,
Y => LCD4
);
U5 : decoder
port map(
X => BUS292,
Y => LCD5
);
U6 : decoder
port map(
X => BUS300,
Y => LCD6
);
U7 : decoder
port map(
X => BUS312,
Y => LCD7
);
U9 : RegisterPE
port map(
CLK => CLK,
Data_In(0) => X(24),
Data_In(1) => X(25),
Data_In(2) => X(26),
Data_In(3) => X(27),
Data_In(4) => X(28),
Data_In(5) => X(29),
Data_In(6) => X(30),
Data_In(7) => X(31),
DATA_Out(0) => BUS510(24),
DATA_Out(1) => BUS510(25),
DATA_Out(2) => BUS510(26),
DATA_Out(3) => BUS510(27),
DATA_Out(4) => BUS510(28),
DATA_Out(5) => BUS510(29),
DATA_Out(6) => BUS510(30),
DATA_Out(7) => BUS510(31),
WE => WE
);
Dangling_Input_Signal <= DANGLING_INPUT_CONSTANT;
end Gensyg;
Часова діаграма, що ілюструє роботу пристрою
Висновок: Під час лабораторної роботи я навчилася використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові, отримала навички застосування констант generic для проектування структурних елементів, розробила модель 8-розрядного 7-сегментного індикатора.