Розробка та моделювання декодера для семисегментного індикатора

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерної техніки, автоматики та метрології
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт
Предмет:
Моделювання
Група:
КІ

Частина тексту файла (без зображень, графіків і формул):

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

25.11.2012 18:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!