Предмет:
Тип роботи:
Контрольна робота
К-сть сторінок:
12
Мова:
Українська
Тема роботи: Дослідження структури CMOS - пам'яті і годинника реального часу персонального комп'ютера IBM PC AT
Мета роботи: Ознайомитись з структурою CMOS - пам'яті і годинника реального часу RTC персонального комп'ютера IBM PC AT
Теоретичні відомості
При переході з архітектури XT на архітектуру AT фірма IBM встановила на системній платі додаткову мікросхему (МС146818А фірми Motorola), що містить годинник реального часу Real-Time Clock (скорочено RTC) і декілька десятків 8-розрядних регістрів пам'яті. Мікросхема МС146818А була виготовлена за прогресивній для того часу технологією CMOS, внаслідок чого мала дуже низьке енергоспоживання (могла працювати від невеликої батареї протягом декількох років). Основне призначення мікросхеми — збереження найважливіших параметрів системи при відключенні живлення комп'ютера. Годинник RTC використовується для установки значення поточного часу у момент ініціалізації системного таймера персонального комп'ютера, а елементи енергозалежної пам'яті бережуть параметри поточної конфігурації системи, що використовуються процедурою початкового завантаження BIOS.
З метою збереження сумісності з «старим програмним забезпеченням» сучасні АТ-сумісні комп'ютери містять в своєму складі схему, імітуючи роботу МС146818А. Інформацію про особливості сучасних мікросхем RTC можна отримати на сайтах фірма-виготовлювачів.
Адресація регістрів CMOS
Для доступу до годинника і елементів пам'яті в АТ-сумісних комп'ютерах використовуються 8-розрядні порти вводу-виводу з адресами 70h і 71h. Порт 70h призначений для вибору комірки (регістра) CMOS, з яким проводиться операція, а порт 71h використовується для запису або зитування вмісту вибраної комірки.
Формат даних для порта 70h зображений на рис. 1. Хоча сучасні аналоги мікросхеми МС146818А можуть містити до 256 регістрів пам'яті, реально доступні тільки 128 з них, оскільки старший розряд порту 70h традиційно використовується для управління немаскованими перериваннями процесора (якщо біт 7 порту 70h скинений в 0, то немасковані переривання дозволені, якщо має значення 1 заборонені).
Оскільки для зчитування і запису інформації в регістри CMOS-пам'яті доводиться виконувати декілька операцій з портами, на час їх виконання потрібно заборонити масковані переривання, щоб який-небудь з драйверів операційної системи не змінив значення в індексному регістрі 70h, поки не проведена операція з регістром даних 71h. Старший розряд байта, записаного в порт 70h, повинен мати значення 0, тобто немасковані переривання повинні бути дозволений. Перевіряти і зберігати значення цього розряду немає ніякої необхідності, оскільки блокування немаскованих переривань проводиться драйверами операційної системи.
Рис. 1 Формат порту 80h
При роботі з мікросхемою CMOS між зверненнями до портів 70h і 71h повинна бути введена невелика затримка: конструкція мікросхеми не дозволяє звертатися до порту 71h відразу після загрузки номера регістра.
В загальному випадку при зчитуванні інформації порядок виконання операцій наступний:
♦заборонити переривання;
♦записати номер потрібного регістра в порт 70h;
♦ввести невелику затримку;
♦прочитати дані з регістра через порт 71h.
При записі інформації порядок операцій аналогічний:
♦заборонити переривання;
♦записати номер потрібного регістра в порт 70h;
♦ввести невелику затримку;
♦записати дані в регістр через порт 71h.
Всі регістри CMOS-пам'яті можна розділити на дві основні групи: регістри годинника RTC і регістри конфігурації системи.
Регістри годинника CMOS
Список регістрів даного годинника реального часу приведений в табл. 1. Годинник може бути настроєний на один з двох режимів відліку часу: двійково-десятковий або двійковий. Відповідно, при зчитуванні інформації з регістрів дані будуть представлені або в упакованому BCD-форматі (кожний байт містить дві цифри), або у вигляді двійкових чисел без знака. Крім того, відлік годинника може виконуватися або в 12-годинному, або в 24-годинному режимі. Всі регістри даного годинника доступні як для запису, так і для зчитування інформації.
Таблиця 1. Регістри годинника реального часу RTC
АдресаПризначення регістраРежимДіапазон значень
У форматі BCDВ двійковому
форматі
00hСекунди—00h-59h00h-3Bh
0lhСекунди будильника—00h-59h00h-3Bh
02hХвилини—00h-59h00h-3Bh
03hХвилини будильника—00h-59h00h-38h
04hГодинник12-годинний, am01h-12h0h-0Ch
12- годинний, рm81h-92h81h-8Ch
24- годинний,00h-23h00h-17h
05hГодинник будильника12- годинний, am01h-12h0h-0Ch
12- годинний,рm81h-92h81h-8Ch
24- годинний,00h-23h00h-17h
06hДень тижня—01h-07h01h-07h
07hДень місяця—01h-31h01h-1Fh
08hМісяць—01h-12h01h-0Ch
09hРік—00h-99h00h-63h
Таблиця 2. Регістри стану годинника
АдресаПризначення регістра
0AhРегістр стану годинника А
0BhРегістр стану годинника В
0ChРегістр стану годинника З
0DhРегістр стану годинника D
Регістри стану годинника, перераховані в табл. 2, дозволяють контролювати параметри годинника і управляти деякими з них. Регістри А і В доступні і для зчитування, і для запису, а регістри C і D — тільки для зчитування інформації.
Регістр стану А, формат якого показаний на рис. 2, забезпечує настройку дільника частоти мікросхеми на частоту кварцового генератора 32 768 Гц. Призначення розрядів регістра наступне:
♦біти 0-3 (поле RS) задають коефіцієнт поділу тактової частоти кварцевого генератора;
♦біти 4-6 (поле DV) визначають режим роботи дільника частоти;
♦біт 7 (UIP) — флаг оновлення часу (приймає значення 1 при виконанні циклу оновлення часу).
В АТ-сумісних комп'ютерах поле RS завжди повинне містити значення 0110H, відповідне коефіцієнту поділу 32 (частота на виході дільника 1024 Гц), а поле DV — значення 010H (нормальний режим роботи дільника).
Флаг оновлення часу UIP приймає значення 1 при виконанні циклу оновлення часу, що