Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 2
з курсу „ Мови опису апаратних засобів ”
Тема:
Розробка та моделювання декодерадля семисегментного індикатора
Львів – 2005
Мета роботи: вивчити методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору 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-опису:
Можливі значення вихідного сигналу задавати за допомогою констант.
Для перетворення вхідного сигналу з типу std_logic_vector в тип integer використовувати функцію Conv_Integer. Приклад її застосування:n := Conv_Integer(S) , де n - змінна типу integer, S - змінна або сигнал типу std_logic_vector. Для того, щоби використовувати цю функцію, необхідно підключити відповідний пакет підпрограм, додавши рядокuse IEEE.STD_LOGIC_UNSIGNED.all;на початку файлу опису.
При застосуванні оператора case використати можливість вибору алтернативи для всіх можливих значень змінної або сигналу.
Порядок виконання роботи:
Створив новий проект в Active-HDL.
Створив об'єкт декодера та описав на VHDL його поведінку.
Скомпілював створений об'єкт (меню Design \ Compile, або клавіша <F11>).
У вікні Design Browser для встановлення верхнього рівня моделювання (Top Level) вибрав об'єкт-декодер.
Ініціалізував моделювання об'єкту (меню Simulation \ Initialize Simulation).
Створив в проекті новий файл Waveform Viewer (меню File \ New \ Waveform).
Вставив в вікно Waveform Viewer вхідний та вихідний сигнали декодера (меню Waveform \ Add Signals).
Призначив вхідному сигналу декодера стимулятори (меню Waveform \ Stimulators).
Запустив процес симуляції декодера (меню Simulation \ Run).
Дослідив та перевірив отримані часові діаграми роботи декодера.
Змінюючи стимулятори на вхідних портах декодера, перевірив коректність його роботи для всіх можливих значень на вході.
Текст VHDL-опису декодера.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity Decoder is
port(
X : in STD_LOGIC_VECTOR(3 downto 0);
Y : out STD_LOGIC_VECTOR(6 downto 0)
);
end Decoder;
architecture Dec of Decoder is
begin
process(X)
variable n:integer;
begin
n:=Conv_Integer(X);
case n is
when 0 => Y <= "1110111";
when 1 => Y <= "0100100";
when 2 => Y <= "1011101";
when 3 => Y <= "1101101";
when 4 => Y <= "0101110";
when 5 => Y <= "1101011";
when 6 => Y <= "1101111";
when 7 => Y <= "1010010";
when 8 => Y <= "1111111";
when 9 => Y <= "1101111";
when others => Y <= "0000000";
end case;
end process;
end Dec;
Часові діаграми роботи декодера.
Висновки: виконуючи дану лабораторну роботу, я вивчив методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, навчився моделювати поведінку об'єктів в САПР Active-HDL на прикладі моделювання декодера.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!