Програмування контролера НГМД

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

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

 


ігноруються. Біт 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 дозволяє здійснити доступ до регістра вибору швидкості обміну

 

 


даними (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) фаза результату.

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

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

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

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

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

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

 

 


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

Таблиця 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 – у фазі виконання змінилася готовність дисковода

 


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

 

Біт Значення
D0 1 – не знайдено маркер ідентифікатора сектора
D1 1 – дискета захищена від запису
D2 1 – шуканий сектор не знайдено
D3  
D4 1 – таймаут запитів на передачу даних
D5 1 – помилка CRC в полі ідентифікації або даних
D6  
D7 1 – кінець циліндра

 

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

 

Біт Значення
D0 1 – не знайдений маркер даних
D1 1 – збойний циліндр
D2 1 – сканування виконано незадоволено
D3 1 – при скануванні виконана умова “дорівнює”
D4 1 – невірний номер циліндра в ідентифікаторі сектора
D5 1 – помилка CRC в полі даних
  D6 1 – в ідентифікаторі сектора виявлено адресний маркер видалених даних
D7  

 

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

 

Біт Значення
D1, D0 Номер накопичувача
D2 Номер головки
D3 1 – сигнал “Двохбічний” від НГМД
D4 1 – сигнал “Доріжка 0” від НГМД
D5 1 – сигнал “Готовність” від НГМД
D6 1 – сигнал “Захист від запису” від НГМД
D7 1 – сигнал “Помилка” від НГМД

 

МЕТОДИЧНІ ВКАЗІВКИ

 

 

В даній роботі пропонується самостійно розробити і реалізувати програму, яка працює з контролером НГМД на рівні портів вводу/виводу. Програма реалізується мовою С/С++ в середовищі Borland C++ 3.1

Для виконання даної роботи необхідні грунтовні знання портів управління і принципів програмування контролера НГМД.

 

 

ЛІТЕРАТУРА

 

 

1. Гук М. Аппаратные средства IBM PC. Энциклопедия. – СПб.: “Издательс-

 


тво Питер”, 1999. – 816 с.

2. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник.

Харків: ТОВ. “Компанія СМІТ”, 2003. – 512 с.

3. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: ДМК, 1999. –

640 с.

 

 

ЗАВДАННЯ

 

 

1. Реалізувати програму, яка б дозволяла виконати одну з наступний операцій за вибором користувача:

1) вивести на дисплей зміст сектора s на доріжці t;

2) записати введений користувачем рядок у сектор s на доріжку t;

3) відформатувати доріжку t.

2. Протестувати роботу програми.

3. Зробити висновки.

 

 

КОНТРОЛЬНІ ЗАПИТАННЯ

 

 

1. Які порти контролера НГМД призначені для читання стану контролера?

2. Які фази складають процес виконання команди? Поясніть призначення кожної фази.

 

 


 


ЛІТЕРАТУРА

 

 

1. Гук М. Аппаратные средства IBM PC. – СПб.: “Питер”, 1999. – 816 с.

2. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник. Харків: ТОВ “Компанія СМІТ”, 2003. – 512 с.

3. Гусєва А. І. Учимся информатике: задачи и методы их решения. – М.: “Диалог – МИФИ”, 1999. – 320 с.

4. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: “ДМК”, 1999. –

320 с.

5. Фролов А. В., Фролов Г. В. Аппаратное обеспечение персонального компьютера. – М.: “Диалог МИФИ”, 1997. – 304 с.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: