Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра «Електронні обчислювальні машини»
/
Лабораторна робота №2
“Розробка та моделювання декодера для семисегментного індикатора”
з дисципліни:
“ Моделювання комп'ютерних систем ”
Львів - 2013
Порядок виконання роботи:
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. Підготувати звіт до захисту.
Теоретична частина:
Для візуалізації процесів, що протікають в складному цифровому пристрої, необхідно виводити значення сигналів на 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 кожний раз, коли змінюється значення вхідного порту Х.
Назва та мета виконання лабораторної роботи
Назва: Розробка та моделювання декодера для семисегментного індикатора.
Мета: Вивчити методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, навчитись моделювати поведінку об'єктів в САПР Active-HDL.
Опис засобів Active-HDL для моделювання об’єктів
Головними засобами Active-HDL для моделювання об’єктів є:
Waveform Viewer – цей модуль дозволяє переглядати вхідні та вихідні сигнали у вигляді часових діаграм що дозволяє змоделювати потрібний об’єкт без помилок перевіривши у Waveform Viewer усі можливі стани моделі
Simulators – набір симуляторів які дозволяють симулювати роботу реального об’єкту генеруючи потрібні для тестування сигнали у потрібній послідовності, у програмі Active-HDL є декілька симуляторів, наприклад – Лічильник, клавіатура, годинник, введення формули, та системи випадкових чисел.
HDL Editor - текстовий редактор, призначений для файлів редагування файлів HDL. Він відображає окремі категорій синтаксису в різних кольорах. Редактор тісно інтегрований з мовою VHDL для включення налагодження коду джерела.
Block Diagram Editor - редактор блок-схем який являє собою графічний інструмент, призначений для створення блок-схем. Редактор автоматично переводить графічно розроблені дизайни моделей в VHDL або Verilog код.
Language Assistant - є допоміжним інструментом, який надає ряд VHDL і Verilog моделювання типових шаблонів, логіки і функціональних блоків. Він інтегрований з редактором HDL, так що ми можемо автоматично вставляти потрібні шаблони в редаговані вихідні файли. Language Assistant дозволяє нам визначити наші власні шаблони.
Memory View - є інструментом налагодження який відображає вміст пам'яті визначений в конструкції (наприклад, об'єкти двовимірний масив ).
Console - вікно консолі являє собою інтерактивний ввід-вихід тексту пристрою, який:
Забезпечує запис Active-HDL макросів і користувальницьких сценаріїв
Тексти повідомлень, що генеруються Active-HDL.
State Machine Editor - редактор автоматів з кінцевими станами – графічний інструмент, розроблений для редагування діаграм кінцевого автомата. Редактор реалізує автоматичний перевід графічних примітивів в коди VHDL.
Waveform Editor - редактор, призначений для графічного відображення та редагування результатів симуляції - часових діаграм.
List - вікно списка, показує результати моделювання, виконані в виведеному на таблиці текстовому форматі. Це дозволє нам прослідкувати за результатами моделювання з точністю до дельти циклу.
Processes - вікно процесів, показує діюче значення одночасних процесів в розробленому проекті протягом моделювання.
Програма Active-HDL повністю підтримує мову VHDL тому у ній є достатньо засобів для моделювання, завдяки доступним функціям if, case, while, for можна повністю описати архітектуру та інтерфейс моделі.
Текст 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 decoder of decoder is
begin
process (X)
subtype TOutput is STD_LOGIC_VECTOR(6 downto 0);
constant ZERO: TOutput := "1110111";
constant ONE: TOutput := "0100100";
constant TWO: TOutput := "1011101";
constant THREE: TOutput := "1101101";
constant FOUR: TOutput := "0101110";
constant FIVE: TOutput := "1101011";
constant SIX: TOutput := "1111011";
constant SEVEN: TOutput := "0100101";
constant EIGHT: TOutput := "1111111";
constant NINE: TOutput := "1101111";
constant GT_NINE:TOutput := "0000000";
begin
if X'event then
c1: case Conv_Integer(X) is
when 0 => Y <= ZERO;
when 1 => Y <= ONE;
when 2 => Y <= TWO;
when 3 => Y <= THREE;
when 4 => Y <= FOUR;
when 5 => Y <= FIVE;
when 6 => Y <= SIX;
when 7 => Y <= SEVEN;
when 8 => Y <= EIGHT;
when 9 => Y <= NINE;
when others => Y <= GT_NINE;
end case c1;
end if;
end process;
end decoder;
Часові діаграми роботи декодера
/
Висновки
Під час виконання цієї лабораторної роботи я вивчив методи опису поведінки об'єктів за допомогою архітектур та процесів, шляхи застосування оператора вибору case, навчитись моделювати поведінку об'єктів в САПР Active-HDL.
А також дізнався що у мові VHDL присутні оператори процедурних мов програмування. Такі як case, if і тд. Також є можливість оголошувати константи та нові типи даних.