Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи Степаненко.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
2.5 Mб
Скачать

2. Програмування контролера нгмд

Регістр 3F2h використовується для управління НГМД. Бітові комбінації, які

використовують третій і четвертий накопичувачі (таблиця 2) в AT системах

85

ігноруються. Біт 2, що дорівнює нулю, припиняє виконання поточної команди в момент виводу в порт.

Таблиця 2 Формат регістра 3F2h

Біт

Значення

D1, D0

Вибір накопичувача:

00 – перший

01 – другий

10 – третій

11 – четвертий

D2

0 – скинути контролер

1 – розблокувати контролер

D3

1 – дозволити роботу з ПДП і переривання контролера

D7 – D4

Увімкнути мотор:

0001 – перший накопичувач

0010 – другий накопичувач

0100 – третій накопичувач

1000 – четвертий накопичувач

Через порт 3F4h здійснюється читання регістра основного стану FDC. Біт 7, що дорівнює одиниці, говорить про те, що контролер при вводі команди готовий до прийому чергового байта команди, при обміні даними в режимі без ПДП готовий до прийому/передачі чергового байта даних, при прийомі результату виконання команди готовий до передачі чергового байта результату.

Таблиця 3 Формат регістра 3F4h

Біт

Значення

D3 – D0

Накопичувач зайнятий в режимі пошуку:

0001 – перший

0010 – другий

0100 – третій

1000 – четвертий

D4

0 – контролер вільний

1 – зайнятий виконанням команди читання або запису

D5

Режим роботи контролера:

0 – з використанням ПДП

1 – без ПДП

D6

Напрямок обміну:

0 – процесор – контролер

1 – контролер – процесор

D7

Готовність до обміну:

0 – не готовий

1 – готовий

Порт 3F7h дозволяє здійснити доступ до регістра вибору швидкості обміну

86

даними (Data Rate Select Register, DSR).

Таблиця 4 Формат регістра 3F7h (запис)

Біт

Значення

D1, D0

Вибір швидкості обміну:

11 – 1 Мбіт/с

00 – 500 кбіт/с

01 – 300 кбіт/с

10 – 250 кбіт/с

D4 – D2

Вибір часу предкомпенсації:

111 – недопустима комбінація

001 – 41,67 нс

010 – 83,34 нс

011 – 125,00 нс

100 – 166,00 нс

101 – 208,33 нс

110 – 250,00 нс

000 – значення за замовчуванням

D5

1 – дозволити режим зовнішньої фільтрації даних

D6

1 – вимкнути живлення дисковода

D7

1 – програмне скидання контролера

Таблиця 5 Формат регістра 3F7h (читання)

Біт

Значення

D0

Вибір приводу 0

D1

Вибір приводу 1

D5 – D2

Вибір головки (позиційний код)

D6

1 – запис

D7

1 – зміна носія

Виконання кожної команди має три фази:

1) фаза вводу команди;

2) фаза виконання;

3) фаза результату.

У фазі виконання контролер побайтно приймає і накопичує команду. Фаза команди завершується запуском мотора на відповідному накопичувачі (крім команд задання режимів і читання стану).

У фазі виконання здійснюється обмін даними між ОЗП і накопичувачем. В

режимі з використанням ПДП перед прийомом/передачею байта даних генеру-

ється сигнал “запит на ПДП”. Контролер ПДП відповідає на нього сигналом підтвердження і командою прийому/передачі. В режимі роботи без ПДП при готовності до прийому/передачі кожного байта генерується переривання.

Після завершення виконання команди генерується переривання, яке означає початок фази результату. У фазі результату контролер передає результати

виконання команди. Всі байти результату повинні бути зчитані, або треба

87

здійснити скидання контролера.

Таблиця 6 Деякі команди контролера НГМД

Команда

Регістр даних

Читання даних

1) 11100110

2)  HD US1 US0

3) номер циліндра

4) номер головки

5) номер сектора

6) байт у секторі

7) останній сектор на доріжці

8) довжина міжзонного проміжка (2Ah)

9) довжина запису (якщо байт 5 дорівнює 0)

Запис даних

1) 11000101

Інші байти аналогічні команді “Читання даних”

Форматування доріжки

1) 01001101

2)  HD US1 US0

3) байт у секторі

4) секторів на доріжці

5) довжина міжзонного проміжка (50h)

6) символ-заповнювач для розмітки (звичайно F6h)

Позиціювання головки

1) 00001111

2)  HD US1 US0

3) номер циліндра

Читання стану НГМД

1) 00000100

2)  HD US1 US0

В таблиці 6 HD – номер головки; US1, US0 – номер носія.

Перші 3 байти, які повертають команди “Читання даних”, “Запис даних”, “Форматування доріжки” є байтами стану ST0, ST1, ST2. Команда “Читання стану НГМД” повертає байт стану ST3.

Таблиця 7 Формат байта стану ST0

Біт

Значення

D1, D0

Номер накопичувача

D2

Номер головки

D3

НГМД не готовий при обміні

D4

Сигнал “Помилка” НГМД або доріжка 0 не знайдена після 77 кроків

рекалібрування

D5

Команда пошуку завершена

D7, D6

Код переривання:

00 – нормальне завершення команди

01 – ненормальне завершення

10 – недійсна команда

11 – у фазі виконання змінилася готовність дисковода

88

Таблиця 8 Формат байта стану ST1

Біт

Значення

D0

1 – не знайдено маркер ідентифікатора сектора

D1

1 – дискета захищена від запису

D2

1 – шуканий сектор не знайдено

D3

0

D4

1 – таймаут запитів на передачу даних

D5

1 – помилка CRC в полі ідентифікації або даних

D6

0

D7

1 – кінець циліндра

Таблиця 9 Формат байта стану ST2

Біт

Значення

D0

1 – не знайдений маркер даних

D1

1 – збойний циліндр

D2

1 – сканування виконано незадоволено

D3

1 – при скануванні виконана умова “дорівнює”

D4

1 – невірний номер циліндра в ідентифікаторі сектора

D5

1 – помилка CRC в полі даних

D6

1 – в ідентифікаторі сектора виявлено адресний маркер видалених

даних

D7

0

Таблиця 10 Формат байта стану ST3

Біт

Значення

D1, D0

Номер накопичувача

D2

Номер головки

D3

1 – сигнал “Двохбічний” від НГМД

D4

1 – сигнал “Доріжка 0” від НГМД

D5

1 – сигнал “Готовність” від НГМД

D6

1 – сигнал “Захист від запису” від НГМД

D7

1 – сигнал “Помилка” від НГМД