Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ
ЗВІТ ЛАБОРАТОРНОЇ РОБОТИ №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;
Часова діаграма роботи декодера
Висновок: виконавши дану лабораторну роботу, я розробила та змоделювала декодер для семисегментного індикатора. Внаслідок коректної роботи отримала та продемонструвала роботу програми.