
- •Розділ 5 інтерфейс пристроїв введення-виведення
- •5.1. Функції інтерфейсу введення-виведення
- •5.2. Програмований паралельний інтерфейс
- •5.3. Програмований інтерфейс клавіатури та індикації
- •5.4. Програмований таймер
- •5.5. Архітектура і функціональні можливості контролера прямого доступу до пам'яті
- •5.6. Програмований послідовний інтерфейс
- •5.7. Програмований контролер переривань
- •5.8. Приклад розробки мікропроцесорної системи
5.5. Архітектура і функціональні можливості контролера прямого доступу до пам'яті
Контролер прямого доступу до пам'яті (КПДП) КР580ВТ57 призначений для організації швидкісного обміну даними між пам'яттю і зовнішніми пристроями, який ініціюється зовнішнім пристроєм (див. п. 5.1, рис. 5.5).
Структурну схему контролера зображено на рис. 5.45. Вона має:
• двоспрямований двостабільиий буфер даних BD, призначений для обміну інформацією між МП і КПДП;
• схему керування читанням-записом RWCU, що адресує внутрішні регістри КПДП і керує обміном по шині D7—D0;
• блок керування CU містить регістри режиму і стану КПДП та задає режими роботи КПДП;
• блок керування пріоритетами PCU забезпечує порядок обслуговування запитів зовнішніх пристроїв;
• чотири канали прямого доступу СНО—СНЗ; кожний з них містить регістр адреси комірки пам'яті, де починається обмін, лічильник циклів обміну, два старших розряди якого відведені для задання операцій обміну та схему формування запитів-підтвердження.
Рис. 5.45. Структурна схема КР580ВТ57
Призначення виводів ВІС наведено у табл. 5.11.
Кожний з чотирьох каналів ПДП забезпечує передавання блока даних ємністю до 16 Кбайт з довільною початковою адресою в діапазоні 0 — 64 Кбайт. Пріоритети каналів можуть бути фіксованими (канал 0 має найвищий пріоритет, канал 3 — найнижчий) або змінюватися циклічно. В останньому випадку каналу, в якому відбулося обслуговування запиту ПДП, присвоюється нижчий пріоритет, а каналу з наступним номером — вищий.
Схему підключення КПДП до системної шини зображено на рис. 5.46.
Молодший байт адреси пам'яті видається по лініях A3 — А0 та A7 — А4, які безпосередньо підключені до шини адреси АВ. Старший байт адреси передається через шину D7 — D0, тому в схему підключено буферний регістр К589ИР12, який фіксує значення старшого байта за сигналом ADSTB, якщо AEN = 0. На вивід ВІС надходить сигнал з виходу дешифратора адрес введення-виведення. Інші виводи КПДП під'єднуються до однойменних ліній шин МП системи.
Таблиця 5.11. Призначення виводів КПДП КР580ВТ57
Позначення |
Номер виводу |
Призначення |
D7-D0 |
21; 22; 23; 36; 27; 28; 29; 30 |
Входи-виходи даних для обміну з МП |
|
1 |
Читання введення-виведсння — двона-прямлений тристабільний вхід-вихід. Вхідний сигнал L -рівня дозволяє зчитування інформації з КПДП; а вихідний сигнал низького рівня — з ПВВ |
|
2 |
Запис введення-виведення — двонапрямлений тристабільний вхід-вихід. Вхідний сигнал низького рівня дозволяє програмування КПДП, а вихідний сигнал низького рівня — запис у ПВВ |
CLK |
12 |
Вхід тактових імпульсів |
RESET |
13 |
Вхідний сигнал скидання |
АЗ-А0 |
35; 34; 33; 32 |
Двонапрямлені тристабільні адресні виводи |
CS |
11 |
Вибірка ВІС |
А7-А4 |
40; 39; 38; 37 |
Тристабільні адресні виводи |
READY |
6 |
Вхідний сигнал готовності. H-рівень вказує на готовність КПДП до обміну |
HOLD |
10 |
Вихідний сигнал запиту захоплення. H-рівень вказує на запит захоплення КПДП системної шини |
HLDA |
7 |
Вхідний сигнал підтвердження захоплення. Я-рівень вказує на дозвіл доступу до системної шини |
|
3 |
Вихідний сигнал читання з пам'яті. Тристабільний вихід, L-рівень дозволяє читання комірки пам'яті, що адресується КПДП |
|
4 |
Вихідний сигнал запису в пам'ять. Тристабільний вихід. L-рівень дозволяє запис у комірку пам'яті, що адресується КПДП |
|
9 |
Дозвіл адреси. H-рівень блокує шини адрeси-даних |
ASTB |
8 |
Строб адреси. H-рівснь вказує на знаходження на шині D7—D0 старшого байта адреси ЗП |
ТС |
36 |
Кінець лічення. H-рівень вказує на виконання останнього циклу передавання блоку даних |
MARK |
5 |
Маркер. H-рівень вказує, що до кінця передавання блока треба виконати кількість циклів обміну, що кратна 128 |
DRQ3-DRQ0 |
16; 17; 18; 19 |
Запити прямого доступу до пам'яті каналів СH3 — СH0. H-рівень вказує на запит від ПВВ |
|
15; 14; 24; 25 |
Підтвердження запитів прямого доступу до пам'яті каналів СH3—СH0. L-рівень вказує на дозвіл обміну |
Ucc |
31 |
Напруга живлення +5 В |
GND |
20 |
Спільний вивід |
Рис. 5.46. Схема з'єднання КПДП із системною шиною з використанням буферного регістра
Під час програмування КПДП задають режим роботи каналів, напрям обміну інформацією між пам'яттю та пристроєм введення-виведення, початкову адресу та довжину масиву пам'яті.
Значення адресних розрядів A3 — А0 і сигналу під час запису та читання регістрів ВІС наведено в табл. 5.12. Запис інформації у 16-розрядні регістри здійснюється двома командами, спочатку записується молодший байт, а потім — старший.
Режим роботи каналів задається керуючим словом, формат якого наведено на рис. 5.47. Розряди D3 — D0 (EN3 — EN0) дозволяють (за одиничного значення) або забороняють (за нуля) обмін у відповідному каналі.
Розряд D4 (RP) встановлює порядок обслуговування запитів від каналів. За D4 = 0 задається фіксований пріоритет каналів, а за D4 = 1 встановлюється режим циклічного пріоритету. Циклічний зсув пріоритетів відбувається після кожного циклу прямого доступу.
Встановлення розряду D5(EW) у стан логічної одиниці задає режим розширеного запису, за якого тривалість сигналів і , що генеруються КПДП, збільшується за рахунок зсуву переднього фронту. Це дозволяє ПВВ, що формує сигнал READY по фронту сигналу запису, зменшити або збільшити швидкість обміну.
Таблиця 5.12. Адресація внутрішніх регістрів КПДП
Регістр |
CS |
A3 |
А2 |
А1 |
А0 |
RQ0 |
0 |
0 |
0 |
0 |
0 |
СТО |
0 |
0 |
0 |
0 |
1 |
RQI |
0 |
0 |
0 |
1 |
0 |
СТ\ |
0 |
0 |
0 |
1 |
1 |
RQ2 |
0 |
0 |
1 |
0 |
0 |
СТ2 |
0 |
0 |
1 |
0 |
1 |
RQ3 |
0 |
0 |
1 |
1 |
0 |
СТЗ |
0 |
0 |
1 |
1 |
1 |
Регістр режиму (запис) |
0 |
1 |
0 |
0 |
0 |
Регістр стану (читання) |
0 |
1 |
0 |
0 |
1 |
Відключення КПДП від шини даних |
1 |
x |
x |
x |
x |
-
D7
D6
D5
D4
D3
D2
D1
D0
AL
TCS
EW
RP
EN3
EN2
EN1
EN0
Автонавантаження
Відключення каналу
Розширений запит
Циклічний пріорітет
CH3
CH2
CH1
CH0
Дозвіл
Рис. 5.47. Формат керуючого слова
-
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
UF
TC3
TC2
TC1
TC0
Прапорець відновлення
CH3
CH2
CH1
CH0
Дозвіл
Рис. 5.48. Слово стану каналів
За D6(TCS) = 1 поява сигналу ТС в одному з каналів скидає відповідний розряд D3 —D0, внаслідок чого канал від'єднується і його подальша робота можлива після перезавантаження регістра режиму. Якщо D6(TCS) = 0, то поява сигналу ТС не впливає на розряд дозволу роботи каналу і закінчувати передавання має ПВВ припиненням вироблення сигналу DRQ.
Одиничне значення розряду D7(AL) задає режим автозавантаження, в якому працює лише другий канал, використовуючи вміст своїх внутрішніх регістрів та внутрішніх регістрів третього каналу. Після передавання даних відповідно до параметрів регістрів другого каналу з появою сигналу ТС вміст регістрів третього каналу автоматично завантажується у регістри другого каналу. При цьому в регістрі стану каналів (рис. 5.48) встановлюється у стан логічної одиниці розряд D4(UF) — прапорець відновлення. Потім передавання даних триває відповідно до нових параметрів регістрів другого каналу, а наприкінці першого циклу прямого доступу з новими параметрами прапорець відновлення скидається. Режим автозавантаження дає змогу організовувати повторні пересилання блоків даних з однаковими або з'єднувати кілька блоків з різними параметрами.
Розряди D3—D0 слова стану (див. рис. 5.48) встановлюються одночасно з появою сигналу ТС відповідного каналу і скидаються сигналом RESET під час читання вмісту регістра станів. Прапорець відновлення UF може бути скинутий, якщо записати логічний нуль у розряді D1 регістра режиму (див. рис. 5.47).
Початкова адреса ОЗП задається записом двох байтів у регістри каналів RG0—RG3-
Довжина масиву пам'яті та напрям обміну інформацією між пам'яттю і пристроєм введення-виведеиня задається записом двох байтів у лічильники СТ0-СТ3 циклів. Два старших розряди лічильника циклів визначають напрям обміну в такий спосіб: запис у пам'ять — 01, зчитування з пам'яті — 10, контроль — 00. Комбінація 11 є забороненою.
Інші розряди лічильника визначають кількість байтів, що будуть переслані.
Якщо два старших розряди лічильника циклів каналів установлюють режим контролю VERIFY, то передавання даних не відбувається, оскільки не генеруються сигнали керування записом і читанням, усі інші функції прямого доступу зберігаються. Цей режим може використовуватися ПВВ для контролю прийнятих даних.
Рис. 5.49. Діаграма станів роботи КПДП
Рис. 5.50. Часові діаграми основних сигналів
Роботу КПДП пояснює діаграма
станів (рис. 5.49) та часові діаграми
основних сигналів (рис. 5.50). Після запису
слова режиму в регістр керуючого
слова КПДП переходить у холостий стан
51, який триває доти, доки на один з входів
КПДП не надійде запит DRQ
від зовнішнього пристрою
на прямий доступ до пам'яті. Переходячи
у етап S0,
він виробляє сигнал HRQ
і очікує надходження
від МП сигналу HLDA.
Після надходження
сигналу підтвердження HLDA
починається цикл обміну.
У стані S1
формується сигнал AEN
для блокування інших
пристроїв системи від шин даних і
керування, видається код молодших
розрядів на виходи А7—А0,
а код старших розрядів
— на виходи D7
— D0.
Видавання старших
розрядів адреси супроводжується стробом
ADSTB для
запису їх у зовнішній буферний регістр.
У стані S2
формуються сигнали
,
або
,
,
які визначають напрям
обміну та сигнал DACK,
що вказує на початок
обміну. У стані S3
здійснюється передавання даних у ЗП
або ПВВ.
Стан S4 завершує цикл прямого доступу. В цьому стані під час передавання останнього байта блока видається сигнал ТС, а після закінчення — сигнал MARK. За потреби узгодження швидкодії ЗП і ПВВ за допомогою сигналу READY між станами S3 і S4 вводиться необхідна кількість станів очікування SW. У режимі контролю перехід у стан SW не дозволяється.
Приклад 5.15. Запрограмувати канал 1 КПДП на режим з фіксованими пріоритетами, з від'єднанням каналу після передавання, без автозавантаження і розширеного запису для пересилання по каналу 1 контролера 10 байт із ОЗП з початковою адресою 0000:0700H у пристрій введення. Вхід CS КПДП з'єднати з адресною лінією А4.
Визначимо адреси КПДП. Згідно з даними табл. 5.11, адреса регістра 1 каналу буде 02H, лічильника — 03H, регістра режиму — 08H.
Керуюче слово режиму визначимо відповідно до рис. 5.47.
Програма матиме такий вигляд:
MOV OUT MOV OUT MOV OUT MOV OUT MOV OUT |
AL, 42H 08H, AL AL, 00 02H, AL AL, 07H 02H, AL AL, 0AH 03H, AL AL, 80H 03H, AL |
Формування керуючого слова режиму Запис його в регістр керуючого слова Молодший байт адреси ОЗП переслати в регістр каналу 1 Старший байт адреси ОЗП переслати в регістр каналу 1 Молодший байт числа циклів переслати в лічильник 1 Задати напрям передавання читання пам'яті |
Стан КПДП можна контролювати читанням вмісту RGA, СТ і 8-роз-рядного регістра стану, спільного для всіх каналів, за допомогою команди IN. Для читання вмісту 16-розрядного регістра використовуються дві команди IN з тією самою адресною частиною, причому спочатку відбувається зчитування молодшого байта.