Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ
ЗВІТ ЛАБОРАТОРНОЇ РОБОТИ №2
З ПРЕДМЕТУ: «Моделювання комп'ютерних систем»
ТЕМА: «Розробка та моделювання декодера для
семисегментного індикатора»
Підготувала: студентка групи КІ-21
Петруняк Марта
Перевірив: Колодчак О.М.
Львів – 2012
Мета роботи: вивчити методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору 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 використати можливість вибору альтернативи для всіх можливих значень змінної або сигналу.
Порядок виконання роботи:
1. Створити новий проект в Active-HDL.
2. Створити об'єкт декодера та описати на VHDL його поведінку.
3. Скомпілювати створений об'єкт (меню Design \ Compile, або клавіша <F11>).
4. У вікні Design Browser для встановлення верхнього рівня моделювання (Top Level) вибрати об'єкт-декодер.
5. Ініціалізувати моделювання об'єкта (меню Simulation \ Initialize Simulation).
6. Створити в проекті новий файл Waveform Viewer (меню File \ New \ Waveform).
7. Вставити в вікно Waveform Viewer вхідний та вихідний сигнали декодера (меню Waveform \ Add Signals).
8. Призначити вхідному сигналу декодера стимулятори (меню Waveform \ Stimulators).
9. Запустити процес симуляції декодера (меню Simulation \ Run).
10. Вивчити отримані часові діаграми роботи декодера.
11. Змінюючи стимулятори на вхідних портах декодера, перевірити коректність його роботи для всіх можливих значень на вході.
12. Підготувати звіт до захисту.
Лістинг програми:
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 entity;
architecture Decoder of Decoder is
-- 0123456
constant Y_00: std_logic_vector := "1110111";
constant Y_01: std_logic_vector := "0010010";
constant Y_02: std_logic_vector := "1011101";
constant Y_03: std_logic_vector := "1011011";
constant Y_04: std_logic_vector := "0111010";
constant Y_05: std_logic_vector := "1101011";
constant Y_06: std_logic_vector := "1101111";
constant Y_07: std_logic_vector := "1010010";
constant Y_08: std_logic_vector := "1111111";
constant Y_09: std_logic_vector := "1111011";
begin
process(X)
begin
case Conv_Integer(X) is
when 1 => Y<=Y_01;
when 2 => Y<=Y_02;
when 3 => Y<=Y_03;
when 4 => Y<=Y_04;
when 5 => Y<=Y_05;
when 6 => Y<=Y_06;
when 7 => Y<=Y_07;
when 8 => Y<=Y_08;
when 9 => Y<=Y_09;
when others => Y<=Y_00;
end case;
end process;
end architecture;
Часова діаграма роботи декодера
Висновок: виконавши дану лабораторну роботу, я розробила та змоделювала декодер для семисегментного індикатора. Внаслідок коректної роботи отримала та продемонструвала роботу програми.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!