You are on page 1of 7

ПРОЕКТ “ЦИФРОВА СИСТЕМА “ЕЛЕКТРОННИЙ ГОДИННИК”:

ПІДГОТОВКА КОМПОНЕНТІВ СИСТЕМИ

Мета виконання даного проекту полягає в тому, щоб на-


вчити вас розробляти цифрові комп'ютерні системи, зда-
тні вимірювати часові інтервали та кількість імпульсів.

4.1 Теоретичні відомості

4.1.1 Принцип функціонування системи “Електронний годинник”


Зазвичай електронний годинник складається із шести розрядів:
− двох розрядів секунд, старшого – який показує десятки секунд і
молодшого – який показує одиниці секунд;
− двох розрядів хвилин (старшого і молодшого);
− двох розрядів годин (старшого і молодшого).
Розряди секунд утворять розділ секунд, аналогічно обидва розряди
хвилин утворять розділ хвилин, а два розряди годин – розділ годин. Мо-
лодші розряди всіх розділів можуть змінюватися в діапазоні від 0 до 9.
Старші розряди розділу секунд і хвилин можуть змінюватися в діапазо-
ні від 0 до 5 оскільки максимальне значення розділів секунд і хвилин
становить 59. Старший розряд розділу годин може приймати значення
0, 1, 2, тому що максимальне значення цього розділу дорівнює 23. На
рис. 4.1 показані розряди, призначені для відображення значення часу та
діапазон зміни значення в кожному розряді.

Десятки Одиниці Десятки Одиниці Десятки Одиниці


0...2 0...9 0...5 0...9 0...5 0...9

Розділ годин Розділ хвилин Розділ секунд

Рис. 4.1. Індикація часу в електронному годиннику


Молодший розряд секунд змінює своє значення із частотою 1 Hz,
тобто один раз в секунду. Переповнення молодшого розряду секунд
(його перехід зі значення 9 в значення 0) приводить до інкременту ста-
ршого розряду секунд (так, наприклад, після значення 09 секунд вини-
кає значення 10 секунд). Переповнення старшого розряду секунд (його
перехід зі значення 5 у значення 0) викликає інкремент молодшого роз-
ряду хвилин (так, наприклад, після значення 00 хвилин 59 секунд вини-
кає значення 01 хвилина 00 секунд). Аналогічним чином переповнення
кожного попереднього розряду викликає зміну наступного розряду.
Максимальним сукупним значенням всіх розрядів є значення 23
години 59 хвилин 59 секунд (це значення показане на рис. 5.1). Після
цього значення повинно мате місце мінімальне (початкове) значення 00
годин 00 хвилин 00 секунд.
4.1.2 Структурна схема системи, що проектується
Структурна схема цифрової системи «Електронний годинник»
представлена на рис. 4.2. Схема складається з наступних елементів:
– двійкових лічильників з коефіцієнтами рахування 10, 6 і 3;
– генератора імпульсів;
– поділювача частоти;
– семисегментних індикаторів;
– конвертора двійкового коду в код керування семисегментним
індикатором.

Рис. 4.2. Структурна схема системи «Електронний годинник»


Функціонування системи відповідно до даної структурної схеми
відбувається в такий спосіб. Лічильник одиниць секунд інкрементується
один раз за секунду. При цьому на його 4-розрядному виході послідовно
виникають значення 0, 1, 2, … , 9. В наступному після значення 9 такті
цей лічильник переповнюється і переходить в значення 0. В момент пе-
реповнення на спеціальний вихід лічильника OFl (скорочення від
overflow) видається логічна одиниця, в усі інші моменти часу на виході
OFl підтримується нульове значення. Вихід OFl лічильника одиниць
секунд підключений до входу синхронізації лічильника десятків секунд.
В силу цього в момент переповнення лічильника одиниць секунд, пе-
редній фронт сигналу OFl інкрементує лічильник десятків секунд.
Аналогічним чином за рахунок підключення виходів переповнен-
ня попередніх лічильників до входів синхронізації наступних лічильни-
ків, переповнення кожного попереднього розряду викликає зміну насту-
пного розряду.
Лічильник одиниць секунд повинен змінювати своє значення один
раз в секунду. Таким чином, на вхід синхронізації цього лічильника по-
винен бути поданий сигнал із частотою 1 Hz. Для одержання такого си-
гналу в системі передбачений поділювач частоти. Він формує сигнал
опорної частоти 1 Hz з більше високочастотного сигналу, який генеру-
ється кварцовим генератором імпульсів.
Для відображення двійкових значень на виходах всіх лічильників
системи в звичному поданні (у вигляді десяткових цифр) пропонується
використовувати семисегментні індикатори. Для цього необхідно роз-
робити конвертор двійкового коду в код керування семисегментним ін-
дикатором (bin → 7-seg). Він приймає на свій вхід двійковий код і видає
на свій семирозрядний вихід код, що дозволяє відобразити на індикаторі
десятковий еквівалент вхідного двійкового числа.

4.2 Завдання на лабораторну роботу


В лабораторній роботі необхідно описати мовою VHDL компонен-
ти системи «Електронний годинник» та виконати моделювання, яке де-
монструє їх коректне функціонування.
Структурна схема електронного годинника (рис. 4.2) складається з
наступних елементів:
– генератор синхроімпульсів;
– семисегменті індикатори;
– двійкові лічильники з коефіцієнтами рахування 10, 6 і 3;
– поділювач частоти;
– конвертор bin → 7-seg.
Перші два з цих елементів (генератор і шість семисегментних ін-
дикаторів) є в складі лабораторного стенда Altera DE2. Інші елементи
необхідно розробити самостійно, описавши їх мовою VHDL.
1) Розробка двійкових лічильників
Для реалізації системи, яка реалізується в даному проекті необхід-
но розробити три види синхронних двійкових лічильників – з коефіцієн-
тами рахування 10, 6 і 3, що рахують від значення 0 до значення 9, 5 і 2,
відповідно. Для лічильника з K CT = 10 значення обмеження рахування
дорівнює 9, для лічильника з K CT = 6 – дорівнює 5, для лічильника з K CT
= 3 – дорівнює 2.
2) Розробка конвертора bin to 7-seg
Семисегментний індикатор це пристрій, в якому сім сегментів-
світлодіодів розташовані так, що при запалюванні певної їхньої комбі-
нації відображається той або інший символ. Всі можливі 128 станів се-
мисегментного індикатора показані на рис. 4.3. Семисегментний індика-
тор дозволяє відображати цифри та деякі букви латинського алфавіту.
Зокрема за допомогою такого індикатора можна відобразити всі шістна-
дцяткові цифри (від 0 до F).

Рис. 4.3. Всі можливі стани семисегментного індикатора


Семисегментний індикатор має сім входів. Кожний вхід індикато-
ра електрично зв'язаний з певним сегментом. Відповідність входів сег-
ментам задається за допомогою нумерації сегментів, яка показана на
рис. 4.4. Так, наприклад, вхід s 0 , зв'язаний з сегментом 0, а вхід s 4 , зв'я-
заний з 4-м сегментом.
Існує два основні види
семисегментних індикаторів:
з загальним анодом, в яких
сегменти запалюються сиг-
налом логічного нуля, і з за-
гальним катодом, в яких за-
палювання сегмента викону-
ється сигналом логічної оди- Рис. 4.4. Підключення конвертора
ниці. В лабораторному стенді до семисегментного індикатора
Altera DE2, за допомогою якого буде виконуватися налагодження ре-
зультатів реалізації даного проекту, установлені семисегменті індикато-
ри із загальним анодом.
Для перетворення 4-х розрядних двійкових кодів (які мають місце
на виходах лічильників розглянутої системи) в 7-и розрядний код керу-
вання семисегментним індикатором необхідно розробити відповідний
конвертор (перетворювач). Таблиця функціонування даного конвертора
(табл. 4.1) містить в лівій частині значення вхідних сигналів та їх десят-
ковий еквівалент. В правій частині даної таблиці розміщені значення,
які відображаються на індикаторі та коди керування індикатором, які
дозволяють одержати дані значення. Так, наприклад, при вхідному зна-
ченні конвертора «0001», на індикаторі повинна відображатися одини-
ця. Для цього необхідно погасити всі сегменти, крім двох правих (пер-
шого та другого). Відповідно код на виході конвертора і на вході інди-
катора повинен прийняти значення «1111001», для цього коду нулі від-
повідають запаленим сегментам індикатора.
Цифрові пристрої, функціонування яких задано таблицею істинно-
сті, мовою VHDL найбільш зручно описувати, користуючись операто-
ром вибіркового присвоєння with-select-when. Нижче наведено
VHDL-опис конвертора, заснований на використанні цього оператора. В
даному операторі після ключового слова with вказується вхідний порт
пристрою, а після ключового слова select – вихідний порт і значення
які присвоюються йому при тих або інших комбінаціях на вхідному
порту. Синтаксис даного оператора вимагає, щоб оператор закінчувався
присвоєнням значення у випадку при інших (others) вхідних значен-
нях, не представлених вище. Слід зазначити, що за синтаксисом мови
VHDL others-присвоювання необхідне навіть при всіх перебраних варіа-
нтах по яких виконується розгалуження при вибірковому присвоюванні.
Таблиця 4.1
Таблиця функціонування конвертора bin to 7-seg
Десятковий Двійкове Код керування Значення,
еквівалент число (вхід) індикатором (вихід) яке відобра-
вхідних жується на
b3 b2 b1 b0 s6 s5 s4 s3 s2 s1 s0
значень індикаторі
0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 1 1 1 1 1 0 0 1
2 0 0 1 0 0 1 0 0 1 0 0
3 0 0 1 1 0 1 1 0 0 0 0
4 0 1 0 0 0 0 1 1 0 0 1
5 0 1 0 1 0 0 1 0 0 1 0
6 0 1 1 0 0 0 0 0 0 1 0
7 0 1 1 1 1 1 1 1 0 0 0
8 1 0 0 0 0 0 0 0 0 0 0
9 1 0 0 1 0 0 1 0 0 0 0
10 1 0 1 0 0 0 0 1 0 0 0
11 1 0 1 1 0 0 0 0 0 1 1
12 1 1 0 0 1 0 0 0 1 1 0
13 1 1 0 1 0 1 0 0 0 0 1
14 1 1 1 0 0 0 0 0 1 1 0
15 1 1 1 1 0 0 0 1 1 1 0

Нижче наводиться VHDL-опис оператора with-select-when


для розглянутого конвертора. В цьому описі у якості others-значення
використовується вхідне значення «0000».
01 -- Listing 4.1
02 -- bin : in STD_LOGIC_VECTOR (3 downto 0);
03 -- sseg: out STD_LOGIC_VECTOR (6 downto 0);
04 with bin select
05 sseg <= "1111001" when "0001", --1
06 "0100100" when "0010", --2
07 "0110000" when "0011", --3
08 "0011001" when "0100", --4
09 "0010010" when "0101", --5
10 "0000010" when "0110", --6
11 "1111000" when "0111", --7
12 "0000000" when "1000", --8
13 "0010000" when "1001", --9
14 "0001000" when "1010", --A
15 "0000011" when "1011", --b
16 "1000110" when "1100", --C
17 "0100001" when "1101", --d
18 "0000110" when "1110", --E
19 "0001110" when "1111", --F
20 "1000000" when others; --0

4.3 Процес виконання лабораторної роботи

1. В даній лабораторній роботі необхідно описати мовою VHDL


наступні компоненти системи «Електронний годинник:
– двійковий лічильник з коефіцієнтами рахування 10, тобто лічи-
льник, який рахує від 0 до 9;
– двійковий лічильник з коефіцієнтами рахування 6, тобто лічи-
льник, який рахує від 0 до 5;
– двійковий лічильник з коефіцієнтами рахування 3, тобто лічи-
льник, який рахує від 0 до 2;
– поділювач частоти, який перетворює вхідний сигнал з частотою
27 MHz у вихідний сигнал з частотою 1 Hz. Цей компонент ре-
комендується реалізувати у вигляді двійкового лічильника з ві-
дповідним коефіцієнтом рахування.
– конвертор bin → 7-seg.

2. Описані компоненти необхідно промоделювати та продемонст-


рувати на часових діаграмах, що компоненти функціонують коректно.

You might also like