Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №2
Розробка та моделювання декодера для семисегментного індикатора
Мета роботи: вивчити методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, навчитись моделювати поведінку об'єктів в САПР Active-HDL.
Теоретична частина:
Для візуалізації процесів, що протікають в складному цифровому пристрої, необхідно виводити значення сигналів на 7-сегментний індикатор. Необхідно розробити на VHDL пристрій "декодер", що перетворює вхідний 4-розрядний двійково-десятковий код у сигнал для одного розряду 7-сегментного індикатора. Кожний розряд індикатора являє собою 7 сегментів, подання логічної одиниці на які викликає їх свічення. Наприклад, подання на індикатор числа "1101101" приведе до висвічення цифри "3":
Інтерфейс декодера:
4-розрядний вхідний порт X типу std_logic_vector (3 downto 0),
вихідний 7-розрядний порт Y типу std_logic_vector (6 downto 0):
Якщо на вхід Х пристрою об'єкта поданий код від 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 Decoder of Decoder is
begin
Show:process(X)
--variable iNum:integer:=Conv_Integer(X);
begin
case X is
when "0000" => Y<="1110111";
when "0001" => Y<="0100100";
when "0010" => Y<="1011101";
when "0011" => Y<="1101101";
when "0100" => Y<="0101110";
when "0101" => Y<="1101011";
when "0110" => Y<="1111011";
when "0111" => Y<="0100101";
when "1000" => Y<="1111111";
when "1001" => Y<="1101111";
when others => Y<="0000000";
end case;
end process Show;
-- enter your statements here --
end Decoder;
Часова діаграми роботи декодера:
Висновки: У мові VHDL присутні оператори процедурних мов програмування. Такі як case, if і тд. Також є можливість оголошувати константи та нові типи даних.