Структурна схема контролера представлена на мал. 9.3.
У регістрах запитів (РЗПР) і обслужених запитів (РОЗПР) порозрядно зберігаються запити від периферійних пристроїв, що очікують, та від обслужених периферійний пристроїв. Після зняття запиту та закінчення переривання у відповідний розряд записується 0.
Програмування 8259 зводиться до запису в нього слів (байт) командної ініціалізації (СКІ) і слів команд операцій (СКО). СКІ вводяться на початку роботи контролера (в BIOS) та задають режим його роботи.
│INTA# │ INT
v ^
┌────────┐ ┌───┴──────────┴────┐
D7..D0 │ Буфер │ ║ │ Схема управління │
════════╡ шини ╞═══╣ └─┬───┬──────┬──────┘
│ даних │ ┌───────┘ v ^
└────────┘ │ ╠═════╦═══│══════│══╦═══
┌────────┐ │ ║ ┌─╨───┴──┐ ┌─┴──╨───┐
RD#────>┤ Логіч. ├─┤ ║ │ Регістр│ │ Регістр├<──IRQ0
WR#────>┤ схема │ │ ║ │ обслу- │ │ запитів├<──IRQ1
А0────>┤ читан./│ │ ║ │ жених │ │ перери-├<── ...
CS#────>┤ запису │ │ ║ │ запитів│ │ вань ├<──IRQ7
└────────┘ │ ║ └───┬────┘ └───┬────┘
┌────────┐ │ ║ ^ ^
CАS0<──>┤ Буферн.├─┘ ║ ┌───┴──────────┴────┐
CАS1<──>┤ схема │ ╠═══╡ Схема маскування │
CАS2<──>┤ каска- │ ║ │ запитів та аналіза│
DE# ──>┤ дування│ │ їх по пріоритету │
└────────┘ └───────────────────┘
|
Рис. 9.3. Структура контролера 8259
У процесі роботи можлива зміна алгоритму обслуговування запитів за допомогою команд СКО1...СКО3. СКО1 заноситься в порт 21h та забезпечує порозрядне маскування входів IRQ0...IRQ7. Одиниця в i-му розряді забороняє переривання по входу IRQi. Байти СКО2 та СКО3 записуються в порт 20h. СКО2 (А0=0, D4=0, D3=0) указує вид установки дна та дно пріоритетного кільця, а також вид кінця переривання. Наприклад, наприкінці програми переривання, як правило, заноситься число 20h у порт 20h:
MOV AL, 20h
OUT 20h, AL
Це означає нормальний кінець переривання для 8259 та перехід на обслуговування інших входів IRQ.
Контрольні питання
1. Чи можливо функціонування ПЕОМ без переривань?
2. Дайте класифікацію типів переривань.
3. Як організована система переривань?
4. Приведіть опис контролера переривань.
5. Навіщо в програмі переривання в порт 20h заноситься число 20h?
Лекція 10. Компоненти системної плати - співпроцесор,
порти та таймер
10.1. Математичний співпроцесор 8087
Мікросхема 8087 являє собою 80-бітовий арифметичний співпроцесор (FPU) і може бути використаний тільки разом із процесором 8086/88, тому що в ньому відсутній механізм вибірки команд. Співпроцесор призначений для підвищення продуктивності CPU до 100 разів при виконанні операцій із багаторозрядними цілими та дійсними числами.
Схема з'єднання 8088 та 8087 представлена на рис.10.1. Взаємодія процесорів починається за сигналом RESET (>4 тактів CLK). 8087 перевіряє рівень сигналу на виводі 34. CPU 8086 формує 0, а 8088 - 1. Таким чином, установлюється тип МП. Крім того, у процесорах запам'ятовується значення сигналу на вході 23 (TEST#=BUSY#=1).
┌─────────────────┐ ┌─────────────────┐
│ 8088 А8..А19╞═════════════╡ А8..А19 8087 │
│ АD0..АD7╞═════════════╡ АD0..АD7 │
│ RESET, │ │ RESET, │
│ READY,CLK╞═════════════╡ READY,CLK │
│ S0..S2 ╞═════════════╡ S0..S2 │
│ QS1,QS2 ╞═════════════╡ QS1,QS2 │
│ S7 ├─34───────34─┤ S7/BHE# │
│ RQ#/GT0#├─31 33─┤ RQ#/GT1# │
│ RQ#/GT1#├─30───────31─┤ RQ#/GT0# │
│ NMI ├──<─схема──<─┤ INT │
│ │ │ │
│ MN/MX#,GND├──────┬──────┤ GND │
│ │ ┴ │ │
│ TEST#├─23─<─┬───23─┤ BUSY# │
│ Ucc │ ┌┴┐ │ Ucc │
└─────────────┬───┘ │ │ └───┬─────────────┘
│ └┬┘ │
+5V────┴──────────┴──────────┘
|
Рис. 10.1. Схема з'єднання 8088 і 8087
Далі CPU робить вибірку команд із пам'яті, а співпроцесор стежить за його роботою, перебуваючи у пасивному режимі: як і 8088, приймає всі команди в чергу та аналізує стан черги CPU QS1,QS0. Якщо QS1,QS0=01 (перший байт) і код команди дорівнює 11011= ESC (префікс команди співпроцесора), 8087 переходить в активний режим, установивши сигнал BUSY# =0. CPU і співпроцесор тепер працюють паралельно. При цьому процесори "домовляються" по лінії RQ#/GT1# (8088) - RQ#/GT0# (8087) про право користування локальною шиною. Це досягається шляхом двосторонньої передачі/прийому нульових імпульсів із тривалістю одного періоду CLK. Процесор, якому потрібна шина, передає сигнал запиту. Інший процесор, закінчує цикл шини (якщо такий був), відключається від шини та передає у відповідь імпульс дозволу на її використання. Закінчивши цикл шини, перший процесор видає сигнал її звільнення RELEASE.
Після виконання своєї команди співпроцесор установлює сигнал BUSY#=1 і переходить у пасивний режим.
10.2. Паралельний периферійний інтерфейс
Паралельний периферійний інтерфейс (PPI) виконаний на контролері 8255. PPI формує внутрішні порти в діапазоні адрес 60...7F, які мають наступне призначення: порт A використовується для читання даних із клавіатури; порт B використовується порозрядно для формування сигналів управління; порт C використовується для формування сигналу динаміка, сигналу звукового каналу таймера, сигналів управління.
Функціональна схема читання даних із клавіатури наведена на рис.10.2.
┌─────────────┬<──┐ PB3 PB6 ┌─────┐
│ сист.перем. ╞═╗ │┌───────────────>─┤ Key ├─<──KB_CLOCK
└─────────────┘ ║ ││ └──┬──┘
║ BX ┌──┬───────┬──┐ ║ ││ ┌─────────┐ ┌──v──┐
║ │ │ PPI │ │ ║ ││ │ИР28 CLK├<┬─┤ ЛЗ │
╠═════╡ D│ │PC╞═╣ ││ │ │ │ ├─────┤
║ │ │ │ │ ║ ││ │ │ └>┤ T │
╠═════╡ А│ │ │ ││PB7│ OH#├─>─┤ ├─┬─> IRQ1
║ │ │ │PB╞═══╧╧─┬>┤OE# │ └──^──┘ │
│WR#,RD# │ │ │ │ G#├<─────│────┘
══════╡ RESET │ │ │ │ │ │PB7
PPICS──┤CS# │PA╞════════╡D 8 DI├<─────────────KB_DATE
└──┴───────┴──┘ │ └─────────┘ │
└──────────────────┘
Рис. 10.2. Схема читання даних із клавіатури
Читання даних із клавіатури відбувається наступним чином.
У вихідному стані PB6=1 (немає скидання по лінії KB_CLOCK) і PB7=0 (дозвіл виходу регістра ИР28). При натисканні або відпусканні клавіші в контролері клавіатури для PC/XT формується однобайтовий скан-код. Старший біт означає натискання (1) або відпускання (0) клавіші. Інші 7 біт відповідають номеру натиснутої клавіші.
Далі код порозрядно передається в комп'ютер по лінії KB_DATE. Одночасно з кожним бітом передаються нульові строби ( імпульси-клямки) по лінії KB_CLOCK, які через ключ Key і лінію затримки ЛЗ (близько 1 мкс) надходять на тактовий вхід CLK послідовно-паралельного регістра ИР28 (ИР24). У цей регістр послідовно завантажуються біти даних KB_DATE.
По закінченні восьми тактів на виході -OH# з'являється нульовий імпульс, що затримується в тригері T. Позитивний вихідний сигнал тригера є запитом на переривання IRQ1, що надходить на контролер PIC. Одночасно по входу G# забороняється прийом нових розрядів в ИР28. Програма переривання читає скан-код з порту A, а потім, передавши одиничний імпульс по лінії PB7, скидає запит на переривання IQR1 та зміст регістра ИР28. Далі CPU повідомляє контролер PIC про те, що запит знято, аналізує скан-код і перетворює його в ASCII-Код символу. Статус клавіші та її код розміщується в буфер пам'яті (до 15 значень) в області даних BIOS. Після виходу із програми переривання комп'ютер готовий до прийому наступного байта із клавіатури.
10.3. Периферійний інтегральний таймер
Периферійний інтегральний таймер PIT містить 3 канали та призначений для формування опорних часових інтервалів і частот для годинника реального часу (канал 0, порт 40h), регенерації ОЗП (канал 1, порт 41h) та сигналів динаміка (канал 2, порт 42h). Є також порт 43h для запису слів, що задають режими роботи каналів.
Основу таймера-лічильника становить 3-канальний програмований інтервальний таймер 8253 (в XT) або 8254 (в AT). Таймери аналогічні за функціональними можливостями і відрізняються максимальною тактовою частотою (2МГц для 8253 та 8МГц для 8254).
Контрольні питання
1. Що дає застосування математичного співпроцесора?
2. Чому співпроцесор не може функціонувати окремо від CPU?
3. Які призначення портів паралельного периферійного інтерфейсу?
4. Опишіть процес читання даних із клавіатури.
5. Яке функціональне призначення інтегрального таймера?
Лекція 11. Система прямого доступу до пам’яті
11.1. Організація прямого доступу до пам’яті
Якщо використовувати центральний процесор 8088/86 для передачі даних зовнішній пристрій - пам'ять, то для цього буде потрібно близько 40 процесорних тактів.
Режим прямого доступу до пам’яті (ПДП) забезпечує передачу за 4 такти, різко збільшуючи швидкодію всієї системи. Можливий також обмін типу " пам'ять-пам'ять", що реалізовано в AT. Процес ПДП забезпечується апаратно за допомогою контролера DMA без участі мікропроцесора. У комп'ютерах IBM PC/XT використовується БІС 8237, що містить 4 незалежних 8-бітових канали даних з 16-бітовою адресацією. При цьому старший байт затримується на зовнішньому регістрі (ИР22). Крім того, є додатковий так званий сторінковий регістр 4х4 біт (ИР26), у якому фіксуються старші розряди А16..А19 20-бітової адреси.
Структурна схема процесу ПДП представлена на рис.11.1.
┌─────────┐ ┌───────┐
│ CPU ╞═BA════════════╦═════════════════════╡ RAM │
│ ╞═BD════════════║═════════════════╦═══╡ │
│ ╞═BC══════╦═════║══════════════╦══║═══╡WR# │
└─┬───┬─┬─┘ IOW# ║ А16 ║ ┌───┐ ║ ║ │RD# │
^ │ │ MEMR#║..А19╠═══╡RG2│ ║ ║ │ │
│ │ │ IOR# ║ А8..║ ├───┤ IOW#║ ║ └───────┘
READY# │ │ MEMW#║ А15╠═══╡RG1│ IOR#║ ║
│ │ │ ┌─╨─────╨─┐ └─┬─┘ ┌─v──╨─┐
┌─┴─┐ │ │ │ ├>─ADSTB │ │
│ ЛС│ │ └─<─HRQDMA┤ DMA ├<──DRQi───┤DEVICE│
└─┬─┘ └───>─HOLDA─┤ ├>──DACKi──┤ │
└───────<─AEN───┤ ├>──T/C────┤ │
│ ├<──RDYDMA─┤ │
└─────────┘ └──────┘
|
Рис. 11.1. Структурна схема процесу ПДП
Канал 0 ПДП, що має найвищий пріоритет, забезпечує регенерацію динамічної пам'яті. Канал 1 вільний та може застосовуватися для потреб користувача. Канали 2 та 3 підтримують обмін з накопичувачами, відповідно, на гнучких і жорстких дисках.
Цикли ПДП виконуються для послідовно розташованих комірок RAM. Для здійснення ПДП контролер DMA виконує таку послідовність операцій:
1) Приймає запит DRQi по i входу на ПДП від DEVICE, або одержує команду від CPU на виконання ПДП.
2) Формує запит HRQDMА# на те, щоб CPU перейшов у стан захвату шин (шини А, D і C CPU переводяться в Z-стан).
3) Приймає сигнал HLDA# підтвердження захвата шин центральним процесором.
4) Формує сигнал користування шиною AEN=1, що у логічній схемі ЛС перетворюється в сигнал призупинення CPU -READY#.
5) За допомогою сигналів DACKi і T/C=0 інформує зовнішній пристрій про початок виконання циклів ПДП.
6) Очікує стан готовності RDYDMA# від зовнішнього пристрою.
7) Виконує цикл шини. У першому такті на шині DB0..DB7 установлюється старший байт адреси А8..А15, що затримується у зовнішньому регістрі RG1 сигналом ADSTB. У другому такті встановлюється адреса комірки пам'яті RAM: А0..А7 на виходах DMА, А8..А15 з регістра RG1 та А16..А19 зі сторінкового регістра RG2, що завантажується на етапі програмування ПДП. Далі контролер DMA виробляє сигнали MEMR#,IOW# або MEMW#, IOR# для керування обміном «зовнішній пристрій-пам'ять» або «пам'ять-пам'ять». У третьому такті стан шин не змінюється, а в четвертому такті знімаються сигнали управління.
8) По закінченні ПДП контролер DMA, змінивши адресу, повторює цикл по пп. 6, 7 або припиняє обмін. В останньому випадку контролер DMA відключається від шин, знімає сигнали AEN ат призупинення центрального процесора READY#, а також виробляє ознаку кінця ПДП T/C=1.
Підготовка до ПДП складається в записі адрес у сторінкові регістри та програмуванні відповідних каналів контролера DMA.
Сторінкові регістри доступні через порти 81h - канал 2, 82h - канал 3 та 83h - канал 1. Сторінковий регістр каналу 0 не використовується. Далі розглянемо побудову та програмування контролера DMA.