Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №2
З курсу „Мови опису апаратних засобів”
на тему:
“ Розробка та моделювання декодера для семисегментного індикатора”
Тема роботи: Розробка та моделювання декодера для семисегментного індикатора.
Мета роботи: вивчити методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, навчитись моделювати поведінку об'єктів в САПР Active-HDL.
Теоретична частина
Для візуалізації процесів, що протікають в складному цифровому пристрої, необхідно виводити значення сигналів на 7-сегментний індикатор. Необхідно розробити на VHDL пристрій "декодер", що перетворює вхідний 4-розрядний двійково-десятковий код у сигнал для одного розряду 7-сегментного індикатора. Кожний розряд індикатора являє собою 7 сегментів, подання логічної одиниці на які викликає їх свічення. Наприклад, подання на індикатор числа "1101101" приведе до висвічення цифри "3":
Якщо на вхід Х пристрою об'єкта поданий код від 0 до 9, декодер повинен сформувати на виході Y сигнал, який задає зображення цього числа. Для кодів 10..15 на виході формується сигнал "0000000" (жоден сегмент індикатора не світиться). Декодер повинен оновлювати сигнал Y кожний раз, коли змінюється значення вхідного порту Х.
Текст VHDL-опису декодера :
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity decoder is
port(
X : in STD_LOGIC_VECTOR(3 downto 0);
Y : out STD_LOGIC_VECTOR(6 downto 0)
);
end decoder;
--}} End of automatically maintained section
architecture decode of decoder is
constant Y0 : STD_LOGIC_VECTOR := "1110111";
constant Y1 : STD_LOGIC_VECTOR := "0100100";
constant Y2 : STD_LOGIC_VECTOR := "1011101";
constant Y3 : STD_LOGIC_VECTOR := "1101101";
constant Y4 : STD_LOGIC_VECTOR := "0101110";
constant Y5 : STD_LOGIC_VECTOR := "1101011";
constant Y6 : STD_LOGIC_VECTOR := "1111011";
constant Y7 : STD_LOGIC_VECTOR := "0100101";
constant Y8 : STD_LOGIC_VECTOR := "1111111";
constant Y9 : STD_LOGIC_VECTOR := "1101111";
constant other : STD_LOGIC_VECTOR := "0000000";
begin
process(X)
begin
case(X) is
when "0000" => Y <= Y0;
when "0001" => Y <= Y1;
when "0010" => Y <= Y2;
when "0011" => Y <= Y3;
when "0100" => Y <= Y4;
when "0101" => Y <= Y5;
when "0110" => Y <= Y6;
when "0111" => Y <= Y7;
when "1000" => Y <= Y8;
when "1001" => Y <= Y9;
when others => Y <= other;
end case;
end process;
end decode;
Часові діаграми роботи декодера :
Висновки: В даній лабораторній роботі було вивчено методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, освоєно засоби моделювання поведінки об'єктів в САПР Active-HDL.